@datatechsolutions/ui 2.7.128 → 2.7.130

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.
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { triggerHaptic } from './chunk-D2JF6C3E.mjs';
3
- import * as Headless11 from '@headlessui/react';
3
+ import * as Headless6 from '@headlessui/react';
4
4
  import { Button as Button$1, Transition, Dialog, TransitionChild, DialogPanel, DialogTitle, DialogBackdrop, Menu, MenuButton, MenuItems, MenuItem } from '@headlessui/react';
5
5
  import clsx, { clsx as clsx$1 } from 'clsx';
6
6
  import * as React11 from 'react';
7
- import React11__default, { forwardRef, useId, useState, useCallback, createContext, memo, useMemo, useRef, useEffect, Fragment as Fragment$1, useContext, Suspense } from 'react';
7
+ import React11__default, { forwardRef, useId, useState, useCallback, createContext, memo, useRef, useEffect, Fragment as Fragment$1, useMemo, useContext, Suspense } from 'react';
8
8
  import { AnimatePresence, motion, useMotionValue, useTransform, animate, useInView, useSpring } from 'framer-motion';
9
9
  import NextLink from 'next/link';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import { useTranslations, useLocale } from 'next-intl';
12
- import { ChevronDownIcon, CheckCircleIcon, EyeSlashIcon as EyeSlashIcon$1, EyeIcon as EyeIcon$1, XMarkIcon, CheckIcon, ChevronLeftIcon, ChevronRightIcon, EllipsisVerticalIcon, ClipboardDocumentIcon as ClipboardDocumentIcon$1, ArrowDownTrayIcon } from '@heroicons/react/20/solid';
12
+ import { ChevronDownIcon, CheckCircleIcon, EyeSlashIcon, EyeIcon, XMarkIcon, CheckIcon, ChevronLeftIcon, ChevronRightIcon, EllipsisVerticalIcon, ClipboardDocumentIcon as ClipboardDocumentIcon$1, ArrowDownTrayIcon } from '@heroicons/react/20/solid';
13
13
  import * as HeroIcons from '@heroicons/react/24/outline';
14
- import { PlusIcon, MinusIcon, EyeSlashIcon, EyeIcon, MapIcon, XMarkIcon as XMarkIcon$1, ClockIcon, BuildingStorefrontIcon, MagnifyingGlassIcon, InformationCircleIcon, ArrowTrendingUpIcon, ArrowTrendingDownIcon, ChevronUpIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronUpDownIcon, DocumentMagnifyingGlassIcon, ShieldExclamationIcon, ServerStackIcon, WifiIcon, ExclamationTriangleIcon, ArrowPathIcon, FolderOpenIcon, BellIcon, TrashIcon, ExclamationCircleIcon, CheckCircleIcon as CheckCircleIcon$1, CheckIcon as CheckIcon$1, ClipboardDocumentCheckIcon, ClipboardDocumentIcon, CalendarDaysIcon, ChevronLeftIcon as ChevronLeftIcon$1, ChevronRightIcon as ChevronRightIcon$1, FunnelIcon, BeakerIcon, WrenchScrewdriverIcon, EyeDropperIcon, MoonIcon as MoonIcon$1, SunIcon as SunIcon$1, UserCircleIcon, ArrowRightOnRectangleIcon, LanguageIcon, Squares2X2Icon, PlusCircleIcon, GlobeAltIcon, XCircleIcon, LockClosedIcon, UserIcon } from '@heroicons/react/24/outline';
14
+ import { PlusIcon, MinusIcon, MapIcon, XMarkIcon as XMarkIcon$1, ClockIcon, BuildingStorefrontIcon, MagnifyingGlassIcon, InformationCircleIcon, ArrowTrendingUpIcon, ArrowTrendingDownIcon, ChevronUpIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronUpDownIcon, DocumentMagnifyingGlassIcon, ShieldExclamationIcon, ServerStackIcon, WifiIcon, ExclamationTriangleIcon, ArrowPathIcon, FolderOpenIcon, BellIcon, TrashIcon, ExclamationCircleIcon, CheckCircleIcon as CheckCircleIcon$1, CheckIcon as CheckIcon$1, ClipboardDocumentCheckIcon, ClipboardDocumentIcon, CalendarDaysIcon, ChevronLeftIcon as ChevronLeftIcon$1, ChevronRightIcon as ChevronRightIcon$1, FunnelIcon, BeakerIcon, WrenchScrewdriverIcon, EyeDropperIcon, MoonIcon as MoonIcon$1, SunIcon as SunIcon$1, UserCircleIcon, ArrowRightOnRectangleIcon, LanguageIcon, Squares2X2Icon, PlusCircleIcon, GlobeAltIcon, XCircleIcon, LockClosedIcon, UserIcon } from '@heroicons/react/24/outline';
15
15
  import * as Popover from '@radix-ui/react-popover';
16
16
  import { createPortal } from 'react-dom';
17
17
  import { startOfDay, startOfMonth, endOfMonth, eachDayOfInterval, getDay, subMonths, addMonths, isAfter, format, isSameDay, isSameMonth, parse } from 'date-fns';
@@ -23,12 +23,12 @@ import Image from 'next/image';
23
23
  import { CalendarIcon, ChevronLeftIcon as ChevronLeftIcon$2, ChevronRightIcon as ChevronRightIcon$2 } from 'lucide-react';
24
24
  import { geoAlbersUsa, geoMercator, geoPath } from 'd3-geo';
25
25
  export { LOCALE_FLAGS } from '@datatechsolutions/shared-domain/i18n';
26
- import * as ProgressPrimitive from '@radix-ui/react-progress';
27
26
  import * as TabsPrimitive from '@radix-ui/react-tabs';
27
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
28
28
  import { create } from 'zustand';
29
29
 
30
30
  var Link = forwardRef(function Link2(props, ref) {
31
- return /* @__PURE__ */ jsx(Headless11.DataInteractive, { children: /* @__PURE__ */ jsx(NextLink, { ...props, ref }) });
31
+ return /* @__PURE__ */ jsx(Headless6.DataInteractive, { children: /* @__PURE__ */ jsx(NextLink, { ...props, ref }) });
32
32
  });
33
33
 
34
34
  // src/lib/animations.ts
@@ -996,7 +996,7 @@ var Input = forwardRef(
996
996
  onClick: togglePassword,
997
997
  className: "p-1 rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
998
998
  "aria-label": showPassword ? t("hidePassword") : t("showPassword"),
999
- children: showPassword ? /* @__PURE__ */ jsx(EyeSlashIcon$1, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx(EyeIcon$1, { className: "h-5 w-5" })
999
+ children: showPassword ? /* @__PURE__ */ jsx(EyeSlashIcon, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx(EyeIcon, { className: "h-5 w-5" })
1000
1000
  }
1001
1001
  ) }),
