@mesob/ui 0.2.4 → 0.2.5

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.
@@ -178,7 +178,7 @@ function AppBreadcrumbs({
178
178
  className
179
179
  }) {
180
180
  const mesob = useMesob();
181
- const Link2 = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;
181
+ const Link3 = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;
182
182
  const locale = mesob?.locale;
183
183
  const { items } = useBreadcrumbs2(void 0);
184
184
  if (items.length === 0) {
@@ -187,9 +187,9 @@ function AppBreadcrumbs({
187
187
  return /* @__PURE__ */ jsx2(Breadcrumb, { className, children: /* @__PURE__ */ jsx2(BreadcrumbList, { children: items.map((crumb, index) => {
188
188
  let content;
189
189
  if (crumb.href) {
190
- if (Link2) {
190
+ if (Link3) {
191
191
  content = /* @__PURE__ */ jsx2(
192
- Link2,
192
+ Link3,
193
193
  {
194
194
  href: crumb.href,
195
195
  className: "hover:underline",
@@ -2004,7 +2004,7 @@ function NavItemRow({
2004
2004
  onNavClick
2005
2005
  }) {
2006
2006
  const mesob = useMesob3();
2007
- const Link2 = mesob?.linkComponent ?? mesob?.navigation?.Link;
2007
+ const Link3 = mesob?.linkComponent ?? mesob?.navigation?.Link;
2008
2008
  const locale = mesob?.locale;
2009
2009
  const [open, toggle] = useToggle(hasActiveDescendant(item, pathname));
2010
2010
  const hasChildren = (item.children?.length ?? 0) > 0;
@@ -2061,7 +2061,7 @@ function NavItemRow({
2061
2061
  ...locale && { locale }
2062
2062
  };
2063
2063
  return /* @__PURE__ */ jsxs12("li", { className: "relative mt-1", children: [
2064
- Link2 ? /* @__PURE__ */ jsx16(Link2, { ...linkProps, children: rowContent }) : /* @__PURE__ */ jsx16("a", { ...linkProps, children: rowContent }),
2064
+ Link3 ? /* @__PURE__ */ jsx16(Link3, { ...linkProps, children: rowContent }) : /* @__PURE__ */ jsx16("a", { ...linkProps, children: rowContent }),
2065
2065
  showChildren && /* @__PURE__ */ jsxs12("ul", { className: "relative mt-1", children: [
2066
2066
  /* @__PURE__ */ jsx16(
2067
2067
  "div",
@@ -4024,8 +4024,1301 @@ function Shell({
4024
4024
  ] }) });
4025
4025
  }
4026
4026
 
4027
+ // src/components/locale/locale-input-rich-text.tsx
4028
+ import {
4029
+ IconArrowsMaximize,
4030
+ IconTextRecognition,
4031
+ IconX as IconX5
4032
+ } from "@tabler/icons-react";
4033
+ import { useState as useState15 } from "react";
4034
+ import { Controller } from "react-hook-form";
4035
+
4036
+ // src/lib/locale.ts
4037
+ import { z } from "zod";
4038
+ var DEFAULT_LANGUAGE = "en";
4039
+ var SUPPORTED_LANGUAGES = [
4040
+ { value: "en", label: "English", key: "En" },
4041
+ { value: "am", label: "\u12A0\u121B\u122D\u129B", key: "\u12A0\u121B" },
4042
+ { value: "ar", label: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", key: "\u0627\u0644" }
4043
+ ];
4044
+ var LOCALE_INPUT_DEFAULT = Object.fromEntries(
4045
+ SUPPORTED_LANGUAGES.map(({ value }) => [value, ""])
4046
+ );
4047
+ function createLocalInputSchema(defaultValidation, otherValidation) {
4048
+ const schemaDefinition = SUPPORTED_LANGUAGES.reduce((acc, { value }) => {
4049
+ acc[value] = value === DEFAULT_LANGUAGE ? defaultValidation : otherValidation;
4050
+ return acc;
4051
+ }, {});
4052
+ return z.object(schemaDefinition);
4053
+ }
4054
+ function createLocalRequiredInputSchema(validation) {
4055
+ const schemaDefinition = SUPPORTED_LANGUAGES.reduce((acc, { value }) => {
4056
+ acc[value] = validation;
4057
+ return acc;
4058
+ }, {});
4059
+ return z.object(schemaDefinition).superRefine((data, ctx) => {
4060
+ const hasValue = Object.values(data).some(
4061
+ (value) => typeof value === "string" && value.trim().length > 0
4062
+ );
4063
+ if (!hasValue) {
4064
+ for (const { value } of SUPPORTED_LANGUAGES) {
4065
+ ctx.addIssue({
4066
+ code: z.ZodIssueCode.custom,
4067
+ message: "field is required",
4068
+ path: [value]
4069
+ });
4070
+ }
4071
+ }
4072
+ });
4073
+ }
4074
+ var LOCALE_REQUIRED_INPUT_SCHEMA = createLocalRequiredInputSchema(
4075
+ z.string().optional()
4076
+ );
4077
+ var LOCALE_OPTIONAL_INPUT_SCHEMA = createLocalInputSchema(
4078
+ z.string().optional(),
4079
+ z.string().optional()
4080
+ );
4081
+
4082
+ // src/components/rich-text/rich-text-input.tsx
4083
+ import {
4084
+ IconAlignCenter,
4085
+ IconAlignJustified,
4086
+ IconAlignLeft,
4087
+ IconAlignRight,
4088
+ IconBlockquote,
4089
+ IconBold,
4090
+ IconClearFormatting,
4091
+ IconCode,
4092
+ IconH1,
4093
+ IconH2,
4094
+ IconH3,
4095
+ IconH4,
4096
+ IconHighlight,
4097
+ IconItalic,
4098
+ IconLink,
4099
+ IconList as IconList2,
4100
+ IconListNumbers,
4101
+ IconStrikethrough,
4102
+ IconSubscript,
4103
+ IconSuperscript,
4104
+ IconUnderline,
4105
+ IconUnlink
4106
+ } from "@tabler/icons-react";
4107
+ import HardBreak from "@tiptap/extension-hard-break";
4108
+ import Highlight from "@tiptap/extension-highlight";
4109
+ import Image2 from "@tiptap/extension-image";
4110
+ import Link from "@tiptap/extension-link";
4111
+ import Placeholder from "@tiptap/extension-placeholder";
4112
+ import SubScript from "@tiptap/extension-subscript";
4113
+ import Superscript from "@tiptap/extension-superscript";
4114
+ import { Table as Table2 } from "@tiptap/extension-table";
4115
+ import { TableCell as TableCell2 } from "@tiptap/extension-table-cell";
4116
+ import { TableHeader as TableHeader2 } from "@tiptap/extension-table-header";
4117
+ import { TableRow as TableRow2 } from "@tiptap/extension-table-row";
4118
+ import TextAlign from "@tiptap/extension-text-align";
4119
+ import Underline from "@tiptap/extension-underline";
4120
+ import Youtube from "@tiptap/extension-youtube";
4121
+ import { EditorContent, useEditor } from "@tiptap/react";
4122
+ import StarterKit from "@tiptap/starter-kit";
4123
+
4124
+ // src/components/ui/label.tsx
4125
+ import * as LabelPrimitive from "@radix-ui/react-label";
4126
+ import { jsx as jsx47 } from "react/jsx-runtime";
4127
+ function Label3({
4128
+ className,
4129
+ ...props
4130
+ }) {
4131
+ return /* @__PURE__ */ jsx47(
4132
+ LabelPrimitive.Root,
4133
+ {
4134
+ "data-slot": "label",
4135
+ className: cn(
4136
+ "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
4137
+ className
4138
+ ),
4139
+ ...props
4140
+ }
4141
+ );
4142
+ }
4143
+
4144
+ // src/components/rich-text/controls/hardbreak-control.tsx
4145
+ import { IconPageBreak } from "@tabler/icons-react";
4146
+
4147
+ // src/components/rich-text/rich-text-editor.tsx
4148
+ import { createContext as createContext4, useContext as useContext4 } from "react";
4149
+ import { jsx as jsx48 } from "react/jsx-runtime";
4150
+ var RichTextEditorContext = createContext4({
4151
+ editor: null
4152
+ });
4153
+ var useRichTextEditorContext = () => useContext4(RichTextEditorContext);
4154
+ function RichTextEditor({
4155
+ editor,
4156
+ children,
4157
+ className
4158
+ }) {
4159
+ return /* @__PURE__ */ jsx48(RichTextEditorContext.Provider, { value: { editor }, children: /* @__PURE__ */ jsx48(
4160
+ "div",
4161
+ {
4162
+ className: cn(
4163
+ "border-input rounded-md border overflow-hidden",
4164
+ className
4165
+ ),
4166
+ children
4167
+ }
4168
+ ) });
4169
+ }
4170
+ function RichTextEditorToolbar({
4171
+ children,
4172
+ className,
4173
+ sticky,
4174
+ stickyOffset = 0,
4175
+ ...props
4176
+ }) {
4177
+ return /* @__PURE__ */ jsx48(
4178
+ "div",
4179
+ {
4180
+ className: cn(
4181
+ "bg-muted/50 border-border flex flex-wrap items-center gap-1 border-b p-2",
4182
+ sticky && "sticky z-10",
4183
+ className
4184
+ ),
4185
+ style: sticky ? { top: `${stickyOffset}px` } : void 0,
4186
+ ...props,
4187
+ children
4188
+ }
4189
+ );
4190
+ }
4191
+ function RichTextEditorContent({
4192
+ className,
4193
+ ...props
4194
+ }) {
4195
+ return /* @__PURE__ */ jsx48(
4196
+ "div",
4197
+ {
4198
+ className: cn(
4199
+ "prose dark:prose-invert max-w-none p-4 min-h-[200px] focus:outline-none",
4200
+ "[&_.tiptap]:outline-none [&_.tiptap]:min-h-[180px]",
4201
+ "[&_.tiptap_p.is-editor-empty:first-child::before]:text-muted-foreground [&_.tiptap_p.is-editor-empty:first-child::before]:content-[attr(data-placeholder)] [&_.tiptap_p.is-editor-empty:first-child::before]:float-left [&_.tiptap_p.is-editor-empty:first-child::before]:h-0 [&_.tiptap_p.is-editor-empty:first-child::before]:pointer-events-none",
4202
+ className
4203
+ ),
4204
+ ...props
4205
+ }
4206
+ );
4207
+ }
4208
+ function RichTextEditorControlsGroup({
4209
+ children,
4210
+ className,
4211
+ ...props
4212
+ }) {
4213
+ return /* @__PURE__ */ jsx48("div", { className: cn("flex items-center gap-0.5", className), ...props, children });
4214
+ }
4215
+ function RichTextEditorControl({
4216
+ children,
4217
+ className,
4218
+ active,
4219
+ disabled,
4220
+ ...props
4221
+ }) {
4222
+ return /* @__PURE__ */ jsx48(
4223
+ "button",
4224
+ {
4225
+ type: "button",
4226
+ className: cn(
4227
+ "inline-flex items-center justify-center rounded-sm p-2 text-sm font-medium transition-colors",
4228
+ "hover:bg-accent hover:text-accent-foreground",
4229
+ "focus-visible:ring-ring/50 focus-visible:ring-[2px] focus-visible:outline-none",
4230
+ "disabled:pointer-events-none disabled:opacity-50",
4231
+ active && "bg-accent text-accent-foreground",
4232
+ className
4233
+ ),
4234
+ disabled,
4235
+ ...props,
4236
+ children
4237
+ }
4238
+ );
4239
+ }
4240
+
4241
+ // src/components/rich-text/controls/hardbreak-control.tsx
4242
+ import { jsx as jsx49 } from "react/jsx-runtime";
4243
+ function HardbreakControl({ editor }) {
4244
+ const handleHardbreak = (e) => {
4245
+ e.preventDefault();
4246
+ if (editor) {
4247
+ editor.chain().focus().setHardBreak().run();
4248
+ }
4249
+ };
4250
+ return /* @__PURE__ */ jsx49(RichTextEditorControlsGroup, { children: /* @__PURE__ */ jsx49(
4251
+ RichTextEditorControl,
4252
+ {
4253
+ onClick: handleHardbreak,
4254
+ disabled: !editor,
4255
+ "aria-label": "Insert hard break",
4256
+ title: "Insert hard break",
4257
+ children: /* @__PURE__ */ jsx49(IconPageBreak, { className: "size-4" })
4258
+ }
4259
+ ) });
4260
+ }
4261
+
4262
+ // src/components/rich-text/controls/iframe-control.tsx
4263
+ import { IconExternalLink } from "@tabler/icons-react";
4264
+ import { useState as useState12 } from "react";
4265
+ import { jsx as jsx50, jsxs as jsxs31 } from "react/jsx-runtime";
4266
+ function IframeControl() {
4267
+ const { editor } = useRichTextEditorContext();
4268
+ const [open, setOpen] = useState12(false);
4269
+ const [iframeTag, setIframeTag] = useState12("");
4270
+ const handleOpen = () => {
4271
+ const oldIframeTag = editor?.getAttributes("iframe").src ?? "";
4272
+ setIframeTag(oldIframeTag);
4273
+ setOpen(true);
4274
+ };
4275
+ const isValidIframeTag = (input) => {
4276
+ const iframePattern = /^<iframe.*src="https?:\/\/.*".*><\/iframe>$/;
4277
+ return iframePattern.test(input);
4278
+ };
4279
+ const makeIframeResponsive = (iframe) => {
4280
+ const srcMatch = iframe.match(/src="([^"]+)"/);
4281
+ if (!srcMatch) {
4282
+ return iframe;
4283
+ }
4284
+ const src = srcMatch[1];
4285
+ return `<iframe src="${src}" style="top: 0; left: 0; width: 95%; height: 480px; border: 0; margin: 0 auto; display: block;" allowfullscreen loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>`;
4286
+ };
4287
+ const handleAdd = () => {
4288
+ if (iframeTag && isValidIframeTag(iframeTag) && editor) {
4289
+ const responsiveIframeTag = makeIframeResponsive(iframeTag);
4290
+ editor.chain().focus().insertContent(responsiveIframeTag).run();
4291
+ setOpen(false);
4292
+ setIframeTag("");
4293
+ }
4294
+ };
4295
+ const handleClose = () => {
4296
+ setOpen(false);
4297
+ setIframeTag("");
4298
+ };
4299
+ return /* @__PURE__ */ jsxs31(Dialog, { open, onOpenChange: setOpen, children: [
4300
+ /* @__PURE__ */ jsx50(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx50(
4301
+ RichTextEditorControl,
4302
+ {
4303
+ onClick: handleOpen,
4304
+ active: editor?.isActive("iframe"),
4305
+ "aria-label": "Insert iframe",
4306
+ title: "Insert iframe",
4307
+ children: /* @__PURE__ */ jsx50(IconExternalLink, { className: "size-4" })
4308
+ }
4309
+ ) }),
4310
+ /* @__PURE__ */ jsxs31(DialogContent, { children: [
4311
+ /* @__PURE__ */ jsx50(DialogHeader, { children: /* @__PURE__ */ jsx50(DialogTitle, { children: "Insert Iframe" }) }),
4312
+ /* @__PURE__ */ jsx50("div", { className: "flex flex-col gap-4", children: /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-2", children: [
4313
+ /* @__PURE__ */ jsx50(Label3, { htmlFor: "iframe-tag", children: "Iframe Tag" }),
4314
+ /* @__PURE__ */ jsx50(
4315
+ Input,
4316
+ {
4317
+ id: "iframe-tag",
4318
+ placeholder: '<iframe src="..." ></iframe>',
4319
+ value: iframeTag,
4320
+ onChange: (e) => setIframeTag(e.target.value),
4321
+ onKeyDown: (e) => {
4322
+ if (e.key === "Enter") {
4323
+ e.preventDefault();
4324
+ handleAdd();
4325
+ }
4326
+ }
4327
+ }
4328
+ )
4329
+ ] }) }),
4330
+ /* @__PURE__ */ jsxs31(DialogFooter, { children: [
4331
+ /* @__PURE__ */ jsx50(Button, { variant: "outline", onClick: handleClose, children: "Cancel" }),
4332
+ /* @__PURE__ */ jsx50(Button, { onClick: handleAdd, children: "Add Iframe" })
4333
+ ] })
4334
+ ] })
4335
+ ] });
4336
+ }
4337
+
4338
+ // src/components/rich-text/controls/image-control.tsx
4339
+ import { IconPhoto } from "@tabler/icons-react";
4340
+ import { useState as useState13 } from "react";
4341
+ import { jsx as jsx51, jsxs as jsxs32 } from "react/jsx-runtime";
4342
+ function ImageControl() {
4343
+ const { editor } = useRichTextEditorContext();
4344
+ const [open, setOpen] = useState13(false);
4345
+ const [url, setUrl] = useState13("");
4346
+ const handleOpen = () => {
4347
+ const oldUrl = editor?.getAttributes("image").src ?? "";
4348
+ setUrl(oldUrl);
4349
+ setOpen(true);
4350
+ };
4351
+ const handleAdd = () => {
4352
+ if (url && editor) {
4353
+ editor.chain().focus().setImage({ src: url }).run();
4354
+ }
4355
+ setOpen(false);
4356
+ setUrl("");
4357
+ };
4358
+ const handleClose = () => {
4359
+ setOpen(false);
4360
+ setUrl("");
4361
+ };
4362
+ return /* @__PURE__ */ jsxs32(Dialog, { open, onOpenChange: setOpen, children: [
4363
+ /* @__PURE__ */ jsx51(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx51(
4364
+ RichTextEditorControl,
4365
+ {
4366
+ onClick: handleOpen,
4367
+ active: editor?.isActive("image"),
4368
+ "aria-label": "Insert image",
4369
+ title: "Insert image",
4370
+ children: /* @__PURE__ */ jsx51(IconPhoto, { className: "size-4" })
4371
+ }
4372
+ ) }),
4373
+ /* @__PURE__ */ jsxs32(DialogContent, { children: [
4374
+ /* @__PURE__ */ jsx51(DialogHeader, { children: /* @__PURE__ */ jsx51(DialogTitle, { children: "Insert Image" }) }),
4375
+ /* @__PURE__ */ jsx51("div", { className: "flex flex-col gap-4", children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-2", children: [
4376
+ /* @__PURE__ */ jsx51(Label3, { htmlFor: "image-url", children: "Image URL" }),
4377
+ /* @__PURE__ */ jsx51(
4378
+ Input,
4379
+ {
4380
+ id: "image-url",
4381
+ placeholder: "https://example.com/image.jpg",
4382
+ value: url,
4383
+ onChange: (e) => setUrl(e.target.value),
4384
+ onKeyDown: (e) => {
4385
+ if (e.key === "Enter") {
4386
+ e.preventDefault();
4387
+ handleAdd();
4388
+ }
4389
+ }
4390
+ }
4391
+ )
4392
+ ] }) }),
4393
+ /* @__PURE__ */ jsxs32(DialogFooter, { children: [
4394
+ /* @__PURE__ */ jsx51(Button, { variant: "outline", onClick: handleClose, children: "Cancel" }),
4395
+ /* @__PURE__ */ jsx51(Button, { onClick: handleAdd, children: "Add Image" })
4396
+ ] })
4397
+ ] })
4398
+ ] });
4399
+ }
4400
+
4401
+ // src/components/rich-text/controls/table-control.tsx
4402
+ import {
4403
+ IconColumnInsertRight,
4404
+ IconFreezeRow,
4405
+ IconRowInsertBottom,
4406
+ IconTable as IconTable2,
4407
+ IconTableMinus,
4408
+ IconTrash as IconTrash3
4409
+ } from "@tabler/icons-react";
4410
+ import { Fragment as Fragment10, jsx as jsx52, jsxs as jsxs33 } from "react/jsx-runtime";
4411
+ function TableControl({ editor }) {
4412
+ if (!editor) {
4413
+ return null;
4414
+ }
4415
+ const handleInsertTable = () => {
4416
+ editor.chain().focus().insertTable({ rows: 2, cols: 2, withHeaderRow: true }).run();
4417
+ };
4418
+ return /* @__PURE__ */ jsxs33(Fragment10, { children: [
4419
+ /* @__PURE__ */ jsx52(
4420
+ RichTextEditorControl,
4421
+ {
4422
+ onClick: handleInsertTable,
4423
+ disabled: !editor.can().insertTable(),
4424
+ "aria-label": "Insert table",
4425
+ title: "Insert table",
4426
+ children: /* @__PURE__ */ jsx52(IconTable2, { className: "size-4" })
4427
+ }
4428
+ ),
4429
+ /* @__PURE__ */ jsx52(
4430
+ RichTextEditorControl,
4431
+ {
4432
+ onClick: () => editor.chain().focus().addColumnAfter().run(),
4433
+ disabled: !editor.can().addColumnAfter(),
4434
+ "aria-label": "Add column",
4435
+ title: "Add column",
4436
+ children: /* @__PURE__ */ jsx52(IconColumnInsertRight, { className: "size-4" })
4437
+ }
4438
+ ),
4439
+ /* @__PURE__ */ jsx52(
4440
+ RichTextEditorControl,
4441
+ {
4442
+ onClick: () => editor.chain().focus().addRowAfter().run(),
4443
+ disabled: !editor.can().addRowAfter(),
4444
+ "aria-label": "Add row",
4445
+ title: "Add row",
4446
+ children: /* @__PURE__ */ jsx52(IconRowInsertBottom, { className: "size-4" })
4447
+ }
4448
+ ),
4449
+ /* @__PURE__ */ jsx52(
4450
+ RichTextEditorControl,
4451
+ {
4452
+ onClick: () => editor.chain().focus().deleteColumn().run(),
4453
+ disabled: !editor.can().deleteColumn(),
4454
+ "aria-label": "Delete column",
4455
+ title: "Delete column",
4456
+ children: /* @__PURE__ */ jsx52(IconTableMinus, { className: "size-4" })
4457
+ }
4458
+ ),
4459
+ /* @__PURE__ */ jsx52(
4460
+ RichTextEditorControl,
4461
+ {
4462
+ onClick: () => editor.chain().focus().deleteRow().run(),
4463
+ disabled: !editor.can().deleteRow(),
4464
+ "aria-label": "Delete row",
4465
+ title: "Delete row",
4466
+ children: /* @__PURE__ */ jsx52(IconFreezeRow, { className: "size-4" })
4467
+ }
4468
+ ),
4469
+ /* @__PURE__ */ jsx52(
4470
+ RichTextEditorControl,
4471
+ {
4472
+ onClick: () => editor.chain().focus().deleteTable().run(),
4473
+ disabled: !editor.can().deleteTable(),
4474
+ "aria-label": "Delete table",
4475
+ title: "Delete table",
4476
+ children: /* @__PURE__ */ jsx52(IconTrash3, { className: "size-4" })
4477
+ }
4478
+ )
4479
+ ] });
4480
+ }
4481
+
4482
+ // src/components/rich-text/controls/youtube-control.tsx
4483
+ import { IconBrandYoutube } from "@tabler/icons-react";
4484
+ import { useState as useState14 } from "react";
4485
+ import { jsx as jsx53, jsxs as jsxs34 } from "react/jsx-runtime";
4486
+ function YoutubeControl() {
4487
+ const { editor } = useRichTextEditorContext();
4488
+ const [open, setOpen] = useState14(false);
4489
+ const [url, setUrl] = useState14("");
4490
+ const handleOpen = () => {
4491
+ const oldUrl = editor?.getAttributes("youtube").src ?? "";
4492
+ setUrl(oldUrl);
4493
+ setOpen(true);
4494
+ };
4495
+ const handleAdd = () => {
4496
+ if (url && editor) {
4497
+ editor.chain().focus().setYoutubeVideo({ src: url }).run();
4498
+ }
4499
+ setOpen(false);
4500
+ setUrl("");
4501
+ };
4502
+ const handleClose = () => {
4503
+ setOpen(false);
4504
+ setUrl("");
4505
+ };
4506
+ return /* @__PURE__ */ jsxs34(Dialog, { open, onOpenChange: setOpen, children: [
4507
+ /* @__PURE__ */ jsx53(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx53(
4508
+ RichTextEditorControl,
4509
+ {
4510
+ onClick: handleOpen,
4511
+ active: editor?.isActive("youtube"),
4512
+ "aria-label": "Insert YouTube video",
4513
+ title: "Insert YouTube video",
4514
+ children: /* @__PURE__ */ jsx53(IconBrandYoutube, { className: "size-4" })
4515
+ }
4516
+ ) }),
4517
+ /* @__PURE__ */ jsxs34(DialogContent, { children: [
4518
+ /* @__PURE__ */ jsx53(DialogHeader, { children: /* @__PURE__ */ jsx53(DialogTitle, { children: "Insert YouTube Video" }) }),
4519
+ /* @__PURE__ */ jsx53("div", { className: "flex flex-col gap-4", children: /* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-2", children: [
4520
+ /* @__PURE__ */ jsx53(Label3, { htmlFor: "youtube-url", children: "YouTube URL" }),
4521
+ /* @__PURE__ */ jsx53(
4522
+ Input,
4523
+ {
4524
+ id: "youtube-url",
4525
+ placeholder: "https://youtube.com/watch?v=video-id",
4526
+ value: url,
4527
+ onChange: (e) => setUrl(e.target.value),
4528
+ onKeyDown: (e) => {
4529
+ if (e.key === "Enter") {
4530
+ e.preventDefault();
4531
+ handleAdd();
4532
+ }
4533
+ }
4534
+ }
4535
+ )
4536
+ ] }) }),
4537
+ /* @__PURE__ */ jsxs34(DialogFooter, { children: [
4538
+ /* @__PURE__ */ jsx53(Button, { variant: "outline", onClick: handleClose, children: "Cancel" }),
4539
+ /* @__PURE__ */ jsx53(Button, { onClick: handleAdd, children: "Add Video" })
4540
+ ] })
4541
+ ] })
4542
+ ] });
4543
+ }
4544
+
4545
+ // src/components/rich-text/extensions/custom-heading.ts
4546
+ import { mergeAttributes } from "@tiptap/core";
4547
+ import { Heading } from "@tiptap/extension-heading";
4548
+ var CustomHeading = Heading.extend({
4549
+ addAttributes() {
4550
+ return {
4551
+ class: {
4552
+ default: ""
4553
+ }
4554
+ };
4555
+ },
4556
+ renderHTML({ node }) {
4557
+ const level = node.attrs.level;
4558
+ const classes = {
4559
+ 1: "text-4xl font-bold text-foreground mb-4",
4560
+ 2: "text-3xl font-semibold text-foreground mb-3",
4561
+ 3: "text-2xl font-medium text-foreground mb-2",
4562
+ 4: "text-xl font-normal text-foreground mb-1"
4563
+ };
4564
+ return [
4565
+ `h${level}`,
4566
+ mergeAttributes(this.options.HTMLAttributes, {
4567
+ class: classes[level]
4568
+ }),
4569
+ 0
4570
+ ];
4571
+ }
4572
+ });
4573
+
4574
+ // src/components/rich-text/extensions/iframe-extension.ts
4575
+ import { mergeAttributes as mergeAttributes2, Node, nodePasteRule } from "@tiptap/core";
4576
+ var trimSrcLink = (src) => src.trim();
4577
+ var getEmbedUrlFromSrc = ({ src }) => trimSrcLink(src);
4578
+ var Iframe = Node.create({
4579
+ name: "iframe",
4580
+ addOptions() {
4581
+ return {
4582
+ addPasteHandler: true,
4583
+ allowFullscreen: true,
4584
+ height: 480,
4585
+ width: 640,
4586
+ htmlAttributes: {},
4587
+ inline: false,
4588
+ src: "",
4589
+ style: "border:0;",
4590
+ loading: "lazy",
4591
+ referrerpolicy: "no-referrer-when-downgrade"
4592
+ };
4593
+ },
4594
+ inline() {
4595
+ return this.options.inline;
4596
+ },
4597
+ group() {
4598
+ return this.options.inline ? "inline" : "block";
4599
+ },
4600
+ draggable: true,
4601
+ addAttributes() {
4602
+ return {
4603
+ src: { default: null },
4604
+ width: { default: this.options.width },
4605
+ height: { default: this.options.height },
4606
+ style: { default: this.options.style },
4607
+ loading: { default: this.options.loading },
4608
+ referrerpolicy: { default: this.options.referrerpolicy }
4609
+ };
4610
+ },
4611
+ parseHTML() {
4612
+ return [{ tag: "iframe" }, { tag: "iframe[src]" }];
4613
+ },
4614
+ addCommands() {
4615
+ return {
4616
+ setIframe: (options) => ({ commands }) => {
4617
+ const trimmedSrc = trimSrcLink(options.src);
4618
+ if (!trimmedSrc) {
4619
+ return false;
4620
+ }
4621
+ return commands.insertContent({ type: this.name, attrs: options });
4622
+ }
4623
+ };
4624
+ },
4625
+ addPasteRules() {
4626
+ if (this.options.addPasteHandler) {
4627
+ return [
4628
+ nodePasteRule({
4629
+ find: /<iframe[^>]*src=["']([^"']+)["'][^>]*>/g,
4630
+ type: this.type,
4631
+ getAttributes: (match) => {
4632
+ return { src: match[1] };
4633
+ }
4634
+ })
4635
+ ];
4636
+ }
4637
+ return [];
4638
+ },
4639
+ renderHTML({ HTMLAttributes }) {
4640
+ const embedUrl = getEmbedUrlFromSrc({
4641
+ src: HTMLAttributes.src
4642
+ });
4643
+ const iframeStyle = HTMLAttributes.style || this.options.style;
4644
+ return [
4645
+ "iframe",
4646
+ mergeAttributes2(
4647
+ this.options.htmlAttributes,
4648
+ {
4649
+ width: HTMLAttributes.width || this.options.width,
4650
+ height: HTMLAttributes.height || this.options.height,
4651
+ allowfullscreen: this.options.allowFullscreen,
4652
+ style: iframeStyle,
4653
+ loading: this.options.loading,
4654
+ referrerpolicy: this.options.referrerpolicy
4655
+ },
4656
+ { ...HTMLAttributes, src: embedUrl }
4657
+ )
4658
+ ];
4659
+ }
4660
+ });
4661
+
4662
+ // src/components/rich-text/rich-text-input.tsx
4663
+ import { Fragment as Fragment11, jsx as jsx54, jsxs as jsxs35 } from "react/jsx-runtime";
4664
+ function RichTextInput({
4665
+ field,
4666
+ label,
4667
+ error,
4668
+ className,
4669
+ withAsterisk,
4670
+ enabledControllers = [],
4671
+ mode = "large",
4672
+ withOnUpdate = false,
4673
+ placeholder = "Start typing..."
4674
+ }) {
4675
+ const { value, onChange } = field;
4676
+ const editor = useEditor({
4677
+ immediatelyRender: false,
4678
+ extensions: [
4679
+ StarterKit.configure({
4680
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4681
+ bulletList: { HTMLAttributes: { class: "list-disc pl-4" } },
4682
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4683
+ orderedList: { HTMLAttributes: { class: "list-decimal pl-4" } }
4684
+ }),
4685
+ HardBreak.configure({ keepMarks: false }),
4686
+ Underline,
4687
+ Link.configure({
4688
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4689
+ HTMLAttributes: { class: "text-primary underline" },
4690
+ openOnClick: false
4691
+ }),
4692
+ Superscript,
4693
+ SubScript,
4694
+ Highlight,
4695
+ TextAlign.configure({ types: ["heading", "paragraph"] }),
4696
+ Placeholder.configure({ placeholder }),
4697
+ Image2.configure({
4698
+ inline: true,
4699
+ allowBase64: true,
4700
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4701
+ HTMLAttributes: { class: "w-full h-auto my-3 rounded-md" }
4702
+ }),
4703
+ Youtube.configure({
4704
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4705
+ HTMLAttributes: { class: "w-full aspect-video my-4" }
4706
+ }),
4707
+ Table2.configure({
4708
+ resizable: true,
4709
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4710
+ HTMLAttributes: {
4711
+ class: "border-collapse table-auto w-full my-4"
4712
+ }
4713
+ }),
4714
+ TableRow2.configure({
4715
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4716
+ HTMLAttributes: { class: "border border-border" }
4717
+ }),
4718
+ TableCell2.configure({
4719
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4720
+ HTMLAttributes: {
4721
+ class: "border border-border p-2 min-w-[100px] min-h-[40px]"
4722
+ }
4723
+ }),
4724
+ TableHeader2.configure({
4725
+ // biome-ignore lint/style/useNamingConvention: tiptap API
4726
+ HTMLAttributes: {
4727
+ class: "border border-border p-2 bg-muted font-semibold"
4728
+ }
4729
+ }),
4730
+ CustomHeading,
4731
+ Iframe
4732
+ ],
4733
+ content: value || "",
4734
+ ...withOnUpdate && {
4735
+ onUpdate: (props) => onChange?.(props?.editor?.getHTML() ?? "<p></p>")
4736
+ },
4737
+ ...!withOnUpdate && {
4738
+ onBlur: (props) => onChange(props?.editor?.getHTML() ?? "<p></p>")
4739
+ }
4740
+ });
4741
+ const enabledControllersLength = enabledControllers.length;
4742
+ const isControllerEnabled = (controller) => enabledControllersLength === 0 || enabledControllers.includes(controller);
4743
+ return /* @__PURE__ */ jsxs35("div", { className: cn("flex flex-col gap-2", className), children: [
4744
+ label && /* @__PURE__ */ jsxs35(Label3, { children: [
4745
+ label,
4746
+ withAsterisk && /* @__PURE__ */ jsx54("span", { className: "text-destructive", children: "*" })
4747
+ ] }),
4748
+ /* @__PURE__ */ jsxs35(RichTextEditor, { editor, children: [
4749
+ /* @__PURE__ */ jsxs35(RichTextEditorToolbar, { children: [
4750
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4751
+ isControllerEnabled("bold") && /* @__PURE__ */ jsx54(
4752
+ RichTextEditorControl,
4753
+ {
4754
+ onClick: () => editor?.chain().focus().toggleBold().run(),
4755
+ active: editor?.isActive("bold"),
4756
+ disabled: !editor?.can().chain().focus().toggleBold().run(),
4757
+ "aria-label": "Bold",
4758
+ title: "Bold",
4759
+ children: /* @__PURE__ */ jsx54(IconBold, { className: "size-4" })
4760
+ }
4761
+ ),
4762
+ isControllerEnabled("italic") && /* @__PURE__ */ jsx54(
4763
+ RichTextEditorControl,
4764
+ {
4765
+ onClick: () => editor?.chain().focus().toggleItalic().run(),
4766
+ active: editor?.isActive("italic"),
4767
+ disabled: !editor?.can().chain().focus().toggleItalic().run(),
4768
+ "aria-label": "Italic",
4769
+ title: "Italic",
4770
+ children: /* @__PURE__ */ jsx54(IconItalic, { className: "size-4" })
4771
+ }
4772
+ ),
4773
+ isControllerEnabled("code") && /* @__PURE__ */ jsx54(
4774
+ RichTextEditorControl,
4775
+ {
4776
+ onClick: () => editor?.chain().focus().toggleCode().run(),
4777
+ active: editor?.isActive("code"),
4778
+ disabled: !editor?.can().chain().focus().toggleCode().run(),
4779
+ "aria-label": "Code",
4780
+ title: "Code",
4781
+ children: /* @__PURE__ */ jsx54(IconCode, { className: "size-4" })
4782
+ }
4783
+ ),
4784
+ isControllerEnabled("underline") && /* @__PURE__ */ jsx54(
4785
+ RichTextEditorControl,
4786
+ {
4787
+ onClick: () => editor?.chain().focus().toggleUnderline().run(),
4788
+ active: editor?.isActive("underline"),
4789
+ disabled: !editor?.can().chain().focus().toggleUnderline().run(),
4790
+ "aria-label": "Underline",
4791
+ title: "Underline",
4792
+ children: /* @__PURE__ */ jsx54(IconUnderline, { className: "size-4" })
4793
+ }
4794
+ ),
4795
+ isControllerEnabled("strikethrough") && /* @__PURE__ */ jsx54(
4796
+ RichTextEditorControl,
4797
+ {
4798
+ onClick: () => editor?.chain().focus().toggleStrike().run(),
4799
+ active: editor?.isActive("strike"),
4800
+ disabled: !editor?.can().chain().focus().toggleStrike().run(),
4801
+ "aria-label": "Strikethrough",
4802
+ title: "Strikethrough",
4803
+ children: /* @__PURE__ */ jsx54(IconStrikethrough, { className: "size-4" })
4804
+ }
4805
+ ),
4806
+ isControllerEnabled("clearFormatting") && /* @__PURE__ */ jsx54(
4807
+ RichTextEditorControl,
4808
+ {
4809
+ onClick: () => editor?.chain().focus().clearNodes().unsetAllMarks().run(),
4810
+ "aria-label": "Clear formatting",
4811
+ title: "Clear formatting",
4812
+ children: /* @__PURE__ */ jsx54(IconClearFormatting, { className: "size-4" })
4813
+ }
4814
+ ),
4815
+ isControllerEnabled("highlight") && /* @__PURE__ */ jsx54(
4816
+ RichTextEditorControl,
4817
+ {
4818
+ onClick: () => editor?.chain().focus().toggleHighlight().run(),
4819
+ active: editor?.isActive("highlight"),
4820
+ "aria-label": "Highlight",
4821
+ title: "Highlight",
4822
+ children: /* @__PURE__ */ jsx54(IconHighlight, { className: "size-4" })
4823
+ }
4824
+ )
4825
+ ] }),
4826
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4827
+ isControllerEnabled("h1") && /* @__PURE__ */ jsx54(
4828
+ RichTextEditorControl,
4829
+ {
4830
+ onClick: () => editor?.chain().focus().toggleHeading({ level: 1 }).run(),
4831
+ active: editor?.isActive("heading", { level: 1 }),
4832
+ "aria-label": "Heading 1",
4833
+ title: "Heading 1",
4834
+ children: /* @__PURE__ */ jsx54(IconH1, { className: "size-4" })
4835
+ }
4836
+ ),
4837
+ isControllerEnabled("h2") && /* @__PURE__ */ jsx54(
4838
+ RichTextEditorControl,
4839
+ {
4840
+ onClick: () => editor?.chain().focus().toggleHeading({ level: 2 }).run(),
4841
+ active: editor?.isActive("heading", { level: 2 }),
4842
+ "aria-label": "Heading 2",
4843
+ title: "Heading 2",
4844
+ children: /* @__PURE__ */ jsx54(IconH2, { className: "size-4" })
4845
+ }
4846
+ ),
4847
+ isControllerEnabled("h3") && /* @__PURE__ */ jsx54(
4848
+ RichTextEditorControl,
4849
+ {
4850
+ onClick: () => editor?.chain().focus().toggleHeading({ level: 3 }).run(),
4851
+ active: editor?.isActive("heading", { level: 3 }),
4852
+ "aria-label": "Heading 3",
4853
+ title: "Heading 3",
4854
+ children: /* @__PURE__ */ jsx54(IconH3, { className: "size-4" })
4855
+ }
4856
+ ),
4857
+ isControllerEnabled("h4") && /* @__PURE__ */ jsx54(
4858
+ RichTextEditorControl,
4859
+ {
4860
+ onClick: () => editor?.chain().focus().toggleHeading({ level: 4 }).run(),
4861
+ active: editor?.isActive("heading", { level: 4 }),
4862
+ "aria-label": "Heading 4",
4863
+ title: "Heading 4",
4864
+ children: /* @__PURE__ */ jsx54(IconH4, { className: "size-4" })
4865
+ }
4866
+ )
4867
+ ] }),
4868
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4869
+ isControllerEnabled("bulletList") && /* @__PURE__ */ jsx54(
4870
+ RichTextEditorControl,
4871
+ {
4872
+ onClick: () => editor?.chain().focus().toggleBulletList().run(),
4873
+ active: editor?.isActive("bulletList"),
4874
+ "aria-label": "Bullet list",
4875
+ title: "Bullet list",
4876
+ children: /* @__PURE__ */ jsx54(IconList2, { className: "size-4" })
4877
+ }
4878
+ ),
4879
+ isControllerEnabled("orderedList") && /* @__PURE__ */ jsx54(
4880
+ RichTextEditorControl,
4881
+ {
4882
+ onClick: () => editor?.chain().focus().toggleOrderedList().run(),
4883
+ active: editor?.isActive("orderedList"),
4884
+ "aria-label": "Ordered list",
4885
+ title: "Ordered list",
4886
+ children: /* @__PURE__ */ jsx54(IconListNumbers, { className: "size-4" })
4887
+ }
4888
+ )
4889
+ ] }),
4890
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4891
+ isControllerEnabled("link") && /* @__PURE__ */ jsxs35(Fragment11, { children: [
4892
+ /* @__PURE__ */ jsx54(
4893
+ RichTextEditorControl,
4894
+ {
4895
+ onClick: () => {
4896
+ const url = window.prompt("Enter URL");
4897
+ if (url) {
4898
+ editor?.chain().focus().setLink({ href: url }).run();
4899
+ }
4900
+ },
4901
+ active: editor?.isActive("link"),
4902
+ "aria-label": "Link",
4903
+ title: "Link",
4904
+ children: /* @__PURE__ */ jsx54(IconLink, { className: "size-4" })
4905
+ }
4906
+ ),
4907
+ /* @__PURE__ */ jsx54(
4908
+ RichTextEditorControl,
4909
+ {
4910
+ onClick: () => editor?.chain().focus().unsetLink().run(),
4911
+ disabled: !editor?.isActive("link"),
4912
+ "aria-label": "Unlink",
4913
+ title: "Unlink",
4914
+ children: /* @__PURE__ */ jsx54(IconUnlink, { className: "size-4" })
4915
+ }
4916
+ )
4917
+ ] }),
4918
+ isControllerEnabled("blockquote") && /* @__PURE__ */ jsx54(
4919
+ RichTextEditorControl,
4920
+ {
4921
+ onClick: () => editor?.chain().focus().toggleBlockquote().run(),
4922
+ active: editor?.isActive("blockquote"),
4923
+ "aria-label": "Blockquote",
4924
+ title: "Blockquote",
4925
+ children: /* @__PURE__ */ jsx54(IconBlockquote, { className: "size-4" })
4926
+ }
4927
+ )
4928
+ ] }),
4929
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4930
+ isControllerEnabled("alignLeft") && /* @__PURE__ */ jsx54(
4931
+ RichTextEditorControl,
4932
+ {
4933
+ onClick: () => editor?.chain().focus().setTextAlign("left").run(),
4934
+ active: editor?.isActive({ textAlign: "left" }),
4935
+ "aria-label": "Align left",
4936
+ title: "Align left",
4937
+ children: /* @__PURE__ */ jsx54(IconAlignLeft, { className: "size-4" })
4938
+ }
4939
+ ),
4940
+ isControllerEnabled("alignCenter") && /* @__PURE__ */ jsx54(
4941
+ RichTextEditorControl,
4942
+ {
4943
+ onClick: () => editor?.chain().focus().setTextAlign("center").run(),
4944
+ active: editor?.isActive({ textAlign: "center" }),
4945
+ "aria-label": "Align center",
4946
+ title: "Align center",
4947
+ children: /* @__PURE__ */ jsx54(IconAlignCenter, { className: "size-4" })
4948
+ }
4949
+ ),
4950
+ isControllerEnabled("alignRight") && /* @__PURE__ */ jsx54(
4951
+ RichTextEditorControl,
4952
+ {
4953
+ onClick: () => editor?.chain().focus().setTextAlign("right").run(),
4954
+ active: editor?.isActive({ textAlign: "right" }),
4955
+ "aria-label": "Align right",
4956
+ title: "Align right",
4957
+ children: /* @__PURE__ */ jsx54(IconAlignRight, { className: "size-4" })
4958
+ }
4959
+ ),
4960
+ isControllerEnabled("alignJustify") && /* @__PURE__ */ jsx54(
4961
+ RichTextEditorControl,
4962
+ {
4963
+ onClick: () => editor?.chain().focus().setTextAlign("justify").run(),
4964
+ active: editor?.isActive({ textAlign: "justify" }),
4965
+ "aria-label": "Align justify",
4966
+ title: "Align justify",
4967
+ children: /* @__PURE__ */ jsx54(IconAlignJustified, { className: "size-4" })
4968
+ }
4969
+ )
4970
+ ] }),
4971
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4972
+ isControllerEnabled("subscript") && /* @__PURE__ */ jsx54(
4973
+ RichTextEditorControl,
4974
+ {
4975
+ onClick: () => editor?.chain().focus().toggleSubscript().run(),
4976
+ active: editor?.isActive("subscript"),
4977
+ "aria-label": "Subscript",
4978
+ title: "Subscript",
4979
+ children: /* @__PURE__ */ jsx54(IconSubscript, { className: "size-4" })
4980
+ }
4981
+ ),
4982
+ isControllerEnabled("superscript") && /* @__PURE__ */ jsx54(
4983
+ RichTextEditorControl,
4984
+ {
4985
+ onClick: () => editor?.chain().focus().toggleSuperscript().run(),
4986
+ active: editor?.isActive("superscript"),
4987
+ "aria-label": "Superscript",
4988
+ title: "Superscript",
4989
+ children: /* @__PURE__ */ jsx54(IconSuperscript, { className: "size-4" })
4990
+ }
4991
+ )
4992
+ ] }),
4993
+ editor && isControllerEnabled("hardBreak") && /* @__PURE__ */ jsx54(HardbreakControl, { editor }),
4994
+ mode === "large" && /* @__PURE__ */ jsxs35(Fragment11, { children: [
4995
+ isControllerEnabled("table") && /* @__PURE__ */ jsx54(RichTextEditorControlsGroup, { children: /* @__PURE__ */ jsx54(TableControl, { editor }) }),
4996
+ /* @__PURE__ */ jsxs35(RichTextEditorControlsGroup, { children: [
4997
+ isControllerEnabled("image") && /* @__PURE__ */ jsx54(ImageControl, {}),
4998
+ isControllerEnabled("youtube") && /* @__PURE__ */ jsx54(YoutubeControl, {}),
4999
+ isControllerEnabled("map") && /* @__PURE__ */ jsx54(IframeControl, {})
5000
+ ] })
5001
+ ] })
5002
+ ] }),
5003
+ /* @__PURE__ */ jsx54(RichTextEditorContent, { children: /* @__PURE__ */ jsx54(EditorContent, { editor }) })
5004
+ ] }),
5005
+ error?.message && /* @__PURE__ */ jsx54("p", { className: "text-destructive text-sm", children: error.message })
5006
+ ] });
5007
+ }
5008
+
5009
+ // src/components/ui/visually-hidden.tsx
5010
+ import * as VisuallyHiddenPrimitive from "@radix-ui/react-visually-hidden";
5011
+ import { jsx as jsx55 } from "react/jsx-runtime";
5012
+ function VisuallyHidden({
5013
+ ...props
5014
+ }) {
5015
+ return /* @__PURE__ */ jsx55(VisuallyHiddenPrimitive.Root, { ...props });
5016
+ }
5017
+
5018
+ // src/components/locale/locale-input-rich-text.tsx
5019
+ import { jsx as jsx56, jsxs as jsxs36 } from "react/jsx-runtime";
5020
+ function LocaleInputRichText({
5021
+ label,
5022
+ required,
5023
+ field,
5024
+ control,
5025
+ errors,
5026
+ className,
5027
+ enabledControllers = [],
5028
+ placeholder,
5029
+ mode = "large"
5030
+ }) {
5031
+ const [expanded, setExpanded] = useState15(false);
5032
+ const [fullscreen, setFullscreen] = useState15(false);
5033
+ const otherLanguages = SUPPORTED_LANGUAGES.filter(
5034
+ (lang) => lang.value !== DEFAULT_LANGUAGE
5035
+ );
5036
+ return /* @__PURE__ */ jsxs36("div", { className: cn("space-y-2", className), children: [
5037
+ label && /* @__PURE__ */ jsxs36(Label3, { children: [
5038
+ label,
5039
+ required && /* @__PURE__ */ jsx56("span", { className: "text-destructive ml-1", children: "*" })
5040
+ ] }),
5041
+ /* @__PURE__ */ jsxs36("div", { className: "relative", children: [
5042
+ /* @__PURE__ */ jsx56(
5043
+ Controller,
5044
+ {
5045
+ control,
5046
+ name: `${field}.${DEFAULT_LANGUAGE}`,
5047
+ render: ({ field: inputField }) => /* @__PURE__ */ jsx56(
5048
+ RichTextInput,
5049
+ {
5050
+ field: inputField,
5051
+ error: errors?.[field]?.[DEFAULT_LANGUAGE],
5052
+ enabledControllers,
5053
+ placeholder,
5054
+ mode
5055
+ }
5056
+ )
5057
+ }
5058
+ ),
5059
+ /* @__PURE__ */ jsxs36("div", { className: "absolute top-2 right-2 z-10 flex items-center gap-1", children: [
5060
+ otherLanguages.length > 0 && /* @__PURE__ */ jsx56(
5061
+ "button",
5062
+ {
5063
+ type: "button",
5064
+ onClick: () => setExpanded(!expanded),
5065
+ className: "flex items-center justify-center size-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer",
5066
+ children: /* @__PURE__ */ jsx56(IconTextRecognition, { size: 18 })
5067
+ }
5068
+ ),
5069
+ /* @__PURE__ */ jsx56(
5070
+ "button",
5071
+ {
5072
+ type: "button",
5073
+ onClick: () => setFullscreen(true),
5074
+ className: "flex items-center justify-center size-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer",
5075
+ children: /* @__PURE__ */ jsx56(IconArrowsMaximize, { size: 18 })
5076
+ }
5077
+ )
5078
+ ] })
5079
+ ] }),
5080
+ expanded && otherLanguages.length > 0 && /* @__PURE__ */ jsx56("div", { className: "space-y-4 pl-4 border-l-2 border-border mt-4", children: otherLanguages.map((lang) => /* @__PURE__ */ jsxs36("div", { className: "space-y-2", children: [
5081
+ /* @__PURE__ */ jsx56(Label3, { className: "text-xs text-muted-foreground", children: lang.label }),
5082
+ /* @__PURE__ */ jsx56(
5083
+ Controller,
5084
+ {
5085
+ control,
5086
+ name: `${field}.${lang.value}`,
5087
+ render: ({ field: inputField }) => /* @__PURE__ */ jsx56(
5088
+ RichTextInput,
5089
+ {
5090
+ field: inputField,
5091
+ error: errors?.[field]?.[lang.value],
5092
+ enabledControllers,
5093
+ placeholder,
5094
+ mode
5095
+ }
5096
+ )
5097
+ }
5098
+ )
5099
+ ] }, lang.value)) }),
5100
+ /* @__PURE__ */ jsx56(Dialog, { open: fullscreen, onOpenChange: setFullscreen, children: /* @__PURE__ */ jsxs36(
5101
+ DialogContent,
5102
+ {
5103
+ showCloseButton: false,
5104
+ className: "!top-0 !left-0 !right-0 !bottom-0 !h-screen !w-screen !max-w-none !translate-x-0 !translate-y-0 !rounded-none flex flex-col p-6",
5105
+ children: [
5106
+ /* @__PURE__ */ jsx56(VisuallyHidden, { children: /* @__PURE__ */ jsxs36(DialogTitle, { children: [
5107
+ label || "Edit content",
5108
+ " - Fullscreen editor"
5109
+ ] }) }),
5110
+ /* @__PURE__ */ jsx56(
5111
+ "button",
5112
+ {
5113
+ type: "button",
5114
+ onClick: () => setFullscreen(false),
5115
+ className: "absolute top-4 right-4 z-50 flex items-center justify-center size-10 rounded-md bg-background/80 backdrop-blur-sm border border-border text-foreground hover:bg-accent transition-colors",
5116
+ children: /* @__PURE__ */ jsx56(IconX5, { size: 20 })
5117
+ }
5118
+ ),
5119
+ /* @__PURE__ */ jsx56("div", { className: "flex-1 overflow-auto flex items-start justify-center", children: /* @__PURE__ */ jsx56("div", { className: "w-full max-w-5xl", children: /* @__PURE__ */ jsx56(
5120
+ Controller,
5121
+ {
5122
+ control,
5123
+ name: `${field}.${DEFAULT_LANGUAGE}`,
5124
+ render: ({ field: inputField }) => /* @__PURE__ */ jsx56(
5125
+ RichTextInput,
5126
+ {
5127
+ field: inputField,
5128
+ error: errors?.[field]?.[DEFAULT_LANGUAGE],
5129
+ enabledControllers,
5130
+ placeholder,
5131
+ mode: "large"
5132
+ }
5133
+ )
5134
+ }
5135
+ ) }) })
5136
+ ]
5137
+ }
5138
+ ) })
5139
+ ] });
5140
+ }
5141
+
5142
+ // src/components/locale/locale-input-text.tsx
5143
+ import { IconTextRecognition as IconTextRecognition2 } from "@tabler/icons-react";
5144
+ import { useState as useState16 } from "react";
5145
+ import { jsx as jsx57, jsxs as jsxs37 } from "react/jsx-runtime";
5146
+ function LocaleInputText({
5147
+ label,
5148
+ required,
5149
+ field,
5150
+ register,
5151
+ errors,
5152
+ placeholder,
5153
+ className,
5154
+ disabled
5155
+ }) {
5156
+ const [expanded, setExpanded] = useState16(false);
5157
+ const otherLanguages = SUPPORTED_LANGUAGES.filter(
5158
+ (lang) => lang.value !== DEFAULT_LANGUAGE
5159
+ );
5160
+ return /* @__PURE__ */ jsxs37("div", { className: cn("space-y-2", className), children: [
5161
+ label && /* @__PURE__ */ jsxs37(Label3, { children: [
5162
+ label,
5163
+ required && /* @__PURE__ */ jsx57("span", { className: "text-destructive ml-1", children: "*" })
5164
+ ] }),
5165
+ /* @__PURE__ */ jsxs37("div", { className: "relative", children: [
5166
+ /* @__PURE__ */ jsx57(
5167
+ Input,
5168
+ {
5169
+ ...register(`${field}.${DEFAULT_LANGUAGE}`),
5170
+ placeholder,
5171
+ disabled,
5172
+ "aria-invalid": !!errors?.[field]?.[DEFAULT_LANGUAGE],
5173
+ className: cn(otherLanguages.length > 0 && "pr-11")
5174
+ }
5175
+ ),
5176
+ otherLanguages.length > 0 && /* @__PURE__ */ jsx57(
5177
+ "button",
5178
+ {
5179
+ type: "button",
5180
+ onClick: () => setExpanded(!expanded),
5181
+ disabled,
5182
+ className: "absolute right-2 top-1/2 -translate-y-1/2 flex items-center justify-center size-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed",
5183
+ children: /* @__PURE__ */ jsx57(IconTextRecognition2, { size: 18 })
5184
+ }
5185
+ )
5186
+ ] }),
5187
+ errors?.[field]?.[DEFAULT_LANGUAGE] && /* @__PURE__ */ jsx57("p", { className: "text-destructive text-sm", children: errors?.[field]?.[DEFAULT_LANGUAGE]?.message }),
5188
+ expanded && otherLanguages.length > 0 && /* @__PURE__ */ jsx57("div", { className: "space-y-3 pl-4 border-l-2 border-border mt-3", children: otherLanguages.map((lang) => /* @__PURE__ */ jsx57("div", { className: "space-y-1", children: /* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-2", children: [
5189
+ /* @__PURE__ */ jsx57(Label3, { className: "min-w-[60px] text-xs text-muted-foreground", children: lang.label }),
5190
+ /* @__PURE__ */ jsxs37("div", { className: "flex-1 space-y-1", children: [
5191
+ /* @__PURE__ */ jsx57(
5192
+ Input,
5193
+ {
5194
+ ...register(`${field}.${lang.value}`),
5195
+ placeholder,
5196
+ disabled,
5197
+ className: "text-sm"
5198
+ }
5199
+ ),
5200
+ errors?.[field]?.[lang.value] && /* @__PURE__ */ jsx57("p", { className: "text-destructive text-xs", children: errors?.[field]?.[lang.value]?.message })
5201
+ ] })
5202
+ ] }) }, lang.value)) })
5203
+ ] });
5204
+ }
5205
+
5206
+ // src/components/locale/locale-input-textarea.tsx
5207
+ import { IconTextRecognition as IconTextRecognition3 } from "@tabler/icons-react";
5208
+ import { useState as useState17 } from "react";
5209
+
5210
+ // src/components/ui/textarea.tsx
5211
+ import { jsx as jsx58 } from "react/jsx-runtime";
5212
+ function Textarea({ className, ...props }) {
5213
+ return /* @__PURE__ */ jsx58(
5214
+ "textarea",
5215
+ {
5216
+ "data-slot": "textarea",
5217
+ className: cn(
5218
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
5219
+ className
5220
+ ),
5221
+ ...props
5222
+ }
5223
+ );
5224
+ }
5225
+
5226
+ // src/components/locale/locale-input-textarea.tsx
5227
+ import { jsx as jsx59, jsxs as jsxs38 } from "react/jsx-runtime";
5228
+ function LocaleInputTextarea({
5229
+ label,
5230
+ required,
5231
+ field,
5232
+ register,
5233
+ errors,
5234
+ placeholder,
5235
+ className,
5236
+ disabled,
5237
+ rows = 4
5238
+ }) {
5239
+ const [expanded, setExpanded] = useState17(false);
5240
+ const otherLanguages = SUPPORTED_LANGUAGES.filter(
5241
+ (lang) => lang.value !== DEFAULT_LANGUAGE
5242
+ );
5243
+ return /* @__PURE__ */ jsxs38("div", { className: cn("space-y-2", className), children: [
5244
+ label && /* @__PURE__ */ jsxs38(Label3, { children: [
5245
+ label,
5246
+ required && /* @__PURE__ */ jsx59("span", { className: "text-destructive ml-1", children: "*" })
5247
+ ] }),
5248
+ /* @__PURE__ */ jsxs38("div", { className: "relative", children: [
5249
+ /* @__PURE__ */ jsx59(
5250
+ Textarea,
5251
+ {
5252
+ ...register(`${field}.${DEFAULT_LANGUAGE}`),
5253
+ placeholder,
5254
+ disabled,
5255
+ rows,
5256
+ "aria-invalid": !!errors?.[field]?.[DEFAULT_LANGUAGE],
5257
+ className: cn(otherLanguages.length > 0 && "pr-11")
5258
+ }
5259
+ ),
5260
+ otherLanguages.length > 0 && /* @__PURE__ */ jsx59(
5261
+ "button",
5262
+ {
5263
+ type: "button",
5264
+ onClick: () => setExpanded(!expanded),
5265
+ disabled,
5266
+ className: "absolute right-2 top-2 flex items-center justify-center size-7 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed",
5267
+ children: /* @__PURE__ */ jsx59(IconTextRecognition3, { size: 18 })
5268
+ }
5269
+ )
5270
+ ] }),
5271
+ errors?.[field]?.[DEFAULT_LANGUAGE] && /* @__PURE__ */ jsx59("p", { className: "text-destructive text-sm", children: errors?.[field]?.[DEFAULT_LANGUAGE]?.message }),
5272
+ expanded && otherLanguages.length > 0 && /* @__PURE__ */ jsx59("div", { className: "space-y-3 pl-4 border-l-2 border-border mt-3", children: otherLanguages.map((lang) => /* @__PURE__ */ jsx59("div", { className: "space-y-1", children: /* @__PURE__ */ jsxs38("div", { className: "flex items-start gap-2", children: [
5273
+ /* @__PURE__ */ jsx59(Label3, { className: "min-w-[60px] text-xs text-muted-foreground mt-2", children: lang.label }),
5274
+ /* @__PURE__ */ jsxs38("div", { className: "flex-1 space-y-1", children: [
5275
+ /* @__PURE__ */ jsx59(
5276
+ Textarea,
5277
+ {
5278
+ ...register(`${field}.${lang.value}`),
5279
+ placeholder,
5280
+ disabled,
5281
+ rows,
5282
+ className: "text-sm"
5283
+ }
5284
+ ),
5285
+ errors?.[field]?.[lang.value] && /* @__PURE__ */ jsx59("p", { className: "text-destructive text-xs", children: errors?.[field]?.[lang.value]?.message })
5286
+ ] })
5287
+ ] }) }, lang.value)) })
5288
+ ] });
5289
+ }
5290
+
5291
+ // src/components/locale/locale-rich-text.tsx
5292
+ import parse from "html-react-parser";
5293
+ import { useLocale } from "next-intl";
5294
+ import { jsx as jsx60 } from "react/jsx-runtime";
5295
+ function LocaleRichText({
5296
+ text,
5297
+ defaultLocale,
5298
+ className
5299
+ }) {
5300
+ const locale = useLocale();
5301
+ const currentLocale = defaultLocale || locale || "en";
5302
+ if (!text) {
5303
+ return null;
5304
+ }
5305
+ return /* @__PURE__ */ jsx60("div", { className, children: parse(text?.[currentLocale] || text?.en || "") });
5306
+ }
5307
+
5308
+ // src/components/locale/locale-text.tsx
5309
+ import { useLocale as useLocale2 } from "next-intl";
5310
+ import { Fragment as Fragment12, jsx as jsx61 } from "react/jsx-runtime";
5311
+ function LocaleText({ text, defaultLocale }) {
5312
+ const locale = useLocale2();
5313
+ const currentLocale = defaultLocale || locale || "en";
5314
+ if (!text) {
5315
+ return null;
5316
+ }
5317
+ return /* @__PURE__ */ jsx61(Fragment12, { children: text?.[currentLocale] || text?.en || "" });
5318
+ }
5319
+
4027
5320
  // src/components/mesob-logo.tsx
