@navservice/usuario 1.37.0 → 1.39.0

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,2 +1,2 @@
1
- declare const Logo: () => import("react/jsx-runtime").JSX.Element;
2
- export default Logo;
1
+ declare const Breadcrumb: () => import("react/jsx-runtime").JSX.Element | null;
2
+ export default Breadcrumb;
package/build/es/index.js CHANGED
@@ -7352,14 +7352,126 @@ const DrawerFullScreen = /*#__PURE__*/ forwardRef(({ title, children, onClose },
7352
7352
  ]
7353
7353
  });
7354
7354
  });
7355
- const Logo = ()=>/*#__PURE__*/ jsx("div", {
7356
- className: "flex items-center justify-center relative",
7357
- children: /*#__PURE__*/ jsx("h4", {
7358
- className: "text-lg font-semibold text-theme-text",
7359
- children: "Login"
7360
- })
7355
+ const pathLabels = {
7356
+ dashboard: "Dashboard",
7357
+ produtos: "Produtos",
7358
+ categorias: "Categorias",
7359
+ usuarios: "Usuários",
7360
+ configuracoes: "Configurações",
7361
+ perfil: "Perfil"
7362
+ };
7363
+ const Breadcrumb = ()=>{
7364
+ const navigate = useNavigate();
7365
+ const location = useLocation();
7366
+ const breadcrumbs = useMemo(()=>{
7367
+ const paths = location.pathname.split("/").filter(Boolean);
7368
+ const items = [];
7369
+ paths.forEach((path, index)=>{
7370
+ const fullPath = `/${paths.slice(0, index + 1).join("/")}`;
7371
+ const label = pathLabels[path] || path.charAt(0).toUpperCase() + path.slice(1);
7372
+ items.push({
7373
+ label,
7374
+ path: fullPath
7375
+ });
7376
+ });
7377
+ return items;
7378
+ }, [
7379
+ location.pathname
7380
+ ]);
7381
+ const handleNavigate = (path)=>{
7382
+ navigate(path);
7383
+ };
7384
+ if (0 === breadcrumbs.length) return null;
7385
+ return /*#__PURE__*/ jsxs("nav", {
7386
+ "aria-label": "Breadcrumb",
7387
+ className: "flex items-center gap-1 overflow-x-auto py-2",
7388
+ children: [
7389
+ /*#__PURE__*/ jsxs(motion.button, {
7390
+ type: "button",
7391
+ "aria-label": "Ir para p\xe1gina inicial",
7392
+ onClick: ()=>navigate("/"),
7393
+ className: "group inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-sm font-medium text-gray-600 transition-all hover:bg-black/5 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-theme-primary focus-visible:ring-offset-2",
7394
+ initial: {
7395
+ opacity: 0,
7396
+ x: -8
7397
+ },
7398
+ animate: {
7399
+ opacity: 1,
7400
+ x: 0
7401
+ },
7402
+ transition: {
7403
+ duration: 0.2
7404
+ },
7405
+ whileHover: {
7406
+ scale: 1.02
7407
+ },
7408
+ whileTap: {
7409
+ scale: 0.98
7410
+ },
7411
+ children: [
7412
+ /*#__PURE__*/ jsx(House, {
7413
+ size: 16,
7414
+ className: "transition-transform group-hover:scale-110"
7415
+ }),
7416
+ /*#__PURE__*/ jsx("span", {
7417
+ className: "hidden sm:inline",
7418
+ children: "In\xedcio"
7419
+ })
7420
+ ]
7421
+ }),
7422
+ breadcrumbs.map((item, index)=>{
7423
+ const isLast = index === breadcrumbs.length - 1;
7424
+ return /*#__PURE__*/ jsxs(motion.div, {
7425
+ className: "flex items-center gap-1",
7426
+ initial: {
7427
+ opacity: 0,
7428
+ x: -8
7429
+ },
7430
+ animate: {
7431
+ opacity: 1,
7432
+ x: 0
7433
+ },
7434
+ transition: {
7435
+ duration: 0.2,
7436
+ delay: 0.05 * index
7437
+ },
7438
+ children: [
7439
+ /*#__PURE__*/ jsx(ChevronRight, {
7440
+ size: 16,
7441
+ className: "text-gray-400 dark:text-gray-600",
7442
+ "aria-hidden": "true"
7443
+ }),
7444
+ isLast ? /*#__PURE__*/ jsx("span", {
7445
+ className: "rounded-lg px-2.5 py-1.5 text-sm font-semibold text-gray-900 dark:text-gray-100",
7446
+ "aria-current": "page",
7447
+ children: item.label
7448
+ }) : /*#__PURE__*/ jsx(motion.button, {
7449
+ type: "button",
7450
+ onClick: ()=>handleNavigate(item.path),
7451
+ className: "group rounded-lg px-2.5 py-1.5 text-sm font-medium text-gray-600 transition-all hover:bg-black/5 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-theme-primary focus-visible:ring-offset-2",
7452
+ whileHover: {
7453
+ scale: 1.02
7454
+ },
7455
+ whileTap: {
7456
+ scale: 0.98
7457
+ },
7458
+ children: /*#__PURE__*/ jsxs("span", {
7459
+ className: "relative",
7460
+ children: [
7461
+ item.label,
7462
+ /*#__PURE__*/ jsx("span", {
7463
+ className: "absolute bottom-0 left-0 h-[2px] w-0 bg-current transition-all group-hover:w-full"
7464
+ })
7465
+ ]
7466
+ })
7467
+ })
7468
+ ]
7469
+ }, item.path);
7470
+ })
7471
+ ]
7361
7472
  });
7362
- const NavBar_Logo = Logo;
7473
+ };
7474
+ const Logo = Breadcrumb;
7363
7475
  /**
7364
7476
  * @license lucide-react v0.544.0 - ISC
7365
7477
  *
@@ -7573,19 +7685,11 @@ function Profile({ isCollapsed = false }) {
7573
7685
  }, []);
7574
7686
  const initials = name.split(" ").map((n)=>n[0]).join("").toUpperCase().slice(0, 2);
7575
7687
  const menuItems = [
7576
- {
7577
- icon: User,
7578
- label: "Meu Perfil",
7579
- action: ()=>{
7580
- navigate("/app/configuracoes/perfil");
7581
- setOpen(false);
7582
- }
7583
- },
7584
7688
  {
7585
7689
  icon: Settings,
7586
7690
  label: "Configurações",
7587
7691
  action: ()=>{
7588
- navigate("/app/configuracoes/perfil");
7692
+ navigate("/app/configuracoes");
7589
7693
  setOpen(false);
7590
7694
  }
7591
7695
  }
@@ -7691,29 +7795,26 @@ function Profile({ isCollapsed = false }) {
7691
7795
  ]
7692
7796
  })
7693
7797
  }, idx)),
7694
- /*#__PURE__*/ jsx(DarkMode, {})
7798
+ /*#__PURE__*/ jsx(DarkMode, {}),
7799
+ /*#__PURE__*/ jsx("button", {
7800
+ onClick: ()=>contexto_contexto_usuario.contexto.state.set_signout(),
7801
+ className: " w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm text-error-600 font-semibold hover:bg-error-50/10 hover:translate-x-[2px] transition-all ",
7802
+ children: /*#__PURE__*/ jsxs("div", {
7803
+ className: "flex items-center gap-3",
7804
+ children: [
7805
+ /*#__PURE__*/ jsx(LogOut, {
7806
+ className: "w-4 h-4"
7807
+ }),
7808
+ /*#__PURE__*/ jsx("span", {
7809
+ children: "Sair da conta"
7810
+ })
7811
+ ]
7812
+ })
7813
+ })
7695
7814
  ]
7696
7815
  }),