1002
1002
  /* @__PURE__ */ jsx(AnimatePresence, { children: showClearButton && /* @__PURE__ */ jsx(
@@ -2906,10 +2906,10 @@ function TagBadge({
2906
2906
  value,
2907
2907
  size = "sm",
2908
2908
  className = "",
2909
- styles: styles3 = {},
2909
+ styles: styles2 = {},
2910
2910
  fallbackStyle = DEFAULT_FALLBACK_STYLE
2911
2911
  }) {
2912
- const style = styles3[value] ?? fallbackStyle;
2912
+ const style = styles2[value] ?? fallbackStyle;
2913
2913
  const sizeClass = SIZE_CLASSES[size];
2914
2914
  return /* @__PURE__ */ jsx(
2915
2915
  "span",
@@ -2987,7 +2987,7 @@ function SegmentedControl({
2987
2987
  (seg) => typeof seg === "string" ? { value: seg, label: seg } : seg
2988
2988
  );
2989
2989
  const selectedIndex = normalizedSegments.findIndex((seg) => seg.value === value);
2990
- const styles3 = sizeStyles2[size];
2990
+ const styles2 = sizeStyles2[size];
2991
2991
  useEffect(() => {
2992
2992
  if (containerRef.current && selectedIndex >= 0) {
2993
2993
  const container = containerRef.current;
@@ -3015,7 +3015,7 @@ function SegmentedControl({
3015
3015
  className: `
3016
3016
  relative inline-flex items-center rounded-xl
3017
3017
  bg-gray-100 dark:bg-gray-800
3018
- ${styles3.container}
3018
+ ${styles2.container}
3019
3019
  ${fullWidth ? "w-full" : ""}
3020
3020
  ${disabled ? "opacity-50 pointer-events-none" : ""}
3021
3021
  `,
@@ -3042,7 +3042,7 @@ function SegmentedControl({
3042
3042
  className: `
3043
3043
  relative z-10 flex items-center justify-center gap-1.5
3044
3044
  font-medium rounded-lg transition-colors duration-150
3045
- ${styles3.segment}
3045
+ ${styles2.segment}
3046
3046
  ${fullWidth ? "flex-1" : ""}
3047
3047
  ${isSelected ? "text-gray-900 dark:text-white" : "text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300"}
3048
3048
  `,
@@ -4881,7 +4881,7 @@ function DynamicIslandNotification({
4881
4881
  position = "right"
4882
4882
  }) {
4883
4883
  const [state, setState] = useState("idle");
4884
- const styles3 = variantStyles[variant];
4884
+ const styles2 = variantStyles[variant];
4885
4885
  useEffect(() => {
4886
4886
  if (show) {
4887
4887
  setState("expanded");
@@ -4906,12 +4906,12 @@ function DynamicIslandNotification({
4906
4906
  position,
4907
4907
  idleContent: (
4908
4908
  // Idle: Colored icon pill
4909
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: icon && /* @__PURE__ */ jsx("div", { className: `h-6 w-6 rounded-full ${styles3.iconBg} flex items-center justify-center`, children: /* @__PURE__ */ jsx("div", { className: "h-4 w-4 text-white", children: icon }) }) })
4909
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center", children: icon && /* @__PURE__ */ jsx("div", { className: `h-6 w-6 rounded-full ${styles2.iconBg} flex items-center justify-center`, children: /* @__PURE__ */ jsx("div", { className: "h-4 w-4 text-white", children: icon }) }) })
4910
4910
  ),
4911
4911
  compactContent: (
4912
4912
  // Compact: Colored icon + title + message preview
4913
4913
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-4 w-full", children: [
4914
- icon && /* @__PURE__ */ jsx("div", { className: `h-8 w-8 rounded-full ${styles3.iconBg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ jsx("div", { className: "h-5 w-5 text-white", children: icon }) }),
4914
+ icon && /* @__PURE__ */ jsx("div", { className: `h-8 w-8 rounded-full ${styles2.iconBg} flex items-center justify-center shrink-0`, children: /* @__PURE__ */ jsx("div", { className: "h-5 w-5 text-white", children: icon }) }),
4915
4915
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
4916
4916
  /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold truncate", children: title }),
4917
4917
  message && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-400 truncate", children: message })
@@ -4921,9 +4921,9 @@ function DynamicIslandNotification({
4921
4921
  expandedContent: (
4922
4922
  // Expanded: Full notification with colored icon background
4923
4923
  /* @__PURE__ */ jsxs("div", { className: `flex items-center gap-4 px-5 w-full h-full`, children: [
4924
- icon && /* @__PURE__ */ jsx("div", { className: `h-14 w-14 rounded-2xl ${styles3.iconBg} flex items-center justify-center shrink-0 ${styles3.glow}`, children: /* @__PURE__ */ jsx("div", { className: "h-8 w-8 text-white", children: icon }) }),
4924
+ icon && /* @__PURE__ */ jsx("div", { className: `h-14 w-14 rounded-2xl ${styles2.iconBg} flex items-center justify-center shrink-0 ${styles2.glow}`, children: /* @__PURE__ */ jsx("div", { className: "h-8 w-8 text-white", children: icon }) }),
4925
4925
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
4926
- appName && /* @__PURE__ */ jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${styles3.accentColor}`, children: appName }),
4926
+ appName && /* @__PURE__ */ jsx("p", { className: `text-[11px] uppercase tracking-wide font-medium ${styles2.accentColor}`, children: appName }),
4927
4927
  /* @__PURE__ */ jsx("p", { className: "text-[15px] font-semibold leading-tight", children: title }),
4928
4928
  message && /* @__PURE__ */ jsx("p", { className: "text-[13px] text-gray-400 mt-0.5 truncate", children: message })
4929
4929
  ] })
@@ -5444,16 +5444,16 @@ function Dialog4({
5444
5444
  children,
5445
5445
  ...props
5446
5446
  }) {
5447
- return /* @__PURE__ */ jsxs(Headless11.Dialog, { ...props, children: [
5447
+ return /* @__PURE__ */ jsxs(Headless6.Dialog, { ...props, children: [
5448
5448
  /* @__PURE__ */ jsx(
5449
- Headless11.DialogBackdrop,
5449
+ Headless6.DialogBackdrop,
5450
5450
  {
5451
5451
  transition: true,
5452
5452
  className: "fixed inset-0 flex w-screen justify-center overflow-y-auto bg-zinc-950/25 px-2 py-2 transition duration-100 focus:outline-0 data-closed:opacity-0 data-enter:ease-out data-leave:ease-in sm:px-6 sm:py-8 lg:px-8 lg:py-16 dark:bg-zinc-950/50"
5453
5453
  }
5454
5454
  ),
5455
5455
  /* @__PURE__ */ jsx("div", { className: "fixed inset-0 w-screen overflow-y-auto pt-6 sm:pt-0", children: /* @__PURE__ */ jsx("div", { className: "grid min-h-full grid-rows-[1fr_auto] justify-items-center sm:grid-rows-[1fr_auto_3fr] sm:p-4", children: /* @__PURE__ */ jsx(
5456
- Headless11.DialogPanel,
5456
+ Headless6.DialogPanel,
5457
5457
  {
5458
5458
  transition: true,
5459
5459
  className: clsx(
@@ -5472,7 +5472,7 @@ function DialogTitle3({
5472
5472
  ...props
5473
5473
  }) {
5474
5474
  return /* @__PURE__ */ jsx(
5475
- Headless11.DialogTitle,
5475
+ Headless6.DialogTitle,
5476
5476
  {
5477
5477
  ...props,
5478
5478
  className: clsx(
@@ -5487,7 +5487,7 @@ function DialogDescription({
5487
5487
  ...props
5488
5488
  }) {
5489
5489
  return /* @__PURE__ */ jsx(
5490
- Headless11.Description,
5490
+ Headless6.Description,
5491
5491
  {
5492
5492
  as: Text,
5493
5493
  ...props,
@@ -8557,7 +8557,7 @@ var AvatarButton = forwardRef(function AvatarButton2({
8557
8557
  if (typeof props.href === "string") {
8558
8558
  return /* @__PURE__ */ jsx(Link, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Avatar, { src, square, initials, alt }) }) });
8559
8559
  }
8560
- return /* @__PURE__ */ jsx(Headless11.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Avatar, { src, square, initials, alt }) }) });
8560
+ return /* @__PURE__ */ jsx(Headless6.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Avatar, { src, square, initials, alt }) }) });
8561
8561
  });
8562
8562
  var colors = {
8563
8563
  red: "bg-red-500/15 text-red-700 group-data-hover:bg-red-500/25 dark:bg-red-500/10 dark:text-red-400 dark:group-data-hover:bg-red-500/20",
@@ -8605,7 +8605,7 @@ forwardRef(function BadgeButton2({
8605
8605
  if (typeof props.href === "string") {
8606
8606
  return /* @__PURE__ */ jsx(Link, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Badge, { color, children }) }) });
8607
8607
  }
8608
- return /* @__PURE__ */ jsx(Headless11.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Badge, { color, children }) }) });
8608
+ return /* @__PURE__ */ jsx(Headless6.Button, { ...props, className: classes, ref, children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Badge, { color, children }) }) });
8609
8609
  });
8610
8610
  function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard" }) {
8611
8611
  const t = useTranslations("common");
@@ -8777,7 +8777,7 @@ function Divider({
8777
8777
  );
8778
8778
  }
8779
8779
  function Dropdown(props) {
8780
- return /* @__PURE__ */ jsx(Headless11.Menu, { ...props });
8780
+ return /* @__PURE__ */ jsx(Headless6.Menu, { ...props });
8781
8781
  }
8782
8782
  function DynamicIslandConfirm({
8783
8783
  open,
@@ -9818,7 +9818,7 @@ function Fieldset2({
9818
9818
  ...props
9819
9819
  }) {
9820
9820
  return /* @__PURE__ */ jsx(
9821
- Headless11.Fieldset,
9821
+ Headless6.Fieldset,
9822
9822
  {
9823
9823
  ...props,
9824
9824
  className: clsx(
@@ -9833,7 +9833,7 @@ function Legend2({
9833
9833
  ...props
9834
9834
  }) {
9835
9835
  return /* @__PURE__ */ jsx(
9836
- Headless11.Legend,
9836
+ Headless6.Legend,
9837
9837
  {
9838
9838
  "data-slot": "legend",
9839
9839
  ...props,
@@ -9862,7 +9862,7 @@ function Field2({
9862
9862
  ...props
9863
9863
  }) {
9864
9864
  return /* @__PURE__ */ jsx(
9865
- Headless11.Field,
9865
+ Headless6.Field,
9866
9866
  {
9867
9867
  ...props,
9868
9868
  className: clsx(
@@ -9882,7 +9882,7 @@ function Label2({
9882
9882
  ...props
9883
9883
  }) {
9884
9884
  return /* @__PURE__ */ jsx(
9885
- Headless11.Label,
9885
+ Headless6.Label,
9886
9886
  {
9887
9887
  "data-slot": "label",
9888
9888
  ...props,
@@ -9898,7 +9898,7 @@ function Description4({
9898
9898
  ...props
9899
9899
  }) {
9900
9900
  return /* @__PURE__ */ jsx(
9901
- Headless11.Description,
9901
+ Headless6.Description,
9902
9902
  {
9903
9903
  "data-slot": "description",
9904
9904
  ...props,
@@ -9914,7 +9914,7 @@ function ErrorMessage({
9914
9914
  ...props
9915
9915
  }) {
9916
9916
  return /* @__PURE__ */ jsx(
9917
- Headless11.Description,
9917
+ Headless6.Description,
9918
9918
  {
9919
9919
  "data-slot": "error",
9920
9920
  ...props,
@@ -12543,435 +12543,374 @@ var getUsGradient = (state, direction) => getSubdivisionGradient("US", state, di
12543
12543
  var getUsColors = (state) => getSubdivisionColors("US", state);
12544
12544
  var getUsAccent = (state) => getSubdivisionAccent("US", state);
12545
12545
  var isValidUsState = (state) => isValidSubdivision("US", state);
12546
- var Link4 = forwardRef(function Link5(props, ref) {
12547
- return /* @__PURE__ */ jsx(NextLink, { ref, ...props });
12548
- });
12549
- var styles2 = {
12550
- base: [
12551
- "relative inline-flex items-center justify-center gap-x-2 rounded-xl text-sm font-semibold",
12552
- "px-3.5 py-2.5 transition-all duration-200",
12553
- "focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-indigo-400 dark:focus:ring-offset-slate-900",
12554
- "disabled:opacity-50 disabled:pointer-events-none",
12555
- "[&>svg]:size-4 [&>svg]:shrink-0"
12556
- ],
12557
- solid: ["liquid-button-primary rounded-xl"],
12558
- outline: [
12559
- "liquid-button rounded-xl"
12560
- ],
12561
- plain: [
12562
- "border-transparent text-slate-700 hover:bg-white/30 dark:hover:bg-white/[0.08]",
12563
- "dark:text-slate-300"
12564
- ],
12565
- colors: {
12566
- "dark/zinc": [
12567
- "bg-slate-900/80 text-white backdrop-blur-xl border border-white/10 hover:bg-slate-800/80"
12568
- ],
12569
- light: [
12570
- "bg-white/60 text-slate-900 backdrop-blur-xl border border-white/30 hover:bg-white/80 dark:bg-white/10 dark:text-white dark:border-white/20 dark:hover:bg-white/20"
12571
- ],
12572
- "dark/white": [
12573
- "bg-slate-900/80 text-white backdrop-blur-xl border border-white/10 hover:bg-slate-800/80 dark:bg-white/90 dark:text-slate-900 dark:border-white/30 dark:hover:bg-white/80"
12574
- ],
12575
- dark: [
12576
- "bg-slate-900/80 text-white backdrop-blur-xl border border-white/10 hover:bg-slate-800/80"
12577
- ],
12578
- white: [
12579
- "bg-white/60 text-slate-900 backdrop-blur-xl border border-white/30 hover:bg-white/80"
12580
- ],
12581
- zinc: [
12582
- "bg-slate-600/80 text-white backdrop-blur-xl border border-white/10 hover:bg-slate-700/80"
12583
- ],
12584
- indigo: [
12585
- "bg-indigo-500/80 text-white backdrop-blur-xl border border-indigo-400/30 hover:bg-indigo-600/80"
12586
- ],
12587
- cyan: [
12588
- "bg-cyan-300/80 text-cyan-950 backdrop-blur-xl border border-cyan-200/30 hover:bg-cyan-400/80"
12589
- ],
12590
- red: [
12591
- "bg-red-600/80 text-white backdrop-blur-xl border border-red-500/30 hover:bg-red-700/80"
12592
- ],
12593
- orange: [
12594
- "bg-orange-500/80 text-white backdrop-blur-xl border border-orange-400/30 hover:bg-orange-600/80"
12595
- ],
12596
- amber: [
12597
- "bg-amber-400/80 text-amber-950 backdrop-blur-xl border border-amber-300/30 hover:bg-amber-500/80"
12598
- ],
12599
- yellow: [
12600
- "bg-yellow-300/80 text-yellow-950 backdrop-blur-xl border border-yellow-200/30 hover:bg-yellow-400/80"
12601
- ],
12602
- lime: [
12603
- "bg-lime-300/80 text-lime-950 backdrop-blur-xl border border-lime-200/30 hover:bg-lime-400/80"
12604
- ],
12605
- green: [
12606
- "bg-green-600/80 text-white backdrop-blur-xl border border-green-500/30 hover:bg-green-700/80"
12607
- ],
12608
- emerald: [
12609
- "bg-emerald-600/80 text-white backdrop-blur-xl border border-emerald-500/30 hover:bg-emerald-700/80"
12610
- ],
12611
- teal: [
12612
- "bg-teal-600/80 text-white backdrop-blur-xl border border-teal-500/30 hover:bg-teal-700/80"
12613
- ],
12614
- sky: [
12615
- "bg-sky-500/80 text-white backdrop-blur-xl border border-sky-400/30 hover:bg-sky-600/80"
12616
- ],
12617
- blue: [
12618
- "bg-blue-600/80 text-white backdrop-blur-xl border border-blue-500/30 hover:bg-blue-700/80"
12619
- ],
12620
- brand: [
12621
- "bg-brand-600/80 text-white backdrop-blur-xl border border-brand-500/30 hover:bg-brand-700/80"
12622
- ],
12623
- accent: [
12624
- "bg-accent/80 text-accent-foreground backdrop-blur-xl border border-accent/30 hover:bg-accent/70"
12625
- ],
12626
- violet: [
12627
- "bg-violet-500/80 text-white backdrop-blur-xl border border-violet-400/30 hover:bg-violet-600/80"
12628
- ],
12629
- purple: [
12630
- "bg-purple-500/80 text-white backdrop-blur-xl border border-purple-400/30 hover:bg-purple-600/80"
12631
- ],
12632
- fuchsia: [
12633
- "bg-fuchsia-500/80 text-white backdrop-blur-xl border border-fuchsia-400/30 hover:bg-fuchsia-600/80"
12634
- ],
12635
- pink: [
12636
- "bg-pink-500/80 text-white backdrop-blur-xl border border-pink-400/30 hover:bg-pink-600/80"
12637
- ],
12638
- rose: [
12639
- "bg-rose-500/80 text-white backdrop-blur-xl border border-rose-400/30 hover:bg-rose-600/80"
12640
- ]
12641
- }
12642
- };
12643
- var Button6 = forwardRef(function Button7({
12644
- color,
12645
- outline,
12646
- plain,
12647
- className,
12648
- children,
12649
- loading,
12650
- "aria-label": ariaLabel,
12651
- "aria-describedby": ariaDescribedBy,
12652
- "aria-busy": ariaBusy,
12653
- ...props
12654
- }, ref) {
12655
- const classes = clsx(
12656
- className,
12657
- styles2.base,
12658
- outline ? styles2.outline : plain ? styles2.plain : clsx(styles2.solid, styles2.colors[color ?? "brand"])
12659
- );
12660
- const accessibilityProps = {
12661
- "aria-label": ariaLabel,
12662
- "aria-describedby": ariaDescribedBy,
12663
- "aria-busy": ariaBusy || loading,
12664
- ...loading && { disabled: true }
12665
- };
12666
- return "href" in props ? /* @__PURE__ */ jsx(
12667
- Link4,
12668
- {
12669
- ...props,
12670
- ...accessibilityProps,
12671
- className: classes,
12672
- ref,
12673
- children: /* @__PURE__ */ jsxs(TouchTarget2, { children: [
12674
- loading && /* @__PURE__ */ jsx(
12675
- "span",
12546
+ function DataPagination({
12547
+ pagination,
12548
+ onUpdate,
12549
+ loading = false,
12550
+ showPageSize = false,
12551
+ pageSizeOptions = [10, 20, 50],
12552
+ params
12553
+ }) {
12554
+ const effectivePageSize = pagination.pageSize ?? pagination.limit ?? 10;
12555
+ const from = (pagination.page - 1) * effectivePageSize + 1;
12556
+ const to = Math.min(pagination.page * effectivePageSize, pagination.total);
12557
+ const handlePageChange = (page) => onUpdate({ page });
12558
+ const handlePageSizeChange = (value) => onUpdate({ limit: parseInt(value), page: 1 });
12559
+ if (pagination.totalPages <= 1 && !showPageSize) return null;
12560
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-2xl liquid-surface px-4 py-3", children: [
12561
+ /* @__PURE__ */ jsxs("p", { className: "text-sm tabular-nums text-slate-600 dark:text-slate-400", children: [
12562
+ from,
12563
+ "\u2013",
12564
+ to,
12565
+ " / ",
12566
+ pagination.total
12567
+ ] }),
12568
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
12569
+ showPageSize && /* @__PURE__ */ jsx(
12570
+ "select",
12571
+ {
12572
+ value: params?.limit ?? effectivePageSize,
12573
+ onChange: (event) => handlePageSizeChange(event.target.value),
12574
+ disabled: loading,
12575
+ className: "rounded-xl liquid-surface px-2 py-1.5 text-xs font-medium text-slate-700 outline-none dark:text-slate-300",
12576
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
12577
+ }
12578
+ ),
12579
+ pagination.totalPages > 1 && /* @__PURE__ */ jsxs("nav", { className: "flex items-center gap-1", "aria-label": "Pagination", children: [
12580
+ /* @__PURE__ */ jsx(
12581
+ "button",
12676
12582
  {
12677
- className: "animate-spin inline-block size-4 border-2 border-current border-t-transparent rounded-full mr-2",
12678
- "aria-hidden": "true"
12583
+ type: "button",
12584
+ disabled: pagination.page <= 1 || loading,
12585
+ onClick: () => handlePageChange(pagination.page - 1),
12586
+ className: "inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-500 transition hover:bg-white/40 disabled:opacity-30 dark:text-slate-400 dark:hover:bg-white/[0.08]",
12587
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
12679
12588
  }
12680
12589
  ),
12681
- children
12682
- ] })
12683
- }
12684
- ) : /* @__PURE__ */ jsx(
12685
- Headless11.Button,
12686
- {
12687
- ...props,
12688
- ...accessibilityProps,
12689
- className: classes,
12690
- ref,
12691
- children: /* @__PURE__ */ jsxs(TouchTarget2, { children: [
12692
- loading && /* @__PURE__ */ jsx(
12693
- "span",
12590
+ getPageNumbers(pagination.page, pagination.totalPages).map(
12591
+ (page, index) => page === "..." ? /* @__PURE__ */ jsx(
12592
+ "span",
12593
+ {
12594
+ className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-400",
12595
+ children: "\u2026"
12596
+ },
12597
+ `ellipsis-${index}`
12598
+ ) : /* @__PURE__ */ jsx(
12599
+ "button",
12600
+ {
12601
+ type: "button",
12602
+ disabled: loading,
12603
+ onClick: () => handlePageChange(page),
12604
+ "aria-current": page === pagination.page ? "page" : void 0,
12605
+ className: `inline-flex h-9 min-w-9 items-center justify-center rounded-xl px-2 text-sm font-medium transition ${page === pagination.page ? "liquid-surface liquid-surface-active text-slate-900 dark:text-white" : "text-slate-500 hover:bg-white/40 dark:text-slate-400 dark:hover:bg-white/[0.08]"}`,
12606
+ children: page
12607
+ },
12608
+ `page-${page}`
12609
+ )
12610
+ ),
12611
+ /* @__PURE__ */ jsx(
12612
+ "button",
12694
12613
  {
12695
- className: "animate-spin inline-block size-4 border-2 border-current border-t-transparent rounded-full mr-2",
12696
- "aria-hidden": "true"
12614
+ type: "button",
12615
+ disabled: pagination.page >= pagination.totalPages || loading,
12616
+ onClick: () => handlePageChange(pagination.page + 1),
12617
+ className: "inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-500 transition hover:bg-white/40 disabled:opacity-30 dark:text-slate-400 dark:hover:bg-white/[0.08]",
12618
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
12697
12619
  }
12698
- ),
12699
- children
12620
+ )
12700
12621
  ] })
12701
- }
12702
- );
12703
- });
12704
- function TouchTarget2({ children }) {
12705
- return /* @__PURE__ */ jsxs(Fragment, { children: [
12706
- /* @__PURE__ */ jsx(
12707
- "span",
12708
- {
12709
- className: "absolute top-1/2 left-1/2 size-[max(100%,2.75rem)] -translate-x-1/2 -translate-y-1/2 pointer-fine:hidden",
12710
- "aria-hidden": "true"
12711
- }
12712
- ),
12713
- children
12622
+ ] })
12714
12623
  ] });
12715
12624
  }
12716
- function InputGroup({
12717
- children
12718
- }) {
12719
- return /* @__PURE__ */ jsx(
12720
- "span",
12721
- {
12722
- "data-slot": "control",
12723
- className: clsx(
12724
- "relative isolate block",
12725
- "has-[[data-slot=icon]:first-child]:[&_input]:pl-10 has-[[data-slot=icon]:last-child]:[&_input]:pr-10 sm:has-[[data-slot=icon]:first-child]:[&_input]:pl-8 sm:has-[[data-slot=icon]:last-child]:[&_input]:pr-8",
12726
- "*:data-[slot=icon]:pointer-events-none *:data-[slot=icon]:absolute *:data-[slot=icon]:top-3 *:data-[slot=icon]:z-10 *:data-[slot=icon]:size-5 sm:*:data-[slot=icon]:top-2.5 sm:*:data-[slot=icon]:size-4",
12727
- "[&>[data-slot=icon]:first-child]:left-3 sm:[&>[data-slot=icon]:first-child]:left-2.5 [&>[data-slot=icon]:last-child]:right-3 sm:[&>[data-slot=icon]:last-child]:right-2.5",
12728
- "*:data-[slot=icon]:text-slate-500"
12729
- ),
12730
- children
12625
+ function getPageNumbers(currentPage, totalPages) {
12626
+ if (totalPages <= 7) {
12627
+ return Array.from({ length: totalPages }, (_, i) => i + 1);
12628
+ }
12629
+ const pages = [1];
12630
+ if (currentPage <= 4) {
12631
+ for (let i = 2; i <= Math.min(5, totalPages); i++) pages.push(i);
12632
+ if (totalPages > 5) {
12633
+ pages.push("...");
12634
+ pages.push(totalPages);
12731
12635
  }
12732
- );
12636
+ } else if (currentPage >= totalPages - 3) {
12637
+ pages.push("...");
12638
+ for (let i = Math.max(totalPages - 4, 2); i <= totalPages; i++)
12639
+ pages.push(i);
12640
+ } else {
12641
+ pages.push("...");
12642
+ for (let i = currentPage - 1; i <= currentPage + 1; i++) pages.push(i);
12643
+ pages.push("...");
12644
+ pages.push(totalPages);
12645
+ }
12646
+ return pages;
12733
12647
  }
12734
- var dateTypes = ["date", "datetime-local", "month", "time", "week"];
12735
- forwardRef(function Input4({
12736
- className,
12737
- "aria-label": ariaLabel,
12738
- "aria-describedby": ariaDescribedBy,
12739
- "aria-invalid": ariaInvalid,
12740
- "aria-required": ariaRequired,
12741
- required,
12742
- invalid,
12743
- ...props
12744
- }, ref) {
12745
- return /* @__PURE__ */ jsx(
12746
- "span",
12747
- {
12748
- "data-slot": "control",
12749
- className: clsx([
12750
- className,
12751
- // Basic layout
12752
- "relative block w-full",
12753
- // Focus ring
12754
- "after:pointer-events-none after:absolute after:inset-0 after:rounded-xl after:ring-transparent after:ring-inset sm:focus-within:after:ring-2 sm:focus-within:after:ring-indigo-500",
12755
- // Disabled state
12756
- "has-data-disabled:opacity-50"
12757
- ]),
12758
- children: /* @__PURE__ */ jsx(
12759
- Headless11.Input,
12760
- {
12761
- ref,
12762
- ...props,
12763
- "aria-label": ariaLabel,
12764
- "aria-describedby": ariaDescribedBy,
12765
- "aria-invalid": ariaInvalid || invalid,
12766
- "aria-required": ariaRequired || required,
12767
- style: {
12768
- ...props.style,
12769
- // Override autofill with CSS custom properties
12770
- "--autofill-bg": "white",
12771
- "--autofill-color": "black"
12772
- },
12773
- className: clsx([
12774
- // Date classes
12775
- props.type && dateTypes.includes(props.type) && [
12776
- "[&::-webkit-datetime-edit-fields-wrapper]:p-0",
12777
- "[&::-webkit-date-and-time-value]:min-h-[1.5em]",
12778
- "[&::-webkit-datetime-edit]:inline-flex",
12779
- "[&::-webkit-datetime-edit]:p-0",
12780
- "[&::-webkit-datetime-edit-year-field]:p-0",
12781
- "[&::-webkit-datetime-edit-month-field]:p-0",
12782
- "[&::-webkit-datetime-edit-day-field]:p-0",
12783
- "[&::-webkit-datetime-edit-hour-field]:p-0",
12784
- "[&::-webkit-datetime-edit-minute-field]:p-0",
12785
- "[&::-webkit-datetime-edit-second-field]:p-0",
12786
- "[&::-webkit-datetime-edit-millisecond-field]:p-0",
12787
- "[&::-webkit-datetime-edit-meridiem-field]:p-0"
12788
- ],
12789
- // Basic layout
12790
- "relative block w-full appearance-none rounded-xl px-3 py-2.5",
12791
- // Typography
12792
- "text-sm text-slate-900 dark:text-white placeholder:text-slate-400 dark:placeholder:text-slate-500",
12793
- // Border
12794
- "border border-white/50 data-hover:border-white/70 dark:border-white/10 dark:data-hover:border-white/20",
12795
- // Background color — glass surface
12796
- "liquid-surface",
12797
- // Hide default focus styles
12798
- "focus:outline-none",
12799
- // Invalid state
12800
- "data-invalid:border-red-500 data-invalid:data-hover:border-red-500 dark:data-invalid:border-red-500 dark:data-invalid:data-hover:border-red-500",
12801
- // Disabled state
12802
- "data-disabled:border-white/30 dark:data-disabled:border-white/15 dark:data-disabled:bg-white/2.5 dark:data-hover:data-disabled:border-white/15",
12803
- // System icons
12804
- "dark:scheme-dark",
12805
- // Autofill override styles
12806
- "[&:-webkit-autofill]:!shadow-[inset_0_0_0_1000px_white] [&:-webkit-autofill]:!text-black",
12807
- "[&:-webkit-autofill:hover]:!shadow-[inset_0_0_0_1000px_white] [&:-webkit-autofill:hover]:!text-black",
12808
- "[&:-webkit-autofill:focus]:!shadow-[inset_0_0_0_1000px_white] [&:-webkit-autofill:focus]:!text-black",
12809
- "[&:-webkit-autofill:active]:!shadow-[inset_0_0_0_1000px_white] [&:-webkit-autofill:active]:!text-black",
12810
- "dark:[&:-webkit-autofill]:!shadow-[inset_0_0_0_1000px_rgb(15,23,42)] dark:[&:-webkit-autofill]:!text-slate-200",
12811
- "dark:[&:-webkit-autofill:hover]:!shadow-[inset_0_0_0_1000px_rgb(15,23,42)] dark:[&:-webkit-autofill:hover]:!text-slate-200",
12812
- "dark:[&:-webkit-autofill:focus]:!shadow-[inset_0_0_0_1000px_rgb(15,23,42)] dark:[&:-webkit-autofill:focus]:!text-slate-200",
12813
- "dark:[&:-webkit-autofill:active]:!shadow-[inset_0_0_0_1000px_rgb(15,23,42)] dark:[&:-webkit-autofill:active]:!text-slate-200"
12814
- ])
12815
- }
12816
- )
12817
- }
12818
- );
12819
- });
12820
- var SelectContent = ({ children }) => /* @__PURE__ */ jsx(Fragment, { children });
12821
- var SelectItem = ({
12822
- children,
12823
- value
12824
- }) => /* @__PURE__ */ jsx("option", { value, children });
12825
- var SelectTrigger = ({
12826
- children,
12827
- className
12828
- }) => /* @__PURE__ */ jsx("div", { className, children });
12829
- var SelectValue = ({ placeholder }) => /* @__PURE__ */ jsx("span", { children: placeholder });
12830
- forwardRef(function Select4({
12648
+ var PageHeader = memo(function PageHeader2({
12649
+ title,
12650
+ subtitle,
12651
+ size = "default",
12652
+ actions,
12831
12653
  className,
12832
- multiple,
12833
- ...props
12834
- }, ref) {
12835
- return /* @__PURE__ */ jsxs(
12836
- "span",
12837
- {
12838
- "data-slot": "control",
12839
- className: clsx([
12840
- className,
12841
- // Basic layout
12842
- "group relative block w-full",
12843
- // Background color + shadow applied to inset pseudo element, so shadow blends with border in light mode
12844
- "before:absolute before:inset-px before:rounded-lg before:bg-white before:shadow-sm",
12845
- // Background color is moved to control and shadow is removed in dark mode so hide `before` pseudo
12846
- "dark:before:hidden",
12847
- // Focus ring
12848
- "after:pointer-events-none after:absolute after:inset-0 after:rounded-lg after:ring-transparent after:ring-inset has-data-focus:after:ring-2 has-data-focus:after:ring-blue-500",
12849
- // Disabled state
12850
- "has-data-disabled:opacity-50 has-data-disabled:before:bg-zinc-950/5 has-data-disabled:before:shadow-none"
12851
- ]),
12852
- children: [
12654
+ children
12655
+ }) {
12656
+ return /* @__PURE__ */ jsxs("div", { className: clsx("mb-6 sm:mb-8", className), children: [
12657
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4", children: [
12658
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
12853
12659
  /* @__PURE__ */ jsx(
12854
- Headless11.Select,
12660
+ "h1",
12855
12661
  {
12856
- ref,
12857
- multiple,
12858
- ...props,
12859
- className: clsx([
12860
- // Basic layout
12861
- "relative block w-full appearance-none rounded-lg py-2.5 sm:py-1.5",
12862
- // Horizontal padding
12863
- multiple ? "px-3.5 sm:px-3" : "pr-10 pl-3.5 sm:pr-9 sm:pl-3",
12864
- // Options (multi-select)
12865
- "[&_optgroup]:font-semibold",
12866
- // Typography
12867
- "text-base/6 text-zinc-950 dark:text-zinc-100 placeholder:text-zinc-500 dark:placeholder:text-zinc-400 sm:text-sm/6",
12868
- // Border
12869
- "border border-zinc-950/10 data-hover:border-zinc-950/20 dark:border-white/10 dark:data-hover:border-white/20",
12870
- // Background color
12871
- "bg-transparent dark:bg-white/5 dark:*:bg-zinc-800",
12872
- // Hide default focus styles
12873
- "focus:outline-none",
12874
- // Invalid state
12875
- "data-invalid:border-red-500 data-invalid:data-hover:border-red-500 dark:data-invalid:border-red-600 dark:data-invalid:data-hover:border-red-600",
12876
- // Disabled state
12877
- "data-disabled:border-zinc-950/20 data-disabled:opacity-100 dark:data-disabled:border-white/15 dark:data-disabled:bg-white/2.5 dark:data-hover:data-disabled:border-white/15"
12878
- ])
12662
+ className: clsx(
12663
+ "font-bold text-slate-900 dark:text-slate-100 truncate",
12664
+ size === "large" ? "text-3xl" : "text-2xl"
12665
+ ),
12666
+ children: title
12879
12667
  }
12880
12668
  ),
12881
- !multiple && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2", children: /* @__PURE__ */ jsxs(
12882
- "svg",
12883
- {
12884
- className: "size-5 stroke-zinc-500 group-has-data-disabled:stroke-zinc-600 sm:size-4 dark:stroke-zinc-400 forced-colors:stroke-[CanvasText]",
12885
- viewBox: "0 0 16 16",
12886
- "aria-hidden": "true",
12887
- fill: "none",
12888
- children: [
12889
- /* @__PURE__ */ jsx(
12890
- "path",
12891
- {
12892
- d: "M5.75 10.75L8 13L10.25 10.75",
12893
- strokeWidth: 1.5,
12894
- strokeLinecap: "round",
12895
- strokeLinejoin: "round"
12896
- }
12897
- ),
12898
- /* @__PURE__ */ jsx(
12899
- "path",
12900
- {
12901
- d: "M10.25 5.25L8 3L5.75 5.25",
12902
- strokeWidth: 1.5,
12903
- strokeLinecap: "round",
12904
- strokeLinejoin: "round"
12905
- }
12906
- )
12907
- ]
12908
- }
12909
- ) })
12910
- ]
12911
- }
12912
- );
12669
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-slate-600 dark:text-slate-400 line-clamp-2", children: subtitle })
12670
+ ] }),
12671
+ actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-2 flex-wrap", children: actions })
12672
+ ] }),
12673
+ children && /* @__PURE__ */ jsx("div", { className: "mt-4", children })
12674
+ ] });
12913
12675
  });
12914
- var Label3 = React11__default.forwardRef(
12915
- ({ children, className = "", required = false, ...props }, ref) => {
12916
- return /* @__PURE__ */ jsxs(
12917
- "label",
12676
+ var PageSectionHeader = memo(function PageSectionHeader2({
12677
+ title,
12678
+ subtitle,
12679
+ actions,
12680
+ className,
12681
+ children
12682
+ }) {
12683
+ return /* @__PURE__ */ jsxs("div", { className: clsx("mb-4", className), children: [
12684
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3", children: [
12685
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
12686
+ /* @__PURE__ */ jsx("h2", { className: "text-lg sm:text-xl font-semibold text-slate-900 dark:text-slate-100", children: title }),
12687
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-600 dark:text-slate-400 line-clamp-2", children: subtitle })
12688
+ ] }),
12689
+ actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-2 flex-wrap", children: actions })
12690
+ ] }),
12691
+ children && /* @__PURE__ */ jsx("div", { className: "mt-3", children })
12692
+ ] });
12693
+ });
12694
+ var CardSectionHeader = memo(function CardSectionHeader2({
12695
+ title,
12696
+ subtitle,
12697
+ actions,
12698
+ className,
12699
+ children
12700
+ }) {
12701
+ return /* @__PURE__ */ jsxs("div", { className: clsx("mb-3", className), children: [
12702
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2", children: [
12703
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
12704
+ /* @__PURE__ */ jsx("h3", { className: "text-base sm:text-lg font-medium text-slate-900 dark:text-slate-100", children: title }),
12705
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs sm:text-sm text-slate-600 dark:text-slate-400 line-clamp-1", children: subtitle })
12706
+ ] }),
12707
+ actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-1 flex-wrap", children: actions })
12708
+ ] }),
12709
+ children && /* @__PURE__ */ jsx("div", { className: "mt-2", children })
12710
+ ] });
12711
+ });
12712
+ var Tabs = TabsPrimitive.Root;
12713
+ var TabsList = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12714
+ TabsPrimitive.List,
12715
+ {
12716
+ ref,
12717
+ className: clsx(
12718
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted/50 p-0.5 text-muted-foreground",
12719
+ className
12720
+ ),
12721
+ ...props
12722
+ }
12723
+ ));
12724
+ TabsList.displayName = TabsPrimitive.List.displayName;
12725
+ var TabsTrigger = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12726
+ TabsPrimitive.Trigger,
12727
+ {
12728
+ ref,
12729
+ className: clsx(
12730
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
12731
+ className
12732
+ ),
12733
+ ...props
12734
+ }
12735
+ ));
12736
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
12737
+ var TabsContent = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
12738
+ TabsPrimitive.Content,
12739
+ {
12740
+ ref,
12741
+ className: clsx(
12742
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
12743
+ className
12744
+ ),
12745
+ ...props
12746
+ }
12747
+ ));
12748
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
12749
+ var ContactCard = React11__default.memo(function ContactCard2({
12750
+ type,
12751
+ email,
12752
+ phone
12753
+ }) {
12754
+ const t = useTranslations("contact");
12755
+ return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl bg-gray-50 p-10", children: [
12756
+ /* @__PURE__ */ jsx("h3", { className: "text-base/7 font-semibold text-gray-900", children: t(type) }),
12757
+ /* @__PURE__ */ jsxs("dl", { className: "mt-3 space-y-1 text-sm/6 text-gray-600", children: [
12758
+ /* @__PURE__ */ jsxs("div", { children: [
12759
+ /* @__PURE__ */ jsx("dt", { className: "sr-only", children: "Email" }),
12760
+ /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("a", { href: `mailto:${email}`, className: "font-semibold text-blue-600", children: email }) })
12761
+ ] }),
12762
+ /* @__PURE__ */ jsxs("div", { className: "mt-1", children: [
12763
+ /* @__PURE__ */ jsx("dt", { className: "sr-only", children: "Telefone" }),
12764
+ /* @__PURE__ */ jsx("dd", { children: phone })
12765
+ ] })
12766
+ ] })
12767
+ ] });
12768
+ });
12769
+ var OfficeCard = React11__default.memo(function OfficeCard2({
12770
+ city,
12771
+ address,
12772
+ postalCode
12773
+ }) {
12774
+ return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl bg-gray-50 p-10", children: [
12775
+ /* @__PURE__ */ jsx("h3", { className: "text-base/7 font-semibold text-gray-900", children: city }),
12776
+ /* @__PURE__ */ jsxs("address", { className: "mt-3 space-y-1 text-sm/6 text-gray-600 not-italic", children: [
12777
+ /* @__PURE__ */ jsx("p", { children: address }),
12778
+ /* @__PURE__ */ jsx("p", { children: postalCode })
12779
+ ] })
12780
+ ] });
12781
+ });
12782
+ var ContactSection = React11__default.memo(
12783
+ function ContactSection2({ title, subtitle, children }) {
12784
+ return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-10 py-16 lg:grid-cols-3", children: [
12785
+ /* @__PURE__ */ jsxs("div", { children: [
12786
+ /* @__PURE__ */ jsx("h2", { className: "text-4xl font-semibold tracking-tight text-pretty text-gray-900", children: title }),
12787
+ /* @__PURE__ */ jsx("p", { className: "mt-4 text-base/7 text-gray-600", children: subtitle })
12788
+ ] }),
12789
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:col-span-2 lg:gap-8", children })
12790
+ ] });
12791
+ }
12792
+ );
12793
+ var Progress = React11.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
12794
+ ProgressPrimitive.Root,
12795
+ {
12796
+ ref,
12797
+ className: clsx(
12798
+ "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
12799
+ className
12800
+ ),
12801
+ ...props,
12802
+ children: /* @__PURE__ */ jsx(
12803
+ ProgressPrimitive.Indicator,
12918
12804
  {
12919
- ref,
12920
- className: `block text-sm font-medium text-slate-800 dark:text-slate-200 ${className}`,
12921
- ...props,
12922
- children: [
12923
- children,
12924
- required && /* @__PURE__ */ jsx("span", { className: "text-red-500 ml-1", children: "*" })
12925
- ]
12805
+ className: "h-full w-full flex-1 bg-primary transition-all",
12806
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
12926
12807
  }
12927
- );
12808
+ )
12928
12809
  }
12929
- );
12930
- Label3.displayName = "Label";
12931
- function SwitchGroup({
12810
+ ));
12811
+ Progress.displayName = ProgressPrimitive.Root.displayName;
12812
+ function DropdownButton({
12813
+ as = Button,
12814
+ ...props
12815
+ }) {
12816
+ return /* @__PURE__ */ jsx(Headless6.MenuButton, { as, ...props });
12817
+ }
12818
+ function DropdownMenu({
12819
+ anchor = "bottom",
12932
12820
  className,
12933
12821
  ...props
12934
12822
  }) {
12935
12823
  return /* @__PURE__ */ jsx(
12936
- "div",
12824
+ Headless6.MenuItems,
12937
12825
  {
12938
- "data-slot": "control",
12939
12826
  ...props,
12827
+ transition: true,
12828
+ anchor,
12940
12829
  className: clsx(
12941
12830
  className,
12942
- // Basic groups
12943
- "space-y-3 **:data-[slot=label]:font-normal",
12944
- // With descriptions
12945
- "has-data-[slot=description]:space-y-6 has-data-[slot=description]:**:data-[slot=label]:font-medium"
12831
+ // Anchor positioning
12832
+ "[--anchor-gap:--spacing(2)] [--anchor-padding:--spacing(1)] data-[anchor~=end]:[--anchor-offset:6px] data-[anchor~=start]:[--anchor-offset:-6px] sm:data-[anchor~=end]:[--anchor-offset:4px] sm:data-[anchor~=start]:[--anchor-offset:-4px]",
12833
+ // Base styles
12834
+ "isolate w-max rounded-xl p-1",
12835
+ // Invisible border that is only visible in `forced-colors` mode for accessibility purposes
12836
+ "outline outline-transparent focus:outline-hidden",
12837
+ // Handle scrolling when menu won't fit in viewport
12838
+ "overflow-y-auto",
12839
+ // Popover background
12840
+ "bg-white/75 backdrop-blur-xl dark:bg-zinc-800/75",
12841
+ // Shadows
12842
+ "shadow-lg ring-1 ring-zinc-950/10 dark:ring-white/10 dark:ring-inset",
12843
+ // Define grid at the menu level if subgrid is supported
12844
+ "supports-[grid-template-columns:subgrid]:grid supports-[grid-template-columns:subgrid]:grid-cols-[auto_1fr_1.5rem_0.5rem_auto]",
12845
+ // Transitions
12846
+ "transition data-leave:duration-100 data-leave:ease-in data-closed:data-leave:opacity-0"
12946
12847
  )
12947
12848
  }
12948
12849
  );
12949
12850
  }
12950
- function SwitchField({
12851
+ function DropdownItem({
12852
+ className,
12853
+ ...props
12854
+ }) {
12855
+ const classes = clsx(
12856
+ className,
12857
+ // Base styles
12858
+ "group cursor-default rounded-lg px-3.5 py-2.5 focus:outline-hidden sm:px-3 sm:py-1.5",
12859
+ // Text styles
12860
+ "text-left text-base/6 text-zinc-950 sm:text-sm/6 dark:text-white forced-colors:text-[CanvasText]",
12861
+ // Focus
12862
+ "data-focus:bg-blue-500 data-focus:text-white",
12863
+ // Disabled state
12864
+ "data-disabled:opacity-50",
12865
+ // Forced colors mode
12866
+ "forced-color-adjust-none forced-colors:data-focus:bg-[Highlight] forced-colors:data-focus:text-[HighlightText] forced-colors:data-focus:*:data-[slot=icon]:text-[HighlightText]",
12867
+ // Use subgrid when available but fallback to an explicit grid layout if not
12868
+ "col-span-full grid grid-cols-[auto_1fr_1.5rem_0.5rem_auto] items-center supports-[grid-template-columns:subgrid]:grid-cols-subgrid",
12869
+ // Icons
12870
+ "*:data-[slot=icon]:col-start-1 *:data-[slot=icon]:row-start-1 *:data-[slot=icon]:mr-2.5 *:data-[slot=icon]:-ml-0.5 *:data-[slot=icon]:size-5 sm:*:data-[slot=icon]:mr-2 sm:*:data-[slot=icon]:size-4",
12871
+ "*:data-[slot=icon]:text-zinc-500 data-focus:*:data-[slot=icon]:text-white dark:*:data-[slot=icon]:text-zinc-400 dark:data-focus:*:data-[slot=icon]:text-white",
12872
+ // Avatar
12873
+ "*:data-[slot=avatar]:mr-2.5 *:data-[slot=avatar]:-ml-1 *:data-[slot=avatar]:size-6 sm:*:data-[slot=avatar]:mr-2 sm:*:data-[slot=avatar]:size-5"
12874
+ );
12875
+ return "href" in props ? /* @__PURE__ */ jsx(Headless6.MenuItem, { as: Link, ...props, className: classes }) : /* @__PURE__ */ jsx(
12876
+ Headless6.MenuItem,
12877
+ {
12878
+ as: "button",
12879
+ type: "button",
12880
+ ...props,
12881
+ className: classes
12882
+ }
12883
+ );
12884
+ }
12885
+ function DropdownDivider({
12951
12886
  className,
12952
12887
  ...props
12953
12888
  }) {
12954
12889
  return /* @__PURE__ */ jsx(
12955
- Headless11.Field,
12890
+ Headless6.MenuSeparator,
12956
12891
  {
12957
- "data-slot": "field",
12958
12892
  ...props,
12959
12893
  className: clsx(
12960
12894
  className,
12961
- // Base layout
12962
- "grid grid-cols-[1fr_auto] gap-x-8 gap-y-1 sm:grid-cols-[1fr_auto]",
12963
- // Control layout
12964
- "*:data-[slot=control]:col-start-2 *:data-[slot=control]:self-start sm:*:data-[slot=control]:mt-0.5",
12965
- // Label layout
12966
- "*:data-[slot=label]:col-start-1 *:data-[slot=label]:row-start-1",
12967
- // Description layout
12968
- "*:data-[slot=description]:col-start-1 *:data-[slot=description]:row-start-2",
12969
- // With description
12970
- "has-data-[slot=description]:**:data-[slot=label]:font-medium"
12895
+ "col-span-full mx-3.5 my-1 h-px border-0 bg-zinc-950/5 sm:mx-3 dark:bg-white/10 forced-colors:bg-[CanvasText]"
12971
12896
  )
12972
12897
  }
12973
12898
  );
12974
12899
  }
12900
+ function DropdownLabel({
12901
+ className,
12902
+ ...props
12903
+ }) {
12904
+ return /* @__PURE__ */ jsx(
12905
+ "div",
12906
+ {
12907
+ ...props,
12908
+ "data-slot": "label",
12909
+ className: clsx(className, "col-start-2 row-start-1"),
12910
+ ...props
12911
+ }
12912
+ );
12913
+ }
12975
12914
  var colors2 = {
12976
12915
  "dark/zinc": [
12977
12916
  "[--switch-bg-ring:var(--color-zinc-950)]/90 [--switch-bg:var(--color-zinc-900)] dark:[--switch-bg-ring:transparent] dark:[--switch-bg:var(--color-white)]/25",
@@ -13068,7 +13007,7 @@ function Switch2({
13068
13007
  ...props
13069
13008
  }) {
13070
13009
  return /* @__PURE__ */ jsx(
13071
- Headless11.Switch,
13010
+ Headless6.Switch,
13072
13011
  {
13073
13012
  "data-slot": "control",
13074
13013
  ...props,
@@ -13119,945 +13058,6 @@ function Switch2({
13119
13058
  }
13120
13059
  );
13121
13060
  }
13122
- function DropdownButton({
13123
- as = Button6,
13124
- ...props
13125
- }) {
13126
- return /* @__PURE__ */ jsx(Headless11.MenuButton, { as, ...props });
13127
- }
13128
- function DropdownMenu({
13129
- anchor = "bottom",
13130
- className,
13131
- ...props
13132
- }) {
13133
- return /* @__PURE__ */ jsx(
13134
- Headless11.MenuItems,
13135
- {
13136
- ...props,
13137
- transition: true,
13138
- anchor,
13139
- className: clsx(
13140
- className,
13141
- // Anchor positioning
13142
- "[--anchor-gap:--spacing(2)] [--anchor-padding:--spacing(1)] data-[anchor~=end]:[--anchor-offset:6px] data-[anchor~=start]:[--anchor-offset:-6px] sm:data-[anchor~=end]:[--anchor-offset:4px] sm:data-[anchor~=start]:[--anchor-offset:-4px]",
13143
- // Base styles
13144
- "isolate w-max rounded-xl p-1",
13145
- // Invisible border that is only visible in `forced-colors` mode for accessibility purposes
13146
- "outline outline-transparent focus:outline-hidden",
13147
- // Handle scrolling when menu won't fit in viewport
13148
- "overflow-y-auto",
13149
- // Popover background
13150
- "bg-white/75 backdrop-blur-xl dark:bg-zinc-800/75",
13151
- // Shadows
13152
- "shadow-lg ring-1 ring-zinc-950/10 dark:ring-white/10 dark:ring-inset",
13153
- // Define grid at the menu level if subgrid is supported
13154
- "supports-[grid-template-columns:subgrid]:grid supports-[grid-template-columns:subgrid]:grid-cols-[auto_1fr_1.5rem_0.5rem_auto]",
13155
- // Transitions
13156
- "transition data-leave:duration-100 data-leave:ease-in data-closed:data-leave:opacity-0"
13157
- )
13158
- }
13159
- );
13160
- }
13161
- function DropdownItem({
13162
- className,
13163
- ...props
13164
- }) {
13165
- const classes = clsx(
13166
- className,
13167
- // Base styles
13168
- "group cursor-default rounded-lg px-3.5 py-2.5 focus:outline-hidden sm:px-3 sm:py-1.5",
13169
- // Text styles
13170
- "text-left text-base/6 text-zinc-950 sm:text-sm/6 dark:text-white forced-colors:text-[CanvasText]",
13171
- // Focus
13172
- "data-focus:bg-blue-500 data-focus:text-white",
13173
- // Disabled state
13174
- "data-disabled:opacity-50",
13175
- // Forced colors mode
13176
- "forced-color-adjust-none forced-colors:data-focus:bg-[Highlight] forced-colors:data-focus:text-[HighlightText] forced-colors:data-focus:*:data-[slot=icon]:text-[HighlightText]",
13177
- // Use subgrid when available but fallback to an explicit grid layout if not
13178
- "col-span-full grid grid-cols-[auto_1fr_1.5rem_0.5rem_auto] items-center supports-[grid-template-columns:subgrid]:grid-cols-subgrid",
13179
- // Icons
13180
- "*:data-[slot=icon]:col-start-1 *:data-[slot=icon]:row-start-1 *:data-[slot=icon]:mr-2.5 *:data-[slot=icon]:-ml-0.5 *:data-[slot=icon]:size-5 sm:*:data-[slot=icon]:mr-2 sm:*:data-[slot=icon]:size-4",
13181
- "*:data-[slot=icon]:text-zinc-500 data-focus:*:data-[slot=icon]:text-white dark:*:data-[slot=icon]:text-zinc-400 dark:data-focus:*:data-[slot=icon]:text-white",
13182
- // Avatar
13183
- "*:data-[slot=avatar]:mr-2.5 *:data-[slot=avatar]:-ml-1 *:data-[slot=avatar]:size-6 sm:*:data-[slot=avatar]:mr-2 sm:*:data-[slot=avatar]:size-5"
13184
- );
13185
- return "href" in props ? /* @__PURE__ */ jsx(Headless11.MenuItem, { as: Link4, ...props, className: classes }) : /* @__PURE__ */ jsx(
13186
- Headless11.MenuItem,
13187
- {
13188
- as: "button",
13189
- type: "button",
13190
- ...props,
13191
- className: classes
13192
- }
13193
- );
13194
- }
13195
- function DropdownHeader({
13196
- className,
13197
- ...props
13198
- }) {
13199
- return /* @__PURE__ */ jsx(
13200
- "div",
13201
- {
13202
- ...props,
13203
- className: clsx(className, "col-span-5 px-3.5 pt-2.5 pb-1 sm:px-3")
13204
- }
13205
- );
13206
- }
13207
- function DropdownSection({
13208
- className,
13209
- ...props
13210
- }) {
13211
- return /* @__PURE__ */ jsx(
13212
- Headless11.MenuSection,
13213
- {
13214
- ...props,
13215
- className: clsx(
13216
- className,
13217
- // Define grid at the section level instead of the item level if subgrid is supported
13218
- "col-span-full supports-[grid-template-columns:subgrid]:grid supports-[grid-template-columns:subgrid]:grid-cols-[auto_1fr_1.5rem_0.5rem_auto]"
13219
- )
13220
- }
13221
- );
13222
- }
13223
- function DropdownHeading({
13224
- className,
13225
- ...props
13226
- }) {
13227
- return /* @__PURE__ */ jsx(
13228
- Headless11.MenuHeading,
13229
- {
13230
- ...props,
13231
- className: clsx(
13232
- className,
13233
- "col-span-full grid grid-cols-[1fr_auto] gap-x-12 px-3.5 pt-2 pb-1 text-sm/5 font-medium text-zinc-500 sm:px-3 sm:text-xs/5 dark:text-zinc-400"
13234
- )
13235
- }
13236
- );
13237
- }
13238
- function DropdownDivider({
13239
- className,
13240
- ...props
13241
- }) {
13242
- return /* @__PURE__ */ jsx(
13243
- Headless11.MenuSeparator,
13244
- {
13245
- ...props,
13246
- className: clsx(
13247
- className,
13248
- "col-span-full mx-3.5 my-1 h-px border-0 bg-zinc-950/5 sm:mx-3 dark:bg-white/10 forced-colors:bg-[CanvasText]"
13249
- )
13250
- }
13251
- );
13252
- }
13253
- function DropdownLabel({
13254
- className,
13255
- ...props
13256
- }) {
13257
- return /* @__PURE__ */ jsx(
13258
- "div",
13259
- {
13260
- ...props,
13261
- "data-slot": "label",
13262
- className: clsx(className, "col-start-2 row-start-1"),
13263
- ...props
13264
- }
13265
- );
13266
- }
13267
- function DropdownDescription({
13268
- className,
13269
- ...props
13270
- }) {
13271
- return /* @__PURE__ */ jsx(
13272
- Headless11.Description,
13273
- {
13274
- "data-slot": "description",
13275
- ...props,
13276
- className: clsx(
13277
- className,
13278
- "col-span-2 col-start-2 row-start-2 text-sm/5 text-zinc-500 group-data-focus:text-white sm:text-xs/5 dark:text-zinc-400 forced-colors:group-data-focus:text-[HighlightText]"
13279
- )
13280
- }
13281
- );
13282
- }
13283
- function DropdownShortcut({
13284
- keys,
13285
- className,
13286
- ...props
13287
- }) {
13288
- return /* @__PURE__ */ jsx(
13289
- Headless11.Description,
13290
- {
13291
- as: "kbd",
13292
- ...props,
13293
- className: clsx(
13294
- className,
13295
- "col-start-5 row-start-1 flex justify-self-end"
13296
- ),
13297
- children: (Array.isArray(keys) ? keys : keys.split("")).map((char, index) => /* @__PURE__ */ jsx(
13298
- "kbd",
13299
- {
13300
- className: clsx([
13301
- "min-w-[2ch] text-center font-sans text-zinc-400 capitalize group-data-focus:text-white forced-colors:group-data-focus:text-[HighlightText]",
13302
- // Make sure key names that are longer than one character (like "Tab") have extra space
13303
- index > 0 && char.length > 1 && "pl-1"
13304
- ]),
13305
- children: char
13306
- },
13307
- index
13308
- ))
13309
- }
13310
- );
13311
- }
13312
- var Card2 = memo(function Card3({
13313
- children,
13314
- className,
13315
- padding = "md",
13316
- variant = "default",
13317
- hover = false,
13318
- loading = false,
13319
- onClick
13320
- }) {
13321
- const paddingClasses = {
13322
- none: "",
13323
- sm: "p-3 sm:p-4",
13324
- md: "p-4 sm:p-6",
13325
- lg: "p-6 sm:p-8"
13326
- };
13327
- const variantClasses2 = {
13328
- default: "liquid-surface border border-white/30 dark:border-white/10",
13329
- elevated: "liquid-surface-strong border border-white/30 dark:border-white/10",
13330
- outlined: "bg-transparent border-2 border-white/30 dark:border-white/10 backdrop-blur-sm",
13331
- flat: "liquid-surface"
13332
- };
13333
- const hoverClasses = hover || onClick ? "hover:shadow-md transition-shadow duration-200" : "";
13334
- const clickableClasses = onClick ? "cursor-pointer" : "";
13335
- const loadingClasses = loading ? "opacity-75 pointer-events-none" : "";
13336
- return /* @__PURE__ */ jsx(
13337
- "div",
13338
- {
13339
- role: onClick ? "button" : void 0,
13340
- tabIndex: onClick ? 0 : void 0,
13341
- className: clsx(
13342
- "rounded-2xl",
13343
- variantClasses2[variant],
13344
- paddingClasses[padding],
13345
- hoverClasses,
13346
- clickableClasses,
13347
- loadingClasses,
13348
- className
13349
- ),
13350
- onClick,
13351
- onKeyDown: onClick ? (e) => {
13352
- if (e.key === "Enter" || e.key === " ") {
13353
- e.preventDefault();
13354
- onClick();
13355
- }
13356
- } : void 0,
13357
- children
13358
- }
13359
- );
13360
- });
13361
- var CardHeader2 = memo(function CardHeader3({
13362
- title,
13363
- subtitle,
13364
- actions,
13365
- className,
13366
- children
13367
- }) {
13368
- return /* @__PURE__ */ jsxs("div", { className: clsx("mb-4", className), children: [
13369
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2", children: [
13370
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13371
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-slate-900 dark:text-slate-100 truncate", children: title }),
13372
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-600 dark:text-slate-400 line-clamp-2", children: subtitle })
13373
- ] }),
13374
- actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-2", children: actions })
13375
- ] }),
13376
- children && /* @__PURE__ */ jsx("div", { className: "mt-3", children })
13377
- ] });
13378
- });
13379
- var CardTitle2 = memo(function CardTitle3({
13380
- children,
13381
- className
13382
- }) {
13383
- return /* @__PURE__ */ jsx(
13384
- "h3",
13385
- {
13386
- className: clsx(
13387
- "text-lg font-semibold text-slate-900 dark:text-slate-100",
13388
- className
13389
- ),
13390
- children
13391
- }
13392
- );
13393
- });
13394
- var CardDescription2 = memo(function CardDescription3({
13395
- children,
13396
- className
13397
- }) {
13398
- return /* @__PURE__ */ jsx("p", { className: clsx("text-sm text-slate-600 dark:text-slate-400", className), children });
13399
- });
13400
- var CardContent2 = memo(function CardContent3({
13401
- children,
13402
- className
13403
- }) {
13404
- return /* @__PURE__ */ jsx("div", { className: clsx("text-slate-600 dark:text-slate-400", className), children });
13405
- });
13406
- var CardFooter2 = memo(function CardFooter3({
13407
- children,
13408
- className,
13409
- justify = "end"
13410
- }) {
13411
- const justifyClasses = {
13412
- start: "justify-start",
13413
- center: "justify-center",
13414
- end: "justify-end",
13415
- between: "justify-between"
13416
- };
13417
- return /* @__PURE__ */ jsx(
13418
- "div",
13419
- {
13420
- className: clsx(
13421
- "mt-4 pt-4 border-t border-white/30 dark:border-white/10 flex items-center gap-2",
13422
- justifyClasses[justify],
13423
- className
13424
- ),
13425
- children
13426
- }
13427
- );
13428
- });
13429
- var StatCard2 = memo(function StatCard3({
13430
- title,
13431
- value,
13432
- subtitle,
13433
- icon,
13434
- trend,
13435
- loading = false,
13436
- className
13437
- }) {
13438
- const trendColors = {
13439
- up: "text-green-600 dark:text-green-400",
13440
- down: "text-red-600 dark:text-red-400",
13441
- neutral: "text-slate-600 dark:text-slate-400"
13442
- };
13443
- return /* @__PURE__ */ jsx(Card2, { variant: "elevated", hover: true, className, loading, children: /* @__PURE__ */ jsxs("div", { className: "flex items-start", children: [
13444
- icon && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 mr-4", children: /* @__PURE__ */ jsx("div", { className: "w-12 h-12 rounded-lg bg-white/20 dark:bg-white/[0.08] flex items-center justify-center", children: icon }) }),
13445
- /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
13446
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-slate-600 dark:text-slate-400 truncate", children: title }),
13447
- /* @__PURE__ */ jsxs("div", { className: "mt-1 flex items-baseline", children: [
13448
- /* @__PURE__ */ jsx("p", { className: "text-2xl font-bold text-slate-900 dark:text-slate-100", children: loading ? "..." : value }),
13449
- trend && !loading && /* @__PURE__ */ jsxs(
13450
- "div",
13451
- {
13452
- className: clsx(
13453
- "ml-2 flex items-center text-sm",
13454
- trendColors[trend.direction]
13455
- ),
13456
- children: [
13457
- /* @__PURE__ */ jsx("span", { children: trend.direction === "up" ? "\u2197" : trend.direction === "down" ? "\u2198" : "\u2192" }),
13458
- /* @__PURE__ */ jsxs("span", { className: "ml-1", children: [
13459
- trend.value,
13460
- "%"
13461
- ] })
13462
- ]
13463
- }
13464
- )
13465
- ] }),
13466
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-600 dark:text-slate-400", children: subtitle }),
13467
- trend && !loading && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500 dark:text-slate-500", children: trend.label })
13468
- ] })
13469
- ] }) });
13470
- });
13471
- var Progress = React11.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(
13472
- ProgressPrimitive.Root,
13473
- {
13474
- ref,
13475
- className: clsx(
13476
- "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
13477
- className
13478
- ),
13479
- ...props,
13480
- children: /* @__PURE__ */ jsx(
13481
- ProgressPrimitive.Indicator,
13482
- {
13483
- className: "h-full w-full flex-1 bg-primary transition-all",
13484
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
13485
- }
13486
- )
13487
- }
13488
- ));
13489
- Progress.displayName = ProgressPrimitive.Root.displayName;
13490
- function validatePasswordStrength(password) {
13491
- return {
13492
- minLength: password.length >= 8,
13493
- hasUppercase: /[A-Z]/.test(password),
13494
- hasLowercase: /[a-z]/.test(password),
13495
- hasNumber: /\d/.test(password),
13496
- hasSpecial: /[!@#$%^&*()_+\-=]/.test(password)
13497
- };
13498
- }
13499
- function RequirementCheck({
13500
- met,
13501
- label
13502
- }) {
13503
- return /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-1.5 text-xs", children: [
13504
- /* @__PURE__ */ jsx(
13505
- "span",
13506
- {
13507
- className: `flex-shrink-0 w-3.5 h-3.5 rounded-full flex items-center justify-center text-[10px] font-bold ${met ? "bg-emerald-500 text-white" : "bg-slate-200 dark:bg-slate-700 text-slate-400 dark:text-slate-500"}`,
13508
- children: met ? "\u2713" : ""
13509
- }
13510
- ),
13511
- /* @__PURE__ */ jsx(
13512
- "span",
13513
- {
13514
- className: met ? "text-emerald-600 dark:text-emerald-400" : "text-slate-500 dark:text-slate-400",
13515
- children: label
13516
- }
13517
- )
13518
- ] });
13519
- }
13520
- var PasswordInput2 = forwardRef(
13521
- function PasswordInput3({ className = "", variant = "default", showStrength = false, onChange, ...props }, ref) {
13522
- const [showPassword, setShowPassword] = useState(false);
13523
- const [internalValue, setInternalValue] = useState("");
13524
- const t = useTranslations();
13525
- const handleChange = (e) => {
13526
- setInternalValue(e.target.value);
13527
- onChange?.(e);
13528
- };
13529
- const strength = useMemo(
13530
- () => validatePasswordStrength(internalValue),
13531
- [internalValue]
13532
- );
13533
- const metCount = useMemo(() => {
13534
- const checks = Object.values(strength);
13535
- return checks.filter(Boolean).length;
13536
- }, [strength]);
13537
- const strengthLevel = useMemo(() => {
13538
- if (metCount <= 2) return "weak";
13539
- if (metCount <= 4) return "medium";
13540
- return "strong";
13541
- }, [metCount]);
13542
- const strengthBarColor = {
13543
- weak: "bg-red-500",
13544
- medium: "bg-amber-500",
13545
- strong: "bg-emerald-500"
13546
- }[strengthLevel];
13547
- const strengthBarWidth = {
13548
- weak: "w-1/3",
13549
- medium: "w-2/3",
13550
- strong: "w-full"
13551
- }[strengthLevel];
13552
- const baseInputClasses = variant === "apple" ? "w-full px-4 py-3 pr-12 text-[17px] bg-white/60 dark:bg-white/10 backdrop-blur-xl border border-white/30 dark:border-white/20 text-slate-900 dark:text-white placeholder-slate-400 dark:placeholder-slate-500 rounded-xl focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-all" : "w-full px-4 py-3.5 pr-12 text-base rounded-xl border transition-all duration-300 bg-white/60 dark:bg-white/10 backdrop-blur-xl border-white/30 dark:border-white/20 text-slate-900 dark:text-white placeholder-slate-400 dark:placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent";
13553
- const buttonClasses = variant === "apple" ? "absolute top-1/2 -translate-y-1/2 right-3 p-1.5 hover:bg-white/30 dark:hover:bg-white/[0.08] rounded-lg transition-colors" : "absolute top-1/2 -translate-y-1/2 right-3 p-2 hover:bg-white/30 dark:hover:bg-white/[0.08] rounded-lg transition-all duration-200";
13554
- const iconClasses = variant === "apple" ? "h-5 w-5 text-slate-400 dark:text-slate-400" : "h-5 w-5 text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-200";
13555
- return /* @__PURE__ */ jsxs("div", { children: [
13556
- /* @__PURE__ */ jsxs("div", { className: "relative", children: [
13557
- /* @__PURE__ */ jsx(
13558
- "input",
13559
- {
13560
- ref,
13561
- type: showPassword ? "text" : "password",
13562
- className: `${baseInputClasses} ${className}`,
13563
- onChange: handleChange,
13564
- ...props
13565
- }
13566
- ),
13567
- /* @__PURE__ */ jsx(
13568
- "button",
13569
- {
13570
- type: "button",
13571
- onClick: () => setShowPassword(!showPassword),
13572
- className: buttonClasses,
13573
- "aria-label": showPassword ? t("aria.hidePassword") : t("aria.showPassword"),
13574
- children: showPassword ? /* @__PURE__ */ jsx(EyeSlashIcon, { className: iconClasses }) : /* @__PURE__ */ jsx(EyeIcon, { className: iconClasses })
13575
- }
13576
- )
13577
- ] }),
13578
- showStrength && internalValue.length > 0 && /* @__PURE__ */ jsxs("div", { className: "mt-2 space-y-2", children: [
13579
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
13580
- /* @__PURE__ */ jsx("div", { className: "flex-1 h-1.5 bg-slate-200 dark:bg-slate-700 rounded-full overflow-hidden", children: /* @__PURE__ */ jsx(
13581
- "div",
13582
- {
13583
- className: `h-full rounded-full transition-all duration-300 ${strengthBarColor} ${strengthBarWidth}`
13584
- }
13585
- ) }),
13586
- /* @__PURE__ */ jsx(
13587
- "span",
13588
- {
13589
- className: `text-xs font-medium ${strengthLevel === "weak" ? "text-red-500" : strengthLevel === "medium" ? "text-amber-500" : "text-emerald-500"}`,
13590
- children: t(`login.passwordStrength.${strengthLevel}`)
13591
- }
13592
- )
13593
- ] }),
13594
- /* @__PURE__ */ jsxs("ul", { className: "space-y-1", children: [
13595
- /* @__PURE__ */ jsx(
13596
- RequirementCheck,
13597
- {
13598
- met: strength.minLength,
13599
- label: t("login.passwordRequirements.minLength")
13600
- }
13601
- ),
13602
- /* @__PURE__ */ jsx(
13603
- RequirementCheck,
13604
- {
13605
- met: strength.hasUppercase,
13606
- label: t("login.passwordRequirements.uppercase")
13607
- }
13608
- ),
13609
- /* @__PURE__ */ jsx(
13610
- RequirementCheck,
13611
- {
13612
- met: strength.hasLowercase,
13613
- label: t("login.passwordRequirements.lowercase")
13614
- }
13615
- ),
13616
- /* @__PURE__ */ jsx(
13617
- RequirementCheck,
13618
- {
13619
- met: strength.hasNumber,
13620
- label: t("login.passwordRequirements.number")
13621
- }
13622
- ),
13623
- /* @__PURE__ */ jsx(
13624
- RequirementCheck,
13625
- {
13626
- met: strength.hasSpecial,
13627
- label: t("login.passwordRequirements.special")
13628
- }
13629
- )
13630
- ] })
13631
- ] })
13632
- ] });
13633
- }
13634
- );
13635
- var Tabs = TabsPrimitive.Root;
13636
- var TabsList = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13637
- TabsPrimitive.List,
13638
- {
13639
- ref,
13640
- className: clsx(
13641
- "inline-flex h-9 items-center justify-center rounded-lg bg-muted/50 p-0.5 text-muted-foreground",
13642
- className
13643
- ),
13644
- ...props
13645
- }
13646
- ));
13647
- TabsList.displayName = TabsPrimitive.List.displayName;
13648
- var TabsTrigger = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13649
- TabsPrimitive.Trigger,
13650
- {
13651
- ref,
13652
- className: clsx(
13653
- "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
13654
- className
13655
- ),
13656
- ...props
13657
- }
13658
- ));
13659
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
13660
- var TabsContent = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13661
- TabsPrimitive.Content,
13662
- {
13663
- ref,
13664
- className: clsx(
13665
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
13666
- className
13667
- ),
13668
- ...props
13669
- }
13670
- ));
13671
- TabsContent.displayName = TabsPrimitive.Content.displayName;
13672
- var SliderInput = ({
13673
- id,
13674
- label,
13675
- value,
13676
- onChange,
13677
- min,
13678
- max,
13679
- step,
13680
- suffix = "",
13681
- tooltip,
13682
- formatDisplay,
13683
- showValue = true
13684
- }) => {
13685
- const tAria = useTranslations("aria");
13686
- const tCommon = useTranslations("common");
13687
- const [showTooltip, setShowTooltip] = useState(false);
13688
- const safeValue = typeof value === "number" && !isNaN(value) ? value : min;
13689
- const percentage = (safeValue - min) / (max - min) * 100;
13690
- const displayValue = formatDisplay ? formatDisplay(safeValue) : safeValue.toFixed(step < 1 ? 2 : 0);
13691
- return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
13692
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
13693
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
13694
- /* @__PURE__ */ jsx(
13695
- "label",
13696
- {
13697
- htmlFor: id,
13698
- className: "text-sm font-medium text-zinc-700 dark:text-zinc-300",
13699
- children: label
13700
- }
13701
- ),
13702
- tooltip && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
13703
- /* @__PURE__ */ jsx(
13704
- "button",
13705
- {
13706
- type: "button",
13707
- onMouseEnter: () => setShowTooltip(true),
13708
- onMouseLeave: () => setShowTooltip(false),
13709
- className: "w-4 h-4 rounded-full bg-zinc-200 dark:bg-zinc-700 text-zinc-600 dark:text-zinc-400 text-xs flex items-center justify-center hover:bg-zinc-300 dark:hover:bg-zinc-600 transition-colors",
13710
- "aria-label": tAria("info"),
13711
- children: "?"
13712
- }
13713
- ),
13714
- showTooltip && /* @__PURE__ */ jsxs("div", { className: "absolute left-6 top-0 z-10 w-64 p-3 bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 text-xs rounded-lg shadow-lg", children: [
13715
- tooltip,
13716
- /* @__PURE__ */ jsx("div", { className: "absolute left-0 top-2 -translate-x-1 w-2 h-2 bg-zinc-900 dark:bg-zinc-100 rotate-45" })
13717
- ] })
13718
- ] })
13719
- ] }),
13720
- showValue && /* @__PURE__ */ jsxs("span", { className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100", children: [
13721
- displayValue,
13722
- suffix
13723
- ] })
13724
- ] }),
13725
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
13726
- /* @__PURE__ */ jsx("div", { className: "flex-1 relative", children: /* @__PURE__ */ jsx(
13727
- "input",
13728
- {
13729
- id,
13730
- type: "range",
13731
- min,
13732
- max,
13733
- step,
13734
- value: safeValue,
13735
- onChange: (e) => onChange(Number(e.target.value)),
13736
- className: "w-full h-2 bg-zinc-200 dark:bg-zinc-700 rounded-lg appearance-none cursor-pointer slider-thumb",
13737
- "aria-label": label,
13738
- style: {
13739
- background: `linear-gradient(to right, rgb(59 130 246) 0%, rgb(59 130 246) ${percentage}%, rgb(228 228 231) ${percentage}%, rgb(228 228 231) 100%)`
13740
- }
13741
- }
13742
- ) }),
13743
- /* @__PURE__ */ jsx(
13744
- "input",
13745
- {
13746
- type: "number",
13747
- min,
13748
- max,
13749
- step,
13750
- value: safeValue,
13751
- onChange: (e) => onChange(Number(e.target.value)),
13752
- className: "w-24 px-3 py-1.5 text-sm border border-zinc-300 dark:border-zinc-600 rounded-md bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 focus:ring-2 focus:ring-blue-500 focus:border-transparent",
13753
- "aria-label": `${label} (${tCommon("number")})`
13754
- }
13755
- )
13756
- ] }),
13757
- /* @__PURE__ */ jsx("style", { children: `
13758
- .slider-thumb::-webkit-slider-thumb {
13759
- appearance: none;
13760
- width: 18px;
13761
- height: 18px;
13762
- border-radius: 50%;
13763
- background: rgb(59 130 246);
13764
- cursor: pointer;
13765
- border: 2px solid white;
13766
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
13767
- }
13768
-
13769
- .slider-thumb::-moz-range-thumb {
13770
- width: 18px;
13771
- height: 18px;
13772
- border-radius: 50%;
13773
- background: rgb(59 130 246);
13774
- cursor: pointer;
13775
- border: 2px solid white;
13776
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
13777
- }
13778
-
13779
- .slider-thumb::-webkit-slider-thumb:hover {
13780
- background: rgb(37 99 235);
13781
- }
13782
-
13783
- .slider-thumb::-moz-range-thumb:hover {
13784
- background: rgb(37 99 235);
13785
- }
13786
- ` })
13787
- ] });
13788
- };
13789
- function DataPagination({
13790
- pagination,
13791
- onUpdate,
13792
- loading = false,
13793
- showPageSize = false,
13794
- pageSizeOptions = [10, 20, 50],
13795
- params
13796
- }) {
13797
- const effectivePageSize = pagination.pageSize ?? pagination.limit ?? 10;
13798
- const from = (pagination.page - 1) * effectivePageSize + 1;
13799
- const to = Math.min(pagination.page * effectivePageSize, pagination.total);
13800
- const handlePageChange = (page) => onUpdate({ page });
13801
- const handlePageSizeChange = (value) => onUpdate({ limit: parseInt(value), page: 1 });
13802
- if (pagination.totalPages <= 1 && !showPageSize) return null;
13803
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-2xl liquid-surface px-4 py-3", children: [
13804
- /* @__PURE__ */ jsxs("p", { className: "text-sm tabular-nums text-slate-600 dark:text-slate-400", children: [
13805
- from,
13806
- "\u2013",
13807
- to,
13808
- " / ",
13809
- pagination.total
13810
- ] }),
13811
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
13812
- showPageSize && /* @__PURE__ */ jsx(
13813
- "select",
13814
- {
13815
- value: params?.limit ?? effectivePageSize,
13816
- onChange: (event) => handlePageSizeChange(event.target.value),
13817
- disabled: loading,
13818
- className: "rounded-xl liquid-surface px-2 py-1.5 text-xs font-medium text-slate-700 outline-none dark:text-slate-300",
13819
- children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
13820
- }
13821
- ),
13822
- pagination.totalPages > 1 && /* @__PURE__ */ jsxs("nav", { className: "flex items-center gap-1", "aria-label": "Pagination", children: [
13823
- /* @__PURE__ */ jsx(
13824
- "button",
13825
- {
13826
- type: "button",
13827
- disabled: pagination.page <= 1 || loading,
13828
- onClick: () => handlePageChange(pagination.page - 1),
13829
- className: "inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-500 transition hover:bg-white/40 disabled:opacity-30 dark:text-slate-400 dark:hover:bg-white/[0.08]",
13830
- children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "h-5 w-5" })
13831
- }
13832
- ),
13833
- getPageNumbers(pagination.page, pagination.totalPages).map(
13834
- (page, index) => page === "..." ? /* @__PURE__ */ jsx(
13835
- "span",
13836
- {
13837
- className: "inline-flex h-9 w-6 items-center justify-center text-xs text-slate-400",
13838
- children: "\u2026"
13839
- },
13840
- `ellipsis-${index}`
13841
- ) : /* @__PURE__ */ jsx(
13842
- "button",
13843
- {
13844
- type: "button",
13845
- disabled: loading,
13846
- onClick: () => handlePageChange(page),
13847
- "aria-current": page === pagination.page ? "page" : void 0,
13848
- className: `inline-flex h-9 min-w-9 items-center justify-center rounded-xl px-2 text-sm font-medium transition ${page === pagination.page ? "liquid-surface liquid-surface-active text-slate-900 dark:text-white" : "text-slate-500 hover:bg-white/40 dark:text-slate-400 dark:hover:bg-white/[0.08]"}`,
13849
- children: page
13850
- },
13851
- `page-${page}`
13852
- )
13853
- ),
13854
- /* @__PURE__ */ jsx(
13855
- "button",
13856
- {
13857
- type: "button",
13858
- disabled: pagination.page >= pagination.totalPages || loading,
13859
- onClick: () => handlePageChange(pagination.page + 1),
13860
- className: "inline-flex h-9 w-9 items-center justify-center rounded-xl text-slate-500 transition hover:bg-white/40 disabled:opacity-30 dark:text-slate-400 dark:hover:bg-white/[0.08]",
13861
- children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "h-5 w-5" })
13862
- }
13863
- )
13864
- ] })
13865
- ] })
13866
- ] });
13867
- }
13868
- function getPageNumbers(currentPage, totalPages) {
13869
- if (totalPages <= 7) {
13870
- return Array.from({ length: totalPages }, (_, i) => i + 1);
13871
- }
13872
- const pages = [1];
13873
- if (currentPage <= 4) {
13874
- for (let i = 2; i <= Math.min(5, totalPages); i++) pages.push(i);
13875
- if (totalPages > 5) {
13876
- pages.push("...");
13877
- pages.push(totalPages);
13878
- }
13879
- } else if (currentPage >= totalPages - 3) {
13880
- pages.push("...");
13881
- for (let i = Math.max(totalPages - 4, 2); i <= totalPages; i++)
13882
- pages.push(i);
13883
- } else {
13884
- pages.push("...");
13885
- for (let i = currentPage - 1; i <= currentPage + 1; i++) pages.push(i);
13886
- pages.push("...");
13887
- pages.push(totalPages);
13888
- }
13889
- return pages;
13890
- }
13891
- var ContactCard = React11__default.memo(function ContactCard2({
13892
- type,
13893
- email,
13894
- phone
13895
- }) {
13896
- const t = useTranslations("contact");
13897
- return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl bg-gray-50 p-10", children: [
13898
- /* @__PURE__ */ jsx("h3", { className: "text-base/7 font-semibold text-gray-900", children: t(type) }),
13899
- /* @__PURE__ */ jsxs("dl", { className: "mt-3 space-y-1 text-sm/6 text-gray-600", children: [
13900
- /* @__PURE__ */ jsxs("div", { children: [
13901
- /* @__PURE__ */ jsx("dt", { className: "sr-only", children: "Email" }),
13902
- /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("a", { href: `mailto:${email}`, className: "font-semibold text-blue-600", children: email }) })
13903
- ] }),
13904
- /* @__PURE__ */ jsxs("div", { className: "mt-1", children: [
13905
- /* @__PURE__ */ jsx("dt", { className: "sr-only", children: "Telefone" }),
13906
- /* @__PURE__ */ jsx("dd", { children: phone })
13907
- ] })
13908
- ] })
13909
- ] });
13910
- });
13911
- var OfficeCard = React11__default.memo(function OfficeCard2({
13912
- city,
13913
- address,
13914
- postalCode
13915
- }) {
13916
- return /* @__PURE__ */ jsxs("div", { className: "rounded-2xl bg-gray-50 p-10", children: [
13917
- /* @__PURE__ */ jsx("h3", { className: "text-base/7 font-semibold text-gray-900", children: city }),
13918
- /* @__PURE__ */ jsxs("address", { className: "mt-3 space-y-1 text-sm/6 text-gray-600 not-italic", children: [
13919
- /* @__PURE__ */ jsx("p", { children: address }),
13920
- /* @__PURE__ */ jsx("p", { children: postalCode })
13921
- ] })
13922
- ] });
13923
- });
13924
- var ContactSection = React11__default.memo(
13925
- function ContactSection2({ title, subtitle, children }) {
13926
- return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-10 py-16 lg:grid-cols-3", children: [
13927
- /* @__PURE__ */ jsxs("div", { children: [
13928
- /* @__PURE__ */ jsx("h2", { className: "text-4xl font-semibold tracking-tight text-pretty text-gray-900", children: title }),
13929
- /* @__PURE__ */ jsx("p", { className: "mt-4 text-base/7 text-gray-600", children: subtitle })
13930
- ] }),
13931
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:col-span-2 lg:gap-8", children })
13932
- ] });
13933
- }
13934
- );
13935
- var PageHeader = memo(function PageHeader2({
13936
- title,
13937
- subtitle,
13938
- size = "default",
13939
- actions,
13940
- className,
13941
- children
13942
- }) {
13943
- return /* @__PURE__ */ jsxs("div", { className: clsx("mb-6 sm:mb-8", className), children: [
13944
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4", children: [
13945
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13946
- /* @__PURE__ */ jsx(
13947
- "h1",
13948
- {
13949
- className: clsx(
13950
- "font-bold text-slate-900 dark:text-slate-100 truncate",
13951
- size === "large" ? "text-3xl" : "text-2xl"
13952
- ),
13953
- children: title
13954
- }
13955
- ),
13956
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-2 text-sm text-slate-600 dark:text-slate-400 line-clamp-2", children: subtitle })
13957
- ] }),
13958
- actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-2 flex-wrap", children: actions })
13959
- ] }),
13960
- children && /* @__PURE__ */ jsx("div", { className: "mt-4", children })
13961
- ] });
13962
- });
13963
- var PageSectionHeader = memo(function PageSectionHeader2({
13964
- title,
13965
- subtitle,
13966
- actions,
13967
- className,
13968
- children
13969
- }) {
13970
- return /* @__PURE__ */ jsxs("div", { className: clsx("mb-4", className), children: [
13971
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3", children: [
13972
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13973
- /* @__PURE__ */ jsx("h2", { className: "text-lg sm:text-xl font-semibold text-slate-900 dark:text-slate-100", children: title }),
13974
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-slate-600 dark:text-slate-400 line-clamp-2", children: subtitle })
13975
- ] }),
13976
- actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-2 flex-wrap", children: actions })
13977
- ] }),
13978
- children && /* @__PURE__ */ jsx("div", { className: "mt-3", children })
13979
- ] });
13980
- });
13981
- var CardSectionHeader = memo(function CardSectionHeader2({
13982
- title,
13983
- subtitle,
13984
- actions,
13985
- className,
13986
- children
13987
- }) {
13988
- return /* @__PURE__ */ jsxs("div", { className: clsx("mb-3", className), children: [
13989
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2", children: [
13990
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13991
- /* @__PURE__ */ jsx("h3", { className: "text-base sm:text-lg font-medium text-slate-900 dark:text-slate-100", children: title }),
13992
- subtitle && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs sm:text-sm text-slate-600 dark:text-slate-400 line-clamp-1", children: subtitle })
13993
- ] }),
13994
- actions && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 flex items-center gap-1 flex-wrap", children: actions })
13995
- ] }),
13996
- children && /* @__PURE__ */ jsx("div", { className: "mt-2", children })
13997
- ] });
13998
- });
13999
- var MetricCard2 = ({
14000
- title,
14001
- value,
14002
- subtitle,
14003
- tooltip,
14004
- className = "",
14005
- children
14006
- }) => {
14007
- const [showTooltip, setShowTooltip] = useState(false);
14008
- return /* @__PURE__ */ jsxs(
14009
- "div",
14010
- {
14011
- className: `liquid-surface rounded-2xl border border-white/30 dark:border-white/10 p-5 hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors ${className}`,
14012
- children: [
14013
- /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between mb-3", children: [
14014
- /* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-slate-500 dark:text-slate-400", children: title }),
14015
- tooltip && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
14016
- /* @__PURE__ */ jsx(
14017
- "button",
14018
- {
14019
- type: "button",
14020
- onMouseEnter: () => setShowTooltip(true),
14021
- onMouseLeave: () => setShowTooltip(false),
14022
- className: "w-4 h-4 rounded-full bg-white/30 dark:bg-white/10 text-slate-600 dark:text-slate-400 text-xs flex items-center justify-center hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
14023
- "aria-label": "Info",
14024
- children: "?"
14025
- }
14026
- ),
14027
- showTooltip && /* @__PURE__ */ jsxs("div", { className: "absolute right-0 top-6 z-10 w-64 p-3 liquid-surface-strong text-slate-900 dark:text-slate-100 text-xs rounded-lg", children: [
14028
- tooltip,
14029
- /* @__PURE__ */ jsx("div", { className: "absolute right-2 top-0 -translate-y-1 w-2 h-2 bg-white/60 dark:bg-white/20 rotate-45" })
14030
- ] })
14031
- ] })
14032
- ] }),
14033
- children ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
14034
- /* @__PURE__ */ jsx("div", { className: "text-2xl font-semibold text-slate-900 dark:text-slate-100 mb-1", children: value }),
14035
- subtitle && /* @__PURE__ */ jsx("div", { className: "text-xs text-slate-500 dark:text-slate-400", children: subtitle })
14036
- ] })
14037
- ]
14038
- }
14039
- );
14040
- };
14041
- var MetricTooltip = ({ text }) => {
14042
- const [show, setShow] = useState(false);
14043
- return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
14044
- /* @__PURE__ */ jsx(
14045
- "button",
14046
- {
14047
- type: "button",
14048
- onMouseEnter: () => setShow(true),
14049
- onMouseLeave: () => setShow(false),
14050
- className: "w-4 h-4 rounded-full bg-white/30 dark:bg-white/10 text-slate-600 dark:text-slate-400 text-xs flex items-center justify-center hover:bg-white/40 dark:hover:bg-white/[0.08] transition-colors",
14051
- "aria-label": "Info",
14052
- children: "?"
14053
- }
14054
- ),
14055
- show && /* @__PURE__ */ jsxs("div", { className: "absolute right-0 top-6 z-10 w-64 p-3 liquid-surface-strong text-slate-900 dark:text-slate-100 text-xs rounded-lg", children: [
14056
- text,
14057
- /* @__PURE__ */ jsx("div", { className: "absolute right-2 top-0 -translate-y-1 w-2 h-2 bg-white/60 dark:bg-white/20 rotate-45" })
14058
- ] })
14059
- ] });
14060
- };
14061
13061
 
