@axzydev/axzy_ui_system 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1809,6 +1809,25 @@ var calendar_default = ITCalendar;
1809
1809
  // src/components/molecules/card/card.tsx
1810
1810
  import clsx8 from "clsx";
1811
1811
  import { useState as useState8 } from "react";
1812
+
1813
+ // src/theme/theme-context.ts
1814
+ import { createContext, useContext } from "react";
1815
+ var ITThemeContext = createContext(void 0);
1816
+ var useITTheme = () => {
1817
+ const context = useContext(ITThemeContext);
1818
+ if (!context) {
1819
+ throw new Error("useITTheme must be used within an ITThemeProvider");
1820
+ }
1821
+ return context;
1822
+ };
1823
+ var useITThemeSafe = () => {
1824
+ return useContext(ITThemeContext);
1825
+ };
1826
+ var useITFlatAppearance = () => {
1827
+ return useContext(ITThemeContext)?.appearance === "flat";
1828
+ };
1829
+
1830
+ // src/components/molecules/card/card.tsx
1812
1831
  import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1813
1832
  function ITCard({
1814
1833
  title,
@@ -1824,16 +1843,20 @@ function ITCard({
1824
1843
  onClick
1825
1844
  }) {
1826
1845
  const [isHovered, setIsHovered] = useState8(false);
1846
+ const flat = useITFlatAppearance();
1827
1847
  const containerStyle = {
1828
1848
  backgroundColor: "var(--it-card-bg, #ffffff)",
1829
- borderColor: "var(--it-card-border, rgba(15, 23, 42, 0.06))",
1849
+ borderColor: flat ? "var(--it-card-flat-border, var(--color-secondary-200))" : "var(--it-card-border, rgba(15, 23, 42, 0.06))",
1830
1850
  borderWidth: "1px",
1831
- borderRadius: "var(--it-card-radius, var(--radius-2xl))",
1851
+ borderStyle: "solid",
1852
+ borderRadius: flat ? "var(--it-card-radius, var(--radius-lg))" : "var(--it-card-radius, var(--radius-2xl))",
1832
1853
  // Soft depth: every card floats a little at rest; interactive cards
1833
1854
  // gain visual weight on hover instead of appearing flat until clicked.
1834
- boxShadow: onClick ? isHovered ? "var(--shadow-lg)" : "var(--shadow-sm)" : "var(--shadow-sm)",
1855
+ // Flat appearance: the hairline border carries the surface, so a card
1856
+ // only gets a shadow as hover feedback when it is clickable.
1857
+ boxShadow: flat ? onClick && isHovered ? "var(--shadow-sm)" : "none" : onClick ? isHovered ? "var(--shadow-lg)" : "var(--shadow-sm)" : "var(--shadow-sm)",
1835
1858
  transition: onClick ? "box-shadow 0.2s ease-in-out, transform 0.2s ease-in-out" : "none",
1836
- transform: onClick && isHovered ? "translateY(-2px)" : "translateY(0)",
1859
+ transform: onClick && isHovered && !flat ? "translateY(-2px)" : "translateY(0)",
1837
1860
  cursor: onClick ? "pointer" : "default"
1838
1861
  };
1839
1862
  const bodyStyle = {
@@ -1861,7 +1884,7 @@ function ITCard({
1861
1884
  ITText,
1862
1885
  {
1863
1886
  as: "h3",
1864
- className: clsx8("text-xl font-semibold mb-2", titleClassName),
1887
+ className: clsx8(flat ? "text-base font-semibold mb-3" : "text-xl font-semibold mb-2", titleClassName),
1865
1888
  children: title
1866
1889
  }
1867
1890
  ),
@@ -4940,20 +4963,6 @@ import { FaRegTimesCircle } from "react-icons/fa";
4940
4963
  // src/components/molecules/form-header/form-header.tsx
4941
4964
  import { FaTimes as FaTimes6 } from "react-icons/fa";
4942
4965
 
4943
- // src/theme/theme-context.ts
4944
- import { createContext, useContext } from "react";
4945
- var ITThemeContext = createContext(void 0);
4946
- var useITTheme = () => {
4947
- const context = useContext(ITThemeContext);
4948
- if (!context) {
4949
- throw new Error("useITTheme must be used within an ITThemeProvider");
4950
- }
4951
- return context;
4952
- };
4953
- var useITThemeSafe = () => {
4954
- return useContext(ITThemeContext);
4955
- };
4956
-
4957
4966
  // src/utils/color.utils.ts
4958
4967
  var isLightColor = (hex) => {
4959
4968
  if (!hex || typeof hex !== "string") return false;
@@ -6519,6 +6528,7 @@ function ITPageHeader({
6519
6528
  className
6520
6529
  }) {
6521
6530
  const showTopRow = breadcrumbs?.length || backAction;
6531
+ const flat = useITFlatAppearance();
6522
6532
  return /* @__PURE__ */ jsxs29("div", { className: `${className} space-y-3`, children: [
6523
6533
  showTopRow && /* @__PURE__ */ jsxs29("div", { className: "flex items-center justify-between gap-4", children: [
6524
6534
  /* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2 min-w-0", children: [
@@ -6537,7 +6547,7 @@ function ITPageHeader({
6537
6547
  ] }),
6538
6548
  /* @__PURE__ */ jsxs29("div", { className: "flex items-start justify-between gap-6", children: [
6539
6549
  /* @__PURE__ */ jsxs29("div", { className: "flex items-start gap-4 min-w-0", children: [
6540
- icon && /* @__PURE__ */ jsx38(
6550
+ icon && !flat && /* @__PURE__ */ jsx38(
6541
6551
  "div",
6542
6552
  {
6543
6553
  className: "flex items-center justify-center w-12 h-12 rounded-full border border-slate-200 dark:border-slate-700 bg-slate-50/50 dark:bg-slate-800/50 text-slate-600 dark:text-slate-300 flex-shrink-0 transition-all duration-200 hover:border-slate-300 dark:hover:border-slate-500 hover:shadow-sm",
@@ -6550,7 +6560,7 @@ function ITPageHeader({
6550
6560
  ITText,
6551
6561
  {
6552
6562
  as: "h1",
6553
- className: "text-3xl font-bold text-slate-800 dark:text-white tracking-tight leading-tight",
6563
+ className: flat ? "text-[1.625rem] font-bold text-slate-900 dark:text-white tracking-tight leading-tight" : "text-3xl font-bold text-slate-800 dark:text-white tracking-tight leading-tight",
6554
6564
  children: title
6555
6565
  }
6556
6566
  ),
@@ -6558,7 +6568,7 @@ function ITPageHeader({
6558
6568
  ITText,
6559
6569
  {
6560
6570
  as: "p",
6561
- className: "text-sm font-light text-slate-500 dark:text-slate-400 mt-1 leading-relaxed",
6571
+ className: flat ? "text-sm font-normal text-slate-500 dark:text-slate-400 mt-0.5 leading-relaxed" : "text-sm font-light text-slate-500 dark:text-slate-400 mt-1 leading-relaxed",
6562
6572
  children: description
6563
6573
  }
6564
6574
  )
@@ -7575,6 +7585,7 @@ function ITSegmentedControl({
7575
7585
 
7576
7586
  // src/components/organisms/sidebar/sidebar.tsx
7577
7587
  import { useEffect as useEffect13, useRef as useRef20, useState as useState27 } from "react";
7588
+ import clsx40 from "clsx";
7578
7589
  import { FaChevronDown as FaChevronDown4 } from "react-icons/fa";
7579
7590
  import { jsx as jsx56, jsxs as jsxs43 } from "react/jsx-runtime";
7580
7591
  function isSubItemGroup(entry) {
@@ -7593,8 +7604,11 @@ function ITSidebar({
7593
7604
  onItemClick,
7594
7605
  onSubItemClick,
7595
7606
  subitemConnector = "dot",
7596
- header
7607
+ header,
7608
+ notification,
7609
+ brand
7597
7610
  }) {
7611
+ const flat = useITFlatAppearance();
7598
7612
  const [expandedItems, setExpandedItems] = useState27(/* @__PURE__ */ new Set());
7599
7613
  const [isHovering, setIsHovering] = useState27(false);
7600
7614
  const sidebarRef = useRef20(null);
@@ -7663,7 +7677,7 @@ function ITSidebar({
7663
7677
  }
7664
7678
  };
7665
7679
  const isSidebarCollapsed = visibleOnMobile ? false : !isHovering && isCollapsed;
7666
- const sidebarWidth = isSidebarCollapsed ? "w-[88px]" : "w-[280px]";
7680
+ const sidebarWidth = isSidebarCollapsed ? "w-[88px]" : flat ? "w-[248px]" : "w-[280px]";
7667
7681
  const renderSubItem = (subitem) => /* @__PURE__ */ jsx56("li", { className: "relative", children: /* @__PURE__ */ jsxs43(
7668
7682
  "button",
7669
7683
  {
@@ -7738,6 +7752,87 @@ function ITSidebar({
7738
7752
  /* @__PURE__ */ jsx56("ul", { "aria-labelledby": headingId, className: "flex flex-col gap-0", children: group.items.map(renderSubItem) })
7739
7753
  ] }, group.id);
7740
7754
  };
7755
+ const renderNotification = () => {
7756
+ if (!notification) return null;
7757
+ const {
7758
+ count,
7759
+ icon,
7760
+ label = "Notificaciones",
7761
+ onClick,
7762
+ badgeProps
7763
+ } = notification;
7764
+ const { className: badgeClassName, ...badgeRest } = badgeProps ?? {};
7765
+ const badge = /* @__PURE__ */ jsx56(
7766
+ ITBadget,
7767
+ {
7768
+ color: "danger",
7769
+ size: "sm",
7770
+ ...badgeRest,
7771
+ className: clsx40("shadow-md", badgeClassName),
7772
+ children: String(count)
7773
+ }
7774
+ );
7775
+ if (isSidebarCollapsed) {
7776
+ return /* @__PURE__ */ jsxs43(
7777
+ "button",
7778
+ {
7779
+ type: "button",
7780
+ "aria-label": label,
7781
+ title: label,
7782
+ onClick,
7783
+ className: "relative flex items-center justify-center w-full p-2 mb-1 rounded-xl transition-all duration-300",
7784
+ style: { color: "var(--it-sidebar-icon-color, var(--color-secondary-500))" },
7785
+ onMouseEnter: (e) => {
7786
+ e.currentTarget.style.backgroundColor = "var(--it-sidebar-hover-bg, var(--color-secondary-100))";
7787
+ },
7788
+ onMouseLeave: (e) => {
7789
+ e.currentTarget.style.backgroundColor = "transparent";
7790
+ },
7791
+ children: [
7792
+ icon && /* @__PURE__ */ jsx56("span", { className: "flex items-center justify-center text-[1.05rem]", children: icon }),
7793
+ /* @__PURE__ */ jsx56("span", { className: "absolute top-0.5 right-0.5 pointer-events-none", children: badge })
7794
+ ]
7795
+ }
7796
+ );
7797
+ }
7798
+ return /* @__PURE__ */ jsxs43(
7799
+ "button",
7800
+ {
7801
+ type: "button",
7802
+ "aria-label": label,
7803
+ title: label,
7804
+ onClick,
7805
+ className: "flex items-center gap-2.5 w-full text-left px-3 py-2 mb-1 rounded-xl transition-all duration-300",
7806
+ style: { color: "var(--it-sidebar-label-color, var(--color-secondary-600))" },
7807
+ onMouseEnter: (e) => {
7808
+ e.currentTarget.style.backgroundColor = "var(--it-sidebar-hover-bg, var(--color-secondary-100))";
7809
+ },
7810
+ onMouseLeave: (e) => {
7811
+ e.currentTarget.style.backgroundColor = "transparent";
7812
+ },
7813
+ children: [
7814
+ icon && /* @__PURE__ */ jsx56(
7815
+ "span",
7816
+ {
7817
+ className: "flex-shrink-0 flex items-center justify-center text-[1.05rem]",
7818
+ style: { color: "var(--it-sidebar-icon-color, #9ca3af)" },
7819
+ children: icon
7820
+ }
7821
+ ),
7822
+ /* @__PURE__ */ jsx56(
7823
+ ITText,
7824
+ {
7825
+ as: "span",
7826
+ className: "truncate tracking-wide",
7827
+ style: { fontSize: "0.8rem", fontWeight: 500 },
7828
+ children: label
7829
+ }
7830
+ ),
7831
+ /* @__PURE__ */ jsx56("span", { className: "ml-auto flex-shrink-0", children: badge })
7832
+ ]
7833
+ }
7834
+ );
7835
+ };
7741
7836
  return /* @__PURE__ */ jsxs43(
7742
7837
  "aside",
7743
7838
  {
@@ -7748,20 +7843,39 @@ function ITSidebar({
7748
7843
  ${sidebarWidth}
7749
7844
  ${className}
7750
7845
  ${!visibleOnMobile ? "hidden lg:flex" : "flex"}
7751
- shadow-[4px_0_32px_rgba(15,23,42,0.04)]
7846
+ ${flat ? "" : "shadow-[4px_0_32px_rgba(15,23,42,0.04)]"}
7752
7847
  `,
7753
7848
  style: {
7754
7849
  zIndex: 50,
7755
7850
  backgroundColor: "var(--it-sidebar-bg, rgba(255, 255, 255, 0.90))",
7756
7851
  borderRight: "1px solid var(--it-sidebar-border, var(--color-secondary-200))",
7757
- WebkitBackdropFilter: "blur(12px)",
7758
- backdropFilter: "blur(12px)"
7852
+ ...flat ? {} : { WebkitBackdropFilter: "blur(12px)", backdropFilter: "blur(12px)" }
7759
7853
  },
7760
7854
  children: [
7855
+ brand && (brand.logo || brand.text) && /* @__PURE__ */ jsxs43(
7856
+ "div",
7857
+ {
7858
+ className: `flex items-center flex-shrink-0 h-[64px] ${isSidebarCollapsed ? "justify-center px-2" : "gap-2.5 px-7"}`,
7859
+ children: [
7860
+ brand.logo && /* @__PURE__ */ jsx56("div", { className: "flex-shrink-0 flex items-center", children: brand.logo }),
7861
+ brand.text && !isSidebarCollapsed && /* @__PURE__ */ jsx56(
7862
+ ITText,
7863
+ {
7864
+ as: "span",
7865
+ className: "text-[1.05rem] font-bold tracking-tight truncate",
7866
+ style: { color: "var(--it-sidebar-brand-color, var(--it-sidebar-label-color, var(--color-secondary-900)))" },
7867
+ children: brand.text
7868
+ }
7869
+ )
7870
+ ]
7871
+ }
7872
+ ),
7761
7873
  header && !isSidebarCollapsed && /* @__PURE__ */ jsx56("div", { className: "px-4 pt-4 pb-1 flex-shrink-0", children: header }),
7874
+ notification && /* @__PURE__ */ jsx56("div", { className: "px-4 pt-3 flex-shrink-0", children: renderNotification() }),
7762
7875
  /* @__PURE__ */ jsx56("nav", { "aria-label": "Componentes de la librer\xEDa", className: "flex-1 py-4 overflow-y-auto overflow-x-hidden custom-scrollbar px-4", children: /* @__PURE__ */ jsx56("ul", { className: "space-y-1", children: navigationItems.map((item) => {
7763
7876
  const hasSubmenu = !!item.subitems && item.subitems.length > 0;
7764
7877
  const submenuId = `it-sidebar-submenu-${item.id}`;
7878
+ const { className: badgeClassName, ...badgeRest } = item.badgeProps ?? {};
7765
7879
  return /* @__PURE__ */ jsxs43("li", { className: "relative group/navitem", children: [
7766
7880
  /* @__PURE__ */ jsxs43(
7767
7881
  "div",
@@ -7778,8 +7892,8 @@ function ITSidebar({
7778
7892
  `,
7779
7893
  style: {
7780
7894
  backgroundColor: item.isActive ? "var(--it-sidebar-active-bg, var(--color-secondary-50))" : "transparent",
7781
- boxShadow: item.isActive ? "var(--shadow-xs)" : "none",
7782
- border: item.isActive ? "1px solid var(--it-sidebar-border, var(--color-secondary-200))" : "1px solid transparent"
7895
+ boxShadow: item.isActive && !flat ? "var(--shadow-xs)" : "none",
7896
+ border: item.isActive && !flat ? "1px solid var(--it-sidebar-border, var(--color-secondary-200))" : "1px solid transparent"
7783
7897
  },
7784
7898
  onMouseEnter: (e) => {
7785
7899
  if (!item.isActive) e.currentTarget.style.backgroundColor = "var(--it-sidebar-hover-bg, var(--color-secondary-100))";
@@ -7795,7 +7909,7 @@ function ITSidebar({
7795
7909
  }
7796
7910
  },
7797
7911
  children: [
7798
- item.isActive && !isSidebarCollapsed && /* @__PURE__ */ jsx56(
7912
+ item.isActive && !isSidebarCollapsed && !flat && /* @__PURE__ */ jsx56(
7799
7913
  "div",
7800
7914
  {
7801
7915
  className: "absolute left-0 top-1/4 bottom-1/4 w-[3px] rounded-r-full transition-all",
@@ -7810,8 +7924,8 @@ function ITSidebar({
7810
7924
  style: {
7811
7925
  color: item.isActive ? "var(--it-sidebar-active-icon, var(--color-primary-500))" : "var(--it-sidebar-icon-color, #9ca3af)",
7812
7926
  opacity: item.isActive ? 1 : 0.8,
7813
- fontSize: item.isActive ? "1.12rem" : "1.05rem",
7814
- filter: item.isActive ? "drop-shadow(0 0 8px rgba(255,255,255,0.2))" : "none"
7927
+ fontSize: flat ? "1rem" : item.isActive ? "1.12rem" : "1.05rem",
7928
+ filter: item.isActive && !flat ? "drop-shadow(0 0 8px rgba(255,255,255,0.2))" : "none"
7815
7929
  },
7816
7930
  children: item.icon
7817
7931
  }
@@ -7823,7 +7937,7 @@ function ITSidebar({
7823
7937
  className: `transition-all duration-300 truncate tracking-wide`,
7824
7938
  style: {
7825
7939
  color: item.isActive ? "var(--it-sidebar-active-color, #ffffff)" : "var(--it-sidebar-label-color, var(--color-secondary-300))",
7826
- fontSize: "0.8rem",
7940
+ fontSize: flat ? "0.875rem" : "0.8rem",
7827
7941
  fontWeight: item.isActive ? "600" : "500"
7828
7942
  },
7829
7943
  children: item.label
@@ -7838,19 +7952,18 @@ function ITSidebar({
7838
7952
  children: /* @__PURE__ */ jsx56(FaChevronDown4, { className: "w-3 h-3" })
7839
7953
  }
7840
7954
  ),
7841
- item.badge && /* @__PURE__ */ jsx56(
7842
- "span",
7955
+ item.badge != null && item.badge !== "" && /* @__PURE__ */ jsx56(
7956
+ ITBadget,
7843
7957
  {
7844
- className: `
7845
- absolute flex items-center justify-center font-bold shadow-md
7846
- ${isSidebarCollapsed ? "top-1 right-1 w-2.5 h-2.5 rounded-full ring-2 ring-white" : "right-3 top-1/2 transform -translate-y-1/2 px-1.5 py-0 text-[9px] rounded-full backdrop-blur-sm"}
7847
- `,
7848
- style: {
7849
- backgroundColor: "var(--it-sidebar-badge-bg, var(--color-primary-500))",
7850
- color: "var(--it-sidebar-badge-color, #ffffff)",
7851
- boxShadow: isSidebarCollapsed ? "0 0 0 2px var(--it-sidebar-bg, var(--color-secondary-900))" : "none"
7852
- },
7853
- children: isSidebarCollapsed ? "" : item.badge
7958
+ color: "primary",
7959
+ size: "sm",
7960
+ ...badgeRest,
7961
+ className: clsx40(
7962
+ "absolute shadow-md",
7963
+ isSidebarCollapsed ? "top-0.5 right-0.5" : "right-3 top-1/2 -translate-y-1/2",
7964
+ badgeClassName
7965
+ ),
7966
+ children: String(item.badge)
7854
7967
  }
7855
7968
  )
7856
7969
  ]
@@ -7916,7 +8029,7 @@ function ITSidebar({
7916
8029
 
7917
8030
  // src/components/atoms/slide/slide.tsx
7918
8031
  import { useState as useState28, useEffect as useEffect14 } from "react";
7919
- import clsx40 from "clsx";
8032
+ import clsx41 from "clsx";
7920
8033
  import { jsx as jsx57 } from "react/jsx-runtime";
7921
8034
  function ITSlideToggle({
7922
8035
  onToggle,
@@ -7974,7 +8087,7 @@ function ITSlideToggle({
7974
8087
  "div",
7975
8088
  {
7976
8089
  onClick: toggleSwitch,
7977
- className: clsx40(
8090
+ className: clsx41(
7978
8091
  "flex items-center rounded-full p-1 transition-colors duration-300",
7979
8092
  container,
7980
8093
  disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer",
@@ -7993,7 +8106,7 @@ function ITSlideToggle({
7993
8106
  children: /* @__PURE__ */ jsx57(
7994
8107
  "div",
7995
8108
  {
7996
- className: clsx40(
8109
+ className: clsx41(
7997
8110
  "bg-white rounded-full shadow-md transform transition-transform duration-300 pointer-events-none",
7998
8111
  knob,
7999
8112
  isOn ? translate : "translate-x-0"
@@ -8005,7 +8118,7 @@ function ITSlideToggle({
8005
8118
  }
8006
8119
 
8007
8120
  // src/components/atoms/slider/slider.tsx
8008
- import clsx41 from "clsx";
8121
+ import clsx42 from "clsx";
8009
8122
  import { jsx as jsx58, jsxs as jsxs44 } from "react/jsx-runtime";
8010
8123
  function ITSlider({
8011
8124
  value,
@@ -8017,7 +8130,7 @@ function ITSlider({
8017
8130
  disabled = false,
8018
8131
  className
8019
8132
  }) {
8020
- return /* @__PURE__ */ jsxs44("div", { className: clsx41("flex flex-col gap-1.5", className), children: [
8133
+ return /* @__PURE__ */ jsxs44("div", { className: clsx42("flex flex-col gap-1.5", className), children: [
8021
8134
  label && /* @__PURE__ */ jsxs44(ITText, { as: "label", className: "text-xs font-semibold text-secondary-600 dark:text-secondary-400", children: [
8022
8135
  label,
8023
8136
  ": ",
@@ -8033,7 +8146,7 @@ function ITSlider({
8033
8146
  value,
8034
8147
  onChange: (e) => onChange(Number(e.target.value)),
8035
8148
  disabled,
8036
- className: clsx41(
8149
+ className: clsx42(
8037
8150
  "w-full h-1.5 appearance-none rounded-full outline-none cursor-pointer",
8038
8151
  "bg-secondary-200 dark:bg-secondary-700",
8039
8152
  "accent-primary-500",
@@ -8053,7 +8166,7 @@ function ITSlider({
8053
8166
  }
8054
8167
 
8055
8168
  // src/components/molecules/stat-card/stat-card.tsx
8056
- import clsx42 from "clsx";
8169
+ import clsx43 from "clsx";
8057
8170
  import { jsx as jsx59, jsxs as jsxs45 } from "react/jsx-runtime";
8058
8171
  var trendColors = {
8059
8172
  up: "text-emerald-600 bg-emerald-50 dark:text-emerald-400 dark:bg-emerald-950/30",
@@ -8074,7 +8187,7 @@ function ITStatCard({
8074
8187
  return /* @__PURE__ */ jsxs45(
8075
8188
  "div",
8076
8189
  {
8077
- className: clsx42("rounded-xl p-4 border border-slate-100 dark:border-slate-800", color, className),
8190
+ className: clsx43("rounded-xl p-4 border border-slate-100 dark:border-slate-800", color, className),
8078
8191
  style,
8079
8192
  onClick,
8080
8193
  role: onClick ? "button" : void 0,
@@ -8086,7 +8199,7 @@ function ITStatCard({
8086
8199
  ] }),
8087
8200
  /* @__PURE__ */ jsxs45("div", { className: "flex items-baseline gap-2", children: [
8088
8201
  /* @__PURE__ */ jsx59(ITText, { as: "span", className: "text-2xl font-bold text-slate-800 dark:text-white", children: value }),
8089
- trend && /* @__PURE__ */ jsx59(ITText, { as: "span", className: clsx42("text-[11px] font-semibold px-1.5 py-0.5 rounded-md", trendColors[trendDirection]), children: trend })
8202
+ trend && /* @__PURE__ */ jsx59(ITText, { as: "span", className: clsx43("text-[11px] font-semibold px-1.5 py-0.5 rounded-md", trendColors[trendDirection]), children: trend })
8090
8203
  ] })
8091
8204
  ]
8092
8205
  }
@@ -8094,7 +8207,7 @@ function ITStatCard({
8094
8207
  }
8095
8208
 
8096
8209
  // src/components/molecules/table/table.tsx
8097
- import clsx43 from "clsx";
8210
+ import clsx44 from "clsx";
8098
8211
  import React11, { useState as useState29 } from "react";
8099
8212
  import {
8100
8213
  FaCheck as FaCheck4,
@@ -8271,7 +8384,7 @@ function ITTable({
8271
8384
  children: /* @__PURE__ */ jsx60("div", { className: "relative w-10 h-5 bg-secondary-300 rounded-full", children: /* @__PURE__ */ jsx60(
8272
8385
  "div",
8273
8386
  {
8274
- className: clsx43(
8387
+ className: clsx44(
8275
8388
  "absolute top-0.5 w-4 h-4 rounded-full transition-all duration-300 shadow-sm",
8276
8389
  {
8277
8390
  "left-0.5 bg-secondary-400": currentValue === void 0,
@@ -8462,7 +8575,7 @@ function ITTable({
8462
8575
  event.preventDefault();
8463
8576
  onRowClick(row, event);
8464
8577
  };
8465
- return /* @__PURE__ */ jsx60("div", { ref: rootRef, className: clsx43("space-y-4 w-full", containerClassName), children: /* @__PURE__ */ jsxs46("div", { className: tableContainer, style: { backgroundColor: "var(--color-table-rowBg, #ffffff)" }, children: [
8578
+ return /* @__PURE__ */ jsx60("div", { ref: rootRef, className: clsx44("space-y-4 w-full", containerClassName), children: /* @__PURE__ */ jsxs46("div", { className: tableContainer, style: { backgroundColor: "var(--color-table-rowBg, #ffffff)" }, children: [
8466
8579
  title && /* @__PURE__ */ jsxs46("div", { className: "px-6 py-5 flex items-center justify-between", style: { backgroundColor: "var(--color-table-rowBg, #ffffff)" }, children: [
8467
8580
  /* @__PURE__ */ jsx60(ITText, { as: "h2", className: "text-xl font-bold text-secondary-900 leading-tight", children: title }),
8468
8581
  /* @__PURE__ */ jsxs46("div", { className: "flex items-center bg-slate-100 dark:bg-slate-800/80 rounded-lg p-0.5 border border-slate-200 dark:border-slate-700/50", children: [
@@ -8519,7 +8632,7 @@ function ITTable({
8519
8632
  effectiveView === "cards" ? /* @__PURE__ */ jsx60("div", { className: "p-4 space-y-3 max-h-[400px] overflow-y-auto", children: currentData.length > 0 ? currentData.map((row, i) => /* @__PURE__ */ jsx60(
8520
8633
  "div",
8521
8634
  {
8522
- className: clsx43(tableCardHover, onRowClick && tableCardClickable),
8635
+ className: clsx44(tableCardHover, onRowClick && tableCardClickable),
8523
8636
  role: onRowClick ? "button" : void 0,
8524
8637
  tabIndex: onRowClick ? 0 : void 0,
8525
8638
  onClick: onRowClick ? handleRowClick(row) : void 0,
@@ -8527,7 +8640,7 @@ function ITTable({
8527
8640
  children: renderCard ? renderCard(row) : renderDefaultCard(row)
8528
8641
  },
8529
8642
  i
8530
- )) : /* @__PURE__ */ jsxs46("div", { className: clsx43(tableEmptyContent, "py-12"), children: [
8643
+ )) : /* @__PURE__ */ jsxs46("div", { className: clsx44(tableEmptyContent, "py-12"), children: [
8531
8644
  /* @__PURE__ */ jsx60(ITText, { as: "span", className: "text-lg", children: "No se encontraron resultados" }),
8532
8645
  /* @__PURE__ */ jsx60(ITText, { as: "span", className: "text-sm mt-1", children: "Intenta ajustar los filtros" })
8533
8646
  ] }) }) : /* @__PURE__ */ jsx60(
@@ -8539,7 +8652,7 @@ function ITTable({
8539
8652
  children: /* @__PURE__ */ jsxs46(
8540
8653
  "table",
8541
8654
  {
8542
- className: clsx43(
8655
+ className: clsx44(
8543
8656
  tableLayoutClass,
8544
8657
  showVerticalBorder && "[&_th]:border-r [&_th:last-child]:border-r-0 [&_td]:border-r [&_td:last-child]:border-r-0",
8545
8658
  showVerticalBorder && (verticalBorderClassname || "[&_th]:border-slate-100 dark:[&_th]:border-slate-700/30 [&_td]:border-slate-100 dark:[&_td]:border-slate-700/30"),
@@ -8559,7 +8672,7 @@ function ITTable({
8559
8672
  /* @__PURE__ */ jsx60("thead", { children: /* @__PURE__ */ jsx60(
8560
8673
  "tr",
8561
8674
  {
8562
- className: clsx43(tableHeaderRow, "dark:text-slate-200"),
8675
+ className: clsx44(tableHeaderRow, "dark:text-slate-200"),
8563
8676
  "aria-rowindex": isTableVirtual ? 1 : void 0,
8564
8677
  children: columns.map((col) => {
8565
8678
  const pin = pinnedMeta[col.key];
@@ -8568,7 +8681,7 @@ function ITTable({
8568
8681
  "th",
8569
8682
  {
8570
8683
  scope: "col",
8571
- className: clsx43(
8684
+ className: clsx44(
8572
8685
  tableHeaderCell(col.className, density),
8573
8686
  col.align && tableAlignClasses[col.align],
8574
8687
  isPinned && "sticky",
@@ -8602,7 +8715,7 @@ function ITTable({
8602
8715
  })
8603
8716
  }
8604
8717
  ) }),
8605
- /* @__PURE__ */ jsx60("tbody", { className: clsx43(tableBody, "dark:divide-slate-700/30"), children: currentData.length > 0 ? /* @__PURE__ */ jsxs46(Fragment9, { children: [
8718
+ /* @__PURE__ */ jsx60("tbody", { className: clsx44(tableBody, "dark:divide-slate-700/30"), children: currentData.length > 0 ? /* @__PURE__ */ jsxs46(Fragment9, { children: [
8606
8719
  isTableVirtual && topSpacerHeight > 0 && /* @__PURE__ */ jsx60("tr", { "aria-hidden": "true", style: { height: topSpacerHeight }, children: /* @__PURE__ */ jsx60("td", { colSpan: columnCount, style: { padding: 0, border: 0 } }) }),
8607
8720
  windowData.map((row, windowIndex) => {
8608
8721
  const absoluteIndex = isTableVirtual ? startIndex + windowIndex : windowIndex;
@@ -8610,7 +8723,7 @@ function ITTable({
8610
8723
  "tr",
8611
8724
  {
8612
8725
  "aria-rowindex": isTableVirtual ? absoluteIndex + 2 : void 0,
8613
- className: clsx43(
8726
+ className: clsx44(
8614
8727
  tableRow,
8615
8728
  variant === "striped" && absoluteIndex % 2 === 0 && "bg-secondary-50/40 dark:bg-slate-800/20",
8616
8729
  onRowClick && tableRowClickable
@@ -8626,7 +8739,7 @@ function ITTable({
8626
8739
  return /* @__PURE__ */ jsx60(
8627
8740
  "td",
8628
8741
  {
8629
- className: clsx43(
8742
+ className: clsx44(
8630
8743
  tableCell(col.className, density),
8631
8744
  col.align && tableAlignClasses[col.align],
8632
8745
  isPinned && "sticky bg-[var(--color-table-rowBg,white)] group-hover:bg-[var(--color-table-rowHover,var(--color-secondary-50))]",
@@ -8638,7 +8751,7 @@ function ITTable({
8638
8751
  ...isPinned ? pin.side === "left" ? { left: pin.offset } : { right: pin.offset } : {}
8639
8752
  } : void 0,
8640
8753
  title: truncateTitle,
8641
- children: col.type === "actions" ? /* @__PURE__ */ jsx60("div", { className: tableActionsCell, children: renderCellContent(col, row) }) : /* @__PURE__ */ jsx60("div", { className: clsx43(tableCellText, col.truncate && "truncate"), children: renderCellContent(col, row) })
8754
+ children: col.type === "actions" ? /* @__PURE__ */ jsx60("div", { className: tableActionsCell, children: renderCellContent(col, row) }) : /* @__PURE__ */ jsx60("div", { className: clsx44(tableCellText, col.truncate && "truncate"), children: renderCellContent(col, row) })
8642
8755
  },
8643
8756
  `${absoluteIndex}-${col.key}`
8644
8757
  );
@@ -8674,7 +8787,7 @@ function ITTable({
8674
8787
  }
8675
8788
 
8676
8789
  // src/components/atoms/textarea/textarea.tsx
8677
- import clsx44 from "clsx";
8790
+ import clsx45 from "clsx";
8678
8791
  import { jsx as jsx61, jsxs as jsxs47 } from "react/jsx-runtime";
8679
8792
  var resizeMap = {
8680
8793
  none: "resize-none",
@@ -8695,7 +8808,7 @@ function ITTextarea({
8695
8808
  maxLength,
8696
8809
  resize = "vertical"
8697
8810
  }) {
8698
- return /* @__PURE__ */ jsxs47("div", { className: clsx44("flex flex-col gap-1.5", className), children: [
8811
+ return /* @__PURE__ */ jsxs47("div", { className: clsx45("flex flex-col gap-1.5", className), children: [
8699
8812
  label && /* @__PURE__ */ jsx61(ITText, { as: "label", className: inputLabel(!!error), htmlFor: name, children: label }),
8700
8813
  /* @__PURE__ */ jsx61(
8701
8814
  "textarea",
@@ -8708,7 +8821,7 @@ function ITTextarea({
8708
8821
  rows,
8709
8822
  disabled,
8710
8823
  maxLength,
8711
- className: clsx44(
8824
+ className: clsx45(
8712
8825
  "w-full border border-solid transition-all duration-200 rounded-lg px-3 py-2 text-sm outline-none",
8713
8826
  "focus:ring-2",
8714
8827
  resizeMap[resize],
@@ -8723,7 +8836,7 @@ function ITTextarea({
8723
8836
 
8724
8837
  // src/components/molecules/tabs/tabs.tsx
8725
8838
  import { useState as useState30 } from "react";
8726
- import { clsx as clsx45 } from "clsx";
8839
+ import { clsx as clsx46 } from "clsx";
8727
8840
  import { jsx as jsx62, jsxs as jsxs48 } from "react/jsx-runtime";
8728
8841
  var ITTabs = ({
8729
8842
  items,
@@ -8740,8 +8853,8 @@ var ITTabs = ({
8740
8853
  if (onChange) onChange(id);
8741
8854
  };
8742
8855
  const activeContent = items.find((item) => item.id === activeId)?.content;
8743
- return /* @__PURE__ */ jsxs48("div", { className: clsx45("w-full", containerClassName), children: [
8744
- /* @__PURE__ */ jsx62("div", { className: clsx45(
8856
+ return /* @__PURE__ */ jsxs48("div", { className: clsx46("w-full", containerClassName), children: [
8857
+ /* @__PURE__ */ jsx62("div", { className: clsx46(
8745
8858
  "flex border-secondary-200 mb-4",
8746
8859
  variant === "line" ? "border-b" : "gap-2 p-1 bg-secondary-100 rounded-lg w-fit",
8747
8860
  className
@@ -8752,7 +8865,7 @@ var ITTabs = ({
8752
8865
  {
8753
8866
  onClick: () => handleTabClick(item.id, item.disabled),
8754
8867
  disabled: item.disabled,
8755
- className: clsx45(
8868
+ className: clsx46(
8756
8869
  "flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 outline-none",
8757
8870
  // LINE VARIANT
8758
8871
  variant === "line" && [
@@ -8780,7 +8893,7 @@ var ITTabs = ({
8780
8893
  var tabs_default = ITTabs;
8781
8894
 
8782
8895
  // src/components/organisms/triple-filter/tripleFilter.tsx
8783
- import clsx46 from "clsx";
8896
+ import clsx47 from "clsx";
8784
8897
  import { jsx as jsx63 } from "react/jsx-runtime";
8785
8898
  var colorMap2 = {
8786
8899
  primary: "text-primary-600",
@@ -8803,14 +8916,14 @@ var ITTripleFilter = ({
8803
8916
  return /* @__PURE__ */ jsx63(
8804
8917
  "div",
8805
8918
  {
8806
- className: clsx46("flex bg-slate-100 p-1 rounded-xl gap-1 w-fit", className),
8919
+ className: clsx47("flex bg-slate-100 p-1 rounded-xl gap-1 w-fit", className),
8807
8920
  children: options.map((option) => /* @__PURE__ */ jsx63(
8808
8921
  "button",
8809
8922
  {
8810
8923
  onClick: () => onChange(option.value),
8811
- className: clsx46(
8924
+ className: clsx47(
8812
8925
  "px-4 py-1.5 rounded-lg text-[10px] font-bold uppercase tracking-wider transition-all duration-200 whitespace-nowrap",
8813
- value === option.value ? clsx46("bg-white shadow-sm", colorMap2[color]) : "text-slate-400 hover:text-slate-600"
8926
+ value === option.value ? clsx47("bg-white shadow-sm", colorMap2[color]) : "text-slate-400 hover:text-slate-600"
8814
8927
  ),
8815
8928
  children: /* @__PURE__ */ jsx63(ITText, { as: "span", children: option.label })
8816
8929
  },
@@ -8832,7 +8945,7 @@ var positionStyles = {
8832
8945
  };
8833
8946
 
8834
8947
  // src/components/organisms/toast/toast.tsx
8835
- import clsx47 from "clsx";
8948
+ import clsx48 from "clsx";
8836
8949
  import { useEffect as useEffect15, useState as useState31 } from "react";
8837
8950
  import { FaTimesCircle as FaTimesCircle2, FaCheckCircle as FaCheckCircle2, FaExclamationTriangle as FaExclamationTriangle3, FaInfoCircle as FaInfoCircle2, FaTimes as FaTimes10 } from "react-icons/fa";
8838
8951
  import { jsx as jsx64, jsxs as jsxs49 } from "react/jsx-runtime";
@@ -8878,7 +8991,7 @@ function ITToast({
8878
8991
  return /* @__PURE__ */ jsxs49(
8879
8992
  "div",
8880
8993
  {
8881
- className: clsx47(
8994
+ className: clsx48(
8882
8995
  "fixed z-[80] p-4 rounded-xl shadow-xl flex items-center justify-between gap-4 transition-all duration-300 text-white min-w-[300px]",
8883
8996
  positionStyles[position],
8884
8997
  {
@@ -8916,7 +9029,7 @@ import {
8916
9029
  useRef as useRef21,
8917
9030
  useState as useState33
8918
9031
  } from "react";
8919
- import clsx49 from "clsx";
9032
+ import clsx50 from "clsx";
8920
9033
  import {
8921
9034
  FaBold,
8922
9035
  FaEraser,
@@ -8940,7 +9053,7 @@ var toolbarActions = [
8940
9053
 
8941
9054
  // src/components/atoms/tooltip/tooltip.tsx
8942
9055
  import { useState as useState32 } from "react";
8943
- import clsx48 from "clsx";
9056
+ import clsx49 from "clsx";
8944
9057
  import { jsx as jsx65, jsxs as jsxs50 } from "react/jsx-runtime";
8945
9058
  var positionClasses2 = {
8946
9059
  top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
@@ -8973,14 +9086,14 @@ function ITTooltip({
8973
9086
  return /* @__PURE__ */ jsxs50(
8974
9087
  "div",
8975
9088
  {
8976
- className: clsx48("relative inline-flex", className),
9089
+ className: clsx49("relative inline-flex", className),
8977
9090
  onMouseEnter: handleMouseEnter,
8978
9091
  onMouseLeave: handleMouseLeave,
8979
9092
  children: [
8980
9093
  children,
8981
- visible && /* @__PURE__ */ jsxs50("div", { className: clsx48("absolute z-[70] pointer-events-none", positionClasses2[position]), children: [
9094
+ visible && /* @__PURE__ */ jsxs50("div", { className: clsx49("absolute z-[70] pointer-events-none", positionClasses2[position]), children: [
8982
9095
  /* @__PURE__ */ jsx65("div", { className: "bg-slate-800 dark:bg-slate-700 text-white text-xs rounded-lg px-2.5 py-1.5 whitespace-nowrap shadow-lg", children: /* @__PURE__ */ jsx65(ITText, { as: "span", children: content }) }),
8983
- /* @__PURE__ */ jsx65("div", { className: clsx48("absolute", arrowClasses[position]) })
9096
+ /* @__PURE__ */ jsx65("div", { className: clsx49("absolute", arrowClasses[position]) })
8984
9097
  ] })
8985
9098
  ]
8986
9099
  }
@@ -9424,7 +9537,7 @@ function ITWysiwyg({
9424
9537
  "aria-pressed": isActive,
9425
9538
  onMouseDown: (e) => e.preventDefault(),
9426
9539
  onClick: () => runAction(action),
9427
- className: clsx49(
9540
+ className: clsx50(
9428
9541
  "flex h-8 w-8 items-center justify-center rounded-md text-[13px] transition-colors",
9429
9542
  isActive ? "bg-primary-100 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300" : "text-secondary-500 hover:bg-secondary-200/70 hover:text-secondary-800 dark:text-secondary-400 dark:hover:bg-slate-700 dark:hover:text-secondary-200",
9430
9543
  isLocked && "cursor-not-allowed opacity-40"
@@ -9438,7 +9551,7 @@ function ITWysiwyg({
9438
9551
  /* @__PURE__ */ jsxs51(
9439
9552
  "div",
9440
9553
  {
9441
- className: clsx49(
9554
+ className: clsx50(
9442
9555
  "w-full border border-solid rounded-lg overflow-hidden transition-all duration-200",
9443
9556
  error ? "ring-2 ring-danger-100 border-danger-500" : "border-secondary-300 focus-within:ring-2 focus-within:border-primary-500 focus-within:ring-primary-100",
9444
9557
  isLocked && "opacity-50 cursor-not-allowed bg-secondary-100 dark:bg-slate-800"
@@ -9447,7 +9560,7 @@ function ITWysiwyg({
9447
9560
  /* @__PURE__ */ jsx66(
9448
9561
  "div",
9449
9562
  {
9450
- className: clsx49(
9563
+ className: clsx50(
9451
9564
  "flex flex-wrap items-center gap-0.5 px-1.5 py-1 border-b border-secondary-200 bg-secondary-50 dark:bg-slate-800",
9452
9565
  isLocked && "bg-secondary-100 dark:bg-slate-900"
9453
9566
  ),
@@ -9474,7 +9587,7 @@ function ITWysiwyg({
9474
9587
  focusedRef.current = false;
9475
9588
  emitChange();
9476
9589
  },
9477
- className: clsx49(
9590
+ className: clsx50(
9478
9591
  "outline-none bg-white dark:bg-slate-900 text-secondary-800 dark:text-secondary-200",
9479
9592
  "empty:before:content-[attr(data-placeholder)] empty:before:text-secondary-400 empty:before:pointer-events-none empty:before:select-none",
9480
9593
  "[&_ul]:list-disc [&_ol]:list-decimal [&_ul]:pl-5 [&_ol]:pl-5 [&_li]:ml-4",
@@ -9498,7 +9611,7 @@ function ITWysiwyg({
9498
9611
  // src/components/organisms/dropfile/dropfile.tsx
9499
9612
  import { useState as useState34, useEffect as useEffect17 } from "react";
9500
9613
  import { useDropzone } from "react-dropzone";
9501
- import clsx50 from "clsx";
9614
+ import clsx51 from "clsx";
9502
9615
 
9503
9616
  // src/components/organisms/dropfile/dropfile.props.ts
9504
9617
  var FileTypeEnum = /* @__PURE__ */ ((FileTypeEnum2) => {
@@ -9801,7 +9914,7 @@ var ITDropfile = ({
9801
9914
  /* @__PURE__ */ jsx67(ITText, { as: "p", className: "text-[10px] text-secondary-500", children: selectedFile ? (selectedFile.size / 1024 / 1024).toFixed(2) + " MB" : "" })
9802
9915
  ] })
9803
9916
  ] }) }),
9804
- /* @__PURE__ */ jsx67("div", { className: clsx50("relative bg-secondary-100 flex items-center justify-center", !contentClassName ? "max-h-[200px] min-h-[100px] overflow-auto" : contentClassName), children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx67(
9917
+ /* @__PURE__ */ jsx67("div", { className: clsx51("relative bg-secondary-100 flex items-center justify-center", !contentClassName ? "max-h-[200px] min-h-[100px] overflow-auto" : contentClassName), children: selectedFile && fileType?.startsWith("image/") || !selectedFile && imagePreview ? /* @__PURE__ */ jsx67(
9805
9918
  "img",
9806
9919
  {
9807
9920
  src: imagePreview,
@@ -9865,7 +9978,7 @@ var ITDropfile = ({
9865
9978
  ] }) });
9866
9979
  if (view === "button") {
9867
9980
  const hasFile = Boolean(selectedFile || imagePreview);
9868
- return /* @__PURE__ */ jsxs52("div", { className: clsx50("inline-block", containerClassName), children: [
9981
+ return /* @__PURE__ */ jsxs52("div", { className: clsx51("inline-block", containerClassName), children: [
9869
9982
  /* @__PURE__ */ jsx67(
9870
9983
  ITButton,
9871
9984
  {
@@ -9887,7 +10000,7 @@ var ITDropfile = ({
9887
10000
  ] }) })
9888
10001
  ] });
9889
10002
  }
9890
- return /* @__PURE__ */ jsxs52("div", { className: clsx50("w-full transition-all duration-300", containerClassName), children: [
10003
+ return /* @__PURE__ */ jsxs52("div", { className: clsx51("w-full transition-all duration-300", containerClassName), children: [
9891
10004
  headerRow,
9892
10005
  dropZoneOrPreview
9893
10006
  ] });
@@ -9896,7 +10009,7 @@ var dropfile_default = ITDropfile;
9896
10009
 
9897
10010
  // src/components/templates/layout/layout.tsx
9898
10011
  import { useState as useState36 } from "react";
9899
- import clsx51 from "clsx";
10012
+ import clsx52 from "clsx";
9900
10013
 
9901
10014
  // src/components/organisms/topbar/topbar.tsx
9902
10015
  import { FaUserCircle as FaUserCircle2, FaBars } from "react-icons/fa";
@@ -9911,21 +10024,24 @@ function ITTopBar({
9911
10024
  showMobileMenuButton,
9912
10025
  onToggleMobileMenu,
9913
10026
  navItems,
9914
- onNavItemClick
10027
+ onNavItemClick,
10028
+ hideBrandOnDesktop = false
9915
10029
  }) {
10030
+ const flat = useITFlatAppearance();
10031
+ const initials = (userMenu?.userName ?? "").trim().split(/\s+/).slice(0, 2).map((word) => word.charAt(0).toUpperCase()).join("");
9916
10032
  const [isUserMenuOpen, setIsUserMenuOpen] = useState35(false);
9917
10033
  const userMenuRef = useRef22(null);
9918
10034
  useClickOutside_default(userMenuRef, () => setIsUserMenuOpen(false));
9919
10035
  return /* @__PURE__ */ jsx68(
9920
10036
  "header",
9921
10037
  {
9922
- className: "sticky top-0 z-40 backdrop-blur-md transition-all duration-300",
10038
+ className: `sticky top-0 z-40 transition-all duration-300 ${flat ? "" : "backdrop-blur-md"}`,
9923
10039
  style: {
9924
10040
  backgroundColor: "var(--it-topbar-bg, rgba(255, 255, 255, 0.9))",
9925
10041
  borderBottom: "1px solid var(--it-topbar-border, rgba(15, 23, 42, 0.06))",
9926
- boxShadow: "var(--shadow-xs)"
10042
+ boxShadow: flat ? "none" : "var(--shadow-xs)"
9927
10043
  },
9928
- children: /* @__PURE__ */ jsxs53("div", { className: "flex items-center justify-between h-[72px] px-6 lg:px-8", children: [
10044
+ children: /* @__PURE__ */ jsxs53("div", { className: `flex items-center justify-between px-6 lg:px-8 ${flat ? "h-[64px]" : "h-[72px]"}`, children: [
9929
10045
  /* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-5", children: [
9930
10046
  showMobileMenuButton && /* @__PURE__ */ jsx68(
9931
10047
  "button",
@@ -9940,7 +10056,7 @@ function ITTopBar({
9940
10056
  children: /* @__PURE__ */ jsx68(FaBars, { className: "w-[1.125rem] h-[1.125rem]" })
9941
10057
  }
9942
10058
  ),
9943
- /* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-3", children: [
10059
+ /* @__PURE__ */ jsxs53("div", { className: `items-center gap-3 ${hideBrandOnDesktop ? "flex lg:hidden" : "flex"}`, children: [
9944
10060
  logo && /* @__PURE__ */ jsx68("div", { className: "flex-shrink-0 drop-shadow-sm", children: logo }),
9945
10061
  logoText && /* @__PURE__ */ jsx68(
9946
10062
  ITText,
@@ -9974,7 +10090,7 @@ function ITTopBar({
9974
10090
  item.id
9975
10091
  )) })
9976
10092
  ] }),
9977
- centerContent && /* @__PURE__ */ jsx68("div", { className: "hidden lg:flex flex-1 min-w-0 items-center justify-center px-4", children: /* @__PURE__ */ jsx68("div", { className: "w-full max-w-[420px]", children: centerContent }) }),
10093
+ centerContent && /* @__PURE__ */ jsx68("div", { className: `hidden lg:flex flex-1 min-w-0 items-center ${hideBrandOnDesktop ? "justify-start pr-4" : "justify-center px-4"}`, children: /* @__PURE__ */ jsx68("div", { className: "w-full max-w-[420px]", children: centerContent }) }),
9978
10094
  (children || userMenu) && /* @__PURE__ */ jsxs53("div", { className: "flex items-center gap-2", children: [
9979
10095
  children,
9980
10096
  userMenu && /* @__PURE__ */ jsxs53("div", { className: "relative", children: [
@@ -9982,7 +10098,7 @@ function ITTopBar({
9982
10098
  "button",
9983
10099
  {
9984
10100
  type: "button",
9985
- className: "flex items-center gap-3 rounded-full pl-2 pr-4 py-1.5 transition-all duration-200 ease-[cubic-bezier(0.2,0,0,1)] border border-transparent hover:border-secondary-200",
10101
+ className: `flex items-center gap-3 rounded-full py-1.5 transition-all duration-200 ease-[cubic-bezier(0.2,0,0,1)] border border-transparent hover:border-secondary-200 ${flat ? "flex-row-reverse pl-4 pr-2" : "pl-2 pr-4"}`,
9986
10102
  style: {
9987
10103
  backgroundColor: isUserMenuOpen ? "var(--it-topbar-user-hover, #f1f5f9)" : "transparent"
9988
10104
  },
@@ -10002,10 +10118,21 @@ function ITTopBar({
10002
10118
  src: userMenu.userImage,
10003
10119
  alt: "Current user"
10004
10120
  }
10121
+ ) : flat && initials ? /* @__PURE__ */ jsx68(
10122
+ "div",
10123
+ {
10124
+ "aria-hidden": "true",
10125
+ className: "w-9 h-9 rounded-full flex items-center justify-center text-[0.8rem] font-semibold",
10126
+ style: {
10127
+ backgroundColor: "color-mix(in srgb, var(--color-primary, #3b82f6) 14%, transparent)",
10128
+ color: "var(--color-primary, #2563eb)"
10129
+ },
10130
+ children: initials
10131
+ }
10005
10132
  ) : /* @__PURE__ */ jsx68("div", { className: "w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm", children: /* @__PURE__ */ jsx68(FaUserCircle2, { className: "w-6 h-6", style: { color: "var(--it-topbar-icon, #94a3b8)" } }) }),
10006
- /* @__PURE__ */ jsx68("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
10133
+ !flat && /* @__PURE__ */ jsx68("div", { className: "absolute bottom-0 right-0 w-2.5 h-2.5 bg-green-500 border-2 border-white rounded-full" })
10007
10134
  ] }),
10008
- /* @__PURE__ */ jsxs53("div", { className: "hidden sm:flex flex-col text-left py-0.5", children: [
10135
+ /* @__PURE__ */ jsxs53("div", { className: `hidden sm:flex flex-col py-0.5 ${flat ? "text-right" : "text-left"}`, children: [
10009
10136
  /* @__PURE__ */ jsx68(
10010
10137
  ITText,
10011
10138
  {
@@ -10086,75 +10213,102 @@ function ITLayout({
10086
10213
  sidebar,
10087
10214
  children,
10088
10215
  className = "",
10089
- contentClassName = ""
10216
+ contentClassName = "",
10217
+ sidebarFullHeight = false
10090
10218
  }) {
10091
10219
  const [internalCollapsed, setInternalCollapsed] = useState36(true);
10092
10220
  const [mobileSidebarOpen, setMobileSidebarOpen] = useState36(false);
10221
+ const flat = useITFlatAppearance();
10093
10222
  const isControlled = sidebar.isCollapsed !== void 0;
10094
10223
  const desktopCollapsed = isControlled ? sidebar.isCollapsed : internalCollapsed;
10095
10224
  const handleToggleCollapse = isControlled ? sidebar.onToggleCollapse ?? (() => {
10096
10225
  }) : () => setInternalCollapsed((v) => !v);
10097
10226
  const layoutTokens = theme.layout;
10098
- return /* @__PURE__ */ jsxs54("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
10099
- /* @__PURE__ */ jsx69(
10100
- ITTopBar,
10227
+ const reservedWidth = desktopCollapsed ? "w-[88px]" : flat ? "w-[248px]" : "w-[280px]";
10228
+ const brand = sidebarFullHeight ? sidebar.brand ?? { logo: topBar.logo, text: topBar.logoText } : sidebar.brand;
10229
+ const topBarNode = /* @__PURE__ */ jsx69(
10230
+ ITTopBar,
10231
+ {
10232
+ ...topBar,
10233
+ hideBrandOnDesktop: sidebarFullHeight || topBar.hideBrandOnDesktop,
10234
+ showMobileMenuButton: true,
10235
+ onToggleMobileMenu: () => setMobileSidebarOpen((v) => !v)
10236
+ }
10237
+ );
10238
+ const desktopSidebar = (
10239
+ // Full-height: the sidebar sits beside the top bar, so it needs to win the
10240
+ // stacking order when the collapsed rail expands over the content on hover.
10241
+ /* @__PURE__ */ jsxs54("div", { className: `hidden lg:block relative h-full ${sidebarFullHeight ? "z-50" : "z-40"}`, children: [
10242
+ /* @__PURE__ */ jsx69("div", { className: `${reservedWidth} h-full flex-shrink-0` }),
10243
+ /* @__PURE__ */ jsx69("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ jsx69(
10244
+ ITSidebar,
10245
+ {
10246
+ ...sidebar,
10247
+ brand,
10248
+ isCollapsed: desktopCollapsed,
10249
+ onToggleCollapse: handleToggleCollapse,
10250
+ visibleOnMobile: false,
10251
+ className: `h-full ${flat ? "" : "drop-shadow-2xl"} transition-all duration-400 ease-[cubic-bezier(0.2,0,0,1)] flex-shrink-0`
10252
+ }
10253
+ ) })
10254
+ ] })
10255
+ );
10256
+ const mobileSidebar = mobileSidebarOpen && /* @__PURE__ */ jsx69(
10257
+ "div",
10258
+ {
10259
+ className: "lg:hidden fixed inset-0 z-[40] transition-opacity duration-300 backdrop-blur-sm bg-black/40",
10260
+ onClick: () => setMobileSidebarOpen(false),
10261
+ children: /* @__PURE__ */ jsx69(
10262
+ "div",
10263
+ {
10264
+ className: "h-full w-fit flex transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
10265
+ onClick: (e) => e.stopPropagation(),
10266
+ children: /* @__PURE__ */ jsx69(
10267
+ ITSidebar,
10268
+ {
10269
+ ...sidebar,
10270
+ brand,
10271
+ isCollapsed: false,
10272
+ visibleOnMobile: true,
10273
+ className: "h-full shadow-2xl relative z-[60]",
10274
+ onToggleCollapse: () => setMobileSidebarOpen(false),
10275
+ onItemClick: () => setMobileSidebarOpen(false),
10276
+ onSubItemClick: () => setMobileSidebarOpen(false)
10277
+ }
10278
+ )
10279
+ }
10280
+ )
10281
+ }
10282
+ );
10283
+ const main = /* @__PURE__ */ jsx69("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ jsx69("div", { className: clsx52("mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8 py-6 h-full", contentClassName), children }) });
10284
+ if (sidebarFullHeight) {
10285
+ return /* @__PURE__ */ jsxs54(
10286
+ "div",
10101
10287
  {
10102
- ...topBar,
10103
- showMobileMenuButton: true,
10104
- onToggleMobileMenu: () => setMobileSidebarOpen((v) => !v)
10288
+ className: `flex h-screen overflow-hidden w-full relative ${className}`,
10289
+ style: { backgroundColor: layoutTokens.backgroundColor },
10290
+ children: [
10291
+ desktopSidebar,
10292
+ /* @__PURE__ */ jsxs54("div", { className: "flex flex-col flex-1 min-w-0 overflow-hidden", children: [
10293
+ topBarNode,
10294
+ main
10295
+ ] }),
10296
+ mobileSidebar
10297
+ ]
10105
10298
  }
10106
- ),
10299
+ );
10300
+ }
10301
+ return /* @__PURE__ */ jsxs54("div", { className: `flex flex-col h-screen overflow-hidden w-full ${className}`, children: [
10302
+ topBarNode,
10107
10303
  /* @__PURE__ */ jsxs54(
10108
10304
  "div",
10109
10305
  {
10110
10306
  className: "flex flex-1 overflow-hidden relative",
10111
10307
  style: { backgroundColor: layoutTokens.backgroundColor },
10112
10308
  children: [
10113
- /* @__PURE__ */ jsxs54("div", { className: "hidden lg:block relative z-40 h-full", children: [
10114
- /* @__PURE__ */ jsx69(
10115
- "div",
10116
- {
10117
- className: `${desktopCollapsed ? "w-[88px]" : "w-[280px]"} h-full flex-shrink-0`
10118
- }
10119
- ),
10120
- /* @__PURE__ */ jsx69("div", { className: "absolute top-0 left-0 h-full", children: /* @__PURE__ */ jsx69(
10121
- ITSidebar,
10122
- {
10123
- ...sidebar,
10124
- isCollapsed: desktopCollapsed,
10125
- onToggleCollapse: handleToggleCollapse,
10126
- visibleOnMobile: false,
10127
- className: "h-full drop-shadow-2xl transition-all duration-400 ease-[cubic-bezier(0.2,0,0,1)] flex-shrink-0"
10128
- }
10129
- ) })
10130
- ] }),
10131
- mobileSidebarOpen && /* @__PURE__ */ jsx69(
10132
- "div",
10133
- {
10134
- className: "lg:hidden fixed inset-0 z-[40] transition-opacity duration-300 backdrop-blur-sm bg-black/40",
10135
- onClick: () => setMobileSidebarOpen(false),
10136
- children: /* @__PURE__ */ jsx69(
10137
- "div",
10138
- {
10139
- className: "h-full w-fit flex transform transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)]",
10140
- onClick: (e) => e.stopPropagation(),
10141
- children: /* @__PURE__ */ jsx69(
10142
- ITSidebar,
10143
- {
10144
- ...sidebar,
10145
- isCollapsed: false,
10146
- visibleOnMobile: true,
10147
- className: "h-full shadow-2xl relative z-[60]",
10148
- onToggleCollapse: () => setMobileSidebarOpen(false),
10149
- onItemClick: () => setMobileSidebarOpen(false),
10150
- onSubItemClick: () => setMobileSidebarOpen(false)
10151
- }
10152
- )
10153
- }
10154
- )
10155
- }
10156
- ),
10157
- /* @__PURE__ */ jsx69("main", { className: "flex-1 overflow-y-auto w-full custom-scrollbar relative z-0", children: /* @__PURE__ */ jsx69("div", { className: clsx51("mx-auto w-full max-w-7xl px-4 sm:px-6 lg:px-8 py-6 h-full", contentClassName), children }) })
10309
+ desktopSidebar,
10310
+ mobileSidebar,
10311
+ main
10158
10312
  ]
10159
10313
  }
10160
10314
  )
@@ -10247,7 +10401,7 @@ function ITLoader({
10247
10401
  }
10248
10402
 
10249
10403
  // src/components/molecules/stepper/stepper.tsx
10250
- import clsx52 from "clsx";
10404
+ import clsx53 from "clsx";
10251
10405
  import { useEffect as useEffect18, useRef as useRef23, useState as useState37 } from "react";
10252
10406
  import { FaChevronLeft as FaChevronLeft4, FaChevronRight as FaChevronRight5, FaCheck as FaCheck5 } from "react-icons/fa";
10253
10407
  import { jsx as jsx71, jsxs as jsxs55 } from "react/jsx-runtime";
@@ -10324,7 +10478,7 @@ function ITStepper({
10324
10478
  }
10325
10479
  return /* @__PURE__ */ jsx71(ITText, { as: "span", className: "text-sm font-semibold", children: index + 1 });
10326
10480
  };
10327
- return /* @__PURE__ */ jsxs55("div", { className: clsx52("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
10481
+ return /* @__PURE__ */ jsxs55("div", { className: clsx53("w-full max-w-5xl mx-auto px-4", containerClassName), children: [
10328
10482
  /* @__PURE__ */ jsxs55("div", { className: "relative mb-8", children: [
10329
10483
  /* @__PURE__ */ jsx71(
10330
10484
  "div",
@@ -10359,7 +10513,7 @@ function ITStepper({
10359
10513
  /* @__PURE__ */ jsx71(
10360
10514
  "div",
10361
10515
  {
10362
- className: clsx52(
10516
+ className: clsx53(
10363
10517
  "flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300 transform",
10364
10518
  hasIcon && "p-2",
10365
10519
  isCompleted && "bg-slate-400 border-slate-400 text-white scale-100 shadow",
@@ -10374,7 +10528,7 @@ function ITStepper({
10374
10528
  ITText,
10375
10529
  {
10376
10530
  as: "span",
10377
- className: clsx52(
10531
+ className: clsx53(
10378
10532
  "mt-2 text-xs sm:text-sm font-medium transition-colors text-center",
10379
10533
  isCompleted ? "text-slate-400" : !isActive && "text-secondary-400"
10380
10534
  ),
@@ -10395,7 +10549,7 @@ function ITStepper({
10395
10549
  tabIndex: -1,
10396
10550
  role: "region",
10397
10551
  "aria-labelledby": `step-${currentStep}`,
10398
- className: clsx52(
10552
+ className: clsx53(
10399
10553
  stepClassName,
10400
10554
  "bg-white border border-secondary-100 rounded-2xl shadow-lg min-h-[280px] transition-transform duration-400 no-scrollbar p-6",
10401
10555
  scrollableContent && "overflow-y-auto hide-scrollbar"
@@ -10714,7 +10868,8 @@ function ITThemeProvider({
10714
10868
  showFab = true,
10715
10869
  density = 1,
10716
10870
  radius,
10717
- shadow
10871
+ shadow,
10872
+ appearance = "soft"
10718
10873
  }) {
10719
10874
  const [palette2, setPaletteState] = useState38(() => {
10720
10875
  const basePalette = {
@@ -10827,6 +10982,11 @@ function ITThemeProvider({
10827
10982
  root.style.fontSize = "";
10828
10983
  };
10829
10984
  }, [density]);
10985
+ useLayoutEffect4(() => {
10986
+ const root = document.documentElement;
10987
+ root.setAttribute("data-it-appearance", appearance);
10988
+ return () => root.removeAttribute("data-it-appearance");
10989
+ }, [appearance]);
10830
10990
  useLayoutEffect4(() => {
10831
10991
  const root = document.documentElement;
10832
10992
  const radiusTokens = ["xs", "sm", "md", "lg", "xl", "2xl", "3xl"];
@@ -12108,7 +12268,8 @@ function ITThemeProvider({
12108
12268
  applyPreset,
12109
12269
  resolvedTheme,
12110
12270
  darkModeMode,
12111
- setDarkModeMode
12271
+ setDarkModeMode,
12272
+ appearance
12112
12273
  },
12113
12274
  children: [
12114
12275
  children,
@@ -12368,6 +12529,7 @@ export {
12368
12529
  useDebouncedSearch,
12369
12530
  useEditableRow,
12370
12531
  useFloatingPanel,
12532
+ useITFlatAppearance,
12371
12533
  useITTheme,
12372
12534
  useITThemeSafe,
12373
12535
  useTableState