7697
7816
  /*#__PURE__*/ jsx("div", {
7698
- className: "mx-4 my-2 h-px bg-theme-border/50"
7699
- }),
7700
- /*#__PURE__*/ jsx("div", {
7701
- className: "p-2",
7702
- children: /*#__PURE__*/ jsx("button", {
7703
- onClick: ()=>contexto_contexto_usuario.contexto.state.set_signout(),
7704
- className: " w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm text-error-600 font-semibold hover:bg-error-50/10 hover:translate-x-[2px] transition-all ",
7705
- children: /*#__PURE__*/ jsxs("div", {
7706
- className: "flex items-center gap-3",
7707
- children: [
7708
- /*#__PURE__*/ jsx(LogOut, {
7709
- className: "w-4 h-4"
7710
- }),
7711
- /*#__PURE__*/ jsx("span", {
7712
- children: "Sair da conta"
7713
- })
7714
- ]
7715
- })
7716
- })
7817
+ className: "h-px bg-theme-border/50"
7717
7818
  }),
7718
7819
  /*#__PURE__*/ jsxs("div", {
7719
7820
  className: "px-4 py-3 border-t border-theme-border bg-theme-bg rounded-b-2xl text-xs text-theme-text/60 flex justify-between",
@@ -7725,7 +7826,7 @@ function Profile({ isCollapsed = false }) {
7725
7826
  ]
7726
7827
  }),