4028
- import { jsx as jsx47, jsxs as jsxs31 } from "react/jsx-runtime";
5321
+ import { jsx as jsx62, jsxs as jsxs39 } from "react/jsx-runtime";
4029
5322
  function MesobLogo({
4030
5323
  width,
4031
5324
  height,
@@ -4034,7 +5327,7 @@ function MesobLogo({
4034
5327
  iconColor = "#fff",
4035
5328
  className
4036
5329
  }) {
4037
- return /* @__PURE__ */ jsxs31(
5330
+ return /* @__PURE__ */ jsxs39(
4038
5331
  "svg",
4039
5332
  {
4040
5333
  xmlns: "http://www.w3.org/2000/svg",
@@ -4045,42 +5338,42 @@ function MesobLogo({
4045
5338
  role: "presentation",
4046
5339
  className,
4047
5340
  children: [
4048
- /* @__PURE__ */ jsx47(
5341
+ /* @__PURE__ */ jsx62(
4049
5342
  "path",
4050
5343
  {
4051
5344
  d: "M158.89,21.29v44q0,9.15-5.3,14.23t-14.18,5.07q-9,0-14.5-5.21t-5.52-14.54H132a10,10,0,0,0,1.93,6.28,6.49,6.49,0,0,0,5.34,2.25,6.4,6.4,0,0,0,5.21-2.16,9,9,0,0,0,1.79-5.92v-44Z",
4052
5345
  fill: textColor
4053
5346
  }
4054
5347
  ),
4055
- /* @__PURE__ */ jsx47(
5348
+ /* @__PURE__ */ jsx62(
4056
5349
  "path",
4057
5350
  {
4058
5351
  d: "M174.38,26.18a7,7,0,0,1-2.2-5.25,7,7,0,0,1,2.2-5.25,8.28,8.28,0,0,1,11,0,7,7,0,0,1,2.2,5.25,7,7,0,0,1-2.2,5.25,8.28,8.28,0,0,1-11,0Zm11.71,8V84H173.52V34.22Z",
4059
5352
  fill: textColor
4060
5353
  }
4061
5354
  ),
4062
- /* @__PURE__ */ jsx47(
5355
+ /* @__PURE__ */ jsx62(
4063
5356
  "path",
4064
5357
  {
4065
5358
  d: "M217.38,35.74a17.65,17.65,0,0,1,8.93-2.24V46.69H223q-5.93,0-8.94,2.79t-3,9.69V84H198.48V34.22h12.57v7.72A17.57,17.57,0,0,1,217.38,35.74Z",
4066
5359
  fill: textColor
4067
5360
  }
4068
5361
  ),
4069
- /* @__PURE__ */ jsx47(
5362
+ /* @__PURE__ */ jsx62(
4070
5363
  "path",
4071
5364
  {
4072
5365
  d: "M280.62,62.85H244.26A12.38,12.38,0,0,0,248,71.29a11.62,11.62,0,0,0,8.17,3q7,0,10-6h13.55a22.59,22.59,0,0,1-8.26,11.8,24.05,24.05,0,0,1-15,4.63,25.87,25.87,0,0,1-12.88-3.19,22.44,22.44,0,0,1-8.89-9,27.7,27.7,0,0,1-3.18-13.47,28.09,28.09,0,0,1,3.14-13.55,21.92,21.92,0,0,1,8.79-9,28.27,28.27,0,0,1,25.72-.09,21.49,21.49,0,0,1,8.71,8.66A26.18,26.18,0,0,1,281,58,29.48,29.48,0,0,1,280.62,62.85ZM268,54.41a9.93,9.93,0,0,0-3.5-7.76,12.43,12.43,0,0,0-8.35-2.92,11.37,11.37,0,0,0-7.85,2.83,12.4,12.4,0,0,0-3.91,7.85Z",
4073
5366
  fill: textColor
4074
5367
  }
4075
5368
  ),
4076
- /* @__PURE__ */ jsx47(
5369
+ /* @__PURE__ */ jsx62(
4077
5370
  "path",
4078
5371
  {
4079
5372
  d: "M304.77,44.54V68.6A4.73,4.73,0,0,0,306,72.23a6,6,0,0,0,4.09,1.13h5.83V84H308q-15.88,0-15.89-15.44v-24h-5.92V34.22h5.92V21.92h12.66v12.3H315.9V44.54Z",
4080
5373
  fill: textColor
4081
5374
  }
4082
5375
  ),
4083
- /* @__PURE__ */ jsx47(
5376
+ /* @__PURE__ */ jsx62(
4084
5377
  "rect",
4085
5378
  {
4086
5379
  width: "98.15",
@@ -4089,7 +5382,7 @@ function MesobLogo({
4089
5382
  fill: iconBackgroundColor
4090
5383
  }
4091
5384
  ),
4092
- /* @__PURE__ */ jsx47(
5385
+ /* @__PURE__ */ jsx62(
4093
5386
  "path",
4094
5387
  {
4095
5388
  d: "M59.84,54.58a15.77,15.77,0,0,0,6.7,3.6,30.16,30.16,0,0,0,8.56.48l-.36,13.89a46.14,46.14,0,0,1-6,.43,33.3,33.3,0,0,1-6.42-.56,27.77,27.77,0,0,1-6.23-1.93,23.13,23.13,0,0,1-5.67-3.64,17.61,17.61,0,0,1-4.87-6.67c-1-2.53-1.89-4.88-2.57-7a51.59,51.59,0,0,0-1.79-4.94,10.55,10.55,0,0,0-2.82-4,17.36,17.36,0,0,0-6.66-3.74A28.24,28.24,0,0,0,23,39.8l1-14.38a44.34,44.34,0,0,1,5.87-.25,34.47,34.47,0,0,1,6.2.72A30.31,30.31,0,0,1,42.28,28a24.51,24.51,0,0,1,5.85,3.8,18.32,18.32,0,0,1,4.92,6.54,70.94,70.94,0,0,1,2.59,6.9c.53,1.7,1.06,3.42,1.59,5.18A8.77,8.77,0,0,0,59.84,54.58Z",
@@ -4102,16 +5395,16 @@ function MesobLogo({
4102
5395
  }
4103
5396
 
4104
5397
  // src/components/powered-by.tsx
4105
- import { jsx as jsx48, jsxs as jsxs32 } from "react/jsx-runtime";
5398
+ import { jsx as jsx63, jsxs as jsxs40 } from "react/jsx-runtime";
4106
5399
  function PoweredBy({ className }) {
4107
- return /* @__PURE__ */ jsx48(
5400
+ return /* @__PURE__ */ jsx63(
4108
5401
  "div",
4109
5402
  {
4110
5403
  className: cn(
4111
5404
  "flex flex-col items-center gap-1.5 py-3 text-center",
4112
5405
  className
4113
5406
  ),
4114
- children: /* @__PURE__ */ jsxs32(
5407
+ children: /* @__PURE__ */ jsxs40(
4115
5408
  "a",
4116
5409
  {
4117
5410
  href: "https://mesob.com",
@@ -4119,8 +5412,8 @@ function PoweredBy({ className }) {
4119
5412
  className: "text-muted-foreground hover:text-foreground flex items-center justify-center gap-1.5 text-[13px] transition-colors",
4120
5413
  rel: "noopener noreferrer",
4121
5414
  children: [
4122
- /* @__PURE__ */ jsx48("span", { children: "Powered by" }),
4123
- /* @__PURE__ */ jsx48(MesobLogo, { height: 18 })
5415
+ /* @__PURE__ */ jsx63("span", { children: "Powered by" }),
5416
+ /* @__PURE__ */ jsx63(MesobLogo, { height: 18 })
4124
5417
  ]
4125
5418
  }
4126
5419
  )
@@ -4128,14 +5421,39 @@ function PoweredBy({ className }) {
4128
5421
  );
4129
5422
  }
4130
5423
 
5424
+ // src/components/rich-text/rich-text-display.tsx
5425
+ import parse2 from "html-react-parser";
5426
+ import { useLocale as useLocale3 } from "next-intl";
5427
+ import { jsx as jsx64 } from "react/jsx-runtime";
5428
+ function RichTextDisplay({ content, className }) {
5429
+ const locale = useLocale3();
5430
+ if (!content) {
5431
+ return null;
5432
+ }
5433
+ const contentString = typeof content === "string" ? content : content[locale] || Object.values(content)[0] || "";
5434
+ return /* @__PURE__ */ jsx64(
5435
+ "div",
5436
+ {
5437
+ className: cn(
5438
+ "prose dark:prose-invert max-w-none",
5439
+ "prose-headings:text-foreground prose-p:text-foreground prose-li:text-foreground",
5440
+ "prose-a:text-primary prose-a:no-underline hover:prose-a:underline",
5441
+ "prose-img:rounded-md prose-img:shadow-sm",
5442
+ className
5443
+ ),
5444
+ children: parse2(contentString)
5445
+ }
5446
+ );
5447
+ }
5448
+
4131
5449
  // src/components/theme-toggle.tsx
4132
5450
  import { IconMoon, IconSun } from "@tabler/icons-react";
4133
5451
  import { useTheme as useTheme2 } from "next-themes";
4134
- import { jsx as jsx49, jsxs as jsxs33 } from "react/jsx-runtime";
5452
+ import { jsx as jsx65, jsxs as jsxs41 } from "react/jsx-runtime";
4135
5453
  function ThemeToggle({ className }) {
4136
5454
  const { resolvedTheme, setTheme, theme } = useTheme2();
4137
5455
  const isDark = (theme ?? resolvedTheme) === "dark";
4138
- return /* @__PURE__ */ jsxs33(
5456
+ return /* @__PURE__ */ jsxs41(
4139
5457
  Button,
4140
5458
  {
4141
5459
  variant: "ghost",
@@ -4144,8 +5462,8 @@ function ThemeToggle({ className }) {
4144
5462
  onClick: () => setTheme(isDark ? "light" : "dark"),
4145
5463
  "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode",
4146
5464
  children: [
4147
- /* @__PURE__ */ jsx49(IconSun, { className: "size-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
4148
- /* @__PURE__ */ jsx49(IconMoon, { className: "absolute size-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
5465
+ /* @__PURE__ */ jsx65(IconSun, { className: "size-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
5466
+ /* @__PURE__ */ jsx65(IconMoon, { className: "absolute size-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" })
4149
5467
  ]
4150
5468
  }
4151
5469
  );
@@ -4154,17 +5472,17 @@ function ThemeToggle({ className }) {
4154
5472
  // src/components/ui/accordion.tsx
4155
5473
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
4156
5474
  import { IconChevronDown as IconChevronDown6 } from "@tabler/icons-react";
4157
- import { jsx as jsx50, jsxs as jsxs34 } from "react/jsx-runtime";
5475
+ import { jsx as jsx66, jsxs as jsxs42 } from "react/jsx-runtime";
4158
5476
  function Accordion({
4159
5477
  ...props
4160
5478
  }) {
4161
- return /* @__PURE__ */ jsx50(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
5479
+ return /* @__PURE__ */ jsx66(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
4162
5480
  }
4163
5481
  function AccordionItem({
4164
5482
  className,
4165
5483
  ...props
4166
5484
  }) {
4167
- return /* @__PURE__ */ jsx50(
5485
+ return /* @__PURE__ */ jsx66(
4168
5486
  AccordionPrimitive.Item,
4169
5487
  {
4170
5488
  "data-slot": "accordion-item",
@@ -4178,7 +5496,7 @@ function AccordionTrigger({
4178
5496
  children,
4179
5497
  ...props
4180
5498
  }) {
4181
- return /* @__PURE__ */ jsx50(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs34(
5499
+ return /* @__PURE__ */ jsx66(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs42(
4182
5500
  AccordionPrimitive.Trigger,
4183
5501
  {
4184
5502
  "data-slot": "accordion-trigger",
@@ -4189,7 +5507,7 @@ function AccordionTrigger({
4189
5507
  ...props,
4190
5508
  children: [
4191
5509
  children,
4192
- /* @__PURE__ */ jsx50(IconChevronDown6, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
5510
+ /* @__PURE__ */ jsx66(IconChevronDown6, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })
4193
5511
  ]
4194
5512
  }
4195
5513
  ) });
@@ -4199,20 +5517,20 @@ function AccordionContent({
4199
5517
  children,
4200
5518
  ...props
4201
5519
  }) {
4202
- return /* @__PURE__ */ jsx50(
5520
+ return /* @__PURE__ */ jsx66(
4203
5521
  AccordionPrimitive.Content,
4204
5522
  {
4205
5523
  "data-slot": "accordion-content",
4206
5524
  className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
4207
5525
  ...props,
4208
- children: /* @__PURE__ */ jsx50("div", { className: cn("pt-0 pb-4", className), children })
5526
+ children: /* @__PURE__ */ jsx66("div", { className: cn("pt-0 pb-4", className), children })
4209
5527
  }
4210
5528
  );
4211
5529
  }
4212
5530
 
4213
5531
  // src/components/ui/alert.tsx
4214
5532
  import { cva as cva5 } from "class-variance-authority";
4215
- import { jsx as jsx51 } from "react/jsx-runtime";
5533
+ import { jsx as jsx67 } from "react/jsx-runtime";
4216
5534
  var alertVariants = cva5(
4217
5535
  "border-border relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
4218
5536
  {
@@ -4232,7 +5550,7 @@ function Alert({
4232
5550
  variant,
4233
5551
  ...props
4234
5552
  }) {
4235
- return /* @__PURE__ */ jsx51(
5553
+ return /* @__PURE__ */ jsx67(
4236
5554
  "div",
4237
5555
  {
4238
5556
  "data-slot": "alert",
@@ -4243,7 +5561,7 @@ function Alert({
4243
5561
  );
4244
5562
  }
4245
5563
  function AlertTitle({ className, ...props }) {
4246
- return /* @__PURE__ */ jsx51(
5564
+ return /* @__PURE__ */ jsx67(
4247
5565
  "div",
4248
5566
  {
4249
5567
  "data-slot": "alert-title",
@@ -4259,7 +5577,7 @@ function AlertDescription({
4259
5577
  className,
4260
5578
  ...props
4261
5579
  }) {
4262
- return /* @__PURE__ */ jsx51(
5580
+ return /* @__PURE__ */ jsx67(
4263
5581
  "div",
4264
5582
  {
4265
5583
  "data-slot": "alert-description",
@@ -4275,8 +5593,8 @@ function AlertDescription({
4275
5593
  // src/components/ui/animated-tabs.tsx
4276
5594
  import { IconChevronDown as IconChevronDown7 } from "@tabler/icons-react";
4277
5595
  import { motion as motion2 } from "motion/react";
4278
- import { useLayoutEffect as useLayoutEffect2, useMemo as useMemo4, useRef as useRef5, useState as useState12 } from "react";
4279
- import { jsx as jsx52, jsxs as jsxs35 } from "react/jsx-runtime";
5596
+ import { useLayoutEffect as useLayoutEffect2, useMemo as useMemo4, useRef as useRef5, useState as useState18 } from "react";
5597
+ import { jsx as jsx68, jsxs as jsxs43 } from "react/jsx-runtime";
4280
5598
  function AnimatedTabs({
4281
5599
  tabs,
4282
5600
  activeTab: controlledActiveTab,
@@ -4285,17 +5603,17 @@ function AnimatedTabs({
4285
5603
  className,
4286
5604
  linkComponent: LinkComponent
4287
5605
  }) {
4288
- const [internalActiveTab, setInternalActiveTab] = useState12(
5606
+ const [internalActiveTab, setInternalActiveTab] = useState18(
4289
5607
  defaultTab ?? tabs[0]?.value ?? ""
4290
5608
  );
4291
5609
  const activeTab = controlledActiveTab ?? internalActiveTab;
4292
- const [visibleTabs, setVisibleTabs] = useState12(tabs);
4293
- const [overflowTabs, setOverflowTabs] = useState12([]);
5610
+ const [visibleTabs, setVisibleTabs] = useState18(tabs);
5611
+ const [overflowTabs, setOverflowTabs] = useState18([]);
4294
5612
  const containerRef = useRef5(null);
4295
5613
  const tabsListRef = useRef5(null);
4296
5614
  const dropdownTriggerRef = useRef5(null);
4297
5615
  const tabRefs = useRef5([]);
4298
- const [underlineStyle, setUnderlineStyle] = useState12({ left: 0, width: 0 });
5616
+ const [underlineStyle, setUnderlineStyle] = useState18({ left: 0, width: 0 });
4299
5617
  const handleTabChange = (newValue) => {
4300
5618
  if (!controlledActiveTab) {
4301
5619
  setInternalActiveTab(newValue);
@@ -4403,7 +5721,7 @@ function AnimatedTabs({
4403
5721
  }
4404
5722
  };
4405
5723
  if (tab.href && LinkComponent) {
4406
- return /* @__PURE__ */ jsx52(
5724
+ return /* @__PURE__ */ jsx68(
4407
5725
  LinkComponent,
4408
5726
  {
4409
5727
  href: tab.href,
@@ -4414,7 +5732,7 @@ function AnimatedTabs({
4414
5732
  tab.value
4415
5733
  );
4416
5734
  }
4417
- return /* @__PURE__ */ jsx52(
5735
+ return /* @__PURE__ */ jsx68(
4418
5736
  "button",
4419
5737
  {
4420
5738
  type: "button",
@@ -4433,9 +5751,9 @@ function AnimatedTabs({
4433
5751
  isActive && "bg-accent font-medium"
4434
5752
  );
4435
5753
  if (tab.href && LinkComponent) {
4436
- return /* @__PURE__ */ jsx52(DropdownMenuItem, { asChild: true, className: itemClassName, children: /* @__PURE__ */ jsx52(LinkComponent, { href: tab.href, children: tab.name }) }, tab.value);
5754
+ return /* @__PURE__ */ jsx68(DropdownMenuItem, { asChild: true, className: itemClassName, children: /* @__PURE__ */ jsx68(LinkComponent, { href: tab.href, children: tab.name }) }, tab.value);
4437
5755
  }
4438
- return /* @__PURE__ */ jsx52(
5756
+ return /* @__PURE__ */ jsx68(
4439
5757
  DropdownMenuItem,
4440
5758
  {
4441
5759
  onClick: () => handleTabChange(tab.value),
@@ -4445,14 +5763,14 @@ function AnimatedTabs({
4445
5763
  tab.value
4446
5764
  );
4447
5765
  };
4448
- return /* @__PURE__ */ jsxs35("div", { className: cn("flex flex-col", className), children: [
4449
- /* @__PURE__ */ jsx52("div", { ref: containerRef, className: "w-full", children: /* @__PURE__ */ jsxs35("div", { ref: tabsListRef, className: "relative flex items-center", children: [
5766
+ return /* @__PURE__ */ jsxs43("div", { className: cn("flex flex-col", className), children: [
5767
+ /* @__PURE__ */ jsx68("div", { ref: containerRef, className: "w-full", children: /* @__PURE__ */ jsxs43("div", { ref: tabsListRef, className: "relative flex items-center", children: [
4450
5768
  visibleTabs.map((tab) => {
4451
5769
  const originalIndex = tabs.findIndex((t) => t.value === tab.value);
4452
5770
  return renderTab(tab, originalIndex);
4453
5771
  }),
4454
- overflowTabs.length > 0 && /* @__PURE__ */ jsxs35(DropdownMenu, { children: [
4455
- /* @__PURE__ */ jsxs35(
5772
+ overflowTabs.length > 0 && /* @__PURE__ */ jsxs43(DropdownMenu, { children: [
5773
+ /* @__PURE__ */ jsxs43(
4456
5774
  DropdownMenuTrigger,
4457
5775
  {
4458
5776
  ref: dropdownTriggerRef,
@@ -4463,13 +5781,13 @@ function AnimatedTabs({
4463
5781
  ),
4464
5782
  children: [
4465
5783
  "More",
4466
- /* @__PURE__ */ jsx52(IconChevronDown7, { className: "h-4 w-4" })
5784
+ /* @__PURE__ */ jsx68(IconChevronDown7, { className: "h-4 w-4" })
4467
5785
  ]
4468
5786
  }
4469
5787
  ),
4470
- /* @__PURE__ */ jsx52(DropdownMenuContent, { align: "start", className: "min-w-40", children: overflowTabs.map(renderDropdownItem) })
5788
+ /* @__PURE__ */ jsx68(DropdownMenuContent, { align: "start", className: "min-w-40", children: overflowTabs.map(renderDropdownItem) })
4471
5789
  ] }),
4472
- /* @__PURE__ */ jsx52(
5790
+ /* @__PURE__ */ jsx68(
4473
5791
  motion2.div,
4474
5792
  {
4475
5793
  className: "absolute bottom-0 left-0 z-20 h-0.5 bg-primary",
@@ -4485,23 +5803,23 @@ function AnimatedTabs({
4485
5803
  }
4486
5804
  )
4487
5805
  ] }) }),
4488
- activeTabData?.content && /* @__PURE__ */ jsx52("div", { className: "flex-1", children: activeTabData.content })
5806
+ activeTabData?.content && /* @__PURE__ */ jsx68("div", { className: "flex-1", children: activeTabData.content })
4489
5807
  ] });
4490
5808
  }
4491
5809
 
4492
5810
  // src/components/ui/aspect-ratio.tsx
4493
5811
  import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
4494
- import { jsx as jsx53 } from "react/jsx-runtime";
5812
+ import { jsx as jsx69 } from "react/jsx-runtime";
4495
5813
  function AspectRatio({
4496
5814
  ...props
4497
5815
  }) {
4498
- return /* @__PURE__ */ jsx53(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
5816
+ return /* @__PURE__ */ jsx69(AspectRatioPrimitive.Root, { "data-slot": "aspect-ratio", ...props });
4499
5817
  }
4500
5818
 
4501
5819
  // src/components/ui/badge.tsx
4502
5820
  import { Slot as Slot4 } from "@radix-ui/react-slot";
4503
5821
  import { cva as cva6 } from "class-variance-authority";
4504
- import { jsx as jsx54 } from "react/jsx-runtime";
5822
+ import { jsx as jsx70 } from "react/jsx-runtime";
4505
5823
  var badgeVariants = cva6(
4506
5824
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
4507
5825
  {
@@ -4525,7 +5843,7 @@ function Badge({
4525
5843
  ...props
4526
5844
  }) {
4527
5845
  const Comp = asChild ? Slot4 : "span";
4528
- return /* @__PURE__ */ jsx54(
5846
+ return /* @__PURE__ */ jsx70(
4529
5847
  Comp,
4530
5848
  {
4531
5849
  "data-slot": "badge",
@@ -4538,7 +5856,7 @@ function Badge({
4538
5856
  // src/components/ui/button-group.tsx
4539
5857
  import { Slot as Slot5 } from "@radix-ui/react-slot";
4540
5858
  import { cva as cva7 } from "class-variance-authority";
4541
- import { jsx as jsx55 } from "react/jsx-runtime";
5859
+ import { jsx as jsx71 } from "react/jsx-runtime";
4542
5860
  var buttonGroupVariants = cva7(
4543
5861
  "flex w-fit items-stretch [&>*]:focus-visible:z-10 [&>*]:focus-visible:relative [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2",
4544
5862
  {
@@ -4558,7 +5876,7 @@ function ButtonGroup({
4558
5876
  orientation,
4559
5877
  ...props
4560
5878
  }) {
4561
- return /* @__PURE__ */ jsx55(
5879
+ return /* @__PURE__ */ jsx71(
4562
5880
  "fieldset",
4563
5881
  {
4564
5882
  "data-slot": "button-group",
@@ -4574,7 +5892,7 @@ function ButtonGroupText({
4574
5892
  ...props
4575
5893
  }) {
4576
5894
  const Comp = asChild ? Slot5 : "div";
4577
- return /* @__PURE__ */ jsx55(
5895
+ return /* @__PURE__ */ jsx71(
4578
5896
  Comp,
4579
5897
  {
4580
5898
  className: cn(
@@ -4590,7 +5908,7 @@ function ButtonGroupSeparator({
4590
5908
  orientation = "vertical",
4591
5909
  ...props
4592
5910
  }) {
4593
- return /* @__PURE__ */ jsx55(
5911
+ return /* @__PURE__ */ jsx71(
4594
5912
  Separator2,
4595
5913
  {
4596
5914
  "data-slot": "button-group-separator",
@@ -4615,7 +5933,7 @@ import {
4615
5933
  DayPicker,
4616
5934
  getDefaultClassNames
4617
5935
  } from "react-day-picker";
4618
- import { jsx as jsx56 } from "react/jsx-runtime";
5936
+ import { jsx as jsx72 } from "react/jsx-runtime";
4619
5937
  function Calendar({
4620
5938
  className,
4621
5939
  classNames,
@@ -4627,7 +5945,7 @@ function Calendar({
4627
5945
  ...props
4628
5946
  }) {
4629
5947
  const defaultClassNames = getDefaultClassNames();
4630
- return /* @__PURE__ */ jsx56(
5948
+ return /* @__PURE__ */ jsx72(
4631
5949
  DayPicker,
4632
5950
  {
4633
5951
  showOutsideDays,
@@ -4727,7 +6045,7 @@ function Calendar({
4727
6045
  },
4728
6046
  components: {
4729
6047
  Root: ({ className: className2, rootRef, ...props2 }) => {
4730
- return /* @__PURE__ */ jsx56(
6048
+ return /* @__PURE__ */ jsx72(
4731
6049
  "div",
4732
6050
  {
4733
6051
  "data-slot": "calendar",
@@ -4739,10 +6057,10 @@ function Calendar({
4739
6057
  },
4740
6058
  Chevron: ({ className: className2, orientation, ...props2 }) => {
4741
6059
  if (orientation === "left") {
4742
- return /* @__PURE__ */ jsx56(IconChevronLeft, { className: cn("size-4", className2), ...props2 });
6060
+ return /* @__PURE__ */ jsx72(IconChevronLeft, { className: cn("size-4", className2), ...props2 });
4743
6061
  }
4744
6062
  if (orientation === "right") {
4745
- return /* @__PURE__ */ jsx56(
6063
+ return /* @__PURE__ */ jsx72(
4746
6064
  IconChevronRight4,
4747
6065
  {
4748
6066
  className: cn("size-4", className2),
@@ -4750,11 +6068,11 @@ function Calendar({
4750
6068
  }
4751
6069
  );
4752
6070
  }
4753
- return /* @__PURE__ */ jsx56(IconChevronDown8, { className: cn("size-4", className2), ...props2 });
6071
+ return /* @__PURE__ */ jsx72(IconChevronDown8, { className: cn("size-4", className2), ...props2 });
4754
6072
  },
4755
6073
  DayButton: CalendarDayButton,
4756
6074
  WeekNumber: ({ children, ...props2 }) => {
4757
- return /* @__PURE__ */ jsx56("td", { ...props2, children: /* @__PURE__ */ jsx56("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
6075
+ return /* @__PURE__ */ jsx72("td", { ...props2, children: /* @__PURE__ */ jsx72("div", { className: "flex size-(--cell-size) items-center justify-center text-center", children }) });
4758
6076
  },
4759
6077
  ...components
4760
6078
  },
@@ -4775,7 +6093,7 @@ function CalendarDayButton({
4775
6093
  ref.current?.focus();
4776
6094
  }
4777
6095
  }, [modifiers.focused]);
4778
- return /* @__PURE__ */ jsx56(
6096
+ return /* @__PURE__ */ jsx72(
4779
6097
  Button,
4780
6098
  {
4781
6099
  ref,
@@ -4800,7 +6118,7 @@ function CalendarDayButton({
4800
6118
  import { IconChevronLeft as IconChevronLeft2, IconChevronRight as IconChevronRight5 } from "@tabler/icons-react";
4801
6119
  import useEmblaCarousel from "embla-carousel-react";
4802
6120
  import * as React7 from "react";
4803
- import { jsx as jsx57, jsxs as jsxs36 } from "react/jsx-runtime";
6121
+ import { jsx as jsx73, jsxs as jsxs44 } from "react/jsx-runtime";
4804
6122
  var CarouselContext = React7.createContext(null);
4805
6123
  function useCarousel() {
4806
6124
  const context = React7.useContext(CarouselContext);
@@ -4867,7 +6185,7 @@ function Carousel({
4867
6185
  api.off("reInit", handleSelect);
4868
6186
  };
4869
6187
  }, [api]);
4870
- return /* @__PURE__ */ jsx57(
6188
+ return /* @__PURE__ */ jsx73(
4871
6189
  CarouselContext.Provider,
4872
6190
  {
4873
6191
  value: {
@@ -4880,7 +6198,7 @@ function Carousel({
4880
6198
  canScrollPrev,
4881
6199
  canScrollNext
4882
6200
  },
4883
- children: /* @__PURE__ */ jsx57(
6201
+ children: /* @__PURE__ */ jsx73(
4884
6202
  "section",
4885
6203
  {
4886
6204
  onKeyDownCapture: handleKeyDown,
@@ -4895,13 +6213,13 @@ function Carousel({
4895
6213
  }
4896
6214
  function CarouselContent({ className, ...props }) {
4897
6215
  const { carouselRef, orientation } = useCarousel();
4898
- return /* @__PURE__ */ jsx57(
6216
+ return /* @__PURE__ */ jsx73(
4899
6217
  "div",
4900
6218
  {
4901
6219
  ref: carouselRef,
4902
6220
  className: "overflow-hidden",
4903
6221
  "data-slot": "carousel-content",
4904
- children: /* @__PURE__ */ jsx57(
6222
+ children: /* @__PURE__ */ jsx73(
4905
6223
  "div",
4906
6224
  {
4907
6225
  className: cn(
@@ -4920,7 +6238,7 @@ function CarouselItem({
4920
6238
  ...props
4921
6239
  }) {
4922
6240
  const { orientation } = useCarousel();
4923
- return /* @__PURE__ */ jsx57(
6241
+ return /* @__PURE__ */ jsx73(
4924
6242
  "fieldset",
4925
6243
  {
4926
6244
  "aria-roledescription": "slide",
@@ -4941,7 +6259,7 @@ function CarouselPrevious({
4941
6259
  ...props
4942
6260
  }) {
4943
6261
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
4944
- return /* @__PURE__ */ jsxs36(
6262
+ return /* @__PURE__ */ jsxs44(
4945
6263
  Button,
4946
6264
  {
4947
6265
  "data-slot": "carousel-previous",
@@ -4956,8 +6274,8 @@ function CarouselPrevious({
4956
6274
  onClick: scrollPrev,
4957
6275
  ...props,
4958
6276
  children: [
4959
- /* @__PURE__ */ jsx57(IconChevronLeft2, {}),
4960
- /* @__PURE__ */ jsx57("span", { className: "sr-only", children: "Previous slide" })
6277
+ /* @__PURE__ */ jsx73(IconChevronLeft2, {}),
6278
+ /* @__PURE__ */ jsx73("span", { className: "sr-only", children: "Previous slide" })
4961
6279
  ]
4962
6280
  }
4963
6281
  );
@@ -4969,7 +6287,7 @@ function CarouselNext({
4969
6287
  ...props
4970
6288
  }) {
4971
6289
  const { orientation, scrollNext, canScrollNext } = useCarousel();
4972
- return /* @__PURE__ */ jsxs36(
6290
+ return /* @__PURE__ */ jsxs44(
4973
6291
  Button,
4974
6292
  {
4975
6293
  "data-slot": "carousel-next",
@@ -4984,8 +6302,8 @@ function CarouselNext({
4984
6302
  onClick: scrollNext,
4985
6303
  ...props,
4986
6304
  children: [
4987
- /* @__PURE__ */ jsx57(IconChevronRight5, {}),
4988
- /* @__PURE__ */ jsx57("span", { className: "sr-only", children: "Next slide" })
6305
+ /* @__PURE__ */ jsx73(IconChevronRight5, {}),
6306
+ /* @__PURE__ */ jsx73("span", { className: "sr-only", children: "Next slide" })
4989
6307
  ]
4990
6308
  }
4991
6309
  );
@@ -4994,7 +6312,7 @@ function CarouselNext({
4994
6312
  // src/components/ui/chart.tsx
4995
6313
  import * as React8 from "react";
4996
6314
  import * as RechartsPrimitive from "recharts";
4997
- import { Fragment as Fragment10, jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
6315
+ import { Fragment as Fragment13, jsx as jsx74, jsxs as jsxs45 } from "react/jsx-runtime";
4998
6316
  var THEMES = { light: "", dark: ".dark" };
4999
6317
  var sanitizeToken = (value) => value.replace(/[^a-zA-Z0-9-_]/g, "");
5000
6318
  var ChartContext = React8.createContext(null);
@@ -5016,7 +6334,7 @@ function ChartContainer({
5016
6334
  const sanitizedUniqueId = sanitizeToken(uniqueId);
5017
6335
  const chartToken = id ? sanitizeToken(id) : sanitizedUniqueId;
5018
6336
  const chartId = `chart-${chartToken || sanitizedUniqueId}`;
5019
- return /* @__PURE__ */ jsx58(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs37(
6337
+ return /* @__PURE__ */ jsx74(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs45(
5020
6338
  "div",
5021
6339
  {
5022
6340
  "data-slot": "chart",
@@ -5027,8 +6345,8 @@ function ChartContainer({
5027
6345
  ),
5028
6346
  ...props,
5029
6347
  children: [
5030
- /* @__PURE__ */ jsx58(ChartStyle, { id: chartId, config }),
5031
- /* @__PURE__ */ jsx58(RechartsPrimitive.ResponsiveContainer, { children })
6348
+ /* @__PURE__ */ jsx74(ChartStyle, { id: chartId, config }),
6349
+ /* @__PURE__ */ jsx74(RechartsPrimitive.ResponsiveContainer, { children })
5032
6350
  ]
5033
6351
  }
5034
6352
  ) });
@@ -5040,7 +6358,7 @@ var ChartStyle = ({ id, config }) => {
5040
6358
  if (!colorConfig.length) {
5041
6359
  return null;
5042
6360
  }
5043
- return /* @__PURE__ */ jsx58(
6361
+ return /* @__PURE__ */ jsx74(
5044
6362
  "style",
5045
6363
  {
5046
6364
  dangerouslySetInnerHTML: {
@@ -5095,7 +6413,7 @@ function ChartTooltipContent({
5095
6413
  return null;
5096
6414
  }
5097
6415
  const nestLabel = payload.length === 1 && indicator !== "dot";
5098
- return /* @__PURE__ */ jsxs37(
6416
+ return /* @__PURE__ */ jsxs45(
5099
6417
  "div",
5100
6418
  {
5101
6419
  className: cn(
@@ -5104,19 +6422,19 @@ function ChartTooltipContent({
5104
6422
  ),
5105
6423
  children: [
5106
6424
  nestLabel ? null : tooltipLabel,
5107
- /* @__PURE__ */ jsx58("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
6425
+ /* @__PURE__ */ jsx74("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
5108
6426
  const key = `${nameKey || item.name || item.dataKey || "value"}`;
5109
6427
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
5110
6428
  const indicatorColor = color || item.payload.fill || item.color;
5111
- return /* @__PURE__ */ jsx58(
6429
+ return /* @__PURE__ */ jsx74(
5112
6430
  "div",
5113
6431
  {
5114
6432
  className: cn(
5115
6433
  "[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5",
5116
6434
  indicator === "dot" && "items-center"
5117
6435
  ),
5118
- children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs37(Fragment10, { children: [
5119
- itemConfig?.icon ? /* @__PURE__ */ jsx58(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx58(
6436
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs45(Fragment13, { children: [
6437
+ itemConfig?.icon ? /* @__PURE__ */ jsx74(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx74(
5120
6438
  "div",
5121
6439
  {
5122
6440
  className: cn(
@@ -5134,7 +6452,7 @@ function ChartTooltipContent({
5134
6452
  }
5135
6453
  }
5136
6454
  ),
5137
- /* @__PURE__ */ jsxs37(
6455
+ /* @__PURE__ */ jsxs45(
5138
6456
  "div",
5139
6457
  {
5140
6458
  className: cn(
@@ -5142,11 +6460,11 @@ function ChartTooltipContent({
5142
6460
  nestLabel ? "items-end" : "items-center"
5143
6461
  ),
5144
6462
  children: [
5145
- /* @__PURE__ */ jsxs37("div", { className: "grid gap-1.5", children: [
6463
+ /* @__PURE__ */ jsxs45("div", { className: "grid gap-1.5", children: [
5146
6464
  nestLabel ? tooltipLabel : null,
5147
- /* @__PURE__ */ jsx58("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
6465
+ /* @__PURE__ */ jsx74("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
5148
6466
  ] }),
5149
- item.value && /* @__PURE__ */ jsx58("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
6467
+ item.value && /* @__PURE__ */ jsx74("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
5150
6468
  ]
5151
6469
  }
5152
6470
  )
@@ -5171,7 +6489,7 @@ function ChartLegendContent({
5171
6489
  if (!payload?.length) {
5172
6490
  return null;
5173
6491
  }
5174
- return /* @__PURE__ */ jsx58(
6492
+ return /* @__PURE__ */ jsx74(
5175
6493
  "div",
5176
6494
  {
5177
6495
  className: cn(
@@ -5182,14 +6500,14 @@ function ChartLegendContent({
5182
6500
  children: payload.filter((item) => item.type !== "none").map((item) => {
5183
6501
  const key = `${nameKey || item.dataKey || "value"}`;
5184
6502
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
5185
- return /* @__PURE__ */ jsxs37(
6503
+ return /* @__PURE__ */ jsxs45(
5186
6504
  "div",
5187
6505
  {
5188
6506
  className: cn(
5189
6507
  "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
5190
6508
  ),
5191
6509
  children: [
5192
- itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx58(itemConfig.icon, {}) : /* @__PURE__ */ jsx58(
6510
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx74(itemConfig.icon, {}) : /* @__PURE__ */ jsx74(
5193
6511
  "div",
5194
6512
  {
5195
6513
  className: "h-2 w-2 shrink-0 rounded-[2px]",
@@ -5237,23 +6555,23 @@ function getTooltipLabel({
5237
6555
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
5238
6556
  const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
5239
6557
  if (labelFormatter) {
5240
- return /* @__PURE__ */ jsx58("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
6558
+ return /* @__PURE__ */ jsx74("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
5241
6559
  }
5242
6560
  if (!value) {
5243
6561
  return null;
5244
6562
  }
5245
- return /* @__PURE__ */ jsx58("div", { className: cn("font-medium", labelClassName), children: value });
6563
+ return /* @__PURE__ */ jsx74("div", { className: cn("font-medium", labelClassName), children: value });
5246
6564
  }
5247
6565
 
5248
6566
  // src/components/ui/checkbox.tsx
5249
6567
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
5250
6568
  import { IconCheck as IconCheck3 } from "@tabler/icons-react";
5251
- import { jsx as jsx59 } from "react/jsx-runtime";
6569
+ import { jsx as jsx75 } from "react/jsx-runtime";
5252
6570
  function Checkbox({
5253
6571
  className,
5254
6572
  ...props
5255
6573
  }) {
5256
- return /* @__PURE__ */ jsx59(
6574
+ return /* @__PURE__ */ jsx75(
5257
6575
  CheckboxPrimitive.Root,
5258
6576
  {
5259
6577
  "data-slot": "checkbox",
@@ -5262,12 +6580,12 @@ function Checkbox({
5262
6580
  className
5263
6581
  ),
5264
6582
  ...props,
5265
- children: /* @__PURE__ */ jsx59(
6583
+ children: /* @__PURE__ */ jsx75(
5266
6584
  CheckboxPrimitive.Indicator,
5267
6585
  {
5268
6586
  "data-slot": "checkbox-indicator",
5269
6587
  className: "grid place-content-center text-current transition-none",
5270
- children: /* @__PURE__ */ jsx59(IconCheck3, { className: "size-3.5" })
6588
+ children: /* @__PURE__ */ jsx75(IconCheck3, { className: "size-3.5" })
5271
6589
  }
5272
6590
  )
5273
6591
  }
@@ -5277,36 +6595,36 @@ function Checkbox({
5277
6595
  // src/components/ui/context-menu.tsx
5278
6596
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
5279
6597
  import { IconCheck as IconCheck4, IconChevronRight as IconChevronRight6, IconCircle as IconCircle2 } from "@tabler/icons-react";
5280
- import { jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
6598
+ import { jsx as jsx76, jsxs as jsxs46 } from "react/jsx-runtime";
5281
6599
  function ContextMenu({
5282
6600
  ...props
5283
6601
  }) {
5284
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
6602
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Root, { "data-slot": "context-menu", ...props });
5285
6603
  }
5286
6604
  function ContextMenuTrigger({
5287
6605
  ...props
5288
6606
  }) {
5289
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Trigger, { "data-slot": "context-menu-trigger", ...props });
6607
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Trigger, { "data-slot": "context-menu-trigger", ...props });
5290
6608
  }
5291
6609
  function ContextMenuGroup({
5292
6610
  ...props
5293
6611
  }) {
5294
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
6612
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Group, { "data-slot": "context-menu-group", ...props });
5295
6613
  }
5296
6614
  function ContextMenuPortal({
5297
6615
  ...props
5298
6616
  }) {
5299
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
6617
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Portal, { "data-slot": "context-menu-portal", ...props });
5300
6618
  }
5301
6619
  function ContextMenuSub({
5302
6620
  ...props
5303
6621
  }) {
5304
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
6622
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Sub, { "data-slot": "context-menu-sub", ...props });
5305
6623
  }
5306
6624
  function ContextMenuRadioGroup({
5307
6625
  ...props
5308
6626
  }) {
5309
- return /* @__PURE__ */ jsx60(
6627
+ return /* @__PURE__ */ jsx76(
5310
6628
  ContextMenuPrimitive.RadioGroup,
5311
6629
  {
5312
6630
  "data-slot": "context-menu-radio-group",
@@ -5320,7 +6638,7 @@ function ContextMenuSubTrigger({
5320
6638
  children,
5321
6639
  ...props
5322
6640
  }) {
5323
- return /* @__PURE__ */ jsxs38(
6641
+ return /* @__PURE__ */ jsxs46(
5324
6642
  ContextMenuPrimitive.SubTrigger,
5325
6643
  {
5326
6644
  "data-slot": "context-menu-sub-trigger",
@@ -5332,7 +6650,7 @@ function ContextMenuSubTrigger({
5332
6650
  ...props,
5333
6651
  children: [
5334
6652
  children,
5335
- /* @__PURE__ */ jsx60(IconChevronRight6, { className: "ml-auto" })
6653
+ /* @__PURE__ */ jsx76(IconChevronRight6, { className: "ml-auto" })
5336
6654
  ]
5337
6655
  }
5338
6656
  );
@@ -5341,7 +6659,7 @@ function ContextMenuSubContent({
5341
6659
  className,
5342
6660
  ...props
5343
6661
  }) {
5344
- return /* @__PURE__ */ jsx60(
6662
+ return /* @__PURE__ */ jsx76(
5345
6663
  ContextMenuPrimitive.SubContent,
5346
6664
  {
5347
6665
  "data-slot": "context-menu-sub-content",
@@ -5357,7 +6675,7 @@ function ContextMenuContent({
5357
6675
  className,
5358
6676
  ...props
5359
6677
  }) {
5360
- return /* @__PURE__ */ jsx60(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx60(
6678
+ return /* @__PURE__ */ jsx76(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx76(
5361
6679
  ContextMenuPrimitive.Content,
5362
6680
  {
5363
6681
  "data-slot": "context-menu-content",
@@ -5375,7 +6693,7 @@ function ContextMenuItem({
5375
6693
  variant = "default",
5376
6694
  ...props
5377
6695
  }) {
5378
- return /* @__PURE__ */ jsx60(
6696
+ return /* @__PURE__ */ jsx76(
5379
6697
  ContextMenuPrimitive.Item,
5380
6698
  {
5381
6699
  "data-slot": "context-menu-item",
@@ -5395,7 +6713,7 @@ function ContextMenuCheckboxItem({
5395
6713
  checked,
5396
6714
  ...props
5397
6715
  }) {
5398
- return /* @__PURE__ */ jsxs38(
6716
+ return /* @__PURE__ */ jsxs46(
5399
6717
  ContextMenuPrimitive.CheckboxItem,
5400
6718
  {
5401
6719
  "data-slot": "context-menu-checkbox-item",
@@ -5406,7 +6724,7 @@ function ContextMenuCheckboxItem({
5406
6724
  checked,
5407
6725
  ...props,
5408
6726
  children: [
5409
- /* @__PURE__ */ jsx60("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx60(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx60(IconCheck4, { className: "size-4" }) }) }),
6727
+ /* @__PURE__ */ jsx76("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx76(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx76(IconCheck4, { className: "size-4" }) }) }),
5410
6728
  children
5411
6729
  ]
5412
6730
  }
@@ -5417,7 +6735,7 @@ function ContextMenuRadioItem({
5417
6735
  children,
5418
6736
  ...props
5419
6737
  }) {
5420
- return /* @__PURE__ */ jsxs38(
6738
+ return /* @__PURE__ */ jsxs46(
5421
6739
  ContextMenuPrimitive.RadioItem,
5422
6740
  {
5423
6741
  "data-slot": "context-menu-radio-item",
@@ -5427,7 +6745,7 @@ function ContextMenuRadioItem({
5427
6745
  ),
5428
6746
  ...props,
5429
6747
  children: [
5430
- /* @__PURE__ */ jsx60("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx60(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx60(IconCircle2, { className: "size-2 fill-current" }) }) }),
6748
+ /* @__PURE__ */ jsx76("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx76(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx76(IconCircle2, { className: "size-2 fill-current" }) }) }),
5431
6749
  children
5432
6750
  ]
5433
6751
  }
@@ -5438,7 +6756,7 @@ function ContextMenuLabel({
5438
6756
  inset,
5439
6757
  ...props
5440
6758
  }) {
5441
- return /* @__PURE__ */ jsx60(
6759
+ return /* @__PURE__ */ jsx76(
5442
6760
  ContextMenuPrimitive.Label,
5443
6761
  {
5444
6762
  "data-slot": "context-menu-label",
@@ -5455,7 +6773,7 @@ function ContextMenuSeparator({
5455
6773
  className,
5456
6774
  ...props
5457
6775
  }) {
5458
- return /* @__PURE__ */ jsx60(
6776
+ return /* @__PURE__ */ jsx76(
5459
6777
  ContextMenuPrimitive.Separator,
5460
6778
  {
5461
6779
  "data-slot": "context-menu-separator",
@@ -5468,7 +6786,7 @@ function ContextMenuShortcut({
5468
6786
  className,
5469
6787
  ...props
5470
6788
  }) {
5471
- return /* @__PURE__ */ jsx60(
6789
+ return /* @__PURE__ */ jsx76(
5472
6790
  "span",
5473
6791
  {
5474
6792
  "data-slot": "context-menu-shortcut",
@@ -5493,7 +6811,7 @@ import {
5493
6811
  useReactTable
5494
6812
  } from "@tanstack/react-table";
5495
6813
  import * as React9 from "react";
5496
- import { jsx as jsx61, jsxs as jsxs39 } from "react/jsx-runtime";
6814
+ import { jsx as jsx77, jsxs as jsxs47 } from "react/jsx-runtime";
5497
6815
  function DataTable({
5498
6816
  columns,
5499
6817
  data,
@@ -5581,8 +6899,8 @@ function DataTable({
5581
6899
  getFacetedRowModel: getFacetedRowModel(),
5582
6900
  getFacetedUniqueValues: getFacetedUniqueValues()
5583
6901
  });
5584
- return /* @__PURE__ */ jsx61("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxs39(Table, { children: [
5585
- /* @__PURE__ */ jsx61(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx61(TableRow, { children: headerGroup.headers.map((header, index) => {
6902
+ return /* @__PURE__ */ jsx77("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxs47(Table, { children: [
6903
+ /* @__PURE__ */ jsx77(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx77(TableRow, { children: headerGroup.headers.map((header, index) => {
5586
6904
  const isFirst = index === 0;
5587
6905
  const isLast = index === headerGroup.headers.length - 1;
5588
6906
  let className;
@@ -5591,7 +6909,7 @@ function DataTable({
5591
6909
  } else if (isLast) {
5592
6910
  className = "pr-4";
5593
6911
  }
5594
- return /* @__PURE__ */ jsx61(
6912
+ return /* @__PURE__ */ jsx77(
5595
6913
  TableHead,
5596
6914
  {
5597
6915
  colSpan: header.colSpan,
@@ -5605,7 +6923,7 @@ function DataTable({
5605
6923
  header.id
5606
6924
  );
5607
6925
  }) }, headerGroup.id)) }),
5608
- /* @__PURE__ */ jsx61(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx61(
6926
+ /* @__PURE__ */ jsx77(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx77(
5609
6927
  TableRow,
5610
6928
  {
5611
6929
  "data-state": row.getIsSelected() && "selected",
@@ -5620,7 +6938,7 @@ function DataTable({
5620
6938
  } else if (isLast) {
5621
6939
  className = "pr-4";
5622
6940
  }
5623
- return /* @__PURE__ */ jsx61(
6941
+ return /* @__PURE__ */ jsx77(
5624
6942
  TableCell,
5625
6943
  {
5626
6944
  style: { width: cell.column.getSize() },
@@ -5635,19 +6953,19 @@ function DataTable({
5635
6953
  })
5636
6954
  },
5637
6955
  row.id
5638
- )) : /* @__PURE__ */ jsx61(TableRow, { children: /* @__PURE__ */ jsx61(TableCell, { colSpan: columns.length, className: "h-24 text-center", children: "No results." }) }) })
6956
+ )) : /* @__PURE__ */ jsx77(TableRow, { children: /* @__PURE__ */ jsx77(TableCell, { colSpan: columns.length, className: "h-24 text-center", children: "No results." }) }) })
5639
6957
  ] }) });
5640
6958
  }
5641
6959
 
5642
6960
  // src/components/ui/data-table/data-table-action.tsx
5643
6961
  import { IconChevronRight as IconChevronRight7 } from "@tabler/icons-react";
5644
- import { jsx as jsx62, jsxs as jsxs40 } from "react/jsx-runtime";
6962
+ import { jsx as jsx78, jsxs as jsxs48 } from "react/jsx-runtime";
5645
6963
  function DataTableAction({
5646
6964
  onClick,
5647
6965
  disabled,
5648
6966
  "aria-label": ariaLabel = "Open menu"
5649
6967
  }) {
5650
- return /* @__PURE__ */ jsx62("div", { className: "flex justify-end align-center", children: /* @__PURE__ */ jsxs40(
6968
+ return /* @__PURE__ */ jsx78("div", { className: "flex justify-end align-center", children: /* @__PURE__ */ jsxs48(
5651
6969
  Button,
5652
6970
  {
5653
6971
  variant: "ghost",
@@ -5655,24 +6973,24 @@ function DataTableAction({
5655
6973
  onClick,
5656
6974
  disabled,
5657
6975
  children: [
5658
- /* @__PURE__ */ jsx62("span", { className: "sr-only", children: ariaLabel }),
5659
- /* @__PURE__ */ jsx62(IconChevronRight7, { className: "h-4 w-4" })
6976
+ /* @__PURE__ */ jsx78("span", { className: "sr-only", children: ariaLabel }),
6977
+ /* @__PURE__ */ jsx78(IconChevronRight7, { className: "h-4 w-4" })
5660
6978
  ]
5661
6979
  }
5662
6980
  ) });
5663
6981
  }
5664
6982
 
5665
6983
  // src/components/ui/data-table/data-table-column-header.tsx
5666
- import { jsx as jsx63 } from "react/jsx-runtime";
6984
+ import { jsx as jsx79 } from "react/jsx-runtime";
5667
6985
  function DataTableColumnHeader({
5668
6986
  column,
5669
6987
  title,
5670
6988
  className
5671
6989
  }) {
5672
6990
  if (!column.getCanSort()) {
5673
- return /* @__PURE__ */ jsx63("div", { className: cn(className), children: title });
6991
+ return /* @__PURE__ */ jsx79("div", { className: cn(className), children: title });
5674
6992
  }
5675
- return /* @__PURE__ */ jsx63("div", { className: cn("flex items-center gap-2", className), children: /* @__PURE__ */ jsx63("span", { children: title }) });
6993
+ return /* @__PURE__ */ jsx79("div", { className: cn("flex items-center gap-2", className), children: /* @__PURE__ */ jsx79("span", { children: title }) });
5676
6994
  }
5677
6995
 
5678
6996
  // src/components/ui/data-table/data-table-pagination.tsx
@@ -5683,7 +7001,7 @@ import {
5683
7001
  IconChevronsRight
5684
7002
  } from "@tabler/icons-react";
5685
7003
  import { useTranslations } from "next-intl";
5686
- import { jsx as jsx64, jsxs as jsxs41 } from "react/jsx-runtime";
7004
+ import { jsx as jsx80, jsxs as jsxs49 } from "react/jsx-runtime";
5687
7005
  function addRange(pages, start, end) {
5688
7006
  for (let i = start; i <= end; i++) {
5689
7007
  pages.push(i);
@@ -5737,30 +7055,30 @@ function DataTablePagination({
5737
7055
  const hasSelection = selectedRows > 0;
5738
7056
  const rowText = hasSelection ? `${selectedRows} ${t("of")} ${totalRows} ${rowLabel} ${t("selected")}` : `${totalRows} ${rowLabel} ${t("total")}`;
5739
7057
  const pageText = `${t("page")} ${pageIndex + 1} ${t("of")} ${pageCount || 1}`;
5740
- return /* @__PURE__ */ jsxs41("div", { className: "flex flex-col gap-4 px-2 sm:flex-row sm:items-center sm:justify-between", children: [
5741
- /* @__PURE__ */ jsxs41("div", { className: "flex items-center justify-center gap-4 sm:justify-start", children: [
5742
- /* @__PURE__ */ jsx64("div", { className: "text-muted-foreground text-sm", children: /* @__PURE__ */ jsxs41("span", { children: [
7058
+ return /* @__PURE__ */ jsxs49("div", { className: "flex flex-col gap-4 px-2 sm:flex-row sm:items-center sm:justify-between", children: [
7059
+ /* @__PURE__ */ jsxs49("div", { className: "flex items-center justify-center gap-4 sm:justify-start", children: [
7060
+ /* @__PURE__ */ jsx80("div", { className: "text-muted-foreground text-sm", children: /* @__PURE__ */ jsxs49("span", { children: [
5743
7061
  rowText,
5744
- /* @__PURE__ */ jsx64("span", { className: "mx-2", children: "\xB7" }),
7062
+ /* @__PURE__ */ jsx80("span", { className: "mx-2", children: "\xB7" }),
5745
7063
  pageText
5746
7064
  ] }) }),
5747
- /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-2", children: [
5748
- /* @__PURE__ */ jsx64("span", { className: "text-sm font-medium whitespace-nowrap", children: t("rowsPerPage") }),
5749
- /* @__PURE__ */ jsxs41(
7065
+ /* @__PURE__ */ jsxs49("div", { className: "flex items-center gap-2", children: [
7066
+ /* @__PURE__ */ jsx80("span", { className: "text-sm font-medium whitespace-nowrap", children: t("rowsPerPage") }),
7067
+ /* @__PURE__ */ jsxs49(
5750
7068
  Select,
5751
7069
  {
5752
7070
  value: `${pageSize}`,
5753
7071
  onValueChange: (value) => onPageSizeChange(Number(value)),
5754
7072
  children: [
5755
- /* @__PURE__ */ jsx64(SelectTrigger, { className: "h-8 w-[70px]", children: /* @__PURE__ */ jsx64(SelectValue, { placeholder: pageSize }) }),
5756
- /* @__PURE__ */ jsx64(SelectContent, { side: "top", children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx64(SelectItem, { value: `${size}`, children: size }, size)) })
7073
+ /* @__PURE__ */ jsx80(SelectTrigger, { className: "h-8 w-[70px]", children: /* @__PURE__ */ jsx80(SelectValue, { placeholder: pageSize }) }),
7074
+ /* @__PURE__ */ jsx80(SelectContent, { side: "top", children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx80(SelectItem, { value: `${size}`, children: size }, size)) })
5757
7075
  ]
5758
7076
  }
5759
7077
  )
5760
7078
  ] })
5761
7079
  ] }),
5762
- /* @__PURE__ */ jsx64("div", { className: "flex justify-center sm:justify-end", children: /* @__PURE__ */ jsxs41("nav", { "aria-label": "Pagination", className: "flex items-center gap-1", children: [
5763
- /* @__PURE__ */ jsxs41(
7080
+ /* @__PURE__ */ jsx80("div", { className: "flex justify-center sm:justify-end", children: /* @__PURE__ */ jsxs49("nav", { "aria-label": "Pagination", className: "flex items-center gap-1", children: [
7081
+ /* @__PURE__ */ jsxs49(
5764
7082
  Button,
5765
7083
  {
5766
7084
  variant: "outline",
@@ -5770,12 +7088,12 @@ function DataTablePagination({
5770
7088
  disabled: !canPreviousPage,
5771
7089
  "aria-label": t("firstPage"),
5772
7090
  children: [
5773
- /* @__PURE__ */ jsx64(IconChevronsLeft, { className: "h-4 w-4" }),
5774
- /* @__PURE__ */ jsx64("span", { className: "sr-only", children: t("firstPage") })
7091
+ /* @__PURE__ */ jsx80(IconChevronsLeft, { className: "h-4 w-4" }),
7092
+ /* @__PURE__ */ jsx80("span", { className: "sr-only", children: t("firstPage") })
5775
7093
  ]
5776
7094
  }
5777
7095
  ),
5778
- /* @__PURE__ */ jsxs41(
7096
+ /* @__PURE__ */ jsxs49(
5779
7097
  Button,
5780
7098
  {
5781
7099
  variant: "outline",
@@ -5785,8 +7103,8 @@ function DataTablePagination({
5785
7103
  disabled: !canPreviousPage,
5786
7104
  "aria-label": t("previousPage"),
5787
7105
  children: [
5788
- /* @__PURE__ */ jsx64(IconChevronLeft3, { className: "h-4 w-4" }),
5789
- /* @__PURE__ */ jsx64("span", { className: "sr-only", children: t("previousPage") })
7106
+ /* @__PURE__ */ jsx80(IconChevronLeft3, { className: "h-4 w-4" }),
7107
+ /* @__PURE__ */ jsx80("span", { className: "sr-only", children: t("previousPage") })
5790
7108
  ]
5791
7109
  }
5792
7110
  ),
@@ -5794,7 +7112,7 @@ function DataTablePagination({
5794
7112
  if (page === "ellipsis") {
5795
7113
  const prevPage = idx > 0 ? pageNumbers[idx - 1] : null;
5796
7114
  const nextPage = idx < pageNumbers.length - 1 ? pageNumbers[idx + 1] : null;
5797
- return /* @__PURE__ */ jsx64(
7115
+ return /* @__PURE__ */ jsx80(
5798
7116
  "span",
5799
7117
  {
5800
7118
  className: "flex h-8 w-8 items-center justify-center text-muted-foreground",
@@ -5806,7 +7124,7 @@ function DataTablePagination({
5806
7124
  }
5807
7125
  const pageNum = page;
5808
7126
  const isActive = pageNum === pageIndex + 1;
5809
- return /* @__PURE__ */ jsx64(
7127
+ return /* @__PURE__ */ jsx80(
5810
7128
  Button,
5811
7129
  {
5812
7130
  variant: isActive ? "default" : "outline",
@@ -5820,7 +7138,7 @@ function DataTablePagination({
5820
7138
  pageNum
5821
7139
  );
5822
7140
  }),
5823
- /* @__PURE__ */ jsxs41(
7141
+ /* @__PURE__ */ jsxs49(
5824
7142
  Button,
5825
7143
  {
5826
7144
  variant: "outline",
@@ -5830,12 +7148,12 @@ function DataTablePagination({
5830
7148
  disabled: !canNextPage,
5831
7149
  "aria-label": t("nextPage"),
5832
7150
  children: [
5833
- /* @__PURE__ */ jsx64(IconChevronRight8, { className: "h-4 w-4" }),
5834
- /* @__PURE__ */ jsx64("span", { className: "sr-only", children: t("nextPage") })
7151
+ /* @__PURE__ */ jsx80(IconChevronRight8, { className: "h-4 w-4" }),
7152
+ /* @__PURE__ */ jsx80("span", { className: "sr-only", children: t("nextPage") })
5835
7153
  ]
5836
7154
  }
5837
7155
  ),
5838
- /* @__PURE__ */ jsxs41(
7156
+ /* @__PURE__ */ jsxs49(
5839
7157
  Button,
5840
7158
  {
5841
7159
  variant: "outline",
@@ -5845,8 +7163,8 @@ function DataTablePagination({
5845
7163
  disabled: !canNextPage,
5846
7164
  "aria-label": t("lastPage"),
5847
7165
  children: [
5848
- /* @__PURE__ */ jsx64(IconChevronsRight, { className: "h-4 w-4" }),
5849
- /* @__PURE__ */ jsx64("span", { className: "sr-only", children: t("lastPage") })
7166
+ /* @__PURE__ */ jsx80(IconChevronsRight, { className: "h-4 w-4" }),
7167
+ /* @__PURE__ */ jsx80("span", { className: "sr-only", children: t("lastPage") })
5850
7168
  ]
5851
7169
  }
5852
7170
  )
@@ -5856,29 +7174,29 @@ function DataTablePagination({
5856
7174
 
5857
7175
  // src/components/ui/data-table/data-table-view-options.tsx
5858
7176
  import { IconSettings } from "@tabler/icons-react";
5859
- import { jsx as jsx65, jsxs as jsxs42 } from "react/jsx-runtime";
7177
+ import { jsx as jsx81, jsxs as jsxs50 } from "react/jsx-runtime";
5860
7178
  function DataTableViewOptions({
5861
7179
  table
5862
7180
  }) {
5863
- return /* @__PURE__ */ jsxs42(DropdownMenu, { children: [
5864
- /* @__PURE__ */ jsx65(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs42(
7181
+ return /* @__PURE__ */ jsxs50(DropdownMenu, { children: [
7182
+ /* @__PURE__ */ jsx81(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs50(
5865
7183
  Button,
5866
7184
  {
5867
7185
  variant: "outline",
5868
7186
  size: "sm",
5869
7187
  className: "ml-auto hidden h-8 lg:flex",
5870
7188
  children: [
5871
- /* @__PURE__ */ jsx65(IconSettings, { className: "mr-2 h-4 w-4" }),
7189
+ /* @__PURE__ */ jsx81(IconSettings, { className: "mr-2 h-4 w-4" }),
5872
7190
  "View"
5873
7191
  ]
5874
7192
  }
5875
7193
  ) }),
5876
- /* @__PURE__ */ jsxs42(DropdownMenuContent, { align: "end", className: "w-[150px]", children: [
5877
- /* @__PURE__ */ jsx65(DropdownMenuLabel, { children: "Toggle columns" }),
5878
- /* @__PURE__ */ jsx65(DropdownMenuSeparator, {}),
7194
+ /* @__PURE__ */ jsxs50(DropdownMenuContent, { align: "end", className: "w-[150px]", children: [
7195
+ /* @__PURE__ */ jsx81(DropdownMenuLabel, { children: "Toggle columns" }),
7196
+ /* @__PURE__ */ jsx81(DropdownMenuSeparator, {}),
5879
7197
  table.getAllColumns().filter(
5880
7198
  (column) => typeof column.accessorFn !== "undefined" && column.getCanHide()
5881
- ).map((column) => /* @__PURE__ */ jsx65(
7199
+ ).map((column) => /* @__PURE__ */ jsx81(
5882
7200
  DropdownMenuCheckboxItem,
5883
7201
  {
5884
7202
  className: "capitalize",
@@ -5894,32 +7212,32 @@ function DataTableViewOptions({
5894
7212
 
5895
7213
  // src/components/ui/drawer.tsx
5896
7214
  import { Drawer as DrawerPrimitive } from "vaul";
5897
- import { jsx as jsx66, jsxs as jsxs43 } from "react/jsx-runtime";
7215
+ import { jsx as jsx82, jsxs as jsxs51 } from "react/jsx-runtime";
5898
7216
  function Drawer({
5899
7217
  ...props
5900
7218
  }) {
5901
- return /* @__PURE__ */ jsx66(DrawerPrimitive.Root, { "data-slot": "drawer", ...props });
7219
+ return /* @__PURE__ */ jsx82(DrawerPrimitive.Root, { "data-slot": "drawer", ...props });
5902
7220
  }
5903
7221
  function DrawerTrigger({
5904
7222
  ...props
5905
7223
  }) {
5906
- return /* @__PURE__ */ jsx66(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
7224
+ return /* @__PURE__ */ jsx82(DrawerPrimitive.Trigger, { "data-slot": "drawer-trigger", ...props });
5907
7225
  }
5908
7226
  function DrawerPortal({
5909
7227
  ...props
5910
7228
  }) {
5911
- return /* @__PURE__ */ jsx66(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
7229
+ return /* @__PURE__ */ jsx82(DrawerPrimitive.Portal, { "data-slot": "drawer-portal", ...props });
5912
7230
  }
5913
7231
  function DrawerClose({
5914
7232
  ...props
5915
7233
  }) {
5916
- return /* @__PURE__ */ jsx66(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
7234
+ return /* @__PURE__ */ jsx82(DrawerPrimitive.Close, { "data-slot": "drawer-close", ...props });
5917
7235
  }
5918
7236
  function DrawerOverlay({
5919
7237
  className,
5920
7238
  ...props
5921
7239
  }) {
5922
- return /* @__PURE__ */ jsx66(
7240
+ return /* @__PURE__ */ jsx82(
5923
7241
  DrawerPrimitive.Overlay,
5924
7242
  {
5925
7243
  "data-slot": "drawer-overlay",
@@ -5936,9 +7254,9 @@ function DrawerContent({
5936
7254
  children,
5937
7255
  ...props
5938
7256
  }) {
5939
- return /* @__PURE__ */ jsxs43(DrawerPortal, { "data-slot": "drawer-portal", children: [
5940
- /* @__PURE__ */ jsx66(DrawerOverlay, {}),
5941
- /* @__PURE__ */ jsxs43(
7257
+ return /* @__PURE__ */ jsxs51(DrawerPortal, { "data-slot": "drawer-portal", children: [
7258
+ /* @__PURE__ */ jsx82(DrawerOverlay, {}),
7259
+ /* @__PURE__ */ jsxs51(
5942
7260
  DrawerPrimitive.Content,
5943
7261
  {
5944
7262
  "data-slot": "drawer-content",
@@ -5952,7 +7270,7 @@ function DrawerContent({
5952
7270
  ),
5953
7271
  ...props,
5954
7272
  children: [
5955
- /* @__PURE__ */ jsx66("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
7273
+ /* @__PURE__ */ jsx82("div", { className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
5956
7274
  children
5957
7275
  ]
5958
7276
  }
@@ -5960,7 +7278,7 @@ function DrawerContent({
5960
7278
  ] });
5961
7279
  }
5962
7280
  function DrawerHeader({ className, ...props }) {
5963
- return /* @__PURE__ */ jsx66(
7281
+ return /* @__PURE__ */ jsx82(
5964
7282
  "div",
5965
7283
  {
5966
7284
  "data-slot": "drawer-header",
@@ -5973,7 +7291,7 @@ function DrawerHeader({ className, ...props }) {
5973
7291
  );
5974
7292
  }
5975
7293
  function DrawerFooter({ className, ...props }) {
5976
- return /* @__PURE__ */ jsx66(
7294
+ return /* @__PURE__ */ jsx82(
5977
7295
  "div",
5978
7296
  {
5979
7297
  "data-slot": "drawer-footer",
@@ -5986,7 +7304,7 @@ function DrawerTitle({
5986
7304
  className,
5987
7305
  ...props
5988
7306
  }) {
5989
- return /* @__PURE__ */ jsx66(
7307
+ return /* @__PURE__ */ jsx82(
5990
7308
  DrawerPrimitive.Title,
5991
7309
  {
5992
7310
  "data-slot": "drawer-title",
@@ -5999,7 +7317,7 @@ function DrawerDescription({
5999
7317
  className,
6000
7318
  ...props
6001
7319
  }) {
6002
- return /* @__PURE__ */ jsx66(
7320
+ return /* @__PURE__ */ jsx82(
6003
7321
  DrawerPrimitive.Description,
6004
7322
  {
6005
7323
  "data-slot": "drawer-description",
@@ -6011,31 +7329,9 @@ function DrawerDescription({
6011
7329
 
6012
7330
  // src/components/ui/field.tsx
6013
7331
  import { cva as cva8 } from "class-variance-authority";
6014
-
6015
- // src/components/ui/label.tsx
6016
- import * as LabelPrimitive from "@radix-ui/react-label";
6017
- import { jsx as jsx67 } from "react/jsx-runtime";
6018
- function Label4({
6019
- className,
6020
- ...props
6021
- }) {
6022
- return /* @__PURE__ */ jsx67(
6023
- LabelPrimitive.Root,
6024
- {
6025
- "data-slot": "label",
6026
- className: cn(
6027
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
6028
- className
6029
- ),
6030
- ...props
6031
- }
6032
- );
6033
- }
6034
-
6035
- // src/components/ui/field.tsx
6036
- import { jsx as jsx68, jsxs as jsxs44 } from "react/jsx-runtime";
7332
+ import { jsx as jsx83, jsxs as jsxs52 } from "react/jsx-runtime";
6037
7333
  function FieldSet({ className, ...props }) {
6038
- return /* @__PURE__ */ jsx68(
7334
+ return /* @__PURE__ */ jsx83(
6039
7335
  "fieldset",
6040
7336
  {
6041
7337
  "data-slot": "field-set",
@@ -6053,7 +7349,7 @@ function FieldLegend({
6053
7349
  variant = "legend",
6054
7350
  ...props
6055
7351
  }) {
6056
- return /* @__PURE__ */ jsx68(
7352
+ return /* @__PURE__ */ jsx83(
6057
7353
  "legend",
6058
7354
  {
6059
7355
  "data-slot": "field-legend",
@@ -6069,7 +7365,7 @@ function FieldLegend({
6069
7365
  );
6070
7366
  }
6071
7367
  function FieldGroup({ className, ...props }) {
6072
- return /* @__PURE__ */ jsx68(
7368
+ return /* @__PURE__ */ jsx83(
6073
7369
  "div",
6074
7370
  {
6075
7371
  "data-slot": "field-group",
@@ -6109,7 +7405,7 @@ function Field({
6109
7405
  orientation = "vertical",
6110
7406
  ...props
6111
7407
  }) {
6112
- return /* @__PURE__ */ jsx68(
7408
+ return /* @__PURE__ */ jsx83(
6113
7409
  "fieldset",
6114
7410
  {
6115
7411
  "data-slot": "field",
@@ -6124,7 +7420,7 @@ function Field({
6124
7420
  );
6125
7421
  }
6126
7422
  function FieldContent({ className, ...props }) {
6127
- return /* @__PURE__ */ jsx68(
7423
+ return /* @__PURE__ */ jsx83(
6128
7424
  "div",
6129
7425
  {
6130
7426
  "data-slot": "field-content",
@@ -6140,8 +7436,8 @@ function FieldLabel({
6140
7436
  className,
6141
7437
  ...props
6142
7438
  }) {
6143
- return /* @__PURE__ */ jsx68(
6144
- Label4,
7439
+ return /* @__PURE__ */ jsx83(
7440
+ Label3,
6145
7441
  {
6146
7442
  "data-slot": "field-label",
6147
7443
  className: cn(
@@ -6155,7 +7451,7 @@ function FieldLabel({
6155
7451
  );
6156
7452
  }
6157
7453
  function FieldTitle({ className, ...props }) {
6158
- return /* @__PURE__ */ jsx68(
7454
+ return /* @__PURE__ */ jsx83(
6159
7455
  "div",
6160
7456
  {
6161
7457
  "data-slot": "field-label",
@@ -6168,7 +7464,7 @@ function FieldTitle({ className, ...props }) {
6168
7464
  );
6169
7465
  }
6170
7466
  function FieldDescription({ className, ...props }) {
6171
- return /* @__PURE__ */ jsx68(
7467
+ return /* @__PURE__ */ jsx83(
6172
7468
  "p",
6173
7469
  {
6174
7470
  "data-slot": "field-description",
@@ -6187,7 +7483,7 @@ function FieldSeparator({
6187
7483
  className,
6188
7484
  ...props
6189
7485
  }) {
6190
- return /* @__PURE__ */ jsxs44(
7486
+ return /* @__PURE__ */ jsxs52(
6191
7487
  "div",
6192
7488
  {
6193
7489
  "data-slot": "field-separator",
@@ -6198,8 +7494,8 @@ function FieldSeparator({
6198
7494
  ),
6199
7495
  ...props,
6200
7496
  children: [
6201
- /* @__PURE__ */ jsx68(Separator2, { className: "absolute inset-0 top-1/2" }),
6202
- children && /* @__PURE__ */ jsx68(
7497
+ /* @__PURE__ */ jsx83(Separator2, { className: "absolute inset-0 top-1/2" }),
7498
+ children && /* @__PURE__ */ jsx83(
6203
7499
  "span",
6204
7500
  {
6205
7501
  className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2",
@@ -6225,15 +7521,15 @@ function FieldError({
6225
7521
  if (uniqueErrors.length === 1) {
6226
7522
  content = uniqueErrors[0]?.message;
6227
7523
  } else {
6228
- content = /* @__PURE__ */ jsx68("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
6229
- (error) => error?.message && /* @__PURE__ */ jsx68("li", { children: error.message }, error.message)
7524
+ content = /* @__PURE__ */ jsx83("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
7525
+ (error) => error?.message && /* @__PURE__ */ jsx83("li", { children: error.message }, error.message)
6230
7526
  ) });
6231
7527
  }
6232
7528
  }
6233
7529
  if (!content) {
6234
7530
  return null;
6235
7531
  }
6236
- return /* @__PURE__ */ jsx68(
7532
+ return /* @__PURE__ */ jsx83(
6237
7533
  "div",
6238
7534
  {
6239
7535
  role: "alert",
@@ -6249,12 +7545,12 @@ function FieldError({
6249
7545
  import { Slot as Slot6 } from "@radix-ui/react-slot";
6250
7546
  import * as React10 from "react";
6251
7547
  import {
6252
- Controller,
7548
+ Controller as Controller2,
6253
7549
  FormProvider,
6254
7550
  useFormContext,
6255
7551
  useFormState
6256
7552
  } from "react-hook-form";
6257
- import { jsx as jsx69 } from "react/jsx-runtime";
7553
+ import { jsx as jsx84 } from "react/jsx-runtime";
6258
7554
  var Form = FormProvider;
6259
7555
  var FormFieldContext = React10.createContext(
6260
7556
  {}
@@ -6262,7 +7558,7 @@ var FormFieldContext = React10.createContext(
6262
7558
  var FormField = ({
6263
7559
  ...props
6264
7560
  }) => {
6265
- return /* @__PURE__ */ jsx69(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx69(Controller, { ...props }) });
7561
+ return /* @__PURE__ */ jsx84(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx84(Controller2, { ...props }) });
6266
7562
  };
6267
7563
  var useFormField = () => {
6268
7564
  const fieldContext = React10.useContext(FormFieldContext);
@@ -6288,7 +7584,7 @@ var FormItemContext = React10.createContext(
6288
7584
  );
6289
7585
  function FormItem({ className, ...props }) {
6290
7586
  const id = React10.useId();
6291
- return /* @__PURE__ */ jsx69(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx69(
7587
+ return /* @__PURE__ */ jsx84(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx84(
6292
7588
  "div",
6293
7589
  {
6294
7590
  "data-slot": "form-item",
@@ -6302,8 +7598,8 @@ function FormLabel({
6302
7598
  ...props
6303
7599
  }) {
6304
7600
  const { error, formItemId } = useFormField();
6305
- return /* @__PURE__ */ jsx69(
6306
- Label4,
7601
+ return /* @__PURE__ */ jsx84(
7602
+ Label3,
6307
7603
  {
6308
7604
  "data-slot": "form-label",
6309
7605
  "data-error": !!error,
@@ -6315,7 +7611,7 @@ function FormLabel({
6315
7611
  }
6316
7612
  function FormControl({ ...props }) {
6317
7613
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
6318
- return /* @__PURE__ */ jsx69(
7614
+ return /* @__PURE__ */ jsx84(
6319
7615
  Slot6,
6320
7616
  {
6321
7617
  "data-slot": "form-control",
@@ -6328,7 +7624,7 @@ function FormControl({ ...props }) {
6328
7624
  }
6329
7625
  function FormDescription({ className, ...props }) {
6330
7626
  const { formDescriptionId } = useFormField();
6331
- return /* @__PURE__ */ jsx69(
7627
+ return /* @__PURE__ */ jsx84(
6332
7628
  "p",
6333
7629
  {
6334
7630
  "data-slot": "form-description",
@@ -6344,7 +7640,7 @@ function FormMessage({ className, ...props }) {
6344
7640
  if (!body) {
6345
7641
  return null;
6346
7642
  }
6347
- return /* @__PURE__ */ jsx69(
7643
+ return /* @__PURE__ */ jsx84(
6348
7644
  "p",
6349
7645
  {
6350
7646
  "data-slot": "form-message",
@@ -6358,16 +7654,16 @@ function FormMessage({ className, ...props }) {
6358
7654
 
6359
7655
  // src/components/ui/hover-card.tsx
6360
7656
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
6361
- import { jsx as jsx70 } from "react/jsx-runtime";
7657
+ import { jsx as jsx85 } from "react/jsx-runtime";
6362
7658
  function HoverCard({
6363
7659
  ...props
6364
7660
  }) {
6365
- return /* @__PURE__ */ jsx70(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
7661
+ return /* @__PURE__ */ jsx85(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
6366
7662
  }
6367
7663
  function HoverCardTrigger({
6368
7664
  ...props
6369
7665
  }) {
6370
- return /* @__PURE__ */ jsx70(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
7666
+ return /* @__PURE__ */ jsx85(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
6371
7667
  }
6372
7668
  function HoverCardContent({
6373
7669
  className,
@@ -6375,7 +7671,7 @@ function HoverCardContent({
6375
7671
  sideOffset = 4,
6376
7672
  ...props
6377
7673
  }) {
6378
- return /* @__PURE__ */ jsx70(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx70(
7674
+ return /* @__PURE__ */ jsx85(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx85(
6379
7675
  HoverCardPrimitive.Content,
6380
7676
  {
6381
7677
  "data-slot": "hover-card-content",
@@ -6392,27 +7688,9 @@ function HoverCardContent({
6392
7688
 
6393
7689
  // src/components/ui/input-group.tsx
6394
7690
  import { cva as cva9 } from "class-variance-authority";
6395
-
6396
- // src/components/ui/textarea.tsx
6397
- import { jsx as jsx71 } from "react/jsx-runtime";
6398
- function Textarea({ className, ...props }) {
6399
- return /* @__PURE__ */ jsx71(
6400
- "textarea",
6401
- {
6402
- "data-slot": "textarea",
6403
- className: cn(
6404
- "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
6405
- className
6406
- ),
6407
- ...props
6408
- }
6409
- );
6410
- }
6411
-
6412
- // src/components/ui/input-group.tsx
6413
- import { jsx as jsx72 } from "react/jsx-runtime";
7691
+ import { jsx as jsx86 } from "react/jsx-runtime";
6414
7692
  function InputGroup({ className, ...props }) {
6415
- return /* @__PURE__ */ jsx72(
7693
+ return /* @__PURE__ */ jsx86(
6416
7694
  "fieldset",
6417
7695
  {
6418
7696
  "data-slot": "input-group",
@@ -6456,7 +7734,7 @@ function InputGroupAddon({
6456
7734
  align = "inline-start",
6457
7735
  ...props
6458
7736
  }) {
6459
- return /* @__PURE__ */ jsx72(
7737
+ return /* @__PURE__ */ jsx86(
6460
7738
  "fieldset",
6461
7739
  {
6462
7740
  "data-slot": "input-group-addon",
@@ -6508,7 +7786,7 @@ function InputGroupButton({
6508
7786
  size = "xs",
6509
7787
  ...props
6510
7788
  }) {
6511
- return /* @__PURE__ */ jsx72(
7789
+ return /* @__PURE__ */ jsx86(
6512
7790
  Button,
6513
7791
  {
6514
7792
  type,
@@ -6520,7 +7798,7 @@ function InputGroupButton({
6520
7798
  );
6521
7799
  }
6522
7800
  function InputGroupText({ className, ...props }) {
6523
- return /* @__PURE__ */ jsx72(
7801
+ return /* @__PURE__ */ jsx86(
6524
7802
  "span",
6525
7803
  {
6526
7804
  className: cn(
@@ -6535,7 +7813,7 @@ function InputGroupInput({
6535
7813
  className,
6536
7814
  ...props
6537
7815
  }) {
6538
- return /* @__PURE__ */ jsx72(
7816
+ return /* @__PURE__ */ jsx86(
6539
7817
  Input,
6540
7818
  {
6541
7819
  "data-slot": "input-group-control",
@@ -6551,7 +7829,7 @@ function InputGroupTextarea({
6551
7829
  className,
6552
7830
  ...props
6553
7831
  }) {
6554
- return /* @__PURE__ */ jsx72(
7832
+ return /* @__PURE__ */ jsx86(
6555
7833
  Textarea,
6556
7834
  {
6557
7835
  "data-slot": "input-group-control",
@@ -6568,13 +7846,13 @@ function InputGroupTextarea({
6568
7846
  import { IconMinus } from "@tabler/icons-react";
6569
7847
  import { OTPInput, OTPInputContext } from "input-otp";
6570
7848
  import * as React11 from "react";
6571
- import { jsx as jsx73, jsxs as jsxs45 } from "react/jsx-runtime";
7849
+ import { jsx as jsx87, jsxs as jsxs53 } from "react/jsx-runtime";
6572
7850
  function InputOTP({
6573
7851
  className,
6574
7852
  containerClassName,
6575
7853
  ...props
6576
7854
  }) {
6577
- return /* @__PURE__ */ jsx73(
7855
+ return /* @__PURE__ */ jsx87(
6578
7856
  OTPInput,
6579
7857
  {
6580
7858
  "data-slot": "input-otp",
@@ -6588,7 +7866,7 @@ function InputOTP({
6588
7866
  );
6589
7867
  }
6590
7868
  function InputOTPGroup({ className, ...props }) {
6591
- return /* @__PURE__ */ jsx73(
7869
+ return /* @__PURE__ */ jsx87(
6592
7870
  "div",
6593
7871
  {
6594
7872
  "data-slot": "input-otp-group",
@@ -6604,7 +7882,7 @@ function InputOTPSlot({
6604
7882
  }) {
6605
7883
  const inputOTPContext = React11.useContext(OTPInputContext);
6606
7884
  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
6607
- return /* @__PURE__ */ jsxs45(
7885
+ return /* @__PURE__ */ jsxs53(
6608
7886
  "div",
6609
7887
  {
6610
7888
  "data-slot": "input-otp-slot",
@@ -6616,21 +7894,21 @@ function InputOTPSlot({
6616
7894
  ...props,
6617
7895
  children: [
6618
7896
  char,
6619
- hasFakeCaret && /* @__PURE__ */ jsx73("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx73("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
7897
+ hasFakeCaret && /* @__PURE__ */ jsx87("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx87("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
6620
7898
  ]
6621
7899
  }
6622
7900
  );
6623
7901
  }
6624
7902
  function InputOTPSeparator({ ...props }) {
6625
- return /* @__PURE__ */ jsx73("div", { "data-slot": "input-otp-separator", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx73(IconMinus, {}) });
7903
+ return /* @__PURE__ */ jsx87("div", { "data-slot": "input-otp-separator", "aria-hidden": "true", ...props, children: /* @__PURE__ */ jsx87(IconMinus, {}) });
6626
7904
  }
6627
7905
 
6628
7906
  // src/components/ui/item.tsx
6629
7907
  import { Slot as Slot7 } from "@radix-ui/react-slot";
6630
7908
  import { cva as cva10 } from "class-variance-authority";
6631
- import { jsx as jsx74 } from "react/jsx-runtime";
7909
+ import { jsx as jsx88 } from "react/jsx-runtime";
6632
7910
  function ItemGroup({ className, ...props }) {
6633
- return /* @__PURE__ */ jsx74(
7911
+ return /* @__PURE__ */ jsx88(
6634
7912
  "ul",
6635
7913
  {
6636
7914
  "data-slot": "item-group",
@@ -6646,7 +7924,7 @@ function ItemSeparator({
6646
7924
  className,
6647
7925
  ...props
6648
7926
  }) {
6649
- return /* @__PURE__ */ jsx74(
7927
+ return /* @__PURE__ */ jsx88(
6650
7928
  Separator2,
6651
7929
  {
6652
7930
  "data-slot": "item-separator",
@@ -6684,7 +7962,7 @@ function Item6({
6684
7962
  ...props
6685
7963
  }) {
6686
7964
  const Comp = asChild ? Slot7 : "div";
6687
- return /* @__PURE__ */ jsx74(
7965
+ return /* @__PURE__ */ jsx88(
6688
7966
  Comp,
6689
7967
  {
6690
7968
  "data-slot": "item",
@@ -6715,7 +7993,7 @@ function ItemMedia({
6715
7993
  variant = "default",
6716
7994
  ...props
6717
7995
  }) {
6718
- return /* @__PURE__ */ jsx74(
7996
+ return /* @__PURE__ */ jsx88(
6719
7997
  "div",
6720
7998
  {
6721
7999
  "data-slot": "item-media",
@@ -6726,7 +8004,7 @@ function ItemMedia({
6726
8004
  );
6727
8005
  }
6728
8006
  function ItemContent({ className, ...props }) {
6729
- return /* @__PURE__ */ jsx74(
8007
+ return /* @__PURE__ */ jsx88(
6730
8008
  "div",
6731
8009
  {
6732
8010
  "data-slot": "item-content",
@@ -6739,7 +8017,7 @@ function ItemContent({ className, ...props }) {
6739
8017
  );
6740
8018
  }
6741
8019
  function ItemTitle({ className, ...props }) {
6742
- return /* @__PURE__ */ jsx74(
8020
+ return /* @__PURE__ */ jsx88(
6743
8021
  "div",
6744
8022
  {
6745
8023
  "data-slot": "item-title",
@@ -6752,7 +8030,7 @@ function ItemTitle({ className, ...props }) {
6752
8030
  );
6753
8031
  }
6754
8032
  function ItemDescription({ className, ...props }) {
6755
- return /* @__PURE__ */ jsx74(
8033
+ return /* @__PURE__ */ jsx88(
6756
8034
  "p",
6757
8035
  {
6758
8036
  "data-slot": "item-description",
@@ -6766,7 +8044,7 @@ function ItemDescription({ className, ...props }) {
6766
8044
  );
6767
8045
  }
6768
8046
  function ItemActions({ className, ...props }) {
6769
- return /* @__PURE__ */ jsx74(
8047
+ return /* @__PURE__ */ jsx88(
6770
8048
  "div",
6771
8049
  {
6772
8050
  "data-slot": "item-actions",
@@ -6776,7 +8054,7 @@ function ItemActions({ className, ...props }) {
6776
8054
  );
6777
8055
  }
6778
8056
  function ItemHeader({ className, ...props }) {
6779
- return /* @__PURE__ */ jsx74(
8057
+ return /* @__PURE__ */ jsx88(
6780
8058
  "div",
6781
8059
  {
6782
8060
  "data-slot": "item-header",
@@ -6789,7 +8067,7 @@ function ItemHeader({ className, ...props }) {
6789
8067
  );
6790
8068
  }
6791
8069
  function ItemFooter({ className, ...props }) {
6792
- return /* @__PURE__ */ jsx74(
8070
+ return /* @__PURE__ */ jsx88(
6793
8071
  "div",
6794
8072
  {
6795
8073
  "data-slot": "item-footer",
@@ -6803,9 +8081,9 @@ function ItemFooter({ className, ...props }) {
6803
8081
  }
6804
8082
 
6805
8083
  // src/components/ui/kbd.tsx
6806
- import { jsx as jsx75 } from "react/jsx-runtime";
8084
+ import { jsx as jsx89 } from "react/jsx-runtime";
6807
8085
  function Kbd({ className, ...props }) {
6808
- return /* @__PURE__ */ jsx75(
8086
+ return /* @__PURE__ */ jsx89(
6809
8087
  "kbd",
6810
8088
  {
6811
8089
  "data-slot": "kbd",
@@ -6820,7 +8098,7 @@ function Kbd({ className, ...props }) {
6820
8098
  );
6821
8099
  }
6822
8100
  function KbdGroup({ className, ...props }) {
6823
- return /* @__PURE__ */ jsx75(
8101
+ return /* @__PURE__ */ jsx89(
6824
8102
  "kbd",
6825
8103
  {
6826
8104
  "data-slot": "kbd-group",
@@ -6833,12 +8111,12 @@ function KbdGroup({ className, ...props }) {
6833
8111
  // src/components/ui/menubar.tsx
6834
8112
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
6835
8113
  import { IconCheck as IconCheck5, IconChevronRight as IconChevronRight9, IconCircle as IconCircle3 } from "@tabler/icons-react";
6836
- import { jsx as jsx76, jsxs as jsxs46 } from "react/jsx-runtime";
8114
+ import { jsx as jsx90, jsxs as jsxs54 } from "react/jsx-runtime";
6837
8115
  function Menubar({
6838
8116
  className,
6839
8117
  ...props
6840
8118
  }) {
6841
- return /* @__PURE__ */ jsx76(
8119
+ return /* @__PURE__ */ jsx90(
6842
8120
  MenubarPrimitive.Root,
6843
8121
  {
6844
8122
  "data-slot": "menubar",
@@ -6853,28 +8131,28 @@ function Menubar({
6853
8131
  function MenubarMenu({
6854
8132
  ...props
6855
8133
  }) {
6856
- return /* @__PURE__ */ jsx76(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
8134
+ return /* @__PURE__ */ jsx90(MenubarPrimitive.Menu, { "data-slot": "menubar-menu", ...props });
6857
8135
  }
6858
8136
  function MenubarGroup({
6859
8137
  ...props
6860
8138
  }) {
6861
- return /* @__PURE__ */ jsx76(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
8139
+ return /* @__PURE__ */ jsx90(MenubarPrimitive.Group, { "data-slot": "menubar-group", ...props });
6862
8140
  }
6863
8141
  function MenubarPortal({
6864
8142
  ...props
6865
8143
  }) {
6866
- return /* @__PURE__ */ jsx76(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
8144
+ return /* @__PURE__ */ jsx90(MenubarPrimitive.Portal, { "data-slot": "menubar-portal", ...props });
6867
8145
  }
6868
8146
  function MenubarRadioGroup({
6869
8147
  ...props
6870
8148
  }) {
6871
- return /* @__PURE__ */ jsx76(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
8149
+ return /* @__PURE__ */ jsx90(MenubarPrimitive.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
6872
8150
  }
6873
8151
  function MenubarTrigger({
6874
8152
  className,
6875
8153
  ...props
6876
8154
  }) {
6877
- return /* @__PURE__ */ jsx76(
8155
+ return /* @__PURE__ */ jsx90(
6878
8156
  MenubarPrimitive.Trigger,
6879
8157
  {
6880
8158
  "data-slot": "menubar-trigger",
@@ -6893,7 +8171,7 @@ function MenubarContent({
6893
8171
  sideOffset = 8,
6894
8172
  ...props
6895
8173
  }) {
6896
- return /* @__PURE__ */ jsx76(MenubarPortal, { children: /* @__PURE__ */ jsx76(
8174
+ return /* @__PURE__ */ jsx90(MenubarPortal, { children: /* @__PURE__ */ jsx90(
6897
8175
  MenubarPrimitive.Content,
6898
8176
  {
6899
8177
  "data-slot": "menubar-content",
@@ -6914,7 +8192,7 @@ function MenubarItem({
6914
8192
  variant = "default",
6915
8193
  ...props
6916
8194
  }) {
6917
- return /* @__PURE__ */ jsx76(
8195
+ return /* @__PURE__ */ jsx90(
6918
8196
  MenubarPrimitive.Item,
6919
8197
  {
6920
8198
  "data-slot": "menubar-item",
@@ -6934,7 +8212,7 @@ function MenubarCheckboxItem({
6934
8212
  checked,
6935
8213
  ...props
6936
8214
  }) {
6937
- return /* @__PURE__ */ jsxs46(
8215
+ return /* @__PURE__ */ jsxs54(
6938
8216
  MenubarPrimitive.CheckboxItem,
6939
8217
  {
6940
8218
  "data-slot": "menubar-checkbox-item",
@@ -6945,7 +8223,7 @@ function MenubarCheckboxItem({
6945
8223
  checked,
6946
8224
  ...props,
6947
8225
  children: [
6948
- /* @__PURE__ */ jsx76("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx76(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx76(IconCheck5, { className: "size-4" }) }) }),
8226
+ /* @__PURE__ */ jsx90("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx90(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx90(IconCheck5, { className: "size-4" }) }) }),
6949
8227
  children
6950
8228
  ]
6951
8229
  }
@@ -6956,7 +8234,7 @@ function MenubarRadioItem({
6956
8234
  children,
6957
8235
  ...props
6958
8236
  }) {
6959
- return /* @__PURE__ */ jsxs46(
8237
+ return /* @__PURE__ */ jsxs54(
6960
8238
  MenubarPrimitive.RadioItem,
6961
8239
  {
6962
8240
  "data-slot": "menubar-radio-item",
@@ -6966,7 +8244,7 @@ function MenubarRadioItem({
6966
8244
  ),
6967
8245
  ...props,
6968
8246
  children: [
6969
- /* @__PURE__ */ jsx76("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx76(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx76(IconCircle3, { className: "size-2 fill-current" }) }) }),
8247
+ /* @__PURE__ */ jsx90("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx90(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx90(IconCircle3, { className: "size-2 fill-current" }) }) }),
6970
8248
  children
6971
8249
  ]
6972
8250
  }
@@ -6977,7 +8255,7 @@ function MenubarLabel({
6977
8255
  inset,
6978
8256
  ...props
6979
8257
  }) {
6980
- return /* @__PURE__ */ jsx76(
8258
+ return /* @__PURE__ */ jsx90(
6981
8259
  MenubarPrimitive.Label,
6982
8260
  {
6983
8261
  "data-slot": "menubar-label",
@@ -6994,7 +8272,7 @@ function MenubarSeparator({
6994
8272
  className,
6995
8273
  ...props
6996
8274
  }) {
6997
- return /* @__PURE__ */ jsx76(
8275
+ return /* @__PURE__ */ jsx90(
6998
8276
  MenubarPrimitive.Separator,
6999
8277
  {
7000
8278
  "data-slot": "menubar-separator",
@@ -7007,7 +8285,7 @@ function MenubarShortcut({
7007
8285
  className,
7008
8286
  ...props
7009
8287
  }) {
7010
- return /* @__PURE__ */ jsx76(
8288
+ return /* @__PURE__ */ jsx90(
7011
8289
  "span",
7012
8290
  {
7013
8291
  "data-slot": "menubar-shortcut",
@@ -7022,7 +8300,7 @@ function MenubarShortcut({
7022
8300
  function MenubarSub({
7023
8301
  ...props
7024
8302
  }) {
7025
- return /* @__PURE__ */ jsx76(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
8303
+ return /* @__PURE__ */ jsx90(MenubarPrimitive.Sub, { "data-slot": "menubar-sub", ...props });
7026
8304
  }
7027
8305
  function MenubarSubTrigger({
7028
8306
  className,
@@ -7030,7 +8308,7 @@ function MenubarSubTrigger({
7030
8308
  children,
7031
8309
  ...props
7032
8310
  }) {
7033
- return /* @__PURE__ */ jsxs46(
8311
+ return /* @__PURE__ */ jsxs54(
7034
8312
  MenubarPrimitive.SubTrigger,
7035
8313
  {
7036
8314
  "data-slot": "menubar-sub-trigger",
@@ -7042,7 +8320,7 @@ function MenubarSubTrigger({
7042
8320
  ...props,
7043
8321
  children: [
7044
8322
  children,
7045
- /* @__PURE__ */ jsx76(IconChevronRight9, { className: "ml-auto h-4 w-4" })
8323
+ /* @__PURE__ */ jsx90(IconChevronRight9, { className: "ml-auto h-4 w-4" })
7046
8324
  ]
7047
8325
  }
7048
8326
  );
@@ -7051,7 +8329,7 @@ function MenubarSubContent({
7051
8329
  className,
7052
8330
  ...props
7053
8331
  }) {
7054
- return /* @__PURE__ */ jsx76(
8332
+ return /* @__PURE__ */ jsx90(
7055
8333
  MenubarPrimitive.SubContent,
7056
8334
  {
7057
8335
  "data-slot": "menubar-sub-content",
@@ -7064,18 +8342,155 @@ function MenubarSubContent({
7064
8342
  );
7065
8343
  }
7066
8344
 
8345
+ // src/components/ui/money-input.tsx
8346
+ import { forwardRef, useCallback as useCallback3, useState as useState21 } from "react";
8347
+ import { jsx as jsx91, jsxs as jsxs55 } from "react/jsx-runtime";
8348
+ var defaultCurrencies = [
8349
+ { label: "ETB", value: "etb", symbol: "Br" },
8350
+ { label: "USD", value: "usd", symbol: "$" },
8351
+ { label: "EUR", value: "eur", symbol: "\u20AC" },
8352
+ { label: "GBP", value: "gbp", symbol: "\xA3" }
8353
+ ];
8354
+ var formatNumber = (num, fractionDigits) => {
8355
+ return num.toLocaleString("en-US", {
8356
+ minimumFractionDigits: fractionDigits,
8357
+ maximumFractionDigits: fractionDigits
8358
+ });
8359
+ };
8360
+ var parseFormattedNumber = (str) => {
8361
+ const cleaned = str.replace(/,/g, "");
8362
+ const parsed = Number.parseFloat(cleaned);
8363
+ return Number.isNaN(parsed) ? 0 : parsed;
8364
+ };
8365
+ var sizeClasses2 = {
8366
+ sm: {
8367
+ input: "!h-8 !text-xs pl-7 !py-1",
8368
+ symbol: "left-2 text-xs",
8369
+ select: "!h-8 !px-2 !py-1 !text-xs !min-h-0 w-[70px]"
8370
+ },
8371
+ md: {
8372
+ input: "!h-9 !text-sm pl-9 !py-2",
8373
+ symbol: "left-3 text-sm",
8374
+ select: "!h-9 !px-3 !py-2 !text-sm !min-h-0 w-[80px]"
8375
+ },
8376
+ lg: {
8377
+ input: "!h-10 !text-base pl-11 !py-2",
8378
+ symbol: "left-3.5 text-base",
8379
+ select: "!h-10 !px-4 !py-2 !text-base !min-h-0 w-[90px]"
8380
+ }
8381
+ };
8382
+ var MoneyInput = forwardRef(
8383
+ ({
8384
+ value = 0,
8385
+ currency = "etb",
8386
+ onValueChange,
8387
+ currencies = defaultCurrencies,
8388
+ fractionDigits = 2,
8389
+ disabled = false,
8390
+ placeholder = fractionDigits > 0 ? `0.${"0".repeat(fractionDigits)}` : "0",
8391
+ className = "",
8392
+ size = "md",
8393
+ id
8394
+ }, ref) => {
8395
+ const [internalValue, setInternalValue] = useState21(value);
8396
+ const [internalCurrency, setInternalCurrency] = useState21(currency);
8397
+ const [displayValue, setDisplayValue] = useState21(
8398
+ formatNumber(value, fractionDigits)
8399
+ );
8400
+ const currentCurrency = currencies.find(
8401
+ (c) => c.value === internalCurrency
8402
+ );
8403
+ const currencySymbol = currentCurrency?.symbol || currentCurrency?.label || "";
8404
+ const sizes = sizeClasses2[size];
8405
+ const handleInputChange = useCallback3(
8406
+ (e) => {
8407
+ const rawValue = e.target.value;
8408
+ setDisplayValue(rawValue);
8409
+ const numValue = parseFormattedNumber(rawValue);
8410
+ setInternalValue(numValue);
8411
+ },
8412
+ []
8413
+ );
8414
+ const handleBlur = useCallback3(() => {
8415
+ const formatted = formatNumber(internalValue, fractionDigits);
8416
+ setDisplayValue(formatted);
8417
+ onValueChange?.(internalValue, internalCurrency);
8418
+ }, [internalValue, internalCurrency, onValueChange, fractionDigits]);
8419
+ const handleFocus = useCallback3(() => {
8420
+ setDisplayValue(
8421
+ internalValue % 1 === 0 ? internalValue.toString() : internalValue.toFixed(fractionDigits)
8422
+ );
8423
+ }, [internalValue, fractionDigits]);
8424
+ const handleCurrencyChange = useCallback3(
8425
+ (newCurrency) => {
8426
+ setInternalCurrency(newCurrency);
8427
+ onValueChange?.(internalValue, newCurrency);
8428
+ },
8429
+ [internalValue, onValueChange]
8430
+ );
8431
+ return /* @__PURE__ */ jsxs55("div", { ref, className: cn("relative flex items-center", className), children: [
8432
+ /* @__PURE__ */ jsx91(
8433
+ "div",
8434
+ {
8435
+ className: cn(
8436
+ "pointer-events-none absolute z-10 flex items-center text-muted-foreground",
8437
+ sizes.symbol
8438
+ ),
8439
+ children: currencySymbol
8440
+ }
8441
+ ),
8442
+ /* @__PURE__ */ jsx91(
8443
+ Input,
8444
+ {
8445
+ id,
8446
+ type: "text",
8447
+ value: displayValue,
8448
+ onChange: handleInputChange,
8449
+ onBlur: handleBlur,
8450
+ onFocus: handleFocus,
8451
+ disabled,
8452
+ placeholder,
8453
+ className: cn("flex-1 rounded-r-none border-r-0", sizes.input)
8454
+ }
8455
+ ),
8456
+ /* @__PURE__ */ jsxs55(
8457
+ Select,
8458
+ {
8459
+ value: internalCurrency,
8460
+ onValueChange: handleCurrencyChange,
8461
+ disabled,
8462
+ children: [
8463
+ /* @__PURE__ */ jsx91(
8464
+ SelectTrigger,
8465
+ {
8466
+ className: cn(
8467
+ "rounded-l-none border-l-0 !w-auto cursor-pointer",
8468
+ sizes.select
8469
+ ),
8470
+ children: /* @__PURE__ */ jsx91(SelectValue, {})
8471
+ }
8472
+ ),
8473
+ /* @__PURE__ */ jsx91(SelectContent, { children: currencies.map((curr) => /* @__PURE__ */ jsx91(SelectItem, { value: curr.value, children: curr.label }, curr.value)) })
8474
+ ]
8475
+ }
8476
+ )
8477
+ ] });
8478
+ }
8479
+ );
8480
+ MoneyInput.displayName = "MoneyInput";
8481
+
7067
8482
  // src/components/ui/navigation-menu.tsx
7068
8483
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
7069
8484
  import { IconChevronDown as IconChevronDown9 } from "@tabler/icons-react";
7070
8485
  import { cva as cva11 } from "class-variance-authority";
7071
- import { jsx as jsx77, jsxs as jsxs47 } from "react/jsx-runtime";
8486
+ import { jsx as jsx92, jsxs as jsxs56 } from "react/jsx-runtime";
7072
8487
  function NavigationMenu({
7073
8488
  className,
7074
8489
  children,
7075
8490
  viewport = true,
7076
8491
  ...props
7077
8492
  }) {
7078
- return /* @__PURE__ */ jsxs47(
8493
+ return /* @__PURE__ */ jsxs56(
7079
8494
  NavigationMenuPrimitive.Root,
7080
8495
  {
7081
8496
  "data-slot": "navigation-menu",
@@ -7087,7 +8502,7 @@ function NavigationMenu({
7087
8502
  ...props,
7088
8503
  children: [
7089
8504
  children,
7090
- viewport && /* @__PURE__ */ jsx77(NavigationMenuViewport, {})
8505
+ viewport && /* @__PURE__ */ jsx92(NavigationMenuViewport, {})
7091
8506
  ]
7092
8507
  }
7093
8508
  );
@@ -7096,7 +8511,7 @@ function NavigationMenuList({
7096
8511
  className,
7097
8512
  ...props
7098
8513
  }) {
7099
- return /* @__PURE__ */ jsx77(
8514
+ return /* @__PURE__ */ jsx92(
7100
8515
  NavigationMenuPrimitive.List,
7101
8516
  {
7102
8517
  "data-slot": "navigation-menu-list",
@@ -7112,7 +8527,7 @@ function NavigationMenuItem({
7112
8527
  className,
7113
8528
  ...props
7114
8529
  }) {
7115
- return /* @__PURE__ */ jsx77(
8530
+ return /* @__PURE__ */ jsx92(
7116
8531
  NavigationMenuPrimitive.Item,
7117
8532
  {
7118
8533
  "data-slot": "navigation-menu-item",
@@ -7129,7 +8544,7 @@ function NavigationMenuTrigger({
7129
8544
  children,
7130
8545
  ...props
7131
8546
  }) {
7132
- return /* @__PURE__ */ jsxs47(
8547
+ return /* @__PURE__ */ jsxs56(
7133
8548
  NavigationMenuPrimitive.Trigger,
7134
8549
  {
7135
8550
  "data-slot": "navigation-menu-trigger",
@@ -7138,7 +8553,7 @@ function NavigationMenuTrigger({
7138
8553
  children: [
7139
8554
  children,
7140
8555
  " ",
7141
- /* @__PURE__ */ jsx77(
8556
+ /* @__PURE__ */ jsx92(
7142
8557
  IconChevronDown9,
7143
8558
  {
7144
8559
  className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
@@ -7153,7 +8568,7 @@ function NavigationMenuContent({
7153
8568
  className,
7154
8569
  ...props
7155
8570
  }) {
7156
- return /* @__PURE__ */ jsx77(
8571
+ return /* @__PURE__ */ jsx92(
7157
8572
  NavigationMenuPrimitive.Content,
7158
8573
  {
7159
8574
  "data-slot": "navigation-menu-content",
@@ -7170,13 +8585,13 @@ function NavigationMenuViewport({
7170
8585
  className,
7171
8586
  ...props
7172
8587
  }) {
7173
- return /* @__PURE__ */ jsx77(
8588
+ return /* @__PURE__ */ jsx92(
7174
8589
  "div",
7175
8590
  {
7176
8591
  className: cn(
7177
8592
  "absolute top-full left-0 isolate z-50 flex justify-center"
7178
8593
  ),
7179
- children: /* @__PURE__ */ jsx77(
8594
+ children: /* @__PURE__ */ jsx92(
7180
8595
  NavigationMenuPrimitive.Viewport,
7181
8596
  {
7182
8597
  "data-slot": "navigation-menu-viewport",
@@ -7194,7 +8609,7 @@ function NavigationMenuLink({
7194
8609
  className,
7195
8610
  ...props
7196
8611
  }) {
7197
- return /* @__PURE__ */ jsx77(
8612
+ return /* @__PURE__ */ jsx92(
7198
8613
  NavigationMenuPrimitive.Link,
7199
8614
  {
7200
8615
  "data-slot": "navigation-menu-link",
@@ -7210,7 +8625,7 @@ function NavigationMenuIndicator({
7210
8625
  className,
7211
8626
  ...props
7212
8627
  }) {
7213
- return /* @__PURE__ */ jsx77(
8628
+ return /* @__PURE__ */ jsx92(
7214
8629
  NavigationMenuPrimitive.Indicator,
7215
8630
  {
7216
8631
  "data-slot": "navigation-menu-indicator",
@@ -7219,7 +8634,7 @@ function NavigationMenuIndicator({
7219
8634
  className
7220
8635
  ),
7221
8636
  ...props,
7222
- children: /* @__PURE__ */ jsx77("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
8637
+ children: /* @__PURE__ */ jsx92("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
7223
8638
  }
7224
8639
  );
7225
8640
  }
@@ -7230,9 +8645,9 @@ import {
7230
8645
  IconChevronRight as IconChevronRight10,
7231
8646
  IconDots as IconDots2
7232
8647
  } from "@tabler/icons-react";
7233
- import { jsx as jsx78, jsxs as jsxs48 } from "react/jsx-runtime";
8648
+ import { jsx as jsx93, jsxs as jsxs57 } from "react/jsx-runtime";
7234
8649
  function Pagination({ className, ...props }) {
7235
- return /* @__PURE__ */ jsx78(
8650
+ return /* @__PURE__ */ jsx93(
7236
8651
  "nav",
7237
8652
  {
7238
8653
  "aria-label": "pagination",
@@ -7246,7 +8661,7 @@ function PaginationContent({
7246
8661
  className,
7247
8662
  ...props
7248
8663
  }) {
7249
- return /* @__PURE__ */ jsx78(
8664
+ return /* @__PURE__ */ jsx93(
7250
8665
  "ul",
7251
8666
  {
7252
8667
  "data-slot": "pagination-content",
@@ -7256,7 +8671,7 @@ function PaginationContent({
7256
8671
  );
7257
8672
  }
7258
8673
  function PaginationItem({ ...props }) {
7259
- return /* @__PURE__ */ jsx78("li", { "data-slot": "pagination-item", ...props });
8674
+ return /* @__PURE__ */ jsx93("li", { "data-slot": "pagination-item", ...props });
7260
8675
  }
7261
8676
  function PaginationLink({
7262
8677
  className,
@@ -7264,7 +8679,7 @@ function PaginationLink({
7264
8679
  size = "icon",
7265
8680
  ...props
7266
8681
  }) {
7267
- return /* @__PURE__ */ jsx78(
8682
+ return /* @__PURE__ */ jsx93(
7268
8683
  "a",
7269
8684
  {
7270
8685
  "aria-current": isActive ? "page" : void 0,
@@ -7285,7 +8700,7 @@ function PaginationPrevious({
7285
8700
  className,
7286
8701
  ...props
7287
8702
  }) {
7288
- return /* @__PURE__ */ jsxs48(
8703
+ return /* @__PURE__ */ jsxs57(
7289
8704
  PaginationLink,
7290
8705
  {
7291
8706
  "aria-label": "Go to previous page",
@@ -7293,8 +8708,8 @@ function PaginationPrevious({
7293
8708
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
7294
8709
  ...props,
7295
8710
  children: [
7296
- /* @__PURE__ */ jsx78(IconChevronLeft4, {}),
7297
- /* @__PURE__ */ jsx78("span", { className: "hidden sm:block", children: "Previous" })
8711
+ /* @__PURE__ */ jsx93(IconChevronLeft4, {}),
8712
+ /* @__PURE__ */ jsx93("span", { className: "hidden sm:block", children: "Previous" })
7298
8713
  ]
7299
8714
  }
7300
8715
  );
@@ -7303,7 +8718,7 @@ function PaginationNext({
7303
8718
  className,
7304
8719
  ...props
7305
8720
  }) {
7306
- return /* @__PURE__ */ jsxs48(
8721
+ return /* @__PURE__ */ jsxs57(
7307
8722
  PaginationLink,
7308
8723
  {
7309
8724
  "aria-label": "Go to next page",
@@ -7311,8 +8726,8 @@ function PaginationNext({
7311
8726
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
7312
8727
  ...props,
7313
8728
  children: [
7314
- /* @__PURE__ */ jsx78("span", { className: "hidden sm:block", children: "Next" }),
7315
- /* @__PURE__ */ jsx78(IconChevronRight10, {})
8729
+ /* @__PURE__ */ jsx93("span", { className: "hidden sm:block", children: "Next" }),
8730
+ /* @__PURE__ */ jsx93(IconChevronRight10, {})
7316
8731
  ]
7317
8732
  }
7318
8733
  );
@@ -7321,7 +8736,7 @@ function PaginationEllipsis({
7321
8736
  className,
7322
8737
  ...props
7323
8738
  }) {
7324
- return /* @__PURE__ */ jsxs48(
8739
+ return /* @__PURE__ */ jsxs57(
7325
8740
  "span",
7326
8741
  {
7327
8742
  "aria-hidden": true,
@@ -7329,8 +8744,8 @@ function PaginationEllipsis({
7329
8744
  className: cn("flex size-9 items-center justify-center", className),
7330
8745
  ...props,
7331
8746
  children: [
7332
- /* @__PURE__ */ jsx78(IconDots2, { className: "size-4" }),
7333
- /* @__PURE__ */ jsx78("span", { className: "sr-only", children: "More pages" })
8747
+ /* @__PURE__ */ jsx93(IconDots2, { className: "size-4" }),
8748
+ /* @__PURE__ */ jsx93("span", { className: "sr-only", children: "More pages" })
7334
8749
  ]
7335
8750
  }
7336
8751
  );
@@ -7338,16 +8753,16 @@ function PaginationEllipsis({
7338
8753
 
7339
8754
  // src/components/ui/popover.tsx
7340
8755
  import * as PopoverPrimitive from "@radix-ui/react-popover";
7341
- import { jsx as jsx79 } from "react/jsx-runtime";
8756
+ import { jsx as jsx94 } from "react/jsx-runtime";
7342
8757
  function Popover({
7343
8758
  ...props
7344
8759
  }) {
7345
- return /* @__PURE__ */ jsx79(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
8760
+ return /* @__PURE__ */ jsx94(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
7346
8761
  }
7347
8762
  function PopoverTrigger({
7348
8763
  ...props
7349
8764
  }) {
7350
- return /* @__PURE__ */ jsx79(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
8765
+ return /* @__PURE__ */ jsx94(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
7351
8766
  }
7352
8767
  function PopoverContent({
7353
8768
  className,
@@ -7355,7 +8770,7 @@ function PopoverContent({
7355
8770
  sideOffset = 4,
7356
8771
  ...props
7357
8772
  }) {
7358
- return /* @__PURE__ */ jsx79(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx79(
8773
+ return /* @__PURE__ */ jsx94(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx94(
7359
8774
  PopoverPrimitive.Content,
7360
8775
  {
7361
8776
  "data-slot": "popover-content",
@@ -7372,18 +8787,18 @@ function PopoverContent({
7372
8787
  function PopoverAnchor({
7373
8788
  ...props
7374
8789
  }) {
7375
- return /* @__PURE__ */ jsx79(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
8790
+ return /* @__PURE__ */ jsx94(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
7376
8791
  }
7377
8792
 
7378
8793
  // src/components/ui/progress.tsx
7379
8794
  import * as ProgressPrimitive from "@radix-ui/react-progress";
7380
- import { jsx as jsx80 } from "react/jsx-runtime";
8795
+ import { jsx as jsx95 } from "react/jsx-runtime";
7381
8796
  function Progress({
7382
8797
  className,
7383
8798
  value,
7384
8799
  ...props
7385
8800
  }) {
7386
- return /* @__PURE__ */ jsx80(
8801
+ return /* @__PURE__ */ jsx95(
7387
8802
  ProgressPrimitive.Root,
7388
8803
  {
7389
8804
  "data-slot": "progress",
@@ -7392,7 +8807,7 @@ function Progress({
7392
8807
  className
7393
8808
  ),
7394
8809
  ...props,
7395
- children: /* @__PURE__ */ jsx80(
8810
+ children: /* @__PURE__ */ jsx95(
7396
8811
  ProgressPrimitive.Indicator,
7397
8812
  {
7398
8813
  "data-slot": "progress-indicator",
@@ -7407,12 +8822,12 @@ function Progress({
7407
8822
  // src/components/ui/radio-group.tsx
7408
8823
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
7409
8824
  import { IconCircle as IconCircle4 } from "@tabler/icons-react";
7410
- import { jsx as jsx81 } from "react/jsx-runtime";
8825
+ import { jsx as jsx96 } from "react/jsx-runtime";
7411
8826
  function RadioGroup4({
7412
8827
  className,
7413
8828
  ...props
7414
8829
  }) {
7415
- return /* @__PURE__ */ jsx81(
8830
+ return /* @__PURE__ */ jsx96(
7416
8831
  RadioGroupPrimitive.Root,
7417
8832
  {
7418
8833
  "data-slot": "radio-group",
@@ -7425,7 +8840,7 @@ function RadioGroupItem({
7425
8840
  className,
7426
8841
  ...props
7427
8842
  }) {
7428
- return /* @__PURE__ */ jsx81(
8843
+ return /* @__PURE__ */ jsx96(
7429
8844
  RadioGroupPrimitive.Item,
7430
8845
  {
7431
8846
  "data-slot": "radio-group-item",
@@ -7434,12 +8849,12 @@ function RadioGroupItem({
7434
8849
  className
7435
8850
  ),
7436
8851
  ...props,
7437
- children: /* @__PURE__ */ jsx81(
8852
+ children: /* @__PURE__ */ jsx96(
7438
8853
  RadioGroupPrimitive.Indicator,
7439
8854
  {
7440
8855
  "data-slot": "radio-group-indicator",
7441
8856
  className: "relative flex items-center justify-center",
7442
- children: /* @__PURE__ */ jsx81(IconCircle4, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
8857
+ children: /* @__PURE__ */ jsx96(IconCircle4, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
7443
8858
  }
7444
8859
  )
7445
8860
  }
@@ -7449,12 +8864,12 @@ function RadioGroupItem({
7449
8864
  // src/components/ui/resizable.tsx
7450
8865
  import { IconGripVertical } from "@tabler/icons-react";
7451
8866
  import * as ResizablePrimitive from "react-resizable-panels";
7452
- import { jsx as jsx82 } from "react/jsx-runtime";
8867
+ import { jsx as jsx97 } from "react/jsx-runtime";
7453
8868
  function ResizablePanelGroup({
7454
8869
  className,
7455
8870
  ...props
7456
8871
  }) {
7457
- return /* @__PURE__ */ jsx82(
8872
+ return /* @__PURE__ */ jsx97(
7458
8873
  ResizablePrimitive.PanelGroup,
7459
8874
  {
7460
8875
  "data-slot": "resizable-panel-group",
@@ -7469,14 +8884,14 @@ function ResizablePanelGroup({
7469
8884
  function ResizablePanel({
7470
8885
  ...props
7471
8886
  }) {
7472
- return /* @__PURE__ */ jsx82(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
8887
+ return /* @__PURE__ */ jsx97(ResizablePrimitive.Panel, { "data-slot": "resizable-panel", ...props });
7473
8888
  }
7474
8889
  function ResizableHandle({
7475
8890
  withHandle,
7476
8891
  className,
7477
8892
  ...props
7478
8893
  }) {
7479
- return /* @__PURE__ */ jsx82(
8894
+ return /* @__PURE__ */ jsx97(
7480
8895
  ResizablePrimitive.PanelResizeHandle,
7481
8896
  {
7482
8897
  "data-slot": "resizable-handle",
@@ -7485,27 +8900,27 @@ function ResizableHandle({
7485
8900
  className
7486
8901
  ),
7487
8902
  ...props,
7488
- children: withHandle && /* @__PURE__ */ jsx82("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx82(IconGripVertical, { className: "size-2.5" }) })
8903
+ children: withHandle && /* @__PURE__ */ jsx97("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ jsx97(IconGripVertical, { className: "size-2.5" }) })
7489
8904
  }
7490
8905
  );
7491
8906
  }
7492
8907
 
7493
8908
  // src/components/ui/scroll-area.tsx
7494
8909
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
7495
- import { jsx as jsx83, jsxs as jsxs49 } from "react/jsx-runtime";
8910
+ import { jsx as jsx98, jsxs as jsxs58 } from "react/jsx-runtime";
7496
8911
  function ScrollArea({
7497
8912
  className,
7498
8913
  children,
7499
8914
  ...props
7500
8915
  }) {
7501
- return /* @__PURE__ */ jsxs49(
8916
+ return /* @__PURE__ */ jsxs58(
7502
8917
  ScrollAreaPrimitive.Root,
7503
8918
  {
7504
8919
  "data-slot": "scroll-area",
7505
8920
  className: cn("relative", className),
7506
8921
  ...props,
7507
8922
  children: [
7508
- /* @__PURE__ */ jsx83(
8923
+ /* @__PURE__ */ jsx98(
7509
8924
  ScrollAreaPrimitive.Viewport,
7510
8925
  {
7511
8926
  "data-slot": "scroll-area-viewport",
@@ -7513,8 +8928,8 @@ function ScrollArea({
7513
8928
  children
7514
8929
  }
7515
8930
  ),
7516
- /* @__PURE__ */ jsx83(ScrollBar, {}),
7517
- /* @__PURE__ */ jsx83(ScrollAreaPrimitive.Corner, {})
8931
+ /* @__PURE__ */ jsx98(ScrollBar, {}),
8932
+ /* @__PURE__ */ jsx98(ScrollAreaPrimitive.Corner, {})
7518
8933
  ]
7519
8934
  }
7520
8935
  );
@@ -7524,7 +8939,7 @@ function ScrollBar({
7524
8939
  orientation = "vertical",
7525
8940
  ...props
7526
8941
  }) {
7527
- return /* @__PURE__ */ jsx83(
8942
+ return /* @__PURE__ */ jsx98(
7528
8943
  ScrollAreaPrimitive.ScrollAreaScrollbar,
7529
8944
  {
7530
8945
  "data-slot": "scroll-area-scrollbar",
@@ -7536,7 +8951,7 @@ function ScrollBar({
7536
8951
  className
7537
8952
  ),
7538
8953
  ...props,
7539
- children: /* @__PURE__ */ jsx83(
8954
+ children: /* @__PURE__ */ jsx98(
7540
8955
  ScrollAreaPrimitive.ScrollAreaThumb,
7541
8956
  {
7542
8957
  "data-slot": "scroll-area-thumb",
@@ -7549,7 +8964,7 @@ function ScrollBar({
7549
8964
 
7550
8965
  // src/components/ui/slider.tsx
7551
8966
  import * as SliderPrimitive from "@radix-ui/react-slider";
7552
- import { jsx as jsx84, jsxs as jsxs50 } from "react/jsx-runtime";
8967
+ import { jsx as jsx99, jsxs as jsxs59 } from "react/jsx-runtime";
7553
8968
  function Slider({
7554
8969
  className,
7555
8970
  defaultValue,
@@ -7566,7 +8981,7 @@ function Slider({
7566
8981
  } else {
7567
8982
  thumbValues = [min, max];
7568
8983
  }
7569
- return /* @__PURE__ */ jsxs50(
8984
+ return /* @__PURE__ */ jsxs59(
7570
8985
  SliderPrimitive.Root,
7571
8986
  {
7572
8987
  "data-slot": "slider",
@@ -7580,14 +8995,14 @@ function Slider({
7580
8995
  ),
7581
8996
  ...props,
7582
8997
  children: [
7583
- /* @__PURE__ */ jsx84(
8998
+ /* @__PURE__ */ jsx99(
7584
8999
  SliderPrimitive.Track,
7585
9000
  {
7586
9001
  "data-slot": "slider-track",
7587
9002
  className: cn(
7588
9003
  "bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"
7589
9004
  ),
7590
- children: /* @__PURE__ */ jsx84(
9005
+ children: /* @__PURE__ */ jsx99(
7591
9006
  SliderPrimitive.Range,
7592
9007
  {
7593
9008
  "data-slot": "slider-range",
@@ -7598,7 +9013,7 @@ function Slider({
7598
9013
  )
7599
9014
  }
7600
9015
  ),
7601
- thumbValues.map((thumbValue) => /* @__PURE__ */ jsx84(
9016
+ thumbValues.map((thumbValue) => /* @__PURE__ */ jsx99(
7602
9017
  SliderPrimitive.Thumb,
7603
9018
  {
7604
9019
  "data-slot": "slider-thumb",
@@ -7613,12 +9028,12 @@ function Slider({
7613
9028
 
7614
9029
  // src/components/ui/switch.tsx
7615
9030
  import * as SwitchPrimitive from "@radix-ui/react-switch";
7616
- import { jsx as jsx85 } from "react/jsx-runtime";
9031
+ import { jsx as jsx100 } from "react/jsx-runtime";
7617
9032
  function Switch({
7618
9033
  className,
7619
9034
  ...props
7620
9035
  }) {
7621
- return /* @__PURE__ */ jsx85(
9036
+ return /* @__PURE__ */ jsx100(
7622
9037
  SwitchPrimitive.Root,
7623
9038
  {
7624
9039
  "data-slot": "switch",
@@ -7627,7 +9042,7 @@ function Switch({
7627
9042
  className
7628
9043
  ),
7629
9044
  ...props,
7630
- children: /* @__PURE__ */ jsx85(
9045
+ children: /* @__PURE__ */ jsx100(
7631
9046
  SwitchPrimitive.Thumb,
7632
9047
  {
7633
9048
  "data-slot": "switch-thumb",
@@ -7642,12 +9057,12 @@ function Switch({
7642
9057
 
7643
9058
  // src/components/ui/tabs.tsx
7644
9059
  import * as TabsPrimitive from "@radix-ui/react-tabs";
7645
- import { jsx as jsx86 } from "react/jsx-runtime";
9060
+ import { jsx as jsx101 } from "react/jsx-runtime";
7646
9061
  function Tabs({
7647
9062
  className,
7648
9063
  ...props
7649
9064
  }) {
7650
- return /* @__PURE__ */ jsx86(
9065
+ return /* @__PURE__ */ jsx101(
7651
9066
  TabsPrimitive.Root,
7652
9067
  {
7653
9068
  "data-slot": "tabs",
@@ -7660,7 +9075,7 @@ function TabsList({
7660
9075
  className,
7661
9076
  ...props
7662
9077
  }) {
7663
- return /* @__PURE__ */ jsx86(
9078
+ return /* @__PURE__ */ jsx101(
7664
9079
  TabsPrimitive.List,
7665
9080
  {
7666
9081
  "data-slot": "tabs-list",
@@ -7676,7 +9091,7 @@ function TabsTrigger({
7676
9091
  className,
7677
9092
  ...props
7678
9093
  }) {
7679
- return /* @__PURE__ */ jsx86(
9094
+ return /* @__PURE__ */ jsx101(
7680
9095
  TabsPrimitive.Trigger,
7681
9096
  {
7682
9097
  "data-slot": "tabs-trigger",
@@ -7692,7 +9107,7 @@ function TabsContent({
7692
9107
  className,
7693
9108
  ...props
7694
9109
  }) {
7695
- return /* @__PURE__ */ jsx86(
9110
+ return /* @__PURE__ */ jsx101(
7696
9111
  TabsPrimitive.Content,
7697
9112
  {
7698
9113
  "data-slot": "tabs-content",
@@ -7891,7 +9306,12 @@ export {
7891
9306
  ItemTitle,
7892
9307
  Kbd,
7893
9308
  KbdGroup,
7894
- Label4 as Label,
9309
+ Label3 as Label,
9310
+ LocaleInputRichText,
9311
+ LocaleInputText,
9312
+ LocaleInputTextarea,
9313
+ LocaleRichText,
9314
+ LocaleText,
7895
9315
  Menubar,
7896
9316
  MenubarCheckboxItem,
7897
9317
  MenubarContent,
@@ -7909,6 +9329,7 @@ export {
7909
9329
  MenubarSubTrigger,
7910
9330
  MenubarTrigger,
7911
9331
  MesobLogo,
9332
+ MoneyInput,
7912
9333
  NavigationMenu,
7913
9334
  NavigationMenuContent,
7914
9335
  NavigationMenuIndicator,
@@ -7941,6 +9362,13 @@ export {
7941
9362
  ResizableHandle,
7942
9363
  ResizablePanel,
7943
9364
  ResizablePanelGroup,
9365
+ RichTextDisplay,
9366
+ RichTextEditor,
9367
+ RichTextEditorContent,
9368
+ RichTextEditorControl,
9369
+ RichTextEditorControlsGroup,
9370
+ RichTextEditorToolbar,
9371
+ RichTextInput,
7944
9372
  ScrollArea,
7945
9373
  ScrollBar,
7946
9374
  Section,
@@ -8015,6 +9443,7 @@ export {
8015
9443
  TooltipContent,
8016
9444
  TooltipProvider,
8017
9445
  TooltipTrigger,
9446
+ VisuallyHidden,
8018
9447
  badgeVariants,
8019
9448
  buttonGroupVariants,
8020
9449
  buttonVariants,
@@ -8025,6 +9454,7 @@ export {
8025
9454
  useEntityPagination,
8026
9455
  useEntityParams,
8027
9456
  useFormField,
9457
+ useRichTextEditorContext,
8028
9458
  useSidebar
8029
9459
  };
8030
9460
  //# sourceMappingURL=components.js.map