14062
13062
  // src/lib/navigation.ts
14063
13063
  function buildDockActions(items, pathname, handlers, options = {}) {
@@ -14792,6 +13792,6 @@ function PlatformShell({
14792
13792
  ] });
14793
13793
  }
14794
13794
 
14795
- export { ActionMenu, ActionSheet, ActiveFilterChips, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, AppShell, ArchiveSwipeAction, AuthLayout, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, BadRequestPage, Badge, BaseForm, BentoCard, BooleanFlagsPicker, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, Button, Card, Card2, CardActionMenu, CardContent, CardContent2, CardDescription, CardDescription2, CardDivider, CardFooter, CardFooter2, CardGridSkeleton, CardHeader, CardHeader2, CardSectionHeader, CardTitle, CardTitle2, CategoryBadge, CategoryTab, CategoryTabs, ChipPicker, CircularRefreshIndicator, Code, CollapsibleGroupedList, CompactSegmentedControl, ContactCard, ContactSection, Container, ContextMenu, CookieConsent, CopyableId, CountPill, CreateActionButton, DashboardProgressShell, DataPagination, DatePicker, DeleteSwipeAction, Description4 as Description, DetailsPopover, DevModeBanner, Dialog4 as Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle3 as DialogTitle, Divider, Dock, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDescription, DropdownDivider, DropdownHeader, DropdownHeading, DropdownItem, DropdownLabel, DropdownMenu, DropdownSection, DropdownSelect, DropdownShortcut, DynamicIsland, DynamicIslandConfirm, DynamicIslandNotification, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, EntityDrawer, ErrorMessage, ErrorState, ExpandableHistoryList, ExpandingPageIndicator, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, Field2 as Field, FieldGroup, Fieldset2 as Fieldset, FilterBadge, FilterPill, FilterSectionHeader, FilterTileButton, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, FormActionsRow, FormCheckbox, FormField, FormGrid, FormInput, FormModal, FormPriceInput, FormSection, FormSelect, FormTextarea, FormToggle, GeoMapCanvas, GeoMapLegend, GlassModal, Gradient, GradientBackground, GrowthIndicator, Heading, HeroPanel, HeroSection, IconButton, InfoPopover, InlineForm, InlineSpinner, Input, InputGroup, InteractiveGeoMap, ItemSummary, KORI_ERP_LOADER, Label2 as Label, Label3 as Label2, LabeledToggle, LanguageSwitcher, LaunchpadGrid, Lead, Legend2 as Legend, Link4 as Link, LiquidFilterInput, ListCard, ListCardItem, ListItem, LoadingOverlay, ManagementPageLayout, ManagementSurface, MapZoomControls, MetricCard, MetricCard2, MetricTooltip, MonthPicker, MultiColumnPicker, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, NotificationBadge, NotificationBellButton, NotificationProvider, OfficeCard, OfflineState, OptionGrid, OtpInput, PageEmptyState, PageHeader, PageHeading, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, PasswordInput, PasswordInput2, PasswordStrengthMeter, Pill, PlatformShell, PlusGrid, PlusGridItem, PlusGridRow, PreferenceSection, PriceChangeBadge, ProfileIdentityCard, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, RegionFilterSkeleton, RoleBadge, SafeArea, SafeAreaSpacer, SafeAreaView, SearchBar, SearchFilterToolbar, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, SegmentedControl, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, SelectableChipPicker, SelectableListPicker, SelectableOptionsGrid, SelectableTableRow, SelectionCard, ServerErrorPage, SettingsDialog, SettingsModal, Sheet, SliderInput, SocialLoginButtons, SortableTableHeader, Spinner, Stat, StatCard, StatCard2, StatCardSkeleton, StatusBadge, StatusToggle, StepFormPage, StepNavigationButtons, StepTimeline, Strong, Subheading, SwipeableRow, Switch2 as Switch, SwitchField, SwitchGroup, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, ToggleSwitch, TouchTarget, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, UserAvatar, UserMobileInfo, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, createMotionProps, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, formatCurrency, formatDate, formatPercentage, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getTransition, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, iosColors, isValidBrazilState, isValidSubdivision, isValidUsState, listItem, listItemReduced, notificationBanner, notificationBannerReduced, pageControlDot, prefersReducedMotion, registerSubdivisionTheme, resolveGlassAccentRgb, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, swipeActionThreshold, swipeConstraints, useGeoMapState, useNotifications, usePlatformShellStore, usePullToRefresh };
14796
- //# sourceMappingURL=chunk-RWNHZ7FV.mjs.map
14797
- //# sourceMappingURL=chunk-RWNHZ7FV.mjs.map
13795
+ export { ActionMenu, ActionSheet, ActiveFilterChips, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, AppShell, ArchiveSwipeAction, AuthLayout, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, BadRequestPage, Badge, BaseForm, BentoCard, BooleanFlagsPicker, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, Button, Card, CardActionMenu, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, CategoryTab, CategoryTabs, ChipPicker, CircularRefreshIndicator, Code, CollapsibleGroupedList, CompactSegmentedControl, ContactCard, ContactSection, Container, ContextMenu, CookieConsent, CopyableId, CountPill, CreateActionButton, DashboardProgressShell, DataPagination, DatePicker, DeleteSwipeAction, Description4 as Description, DetailsPopover, DevModeBanner, Dialog4 as Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle3 as DialogTitle, Divider, Dock, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandConfirm, DynamicIslandNotification, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, EntityDrawer, ErrorMessage, ErrorState, ExpandableHistoryList, ExpandingPageIndicator, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, Field2 as Field, FieldGroup, Fieldset2 as Fieldset, FilterBadge, FilterPill, FilterSectionHeader, FilterTileButton, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, FormActionsRow, FormCheckbox, FormField, FormGrid, FormInput, FormModal, FormPriceInput, FormSection, FormSelect, FormTextarea, FormToggle, GeoMapCanvas, GeoMapLegend, GlassModal, Gradient, GradientBackground, GrowthIndicator, Heading, HeroPanel, HeroSection, IconButton, InfoPopover, InlineForm, InlineSpinner, Input, InteractiveGeoMap, ItemSummary, KORI_ERP_LOADER, Label2 as Label, LabeledToggle, LanguageSwitcher, LaunchpadGrid, Lead, Legend2 as Legend, LiquidFilterInput, ListCard, ListCardItem, ListItem, LoadingOverlay, ManagementPageLayout, ManagementSurface, MapZoomControls, MetricCard, MonthPicker, MultiColumnPicker, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, NotificationBadge, NotificationBellButton, NotificationProvider, OfficeCard, OfflineState, OptionGrid, OtpInput, PageEmptyState, PageHeader, PageHeading, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, PasswordInput, PasswordStrengthMeter, Pill, PlatformShell, PlusGrid, PlusGridItem, PlusGridRow, PreferenceSection, PriceChangeBadge, ProfileIdentityCard, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, RegionFilterSkeleton, RoleBadge, SafeArea, SafeAreaSpacer, SafeAreaView, SearchBar, SearchFilterToolbar, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, SegmentedControl, Select, SelectableChipPicker, SelectableListPicker, SelectableOptionsGrid, SelectableTableRow, SelectionCard, ServerErrorPage, SettingsDialog, SettingsModal, Sheet, SocialLoginButtons, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, StatusToggle, StepFormPage, StepNavigationButtons, StepTimeline, Strong, Subheading, SwipeableRow, Switch2 as Switch, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, ToggleSwitch, TouchTarget, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, UserAvatar, UserMobileInfo, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, createMotionProps, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, formatCurrency, formatDate, formatPercentage, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getTransition, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, iosColors, isValidBrazilState, isValidSubdivision, isValidUsState, listItem, listItemReduced, notificationBanner, notificationBannerReduced, pageControlDot, prefersReducedMotion, registerSubdivisionTheme, resolveGlassAccentRgb, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, swipeActionThreshold, swipeConstraints, useGeoMapState, useNotifications, usePlatformShellStore, usePullToRefresh };
13796
+ //# sourceMappingURL=chunk-7ZO5L4QH.mjs.map
13797
+ //# sourceMappingURL=chunk-7ZO5L4QH.mjs.map