7727
7828
  /*#__PURE__*/ jsx("span", {
7728
- children: "Code Haus"
7829
+ children: "Nav Software"
7729
7830
  })
7730
7831
  ]
7731
7832
  })
@@ -7739,7 +7840,7 @@ const NavBar = ()=>/*#__PURE__*/ jsxs("nav", {
7739
7840
  children: [
7740
7841
  /*#__PURE__*/ jsx("div", {
7741
7842
  className: "flex items-center gap-3",
7742
- children: /*#__PURE__*/ jsx(NavBar_Logo, {})
7843
+ children: /*#__PURE__*/ jsx(Logo, {})
7743
7844
  }),
7744
7845
  /*#__PURE__*/ jsx("div", {
7745
7846
  className: "flex items-center gap-3",
@@ -1,2 +1,2 @@
1
- declare const Logo: () => import("react/jsx-runtime").JSX.Element;
2
- export default Logo;
1
+ declare const Breadcrumb: () => import("react/jsx-runtime").JSX.Element | null;
2
+ export default Breadcrumb;
@@ -50696,16 +50696,130 @@ const DrawerFullScreen = /*#__PURE__*/ (0,react.forwardRef)(({ title, children,
50696
50696
 
50697
50697
  ;// CONCATENATED MODULE: ./src/componentes/layout/NavBar/Logo.tsx
50698
50698
 
50699
- const Logo = ()=>{
50700
- return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
50701
- className: "flex items-center justify-center relative",
50702
- children: /*#__PURE__*/ (0,jsx_runtime.jsx)("h4", {
50703
- className: "text-lg font-semibold text-theme-text",
50704
- children: "Login"
50705
- })
50699
+
50700
+
50701
+
50702
+
50703
+ const pathLabels = {
50704
+ dashboard: "Dashboard",
50705
+ produtos: "Produtos",
50706
+ categorias: "Categorias",
50707
+ usuarios: "Usuários",
50708
+ configuracoes: "Configurações",
50709
+ perfil: "Perfil"
50710
+ };
50711
+ const Breadcrumb = ()=>{
50712
+ const navigate = useNavigate();
50713
+ const location = useLocation();
50714
+ const breadcrumbs = (0,react.useMemo)(()=>{
50715
+ const paths = location.pathname.split("/").filter(Boolean);
50716
+ const items = [];
50717
+ paths.forEach((path, index)=>{
50718
+ const fullPath = `/${paths.slice(0, index + 1).join("/")}`;
50719
+ const label = pathLabels[path] || path.charAt(0).toUpperCase() + path.slice(1);
50720
+ items.push({
50721
+ label,
50722
+ path: fullPath
50723
+ });
50724
+ });
50725
+ return items;
50726
+ }, [
50727
+ location.pathname
50728
+ ]);
50729
+ const handleNavigate = (path)=>{
50730
+ navigate(path);
50731
+ };
50732
+ if (breadcrumbs.length === 0) return null;
50733
+ return /*#__PURE__*/ (0,jsx_runtime.jsxs)("nav", {
50734
+ "aria-label": "Breadcrumb",
50735
+ className: "flex items-center gap-1 overflow-x-auto py-2",
50736
+ children: [
50737
+ /*#__PURE__*/ (0,jsx_runtime.jsxs)(motion.button, {
50738
+ type: "button",
50739
+ "aria-label": "Ir para p\xe1gina inicial",
50740
+ onClick: ()=>navigate("/"),
50741
+ className: "group inline-flex items-center gap-1.5 rounded-lg px-2.5 py-1.5 text-sm font-medium text-gray-600 transition-all hover:bg-black/5 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-theme-primary focus-visible:ring-offset-2",
50742
+ initial: {
50743
+ opacity: 0,
50744
+ x: -8
50745
+ },
50746
+ animate: {
50747
+ opacity: 1,
50748
+ x: 0
50749
+ },
50750
+ transition: {
50751
+ duration: 0.2
50752
+ },
50753
+ whileHover: {
50754
+ scale: 1.02
50755
+ },
50756
+ whileTap: {
50757
+ scale: 0.98
50758
+ },
50759
+ children: [
50760
+ /*#__PURE__*/ (0,jsx_runtime.jsx)(House, {
50761
+ size: 16,
50762
+ className: "transition-transform group-hover:scale-110"
50763
+ }),
50764
+ /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
50765
+ className: "hidden sm:inline",
50766
+ children: "In\xedcio"
50767
+ })
50768
+ ]
50769
+ }),
50770
+ breadcrumbs.map((item, index)=>{
50771
+ const isLast = index === breadcrumbs.length - 1;
50772
+ return /*#__PURE__*/ (0,jsx_runtime.jsxs)(motion.div, {
50773
+ className: "flex items-center gap-1",
50774
+ initial: {
50775
+ opacity: 0,
50776
+ x: -8
50777
+ },
50778
+ animate: {
50779
+ opacity: 1,
50780
+ x: 0
50781
+ },
50782
+ transition: {
50783
+ duration: 0.2,
50784
+ delay: index * 0.05
50785
+ },
50786
+ children: [
50787
+ /*#__PURE__*/ (0,jsx_runtime.jsx)(ChevronRight, {
50788
+ size: 16,
50789
+ className: "text-gray-400 dark:text-gray-600",
50790
+ "aria-hidden": "true"
50791
+ }),
50792
+ isLast ? /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
50793
+ className: "rounded-lg px-2.5 py-1.5 text-sm font-semibold text-gray-900 dark:text-gray-100",
50794
+ "aria-current": "page",
50795
+ children: item.label
50796
+ }) : /*#__PURE__*/ (0,jsx_runtime.jsx)(motion.button, {
50797
+ type: "button",
50798
+ onClick: ()=>handleNavigate(item.path),
50799
+ className: "group rounded-lg px-2.5 py-1.5 text-sm font-medium text-gray-600 transition-all hover:bg-black/5 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-gray-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-theme-primary focus-visible:ring-offset-2",
50800
+ whileHover: {
50801
+ scale: 1.02
50802
+ },
50803
+ whileTap: {
50804
+ scale: 0.98
50805
+ },
50806
+ children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("span", {
50807
+ className: "relative",
50808
+ children: [
50809
+ item.label,
50810
+ /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
50811
+ className: "absolute bottom-0 left-0 h-[2px] w-0 bg-current transition-all group-hover:w-full"
50812
+ })
50813
+ ]
50814
+ })
50815
+ })
50816
+ ]
50817
+ }, item.path);
50818
+ })
50819
+ ]
50706
50820
  });
50707
50821
  };
50708
- /* export default */ const NavBar_Logo = (Logo);
50822
+ /* export default */ const Logo = (Breadcrumb);
50709
50823
 
50710
50824
  ;// CONCATENATED MODULE: ../../node_modules/lucide-react/dist/esm/icons/settings.js
50711
50825
  /**
@@ -50898,19 +51012,19 @@ function Profile({ isCollapsed = false }) {
50898
51012
  }, []);
50899
51013
  const initials = name.split(" ").map((n)=>n[0]).join("").toUpperCase().slice(0, 2);
50900
51014
  const menuItems = [
50901
- {
50902
- icon: User,
50903
- label: "Meu Perfil",
50904
- action: ()=>{
50905
- navigate("/app/configuracoes/perfil");
50906
- setOpen(false);
50907
- }
50908
- },
51015
+ // {
51016
+ // icon: User,
51017
+ // label: "Meu Perfil",
51018
+ // action: () => {
51019
+ // navigate("/app/configuracoes");
51020
+ // setOpen(false);
51021
+ // },
51022
+ // },
50909
51023
  {
50910
51024
  icon: Settings,
50911
51025
  label: "Configurações",
50912
51026
  action: ()=>{
50913
- navigate("/app/configuracoes/perfil");
51027
+ navigate("/app/configuracoes");
50914
51028
  setOpen(false);
50915
51029
  }
50916
51030
  }
@@ -51016,29 +51130,26 @@ function Profile({ isCollapsed = false }) {
51016
51130
  ]
51017
51131
  })
51018
51132
  }, idx)),
51019
- /*#__PURE__*/ (0,jsx_runtime.jsx)(DarkMode, {})
51133
+ /*#__PURE__*/ (0,jsx_runtime.jsx)(DarkMode, {}),
51134
+ /*#__PURE__*/ (0,jsx_runtime.jsx)("button", {
51135
+ onClick: ()=>contexto_contexto_usuario.contexto.state.set_signout(),
51136
+ className: " w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm text-error-600 font-semibold hover:bg-error-50/10 hover:translate-x-[2px] transition-all ",
51137
+ children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
51138
+ className: "flex items-center gap-3",
51139
+ children: [
51140
+ /*#__PURE__*/ (0,jsx_runtime.jsx)(LogOut, {
51141
+ className: "w-4 h-4"
51142
+ }),
51143
+ /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
51144
+ children: "Sair da conta"
51145
+ })
51146
+ ]
51147
+ })
51148
+ })
51020
51149
  ]
51021
51150
  }),
51022
51151
  /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
51023
- className: "mx-4 my-2 h-px bg-theme-border/50"
51024
- }),
51025
- /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
51026
- className: "p-2",
51027
- children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", {
51028
- onClick: ()=>contexto_contexto_usuario.contexto.state.set_signout(),
51029
- className: " w-full flex items-center justify-between px-3 py-2.5 rounded-lg text-sm text-error-600 font-semibold hover:bg-error-50/10 hover:translate-x-[2px] transition-all ",
51030
- children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
51031
- className: "flex items-center gap-3",
51032
- children: [
51033
- /*#__PURE__*/ (0,jsx_runtime.jsx)(LogOut, {
51034
- className: "w-4 h-4"
51035
- }),
51036
- /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
51037
- children: "Sair da conta"
51038
- })
51039
- ]
51040
- })
51041
- })
51152
+ className: "h-px bg-theme-border/50"
51042
51153
  }),
51043
51154
  /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", {
51044
51155
  className: "px-4 py-3 border-t border-theme-border bg-theme-bg rounded-b-2xl text-xs text-theme-text/60 flex justify-between",
@@ -51050,7 +51161,7 @@ function Profile({ isCollapsed = false }) {
51050
51161
  ]
51051
51162
  }),
51052
51163
  /*#__PURE__*/ (0,jsx_runtime.jsx)("span", {
51053
- children: "Code Haus"
51164
+ children: "Nav Software"
51054
51165
  })
51055
51166
  ]
51056
51167
  })
@@ -51071,7 +51182,7 @@ const NavBar = ()=>{
51071
51182
  children: [
51072
51183
  /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
51073
51184
  className: "flex items-center gap-3",
51074
- children: /*#__PURE__*/ (0,jsx_runtime.jsx)(NavBar_Logo, {})
51185
+ children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Logo, {})
51075
51186
  }),
51076
51187
  /*#__PURE__*/ (0,jsx_runtime.jsx)("div", {
51077
51188
  className: "flex items-center gap-3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navservice/usuario",
3
- "version": "1.37.0",
3
+ "version": "1.39.0",
4
4
  "description": "Service de autenticação de usuários unificado",
5
5
  "type": "module",
6
6
  "main": "./build/lib/index.js",