@omnifyjp/shell 0.1.3 → 0.3.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.
- package/dist/{chunk-YVUVYTVZ.js → chunk-3O4KCEIT.js} +8 -8
- package/dist/chunk-3O4KCEIT.js.map +1 -0
- package/dist/{chunk-QNCYBLHC.js → chunk-45TPWOB2.js} +8 -8
- package/dist/{chunk-QNCYBLHC.js.map → chunk-45TPWOB2.js.map} +1 -1
- package/dist/{chunk-Q3QWQG6P.js → chunk-CET5L4TV.js} +4 -4
- package/dist/{chunk-Q3QWQG6P.js.map → chunk-CET5L4TV.js.map} +1 -1
- package/dist/{chunk-WCRLQ5M5.js → chunk-IXZZBAMU.js} +8 -8
- package/dist/{chunk-WCRLQ5M5.js.map → chunk-IXZZBAMU.js.map} +1 -1
- package/dist/{chunk-OYE3TXTK.js → chunk-QPEMH6FP.js} +5 -5
- package/dist/{chunk-OYE3TXTK.js.map → chunk-QPEMH6FP.js.map} +1 -1
- package/dist/components/AppShell.js +5 -5
- package/dist/components/Header.js +2 -2
- package/dist/components/OrganizationSelector.js +1 -1
- package/dist/components/OrganizationSetupModal.js +1 -1
- package/dist/components/Sidebar.js +2 -2
- package/dist/index.js +5 -5
- package/package.json +3 -2
- package/dist/chunk-YVUVYTVZ.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OrganizationSelector } from './chunk-
|
|
1
|
+
import { OrganizationSelector } from './chunk-IXZZBAMU.js';
|
|
2
2
|
import { useOrganization } from './chunk-SHHZRZMM.js';
|
|
3
3
|
import { useState } from 'react';
|
|
4
4
|
import { useLocation, useParams, Link } from 'react-router';
|
|
@@ -32,7 +32,7 @@ function Sidebar({ config }) {
|
|
|
32
32
|
Link,
|
|
33
33
|
{
|
|
34
34
|
to: path,
|
|
35
|
-
className: `flex items-center ${collapsed ? "justify-center" : "gap-2"} px-3 py-2 rounded-md text-sm transition-colors ${active ? "bg-
|
|
35
|
+
className: `flex items-center ${collapsed ? "justify-center" : "gap-2"} px-3 py-2 rounded-md text-sm transition-colors ${active ? "bg-sidebar-primary/10 text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
36
36
|
children: [
|
|
37
37
|
/* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" }),
|
|
38
38
|
!collapsed && /* @__PURE__ */ jsx("span", { children: item.label }),
|
|
@@ -78,7 +78,7 @@ function Sidebar({ config }) {
|
|
|
78
78
|
"button",
|
|
79
79
|
{
|
|
80
80
|
onClick: () => toggleGroup(item.label),
|
|
81
|
-
className: `flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "bg-
|
|
81
|
+
className: `flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "bg-sidebar-primary/10 text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
82
82
|
children: /* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" })
|
|
83
83
|
}
|
|
84
84
|
) }),
|
|
@@ -90,7 +90,7 @@ function Sidebar({ config }) {
|
|
|
90
90
|
"button",
|
|
91
91
|
{
|
|
92
92
|
onClick: () => toggleGroup(item.label),
|
|
93
|
-
className: `flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "text-
|
|
93
|
+
className: `flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${groupActive ? "text-sidebar-primary font-medium" : "text-sidebar-foreground hover:bg-sidebar-accent"}`,
|
|
94
94
|
children: [
|
|
95
95
|
/* @__PURE__ */ jsx(Icon, { className: "w-4 h-4 flex-shrink-0" }),
|
|
96
96
|
/* @__PURE__ */ jsx("span", { children: item.label }),
|
|
@@ -106,7 +106,7 @@ function Sidebar({ config }) {
|
|
|
106
106
|
const footerItems = isInContext && sidebar.contextMenu?.getFooterItems ? sidebar.contextMenu.getFooterItems() : [];
|
|
107
107
|
return /* @__PURE__ */ jsxs("aside", { className: `${collapsed ? "w-16" : "w-64"} bg-sidebar border-r border-sidebar-border flex flex-col transition-all duration-300`, children: [
|
|
108
108
|
/* @__PURE__ */ jsx("div", { className: `h-header border-b border-sidebar-border flex items-center ${collapsed ? "justify-center" : "px-4"} transition-all duration-300`, children: /* @__PURE__ */ jsxs(Link, { to: "/", className: "flex items-center gap-2", children: [
|
|
109
|
-
/* @__PURE__ */ jsx("div", { className: `w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? "" : "bg-
|
|
109
|
+
/* @__PURE__ */ jsx("div", { className: `w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? "" : "bg-primary"}`, style: app.logo.color ? { backgroundColor: app.logo.color } : void 0, children: /* @__PURE__ */ jsx(app.logo.icon, { className: "w-4 h-4 text-white" }) }),
|
|
110
110
|
!collapsed && /* @__PURE__ */ jsx("span", { className: "font-bold text-sm", children: app.logo.text })
|
|
111
111
|
] }) }),
|
|
112
112
|
/* @__PURE__ */ jsx("nav", { className: "flex-1 px-3 py-3 overflow-y-auto", children: isInContext ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -123,7 +123,7 @@ function Sidebar({ config }) {
|
|
|
123
123
|
/* @__PURE__ */ jsx(
|
|
124
124
|
"input",
|
|
125
125
|
{
|
|
126
|
-
className: "w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-
|
|
126
|
+
className: "w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-ring bg-background",
|
|
127
127
|
placeholder: t("sidebar.searchProject"),
|
|
128
128
|
value: contextSearch,
|
|
129
129
|
onChange: (e) => setContextSearch(e.target.value),
|
|
@@ -220,5 +220,5 @@ function Sidebar({ config }) {
|
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
export { Sidebar };
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
224
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-3O4KCEIT.js.map
|
|
224
|
+
//# sourceMappingURL=chunk-3O4KCEIT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Sidebar.tsx"],"names":[],"mappings":"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","file":"chunk-3O4KCEIT.js","sourcesContent":["import { useState } from 'react';\nimport { useLocation, useParams, Link } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Separator } from '@omnifyjp/ui/components/separator';\nimport { Popover, PopoverContent, PopoverTrigger } from '@omnifyjp/ui/components/popover';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@omnifyjp/ui/components/tooltip';\nimport {\n ChevronsLeft,\n ChevronsRight,\n ChevronsUpDown,\n ChevronRight,\n Search,\n} from 'lucide-react';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { OrganizationSelector } from './OrganizationSelector';\nimport type { ShellConfig, SidebarMenuItem } from '../types';\n\ninterface SidebarProps {\n config: ShellConfig;\n}\n\nexport function Sidebar({ config }: SidebarProps) {\n const location = useLocation();\n const params = useParams();\n const [collapsed, setCollapsed] = useState(false);\n const [contextSwitcherOpen, setContextSwitcherOpen] = useState(false);\n const [contextSearch, setContextSearch] = useState('');\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set());\n const { t } = useTranslation('shell');\n const { selectedOrganization, selectedBranch } = useOrganization();\n\n const { app, sidebar } = config;\n\n // Determine if we're in context mode (e.g., inside a project)\n const contextParamValue = sidebar.contextMenu\n ? params[sidebar.contextMenu.paramName] as string | undefined\n : undefined;\n const isInContext = !!contextParamValue;\n\n const isActive = (path: string) => {\n return location.pathname === path || location.pathname.startsWith(path + '/');\n };\n\n const renderMenuItem = (item: SidebarMenuItem, active: boolean) => {\n const Icon = item.icon;\n const path = item.path!;\n const content = (\n <Link\n to={path}\n className={`flex items-center ${collapsed ? 'justify-center' : 'gap-2'} px-3 py-2 rounded-md text-sm transition-colors ${\n active\n ? 'bg-sidebar-primary/10 text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n {!collapsed && <span>{item.label}</span>}\n {!collapsed && item.badge !== undefined && item.badge > 0 && (\n <span className=\"ml-auto text-xs bg-muted text-muted-foreground px-1.5 py-0.5 rounded-full\">\n {item.badge}\n </span>\n )}\n </Link>\n );\n\n if (collapsed) {\n return (\n <TooltipProvider key={path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n {content}\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <div key={path}>{content}</div>;\n };\n\n const isGroupActive = (item: SidebarMenuItem): boolean => {\n if (item.children) {\n return item.children.some(child => child.path ? isActive(child.path) : false);\n }\n return item.path ? isActive(item.path) : false;\n };\n\n const toggleGroup = (label: string) => {\n setExpandedGroups(prev => {\n const next = new Set(prev);\n if (next.has(label)) {\n next.delete(label);\n } else {\n next.add(label);\n }\n return next;\n });\n };\n\n const renderMenuItemOrGroup = (item: SidebarMenuItem) => {\n if (!item.children) {\n return renderMenuItem(item, item.path ? isActive(item.path) : false);\n }\n\n const groupActive = isGroupActive(item);\n const isExpanded = expandedGroups.has(item.label) || groupActive;\n const Icon = item.icon;\n\n if (collapsed) {\n return (\n <TooltipProvider key={item.label} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'bg-sidebar-primary/10 text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return (\n <div key={item.label}>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'text-sidebar-primary font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n <span>{item.label}</span>\n <ChevronRight className={`w-3.5 h-3.5 ml-auto text-muted-foreground transition-transform duration-200 ${isExpanded ? 'rotate-90' : ''}`} />\n </button>\n {isExpanded && (\n <div className=\"ml-4 pl-2 border-l border-sidebar-border space-y-0.5 mt-0.5\">\n {item.children.map(child => renderMenuItem(child, child.path ? isActive(child.path) : false))}\n </div>\n )}\n </div>\n );\n };\n\n // Get context menu items if in context mode\n const contextMenuItems = isInContext && sidebar.contextMenu\n ? sidebar.contextMenu.getItems(contextParamValue!)\n : [];\n\n const contextHeader = isInContext && sidebar.contextMenu?.getHeader\n ? sidebar.contextMenu.getHeader(contextParamValue!)\n : null;\n\n const footerItems = isInContext && sidebar.contextMenu?.getFooterItems\n ? sidebar.contextMenu.getFooterItems()\n : [];\n\n return (\n <aside className={`${collapsed ? 'w-16' : 'w-64'} bg-sidebar border-r border-sidebar-border flex flex-col transition-all duration-300`}>\n {/* Logo */}\n <div className={`h-header border-b border-sidebar-border flex items-center ${collapsed ? 'justify-center' : 'px-4'} transition-all duration-300`}>\n <Link to=\"/\" className=\"flex items-center gap-2\">\n <div className={`w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? '' : 'bg-primary'}`} style={app.logo.color ? { backgroundColor: app.logo.color } : undefined}>\n <app.logo.icon className=\"w-4 h-4 text-white\" />\n </div>\n {!collapsed && <span className=\"font-bold text-sm\">{app.logo.text}</span>}\n </Link>\n </div>\n\n {/* Menu */}\n <nav className=\"flex-1 px-3 py-3 overflow-y-auto\">\n {isInContext ? (\n <>\n {/* Context Switcher (e.g., project switcher) */}\n {contextHeader && !collapsed ? (\n <Popover open={contextSwitcherOpen} onOpenChange={(open) => { setContextSwitcherOpen(open); if (!open) setContextSearch(''); }}>\n <PopoverTrigger asChild>\n <button className=\"w-full mb-3 px-3 py-2 flex items-center gap-2 rounded-md hover:bg-sidebar-accent transition-colors text-left\">\n {contextHeader}\n <ChevronsUpDown className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </button>\n </PopoverTrigger>\n <PopoverContent side=\"right\" align=\"start\" className=\"w-72 p-0\">\n <div className=\"p-2 border-b\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground\" />\n <input\n className=\"w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-ring bg-background\"\n placeholder={t('sidebar.searchProject')}\n value={contextSearch}\n onChange={(e) => setContextSearch(e.target.value)}\n autoFocus\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n ) : contextHeader && collapsed ? (\n <div className=\"mb-3 w-full flex justify-center py-1 rounded-md hover:bg-sidebar-accent transition-colors\">\n {contextHeader}\n </div>\n ) : null}\n\n {!collapsed && contextHeader && <Separator className=\"my-3\" />}\n\n {/* Context Menu Items */}\n <div className=\"space-y-1\">\n {contextMenuItems.map((item) => {\n const active = item.path ? isActive(item.path) : false;\n return renderMenuItem(item, active);\n })}\n </div>\n\n {footerItems.length > 0 && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n <div className=\"space-y-1\">\n {footerItems.map((item) => renderMenuItem(item, false))}\n </div>\n </>\n )}\n </>\n ) : (\n <>\n {/* Main Menu Items */}\n <div className=\"space-y-1\">\n {sidebar.menuItems.map((item) => renderMenuItemOrGroup(item))}\n </div>\n\n {sidebar.recentItems && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n\n {!collapsed ? (\n <div className=\"space-y-1\">\n <h3 className=\"px-3 py-1 text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {sidebar.recentItems.title}\n </h3>\n <div className=\"space-y-0.5\">\n {sidebar.recentItems.items.map((item) => (\n <Link\n key={item.path}\n to={item.path}\n className=\"flex items-center gap-2 px-3 py-2 rounded-md text-sm text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold flex-shrink-0\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n <span className=\"truncate\">{item.label}</span>\n </Link>\n ))}\n </div>\n </div>\n ) : (\n <div className=\"space-y-0.5 mt-3\">\n {sidebar.recentItems.items.map((item) => (\n <TooltipProvider key={item.path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Link\n to={item.path}\n className=\"flex justify-center px-3 py-2 rounded-md text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n </Link>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-medium text-sm\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ))}\n </div>\n )}\n </>\n )}\n </>\n )}\n </nav>\n\n {/* Collapse Toggle Button */}\n <div className=\"px-3 py-2 border-t border-sidebar-border\">\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setCollapsed(!collapsed)}\n className={`w-full h-8 ${collapsed ? 'px-0 justify-center' : 'justify-start'} hover:bg-sidebar-accent`}\n >\n {collapsed ? (\n <ChevronsRight className=\"w-3.5 h-3.5 text-muted-foreground\" />\n ) : (\n <>\n <ChevronsLeft className=\"w-3.5 h-3.5 text-muted-foreground mr-2\" />\n <span className=\"text-xs text-muted-foreground\">{t('sidebar.collapse')}</span>\n </>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n {collapsed ? t('sidebar.expandSidebar') : t('sidebar.collapseSidebar')}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n {/* Organization & Branch selector */}\n {!collapsed ? (\n <div className=\"border-t border-sidebar-border\">\n <OrganizationSelector variant=\"sidebar\" />\n </div>\n ) : (\n selectedOrganization && (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"px-3 py-3 border-t border-sidebar-border flex justify-center cursor-pointer hover:bg-sidebar-accent transition-colors\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-semibold text-sm\">{selectedOrganization.name}</p>\n {selectedBranch && (\n <p className=\"text-xs text-muted-foreground\">{selectedBranch.name}</p>\n )}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n )}\n </aside>\n );\n}\n"]}
|
|
@@ -60,12 +60,12 @@ function OrganizationSetupModal() {
|
|
|
60
60
|
] }),
|
|
61
61
|
/* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
|
|
62
62
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-6", children: [
|
|
63
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "organization" ? "bg-
|
|
63
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "organization" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: [
|
|
64
64
|
/* @__PURE__ */ jsx(Building2, { className: "w-4 h-4" }),
|
|
65
65
|
t("org.orgStep")
|
|
66
66
|
] }),
|
|
67
67
|
/* @__PURE__ */ jsx(ArrowRight, { className: "w-4 h-4 text-muted-foreground" }),
|
|
68
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "branch" ? "bg-
|
|
68
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "branch" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: [
|
|
69
69
|
/* @__PURE__ */ jsx(MapPin, { className: "w-4 h-4" }),
|
|
70
70
|
t("org.branchStep")
|
|
71
71
|
] })
|
|
@@ -74,7 +74,7 @@ function OrganizationSetupModal() {
|
|
|
74
74
|
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: organizations.map((org) => /* @__PURE__ */ jsxs(
|
|
75
75
|
"div",
|
|
76
76
|
{
|
|
77
|
-
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempOrgId === org.id ? "border-
|
|
77
|
+
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempOrgId === org.id ? "border-primary bg-primary/5" : "border-border hover:border-muted-foreground/30 hover:bg-accent"}`,
|
|
78
78
|
onClick: () => setTempOrgId(org.id),
|
|
79
79
|
children: [
|
|
80
80
|
/* @__PURE__ */ jsx(
|
|
@@ -90,7 +90,7 @@ function OrganizationSetupModal() {
|
|
|
90
90
|
org.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: org.description }),
|
|
91
91
|
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mt-1", children: t("org.branchCount", { count: getBranchesByOrg(org.id).length }) })
|
|
92
92
|
] }),
|
|
93
|
-
tempOrgId === org.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-
|
|
93
|
+
tempOrgId === org.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Check, { className: "w-4 h-4 text-white" }) })
|
|
94
94
|
]
|
|
95
95
|
},
|
|
96
96
|
org.id
|
|
@@ -139,7 +139,7 @@ function OrganizationSetupModal() {
|
|
|
139
139
|
/* @__PURE__ */ jsx("div", { className: "space-y-2 max-h-[280px] overflow-y-auto", children: filteredBranches.length === 0 ? /* @__PURE__ */ jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: t("org.noBranchFound") }) : filteredBranches.map((branch) => /* @__PURE__ */ jsxs(
|
|
140
140
|
"div",
|
|
141
141
|
{
|
|
142
|
-
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempBranchId === branch.id ? "border-
|
|
142
|
+
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempBranchId === branch.id ? "border-primary bg-primary/5" : "border-border hover:border-muted-foreground/30 hover:bg-accent"}`,
|
|
143
143
|
onClick: () => setTempBranchId(branch.id),
|
|
144
144
|
children: [
|
|
145
145
|
/* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(MapPin, { className: "w-5 h-5 text-muted-foreground" }) }),
|
|
@@ -147,7 +147,7 @@ function OrganizationSetupModal() {
|
|
|
147
147
|
/* @__PURE__ */ jsx("div", { className: "font-semibold text-base", children: branch.name }),
|
|
148
148
|
branch.location && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: branch.location })
|
|
149
149
|
] }),
|
|
150
|
-
tempBranchId === branch.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-
|
|
150
|
+
tempBranchId === branch.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Check, { className: "w-4 h-4 text-white" }) })
|
|
151
151
|
]
|
|
152
152
|
},
|
|
153
153
|
branch.id
|
|
@@ -185,5 +185,5 @@ function OrganizationSetupModal() {
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
export { OrganizationSetupModal };
|
|
188
|
-
//# sourceMappingURL=chunk-
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
188
|
+
//# sourceMappingURL=chunk-45TPWOB2.js.map
|
|
189
|
+
//# sourceMappingURL=chunk-45TPWOB2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/OrganizationSetupModal.tsx"],"names":[],"mappings":"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","file":"chunk-QNCYBLHC.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Input } from '@omnifyjp/ui/components/input';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@omnifyjp/ui/components/dialog';\nimport { Building2, MapPin, ArrowRight, Check, Search } from 'lucide-react';\n\nexport function OrganizationSetupModal() {\n const {\n organizations,\n selectedOrganization,\n selectedBranch,\n setSelectedOrganization,\n setSelectedBranch,\n getBranchesByOrg,\n isSetupComplete,\n } = useOrganization();\n\n const { t } = useTranslation('shell');\n\n const [step, setStep] = useState<'organization' | 'branch'>('organization');\n const [tempOrgId, setTempOrgId] = useState<string>('');\n const [tempBranchId, setTempBranchId] = useState<string>('');\n const [branchSearch, setBranchSearch] = useState('');\n\n useEffect(() => {\n if (!isSetupComplete) {\n if (!selectedOrganization) {\n setStep('organization');\n setTempOrgId('');\n } else if (!selectedBranch) {\n setStep('branch');\n setTempBranchId('');\n }\n }\n }, [isSetupComplete, selectedOrganization, selectedBranch]);\n\n const handleOrganizationNext = () => {\n const org = organizations.find(o => o.id === tempOrgId);\n if (org) {\n setSelectedOrganization(org);\n setStep('branch');\n setTempBranchId('');\n setBranchSearch('');\n }\n };\n\n const handleBranchComplete = () => {\n const branch = getBranchesByOrg(selectedOrganization!.id).find(b => b.id === tempBranchId);\n if (branch) {\n setSelectedBranch(branch);\n }\n };\n\n const availableBranches = selectedOrganization ? getBranchesByOrg(selectedOrganization.id) : [];\n const filteredBranches = availableBranches.filter((b) =>\n b.name.toLowerCase().includes(branchSearch.toLowerCase()) ||\n b.location?.toLowerCase().includes(branchSearch.toLowerCase())\n );\n\n return (\n <Dialog open={!isSetupComplete} onOpenChange={() => {}}>\n <DialogContent className=\"sm:max-w-[520px]\" onInteractOutside={(e) => e.preventDefault()}>\n <DialogHeader>\n <DialogTitle className=\"text-xl font-semibold\">\n {step === 'organization' ? t('org.selectOrg') : t('org.selectBranch')}\n </DialogTitle>\n <DialogDescription className=\"text-sm\">\n {step === 'organization'\n ? t('org.selectOrgDesc')\n : t('org.selectBranchDesc')}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"mt-4\">\n <div className=\"flex items-center gap-2 mb-6\">\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'organization' ? 'bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-400' : 'bg-muted text-muted-foreground'\n }`}>\n <Building2 className=\"w-4 h-4\" />\n {t('org.orgStep')}\n </div>\n <ArrowRight className=\"w-4 h-4 text-muted-foreground\" />\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'branch' ? 'bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-400' : 'bg-muted text-muted-foreground'\n }`}>\n <MapPin className=\"w-4 h-4\" />\n {t('org.branchStep')}\n </div>\n </div>\n\n {step === 'organization' && (\n <div>\n <div className=\"space-y-2\">\n {organizations.map((org) => (\n <div\n key={org.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempOrgId === org.id\n ? 'border-blue-500 bg-blue-50/50 dark:bg-blue-500/10'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempOrgId(org.id)}\n >\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center text-white font-bold text-sm flex-shrink-0\"\n style={{ backgroundColor: org.color }}\n >\n {org.shortName}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{org.name}</div>\n {org.description && (\n <div className=\"text-sm text-muted-foreground\">{org.description}</div>\n )}\n <div className=\"text-xs text-muted-foreground mt-1\">\n {t('org.branchCount', { count: getBranchesByOrg(org.id).length })}\n </div>\n </div>\n {tempOrgId === org.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-blue-500 flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))}\n </div>\n\n <div className=\"mt-6 flex justify-end\">\n <Button\n onClick={handleOrganizationNext}\n disabled={!tempOrgId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.next')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n\n {step === 'branch' && selectedOrganization && (\n <div>\n <div className=\"mb-4 p-3 bg-muted rounded-lg border border-border\">\n <div className=\"text-xs text-muted-foreground mb-1.5\">{t('org.selectedOrg')}</div>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n <span className=\"font-semibold\">{selectedOrganization.name}</span>\n </div>\n </div>\n\n <div className=\"relative mb-3\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <Input\n placeholder={t('org.searchBranch')}\n value={branchSearch}\n onChange={(e) => setBranchSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <div className=\"space-y-2 max-h-[280px] overflow-y-auto\">\n {filteredBranches.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('org.noBranchFound')}\n </div>\n ) : (\n filteredBranches.map((branch) => (\n <div\n key={branch.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempBranchId === branch.id\n ? 'border-blue-500 bg-blue-50/50 dark:bg-blue-500/10'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempBranchId(branch.id)}\n >\n <div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0\">\n <MapPin className=\"w-5 h-5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{branch.name}</div>\n {branch.location && (\n <div className=\"text-sm text-muted-foreground\">{branch.location}</div>\n )}\n </div>\n {tempBranchId === branch.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-blue-500 flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))\n )}\n </div>\n\n <div className=\"mt-6 flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => {\n setStep('organization');\n setSelectedOrganization(null);\n setTempOrgId('');\n }}\n >\n {t('common.back')}\n </Button>\n <Button\n onClick={handleBranchComplete}\n disabled={!tempBranchId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.complete')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/OrganizationSetupModal.tsx"],"names":[],"mappings":"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","file":"chunk-45TPWOB2.js","sourcesContent":["import { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Input } from '@omnifyjp/ui/components/input';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@omnifyjp/ui/components/dialog';\nimport { Building2, MapPin, ArrowRight, Check, Search } from 'lucide-react';\n\nexport function OrganizationSetupModal() {\n const {\n organizations,\n selectedOrganization,\n selectedBranch,\n setSelectedOrganization,\n setSelectedBranch,\n getBranchesByOrg,\n isSetupComplete,\n } = useOrganization();\n\n const { t } = useTranslation('shell');\n\n const [step, setStep] = useState<'organization' | 'branch'>('organization');\n const [tempOrgId, setTempOrgId] = useState<string>('');\n const [tempBranchId, setTempBranchId] = useState<string>('');\n const [branchSearch, setBranchSearch] = useState('');\n\n useEffect(() => {\n if (!isSetupComplete) {\n if (!selectedOrganization) {\n setStep('organization');\n setTempOrgId('');\n } else if (!selectedBranch) {\n setStep('branch');\n setTempBranchId('');\n }\n }\n }, [isSetupComplete, selectedOrganization, selectedBranch]);\n\n const handleOrganizationNext = () => {\n const org = organizations.find(o => o.id === tempOrgId);\n if (org) {\n setSelectedOrganization(org);\n setStep('branch');\n setTempBranchId('');\n setBranchSearch('');\n }\n };\n\n const handleBranchComplete = () => {\n const branch = getBranchesByOrg(selectedOrganization!.id).find(b => b.id === tempBranchId);\n if (branch) {\n setSelectedBranch(branch);\n }\n };\n\n const availableBranches = selectedOrganization ? getBranchesByOrg(selectedOrganization.id) : [];\n const filteredBranches = availableBranches.filter((b) =>\n b.name.toLowerCase().includes(branchSearch.toLowerCase()) ||\n b.location?.toLowerCase().includes(branchSearch.toLowerCase())\n );\n\n return (\n <Dialog open={!isSetupComplete} onOpenChange={() => {}}>\n <DialogContent className=\"sm:max-w-[520px]\" onInteractOutside={(e) => e.preventDefault()}>\n <DialogHeader>\n <DialogTitle className=\"text-xl font-semibold\">\n {step === 'organization' ? t('org.selectOrg') : t('org.selectBranch')}\n </DialogTitle>\n <DialogDescription className=\"text-sm\">\n {step === 'organization'\n ? t('org.selectOrgDesc')\n : t('org.selectBranchDesc')}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"mt-4\">\n <div className=\"flex items-center gap-2 mb-6\">\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'organization' ? 'bg-primary/10 text-primary' : 'bg-muted text-muted-foreground'\n }`}>\n <Building2 className=\"w-4 h-4\" />\n {t('org.orgStep')}\n </div>\n <ArrowRight className=\"w-4 h-4 text-muted-foreground\" />\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'branch' ? 'bg-primary/10 text-primary' : 'bg-muted text-muted-foreground'\n }`}>\n <MapPin className=\"w-4 h-4\" />\n {t('org.branchStep')}\n </div>\n </div>\n\n {step === 'organization' && (\n <div>\n <div className=\"space-y-2\">\n {organizations.map((org) => (\n <div\n key={org.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempOrgId === org.id\n ? 'border-primary bg-primary/5'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempOrgId(org.id)}\n >\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center text-white font-bold text-sm flex-shrink-0\"\n style={{ backgroundColor: org.color }}\n >\n {org.shortName}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{org.name}</div>\n {org.description && (\n <div className=\"text-sm text-muted-foreground\">{org.description}</div>\n )}\n <div className=\"text-xs text-muted-foreground mt-1\">\n {t('org.branchCount', { count: getBranchesByOrg(org.id).length })}\n </div>\n </div>\n {tempOrgId === org.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))}\n </div>\n\n <div className=\"mt-6 flex justify-end\">\n <Button\n onClick={handleOrganizationNext}\n disabled={!tempOrgId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.next')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n\n {step === 'branch' && selectedOrganization && (\n <div>\n <div className=\"mb-4 p-3 bg-muted rounded-lg border border-border\">\n <div className=\"text-xs text-muted-foreground mb-1.5\">{t('org.selectedOrg')}</div>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n <span className=\"font-semibold\">{selectedOrganization.name}</span>\n </div>\n </div>\n\n <div className=\"relative mb-3\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <Input\n placeholder={t('org.searchBranch')}\n value={branchSearch}\n onChange={(e) => setBranchSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <div className=\"space-y-2 max-h-[280px] overflow-y-auto\">\n {filteredBranches.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('org.noBranchFound')}\n </div>\n ) : (\n filteredBranches.map((branch) => (\n <div\n key={branch.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempBranchId === branch.id\n ? 'border-primary bg-primary/5'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempBranchId(branch.id)}\n >\n <div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0\">\n <MapPin className=\"w-5 h-5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{branch.name}</div>\n {branch.location && (\n <div className=\"text-sm text-muted-foreground\">{branch.location}</div>\n )}\n </div>\n {tempBranchId === branch.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))\n )}\n </div>\n\n <div className=\"mt-6 flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => {\n setStep('organization');\n setSelectedOrganization(null);\n setTempOrgId('');\n }}\n >\n {t('common.back')}\n </Button>\n <Button\n onClick={handleBranchComplete}\n disabled={!tempBranchId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.complete')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ServiceMenu } from './chunk-ACCHC3AM.js';
|
|
2
|
-
import { OrganizationSelector } from './chunk-
|
|
2
|
+
import { OrganizationSelector } from './chunk-IXZZBAMU.js';
|
|
3
3
|
import { useTranslation } from 'react-i18next';
|
|
4
4
|
import { useNavigate } from 'react-router';
|
|
5
5
|
import { Button } from '@omnifyjp/ui/components/button';
|
|
@@ -49,7 +49,7 @@ function Header({ config }) {
|
|
|
49
49
|
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
50
50
|
header.notifications.content,
|
|
51
51
|
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
52
|
-
/* @__PURE__ */ jsx(DropdownMenuItem, { className: "text-center justify-center text-
|
|
52
|
+
/* @__PURE__ */ jsx(DropdownMenuItem, { className: "text-center justify-center text-primary", children: t("header.viewAllNotifications") })
|
|
53
53
|
] })
|
|
54
54
|
] }),
|
|
55
55
|
header?.actions,
|
|
@@ -87,5 +87,5 @@ function Header({ config }) {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
export { Header };
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
91
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-CET5L4TV.js.map
|
|
91
|
+
//# sourceMappingURL=chunk-CET5L4TV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Header.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAuBO,SAAS,MAAA,CAAO,EAAE,MAAA,EAAO,EAAgB;AAC9C,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,OAAO,CAAA;AACpC,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAO,GAAI,MAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,KAAe,KAAA;AAE1C,EAAA,uBACE,IAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,yFAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gCAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,MACrB,YAAY,QAAA,CAAS,MAAA,GAAS,qBAC7B,GAAA,CAAC,WAAA,EAAA,EAAY,YAAY,QAAA,EAAU,CAAA;AAAA,MAEpC,UAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,WAAU,kFAAA,EAAmF,CAAA;AAAA,wBACrG,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,MAAA;AAAA,YACL,WAAA,EAAa,MAAA,EAAQ,iBAAA,IAAqB,CAAA,CAAE,0BAA0B,CAAA;AAAA,YACtE,SAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAEZ,QAAA,EAAA;AAAA,MAAA,MAAA,EAAQ,aAAA,yBACN,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,OAAA,EAAO,IAAA,EAC1B,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,OAAA,EAAQ,IAAA,EAAK,MAAA,EAAO,SAAA,EAAU,UAAA,EAC5C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,WAAU,SAAA,EAAU,CAAA;AAAA,UACzB,MAAA,CAAO,aAAA,CAAc,KAAA,GAAQ,CAAA,oBAC5B,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,aAAA;AAAA,cACR,SAAA,EAAU,+EAAA;AAAA,cAET,iBAAO,aAAA,CAAc;AAAA;AAAA;AACxB,SAAA,EAEJ,CAAA,EACF,CAAA;AAAA,wBACA,IAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAM,KAAA,EAAM,WAAU,MAAA,EACzC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,iBAAA,EAAA,EAAmB,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAAE,CAAA;AAAA,8BAC7C,qBAAA,EAAA,EAAsB,CAAA;AAAA,UACtB,OAAO,aAAA,CAAc,OAAA;AAAA,8BACrB,qBAAA,EAAA,EAAsB,CAAA;AAAA,8BACtB,gBAAA,EAAA,EAAiB,SAAA,EAAU,
|
|
1
|
+
{"version":3,"sources":["../src/components/Header.tsx"],"names":[],"mappings":"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","file":"chunk-CET5L4TV.js","sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Input } from '@omnifyjp/ui/components/input';\nimport { Avatar, AvatarImage, AvatarFallback } from '@omnifyjp/ui/components/avatar';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@omnifyjp/ui/components/dropdown-menu';\nimport { Badge } from '@omnifyjp/ui/components/badge';\nimport { Search, Bell, User, Settings, LogOut } from 'lucide-react';\nimport { OrganizationSelector } from './OrganizationSelector';\nimport { ServiceMenu } from './ServiceMenu';\nimport type { ShellConfig } from '../types';\n\ninterface HeaderProps {\n config: ShellConfig;\n}\n\nexport function Header({ config }: HeaderProps) {\n const navigate = useNavigate();\n const { t } = useTranslation('shell');\n const { services, header } = config;\n const showSearch = header?.showSearch !== false;\n\n return (\n <header className=\"h-header bg-background border-b border-border px-page flex items-center justify-between\">\n <div className=\"flex items-center gap-3 flex-1\">\n <OrganizationSelector />\n {services && services.length > 0 && (\n <ServiceMenu categories={services} />\n )}\n {showSearch && (\n <div className=\"relative max-w-md flex-1\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\n <Input\n type=\"text\"\n placeholder={header?.searchPlaceholder || t('header.searchPlaceholder')}\n className=\"pl-10\"\n />\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-3\">\n {/* Notifications */}\n {header?.notifications && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\n <Bell className=\"w-5 h-5\" />\n {header.notifications.count > 0 && (\n <Badge\n variant=\"destructive\"\n className=\"absolute -top-1 -right-1 w-5 h-5 flex items-center justify-center p-0 text-xs\"\n >\n {header.notifications.count}\n </Badge>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-80\">\n <DropdownMenuLabel>{t('header.notifications')}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {header.notifications.content}\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"text-center justify-center text-primary\">\n {t('header.viewAllNotifications')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n\n {/* Custom header actions (e.g., MyTasksDropdown) */}\n {header?.actions}\n\n {/* User Menu */}\n {header?.user && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\">\n <Avatar className=\"w-8 h-8\">\n {header.user.avatar && (\n <AvatarImage src={header.user.avatar} />\n )}\n <AvatarFallback>\n {header.user.name.split(' ').map(n => n[0]).join('').slice(0, 2).toUpperCase()}\n </AvatarFallback>\n </Avatar>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuLabel>{t('header.myAccount')}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuItem>\n <User className=\"w-4 h-4\" />\n {t('header.profile')}\n </DropdownMenuItem>\n <DropdownMenuItem>\n <Settings className=\"w-4 h-4\" />\n {t('settings.title')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => {\n if (header.user?.onLogout) {\n header.user.onLogout();\n } else {\n navigate('/login');\n }\n }}>\n <LogOut className=\"w-4 h-4\" />\n {t('header.logout')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </header>\n );\n}\n"]}
|
|
@@ -106,12 +106,12 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
106
106
|
] }),
|
|
107
107
|
/* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
|
|
108
108
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-6", children: [
|
|
109
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "organization" ? "bg-
|
|
109
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "organization" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: [
|
|
110
110
|
/* @__PURE__ */ jsx(Building2, { className: "w-4 h-4" }),
|
|
111
111
|
t("org.orgStep")
|
|
112
112
|
] }),
|
|
113
113
|
/* @__PURE__ */ jsx(ArrowRight, { className: "w-4 h-4 text-muted-foreground" }),
|
|
114
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "branch" ? "bg-
|
|
114
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${step === "branch" ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: [
|
|
115
115
|
/* @__PURE__ */ jsx(MapPin, { className: "w-4 h-4" }),
|
|
116
116
|
t("org.branchStep")
|
|
117
117
|
] })
|
|
@@ -120,7 +120,7 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
120
120
|
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: organizations.map((org) => /* @__PURE__ */ jsxs(
|
|
121
121
|
"div",
|
|
122
122
|
{
|
|
123
|
-
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempOrgId === org.id ? "border-
|
|
123
|
+
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempOrgId === org.id ? "border-primary bg-primary/5" : "border-border hover:border-muted-foreground/30 hover:bg-accent"}`,
|
|
124
124
|
onClick: () => setTempOrgId(org.id),
|
|
125
125
|
children: [
|
|
126
126
|
/* @__PURE__ */ jsx(
|
|
@@ -136,7 +136,7 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
136
136
|
org.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: org.description }),
|
|
137
137
|
/* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground mt-1", children: t("org.branchCount", { count: getBranchesByOrg(org.id).length }) })
|
|
138
138
|
] }),
|
|
139
|
-
tempOrgId === org.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-
|
|
139
|
+
tempOrgId === org.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Check, { className: "w-4 h-4 text-white" }) })
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
142
|
org.id
|
|
@@ -185,7 +185,7 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
185
185
|
/* @__PURE__ */ jsx("div", { className: "space-y-2 max-h-[280px] overflow-y-auto", children: filteredBranches.length === 0 ? /* @__PURE__ */ jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: t("org.noBranchFound") }) : filteredBranches.map((branch) => /* @__PURE__ */ jsxs(
|
|
186
186
|
"div",
|
|
187
187
|
{
|
|
188
|
-
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempBranchId === branch.id ? "border-
|
|
188
|
+
className: `relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${tempBranchId === branch.id ? "border-primary bg-primary/5" : "border-border hover:border-muted-foreground/30 hover:bg-accent"}`,
|
|
189
189
|
onClick: () => setTempBranchId(branch.id),
|
|
190
190
|
children: [
|
|
191
191
|
/* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ jsx(MapPin, { className: "w-5 h-5 text-muted-foreground" }) }),
|
|
@@ -193,7 +193,7 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
193
193
|
/* @__PURE__ */ jsx("div", { className: "font-semibold text-base", children: branch.name }),
|
|
194
194
|
branch.location && /* @__PURE__ */ jsx("div", { className: "text-sm text-muted-foreground", children: branch.location })
|
|
195
195
|
] }),
|
|
196
|
-
tempBranchId === branch.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-
|
|
196
|
+
tempBranchId === branch.id && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center", children: /* @__PURE__ */ jsx(Check, { className: "w-4 h-4 text-white" }) })
|
|
197
197
|
]
|
|
198
198
|
},
|
|
199
199
|
branch.id
|
|
@@ -231,5 +231,5 @@ function OrganizationSelector({ variant = "header" }) {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
export { OrganizationSelector };
|
|
234
|
-
//# sourceMappingURL=chunk-
|
|
235
|
-
//# sourceMappingURL=chunk-
|
|
234
|
+
//# sourceMappingURL=chunk-IXZZBAMU.js.map
|
|
235
|
+
//# sourceMappingURL=chunk-IXZZBAMU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/OrganizationSelector.tsx"],"names":[],"mappings":"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","file":"chunk-WCRLQ5M5.js","sourcesContent":["import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Input } from '@omnifyjp/ui/components/input';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@omnifyjp/ui/components/dialog';\nimport { Building2, ArrowLeftRight, Check, Search, MapPin, ArrowRight } from 'lucide-react';\n\ninterface OrganizationSelectorProps {\n variant?: 'header' | 'sidebar';\n}\n\nexport function OrganizationSelector({ variant = 'header' }: OrganizationSelectorProps) {\n const {\n organizations,\n selectedOrganization,\n selectedBranch,\n setSelectedOrganization,\n setSelectedBranch,\n getBranchesByOrg,\n } = useOrganization();\n\n const { t } = useTranslation('shell');\n\n const [showChangeModal, setShowChangeModal] = useState(false);\n const [step, setStep] = useState<'organization' | 'branch'>('organization');\n const [tempOrgId, setTempOrgId] = useState<string>('');\n const [tempBranchId, setTempBranchId] = useState<string>('');\n const [branchSearch, setBranchSearch] = useState('');\n\n const handleOpenChange = () => {\n setShowChangeModal(true);\n setStep('organization');\n setTempOrgId(selectedOrganization?.id || '');\n setTempBranchId('');\n setBranchSearch('');\n };\n\n const handleOrganizationNext = () => {\n const org = organizations.find(o => o.id === tempOrgId);\n if (org) {\n setSelectedOrganization(org);\n setStep('branch');\n setTempBranchId('');\n setBranchSearch('');\n }\n };\n\n const handleBranchComplete = () => {\n const branch = getBranchesByOrg(selectedOrganization!.id).find(b => b.id === tempBranchId);\n if (branch) {\n setSelectedBranch(branch);\n setShowChangeModal(false);\n }\n };\n\n const availableBranches = selectedOrganization ? getBranchesByOrg(selectedOrganization.id) : [];\n const filteredBranches = availableBranches.filter((b) =>\n b.name.toLowerCase().includes(branchSearch.toLowerCase()) ||\n b.location?.toLowerCase().includes(branchSearch.toLowerCase())\n );\n\n return (\n <>\n {variant === 'header' ? (\n <Button\n variant=\"outline\"\n onClick={handleOpenChange}\n className=\"gap-2 px-3\"\n >\n {selectedOrganization && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white font-bold text-[10px] flex-shrink-0\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n )}\n <div className=\"flex items-center gap-1.5 min-w-0\">\n <span className=\"text-sm font-medium truncate max-w-[120px]\">\n {selectedOrganization?.name || t('org.noOrgSelected')}\n </span>\n {selectedBranch && (\n <>\n <span className=\"text-muted-foreground\">/</span>\n <span className=\"text-sm text-muted-foreground truncate max-w-[100px]\">\n {selectedBranch.name}\n </span>\n </>\n )}\n </div>\n <ArrowLeftRight className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </Button>\n ) : (\n <div\n className=\"flex items-center justify-between gap-2 cursor-pointer hover:bg-sidebar-accent transition-colors rounded-md px-4 py-3\"\n onClick={handleOpenChange}\n >\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {selectedOrganization && (\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs flex-shrink-0\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-sm truncate\">\n {selectedOrganization?.name || t('org.noOrgSelected')}\n </div>\n <div className=\"text-xs text-muted-foreground truncate mt-0.5\">\n {selectedBranch?.name || t('org.noBranchSelected')}\n </div>\n </div>\n </div>\n <ArrowLeftRight className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </div>\n )}\n\n <Dialog open={showChangeModal} onOpenChange={setShowChangeModal}>\n <DialogContent className=\"sm:max-w-[520px]\">\n <DialogHeader>\n <DialogTitle className=\"text-xl font-semibold\">\n {step === 'organization' ? t('org.selectOrg') : t('org.selectBranch')}\n </DialogTitle>\n <DialogDescription className=\"text-sm\">\n {step === 'organization'\n ? t('org.selectOrgDesc')\n : t('org.selectBranchDesc')}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"mt-4\">\n <div className=\"flex items-center gap-2 mb-6\">\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'organization' ? 'bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-400' : 'bg-muted text-muted-foreground'\n }`}>\n <Building2 className=\"w-4 h-4\" />\n {t('org.orgStep')}\n </div>\n <ArrowRight className=\"w-4 h-4 text-muted-foreground\" />\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'branch' ? 'bg-blue-50 text-blue-700 dark:bg-blue-500/15 dark:text-blue-400' : 'bg-muted text-muted-foreground'\n }`}>\n <MapPin className=\"w-4 h-4\" />\n {t('org.branchStep')}\n </div>\n </div>\n\n {step === 'organization' && (\n <div>\n <div className=\"space-y-2\">\n {organizations.map((org) => (\n <div\n key={org.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempOrgId === org.id\n ? 'border-blue-500 bg-blue-50/50 dark:bg-blue-500/10'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempOrgId(org.id)}\n >\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center text-white font-bold text-sm flex-shrink-0\"\n style={{ backgroundColor: org.color }}\n >\n {org.shortName}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{org.name}</div>\n {org.description && (\n <div className=\"text-sm text-muted-foreground\">{org.description}</div>\n )}\n <div className=\"text-xs text-muted-foreground mt-1\">\n {t('org.branchCount', { count: getBranchesByOrg(org.id).length })}\n </div>\n </div>\n {tempOrgId === org.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-blue-500 flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))}\n </div>\n\n <div className=\"mt-6 flex justify-end\">\n <Button\n onClick={handleOrganizationNext}\n disabled={!tempOrgId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.next')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n\n {step === 'branch' && selectedOrganization && (\n <div>\n <div className=\"mb-4 p-3 bg-muted rounded-lg border border-border\">\n <div className=\"text-xs text-muted-foreground mb-1.5\">{t('org.selectedOrg')}</div>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n <span className=\"font-semibold\">{selectedOrganization.name}</span>\n </div>\n </div>\n\n <div className=\"relative mb-3\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <Input\n placeholder={t('org.searchBranch')}\n value={branchSearch}\n onChange={(e) => setBranchSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <div className=\"space-y-2 max-h-[280px] overflow-y-auto\">\n {filteredBranches.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('org.noBranchFound')}\n </div>\n ) : (\n filteredBranches.map((branch) => (\n <div\n key={branch.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempBranchId === branch.id\n ? 'border-blue-500 bg-blue-50/50 dark:bg-blue-500/10'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempBranchId(branch.id)}\n >\n <div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0\">\n <MapPin className=\"w-5 h-5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{branch.name}</div>\n {branch.location && (\n <div className=\"text-sm text-muted-foreground\">{branch.location}</div>\n )}\n </div>\n {tempBranchId === branch.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-blue-500 flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))\n )}\n </div>\n\n <div className=\"mt-6 flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => {\n setStep('organization');\n setTempOrgId(selectedOrganization.id);\n }}\n >\n {t('common.back')}\n </Button>\n <Button\n onClick={handleBranchComplete}\n disabled={!tempBranchId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.complete')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/OrganizationSelector.tsx"],"names":[],"mappings":"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","file":"chunk-IXZZBAMU.js","sourcesContent":["import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Input } from '@omnifyjp/ui/components/input';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@omnifyjp/ui/components/dialog';\nimport { Building2, ArrowLeftRight, Check, Search, MapPin, ArrowRight } from 'lucide-react';\n\ninterface OrganizationSelectorProps {\n variant?: 'header' | 'sidebar';\n}\n\nexport function OrganizationSelector({ variant = 'header' }: OrganizationSelectorProps) {\n const {\n organizations,\n selectedOrganization,\n selectedBranch,\n setSelectedOrganization,\n setSelectedBranch,\n getBranchesByOrg,\n } = useOrganization();\n\n const { t } = useTranslation('shell');\n\n const [showChangeModal, setShowChangeModal] = useState(false);\n const [step, setStep] = useState<'organization' | 'branch'>('organization');\n const [tempOrgId, setTempOrgId] = useState<string>('');\n const [tempBranchId, setTempBranchId] = useState<string>('');\n const [branchSearch, setBranchSearch] = useState('');\n\n const handleOpenChange = () => {\n setShowChangeModal(true);\n setStep('organization');\n setTempOrgId(selectedOrganization?.id || '');\n setTempBranchId('');\n setBranchSearch('');\n };\n\n const handleOrganizationNext = () => {\n const org = organizations.find(o => o.id === tempOrgId);\n if (org) {\n setSelectedOrganization(org);\n setStep('branch');\n setTempBranchId('');\n setBranchSearch('');\n }\n };\n\n const handleBranchComplete = () => {\n const branch = getBranchesByOrg(selectedOrganization!.id).find(b => b.id === tempBranchId);\n if (branch) {\n setSelectedBranch(branch);\n setShowChangeModal(false);\n }\n };\n\n const availableBranches = selectedOrganization ? getBranchesByOrg(selectedOrganization.id) : [];\n const filteredBranches = availableBranches.filter((b) =>\n b.name.toLowerCase().includes(branchSearch.toLowerCase()) ||\n b.location?.toLowerCase().includes(branchSearch.toLowerCase())\n );\n\n return (\n <>\n {variant === 'header' ? (\n <Button\n variant=\"outline\"\n onClick={handleOpenChange}\n className=\"gap-2 px-3\"\n >\n {selectedOrganization && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white font-bold text-[10px] flex-shrink-0\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n )}\n <div className=\"flex items-center gap-1.5 min-w-0\">\n <span className=\"text-sm font-medium truncate max-w-[120px]\">\n {selectedOrganization?.name || t('org.noOrgSelected')}\n </span>\n {selectedBranch && (\n <>\n <span className=\"text-muted-foreground\">/</span>\n <span className=\"text-sm text-muted-foreground truncate max-w-[100px]\">\n {selectedBranch.name}\n </span>\n </>\n )}\n </div>\n <ArrowLeftRight className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </Button>\n ) : (\n <div\n className=\"flex items-center justify-between gap-2 cursor-pointer hover:bg-sidebar-accent transition-colors rounded-md px-4 py-3\"\n onClick={handleOpenChange}\n >\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {selectedOrganization && (\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs flex-shrink-0\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-sm truncate\">\n {selectedOrganization?.name || t('org.noOrgSelected')}\n </div>\n <div className=\"text-xs text-muted-foreground truncate mt-0.5\">\n {selectedBranch?.name || t('org.noBranchSelected')}\n </div>\n </div>\n </div>\n <ArrowLeftRight className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </div>\n )}\n\n <Dialog open={showChangeModal} onOpenChange={setShowChangeModal}>\n <DialogContent className=\"sm:max-w-[520px]\">\n <DialogHeader>\n <DialogTitle className=\"text-xl font-semibold\">\n {step === 'organization' ? t('org.selectOrg') : t('org.selectBranch')}\n </DialogTitle>\n <DialogDescription className=\"text-sm\">\n {step === 'organization'\n ? t('org.selectOrgDesc')\n : t('org.selectBranchDesc')}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"mt-4\">\n <div className=\"flex items-center gap-2 mb-6\">\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'organization' ? 'bg-primary/10 text-primary' : 'bg-muted text-muted-foreground'\n }`}>\n <Building2 className=\"w-4 h-4\" />\n {t('org.orgStep')}\n </div>\n <ArrowRight className=\"w-4 h-4 text-muted-foreground\" />\n <div className={`flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium ${\n step === 'branch' ? 'bg-primary/10 text-primary' : 'bg-muted text-muted-foreground'\n }`}>\n <MapPin className=\"w-4 h-4\" />\n {t('org.branchStep')}\n </div>\n </div>\n\n {step === 'organization' && (\n <div>\n <div className=\"space-y-2\">\n {organizations.map((org) => (\n <div\n key={org.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempOrgId === org.id\n ? 'border-primary bg-primary/5'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempOrgId(org.id)}\n >\n <div\n className=\"w-10 h-10 rounded-lg flex items-center justify-center text-white font-bold text-sm flex-shrink-0\"\n style={{ backgroundColor: org.color }}\n >\n {org.shortName}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{org.name}</div>\n {org.description && (\n <div className=\"text-sm text-muted-foreground\">{org.description}</div>\n )}\n <div className=\"text-xs text-muted-foreground mt-1\">\n {t('org.branchCount', { count: getBranchesByOrg(org.id).length })}\n </div>\n </div>\n {tempOrgId === org.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))}\n </div>\n\n <div className=\"mt-6 flex justify-end\">\n <Button\n onClick={handleOrganizationNext}\n disabled={!tempOrgId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.next')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n\n {step === 'branch' && selectedOrganization && (\n <div>\n <div className=\"mb-4 p-3 bg-muted rounded-lg border border-border\">\n <div className=\"text-xs text-muted-foreground mb-1.5\">{t('org.selectedOrg')}</div>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n <span className=\"font-semibold\">{selectedOrganization.name}</span>\n </div>\n </div>\n\n <div className=\"relative mb-3\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n <Input\n placeholder={t('org.searchBranch')}\n value={branchSearch}\n onChange={(e) => setBranchSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n <div className=\"space-y-2 max-h-[280px] overflow-y-auto\">\n {filteredBranches.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">\n {t('org.noBranchFound')}\n </div>\n ) : (\n filteredBranches.map((branch) => (\n <div\n key={branch.id}\n className={`relative flex items-center gap-3 rounded-lg border-2 p-4 cursor-pointer transition-all ${\n tempBranchId === branch.id\n ? 'border-primary bg-primary/5'\n : 'border-border hover:border-muted-foreground/30 hover:bg-accent'\n }`}\n onClick={() => setTempBranchId(branch.id)}\n >\n <div className=\"w-10 h-10 rounded-lg bg-muted flex items-center justify-center flex-shrink-0\">\n <MapPin className=\"w-5 h-5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"font-semibold text-base\">{branch.name}</div>\n {branch.location && (\n <div className=\"text-sm text-muted-foreground\">{branch.location}</div>\n )}\n </div>\n {tempBranchId === branch.id && (\n <div className=\"flex-shrink-0 w-6 h-6 rounded-full bg-primary flex items-center justify-center\">\n <Check className=\"w-4 h-4 text-white\" />\n </div>\n )}\n </div>\n ))\n )}\n </div>\n\n <div className=\"mt-6 flex justify-between\">\n <Button\n variant=\"outline\"\n onClick={() => {\n setStep('organization');\n setTempOrgId(selectedOrganization.id);\n }}\n >\n {t('common.back')}\n </Button>\n <Button\n onClick={handleBranchComplete}\n disabled={!tempBranchId}\n size=\"lg\"\n className=\"gap-2\"\n >\n {t('common.complete')}\n <ArrowRight className=\"w-4 h-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ThemeProvider } from './chunk-EJEVW4RO.js';
|
|
2
2
|
import { i18n } from './chunk-OMIE3Z5N.js';
|
|
3
|
-
import { Sidebar } from './chunk-
|
|
4
|
-
import { Header } from './chunk-
|
|
5
|
-
import { OrganizationSetupModal } from './chunk-
|
|
3
|
+
import { Sidebar } from './chunk-3O4KCEIT.js';
|
|
4
|
+
import { Header } from './chunk-CET5L4TV.js';
|
|
5
|
+
import { OrganizationSetupModal } from './chunk-45TPWOB2.js';
|
|
6
6
|
import { OrganizationProvider } from './chunk-SHHZRZMM.js';
|
|
7
7
|
import { Outlet } from 'react-router';
|
|
8
8
|
import { I18nextProvider } from 'react-i18next';
|
|
@@ -33,5 +33,5 @@ function AppShell({ config, extra }) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export { AppShell };
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-QPEMH6FP.js.map
|
|
37
|
+
//# sourceMappingURL=chunk-QPEMH6FP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AppShell.tsx"],"names":[],"mappings":";;;;;;;;;;;AAgCO,SAAS,QAAA,CAAS,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAkB;AACzD,EAAA,MAAM,EAAE,cAAa,GAAI,MAAA;AAEzB,EAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EACf,QAAA,kBAAA,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,eAAe,YAAA,EAAc,aAAA;AAAA,MAC7B,UAAU,YAAA,EAAc,QAAA;AAAA,MACxB,sBAAsB,YAAA,EAAc,oBAAA;AAAA,MACpC,gBAAgB,YAAA,EAAc,cAAA;AAAA,MAE9B,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAQ,MAAA,EAAgB,CAAA;AAAA,wBACzB,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAO,MAAA,EAAgB,CAAA;AAAA,8BACvB,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EACd,QAAA,kBAAA,GAAA,CAAC,UAAO,CAAA,EACV;AAAA,SAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,OAAA,EAAA,EAAQ,UAAA,EAAU,IAAA,EAAC,UAAS,cAAA,EAAe,CAAA;AAAA,QAC3C,KAAA;AAAA,4BACA,sBAAA,EAAA,EAAuB;AAAA,OAAA,EAC1B;AAAA;AAAA,KAEJ,CAAA,EACF,CAAA;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/AppShell.tsx"],"names":[],"mappings":";;;;;;;;;;;AAgCO,SAAS,QAAA,CAAS,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAkB;AACzD,EAAA,MAAM,EAAE,cAAa,GAAI,MAAA;AAEzB,EAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EACf,QAAA,kBAAA,GAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,eAAe,YAAA,EAAc,aAAA;AAAA,MAC7B,UAAU,YAAA,EAAc,QAAA;AAAA,MACxB,sBAAsB,YAAA,EAAc,oBAAA;AAAA,MACpC,gBAAgB,YAAA,EAAc,cAAA;AAAA,MAE9B,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAQ,MAAA,EAAgB,CAAA;AAAA,wBACzB,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAO,MAAA,EAAgB,CAAA;AAAA,8BACvB,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EACd,QAAA,kBAAA,GAAA,CAAC,UAAO,CAAA,EACV;AAAA,SAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,OAAA,EAAA,EAAQ,UAAA,EAAU,IAAA,EAAC,UAAS,cAAA,EAAe,CAAA;AAAA,QAC3C,KAAA;AAAA,4BACA,sBAAA,EAAA,EAAuB;AAAA,OAAA,EAC1B;AAAA;AAAA,KAEJ,CAAA,EACF,CAAA;AAEJ","file":"chunk-QPEMH6FP.js","sourcesContent":["import { ReactNode } from 'react';\nimport { Outlet } from 'react-router';\nimport { I18nextProvider } from 'react-i18next';\nimport { Toaster } from '@omnifyjp/ui/components/sonner';\nimport { ThemeProvider } from '../contexts/ThemeContext';\nimport { OrganizationProvider } from '../contexts/OrganizationContext';\nimport { Sidebar } from './Sidebar';\nimport { Header } from './Header';\nimport { OrganizationSetupModal } from './OrganizationSetupModal';\nimport { i18n } from '../i18n';\nimport type { ShellConfig } from '../types';\n\ninterface AppShellProps {\n config: ShellConfig;\n /** Extra content to render alongside the main content (e.g., ChatWidget) */\n extra?: ReactNode;\n}\n\n/**\n * The main application shell.\n * Use as a route layout element in React Router:\n *\n * ```tsx\n * const router = createBrowserRouter([{\n * path: '/',\n * element: <AppShell config={config} />,\n * children: [\n * { index: true, element: <Dashboard /> },\n * ],\n * }]);\n * ```\n */\nexport function AppShell({ config, extra }: AppShellProps) {\n const { organization } = config;\n\n return (\n <ThemeProvider>\n <I18nextProvider i18n={i18n}>\n <OrganizationProvider\n organizations={organization?.organizations}\n branches={organization?.branches}\n onOrganizationChange={organization?.onOrganizationChange}\n onBranchChange={organization?.onBranchChange}\n >\n <div className=\"flex h-screen bg-background text-foreground\">\n <Sidebar config={config} />\n <div className=\"flex-1 flex flex-col overflow-hidden\">\n <Header config={config} />\n <main className=\"flex-1 overflow-auto\">\n <Outlet />\n </main>\n </div>\n <Toaster richColors position=\"bottom-right\" />\n {extra}\n <OrganizationSetupModal />\n </div>\n </OrganizationProvider>\n </I18nextProvider>\n </ThemeProvider>\n );\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { AppShell } from '../chunk-
|
|
1
|
+
export { AppShell } from '../chunk-QPEMH6FP.js';
|
|
2
2
|
import '../chunk-EJEVW4RO.js';
|
|
3
3
|
import '../chunk-OMIE3Z5N.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-3O4KCEIT.js';
|
|
5
|
+
import '../chunk-CET5L4TV.js';
|
|
6
6
|
import '../chunk-ACCHC3AM.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-IXZZBAMU.js';
|
|
8
|
+
import '../chunk-45TPWOB2.js';
|
|
9
9
|
import '../chunk-SHHZRZMM.js';
|
|
10
10
|
//# sourceMappingURL=AppShell.js.map
|
|
11
11
|
//# sourceMappingURL=AppShell.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Header } from '../chunk-
|
|
1
|
+
export { Header } from '../chunk-CET5L4TV.js';
|
|
2
2
|
import '../chunk-ACCHC3AM.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-IXZZBAMU.js';
|
|
4
4
|
import '../chunk-SHHZRZMM.js';
|
|
5
5
|
//# sourceMappingURL=Header.js.map
|
|
6
6
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Sidebar } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { Sidebar } from '../chunk-3O4KCEIT.js';
|
|
2
|
+
import '../chunk-IXZZBAMU.js';
|
|
3
3
|
import '../chunk-SHHZRZMM.js';
|
|
4
4
|
//# sourceMappingURL=Sidebar.js.map
|
|
5
5
|
//# sourceMappingURL=Sidebar.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { timezoneLabels, useDateFormat } from './chunk-6JYWZJEY.js';
|
|
2
|
-
export { AppShell } from './chunk-
|
|
2
|
+
export { AppShell } from './chunk-QPEMH6FP.js';
|
|
3
3
|
export { ThemeProvider, useTheme } from './chunk-EJEVW4RO.js';
|
|
4
4
|
export { changeLanguage, i18n, initOmnifyI18n, languageNames } from './chunk-OMIE3Z5N.js';
|
|
5
|
-
export { Sidebar } from './chunk-
|
|
6
|
-
export { Header } from './chunk-
|
|
5
|
+
export { Sidebar } from './chunk-3O4KCEIT.js';
|
|
6
|
+
export { Header } from './chunk-CET5L4TV.js';
|
|
7
7
|
export { ServiceMenu } from './chunk-ACCHC3AM.js';
|
|
8
|
-
export { OrganizationSelector } from './chunk-
|
|
9
|
-
export { OrganizationSetupModal } from './chunk-
|
|
8
|
+
export { OrganizationSelector } from './chunk-IXZZBAMU.js';
|
|
9
|
+
export { OrganizationSetupModal } from './chunk-45TPWOB2.js';
|
|
10
10
|
export { OrganizationProvider, useOrganization } from './chunk-SHHZRZMM.js';
|
|
11
11
|
export { FullWidthPageContainer, PageContainer, SplitPageContainer, StandardPageContainer } from './chunk-OHORC3F5.js';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnifyjp/shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -47,7 +47,8 @@
|
|
|
47
47
|
"react-router": ">=7"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@omnifyjp/
|
|
50
|
+
"@omnifyjp/mcp-design-system": "^0.3.0",
|
|
51
|
+
"@omnifyjp/ui": "^0.3.0",
|
|
51
52
|
"i18next": "^24.0.0",
|
|
52
53
|
"react-i18next": "^15.0.0",
|
|
53
54
|
"date-fns": "3.6.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Sidebar.tsx"],"names":[],"mappings":"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","file":"chunk-YVUVYTVZ.js","sourcesContent":["import { useState } from 'react';\nimport { useLocation, useParams, Link } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@omnifyjp/ui/components/button';\nimport { Separator } from '@omnifyjp/ui/components/separator';\nimport { Popover, PopoverContent, PopoverTrigger } from '@omnifyjp/ui/components/popover';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@omnifyjp/ui/components/tooltip';\nimport {\n ChevronsLeft,\n ChevronsRight,\n ChevronsUpDown,\n ChevronRight,\n Search,\n} from 'lucide-react';\nimport { useOrganization } from '../contexts/OrganizationContext';\nimport { OrganizationSelector } from './OrganizationSelector';\nimport type { ShellConfig, SidebarMenuItem } from '../types';\n\ninterface SidebarProps {\n config: ShellConfig;\n}\n\nexport function Sidebar({ config }: SidebarProps) {\n const location = useLocation();\n const params = useParams();\n const [collapsed, setCollapsed] = useState(false);\n const [contextSwitcherOpen, setContextSwitcherOpen] = useState(false);\n const [contextSearch, setContextSearch] = useState('');\n const [expandedGroups, setExpandedGroups] = useState<Set<string>>(new Set());\n const { t } = useTranslation('shell');\n const { selectedOrganization, selectedBranch } = useOrganization();\n\n const { app, sidebar } = config;\n\n // Determine if we're in context mode (e.g., inside a project)\n const contextParamValue = sidebar.contextMenu\n ? params[sidebar.contextMenu.paramName] as string | undefined\n : undefined;\n const isInContext = !!contextParamValue;\n\n const isActive = (path: string) => {\n return location.pathname === path || location.pathname.startsWith(path + '/');\n };\n\n const renderMenuItem = (item: SidebarMenuItem, active: boolean) => {\n const Icon = item.icon;\n const path = item.path!;\n const content = (\n <Link\n to={path}\n className={`flex items-center ${collapsed ? 'justify-center' : 'gap-2'} px-3 py-2 rounded-md text-sm transition-colors ${\n active\n ? 'bg-blue-50 text-blue-600 dark:bg-blue-500/15 dark:text-blue-400 font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n {!collapsed && <span>{item.label}</span>}\n {!collapsed && item.badge !== undefined && item.badge > 0 && (\n <span className=\"ml-auto text-xs bg-muted text-muted-foreground px-1.5 py-0.5 rounded-full\">\n {item.badge}\n </span>\n )}\n </Link>\n );\n\n if (collapsed) {\n return (\n <TooltipProvider key={path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n {content}\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return <div key={path}>{content}</div>;\n };\n\n const isGroupActive = (item: SidebarMenuItem): boolean => {\n if (item.children) {\n return item.children.some(child => child.path ? isActive(child.path) : false);\n }\n return item.path ? isActive(item.path) : false;\n };\n\n const toggleGroup = (label: string) => {\n setExpandedGroups(prev => {\n const next = new Set(prev);\n if (next.has(label)) {\n next.delete(label);\n } else {\n next.add(label);\n }\n return next;\n });\n };\n\n const renderMenuItemOrGroup = (item: SidebarMenuItem) => {\n if (!item.children) {\n return renderMenuItem(item, item.path ? isActive(item.path) : false);\n }\n\n const groupActive = isGroupActive(item);\n const isExpanded = expandedGroups.has(item.label) || groupActive;\n const Icon = item.icon;\n\n if (collapsed) {\n return (\n <TooltipProvider key={item.label} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center justify-center w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'bg-blue-50 text-blue-600 dark:bg-blue-500/15 dark:text-blue-400 font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"right\" className=\"font-medium\">\n {item.label}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return (\n <div key={item.label}>\n <button\n onClick={() => toggleGroup(item.label)}\n className={`flex items-center gap-2 w-full px-3 py-2 rounded-md text-sm transition-colors ${\n groupActive\n ? 'text-blue-600 dark:text-blue-400 font-medium'\n : 'text-sidebar-foreground hover:bg-sidebar-accent'\n }`}\n >\n <Icon className=\"w-4 h-4 flex-shrink-0\" />\n <span>{item.label}</span>\n <ChevronRight className={`w-3.5 h-3.5 ml-auto text-muted-foreground transition-transform duration-200 ${isExpanded ? 'rotate-90' : ''}`} />\n </button>\n {isExpanded && (\n <div className=\"ml-4 pl-2 border-l border-sidebar-border space-y-0.5 mt-0.5\">\n {item.children.map(child => renderMenuItem(child, child.path ? isActive(child.path) : false))}\n </div>\n )}\n </div>\n );\n };\n\n // Get context menu items if in context mode\n const contextMenuItems = isInContext && sidebar.contextMenu\n ? sidebar.contextMenu.getItems(contextParamValue!)\n : [];\n\n const contextHeader = isInContext && sidebar.contextMenu?.getHeader\n ? sidebar.contextMenu.getHeader(contextParamValue!)\n : null;\n\n const footerItems = isInContext && sidebar.contextMenu?.getFooterItems\n ? sidebar.contextMenu.getFooterItems()\n : [];\n\n return (\n <aside className={`${collapsed ? 'w-16' : 'w-64'} bg-sidebar border-r border-sidebar-border flex flex-col transition-all duration-300`}>\n {/* Logo */}\n <div className={`h-header border-b border-sidebar-border flex items-center ${collapsed ? 'justify-center' : 'px-4'} transition-all duration-300`}>\n <Link to=\"/\" className=\"flex items-center gap-2\">\n <div className={`w-8 h-8 rounded-lg flex items-center justify-center flex-shrink-0 ${app.logo.color ? '' : 'bg-blue-600'}`} style={app.logo.color ? { backgroundColor: app.logo.color } : undefined}>\n <app.logo.icon className=\"w-4 h-4 text-white\" />\n </div>\n {!collapsed && <span className=\"font-bold text-sm\">{app.logo.text}</span>}\n </Link>\n </div>\n\n {/* Menu */}\n <nav className=\"flex-1 px-3 py-3 overflow-y-auto\">\n {isInContext ? (\n <>\n {/* Context Switcher (e.g., project switcher) */}\n {contextHeader && !collapsed ? (\n <Popover open={contextSwitcherOpen} onOpenChange={(open) => { setContextSwitcherOpen(open); if (!open) setContextSearch(''); }}>\n <PopoverTrigger asChild>\n <button className=\"w-full mb-3 px-3 py-2 flex items-center gap-2 rounded-md hover:bg-sidebar-accent transition-colors text-left\">\n {contextHeader}\n <ChevronsUpDown className=\"w-3.5 h-3.5 text-muted-foreground flex-shrink-0\" />\n </button>\n </PopoverTrigger>\n <PopoverContent side=\"right\" align=\"start\" className=\"w-72 p-0\">\n <div className=\"p-2 border-b\">\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted-foreground\" />\n <input\n className=\"w-full pl-8 pr-3 py-1.5 text-sm border rounded-md outline-none focus:ring-1 focus:ring-blue-500 bg-background\"\n placeholder={t('sidebar.searchProject')}\n value={contextSearch}\n onChange={(e) => setContextSearch(e.target.value)}\n autoFocus\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n ) : contextHeader && collapsed ? (\n <div className=\"mb-3 w-full flex justify-center py-1 rounded-md hover:bg-sidebar-accent transition-colors\">\n {contextHeader}\n </div>\n ) : null}\n\n {!collapsed && contextHeader && <Separator className=\"my-3\" />}\n\n {/* Context Menu Items */}\n <div className=\"space-y-1\">\n {contextMenuItems.map((item) => {\n const active = item.path ? isActive(item.path) : false;\n return renderMenuItem(item, active);\n })}\n </div>\n\n {footerItems.length > 0 && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n <div className=\"space-y-1\">\n {footerItems.map((item) => renderMenuItem(item, false))}\n </div>\n </>\n )}\n </>\n ) : (\n <>\n {/* Main Menu Items */}\n <div className=\"space-y-1\">\n {sidebar.menuItems.map((item) => renderMenuItemOrGroup(item))}\n </div>\n\n {sidebar.recentItems && (\n <>\n {!collapsed && <Separator className=\"my-3\" />}\n\n {!collapsed ? (\n <div className=\"space-y-1\">\n <h3 className=\"px-3 py-1 text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {sidebar.recentItems.title}\n </h3>\n <div className=\"space-y-0.5\">\n {sidebar.recentItems.items.map((item) => (\n <Link\n key={item.path}\n to={item.path}\n className=\"flex items-center gap-2 px-3 py-2 rounded-md text-sm text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold flex-shrink-0\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n <span className=\"truncate\">{item.label}</span>\n </Link>\n ))}\n </div>\n </div>\n ) : (\n <div className=\"space-y-0.5 mt-3\">\n {sidebar.recentItems.items.map((item) => (\n <TooltipProvider key={item.path} delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Link\n to={item.path}\n className=\"flex justify-center px-3 py-2 rounded-md text-sidebar-foreground hover:bg-sidebar-accent\"\n >\n {item.color && (\n <div\n className=\"w-5 h-5 rounded flex items-center justify-center text-white text-[9px] font-bold\"\n style={{ backgroundColor: item.color }}\n >\n {item.badge}\n </div>\n )}\n </Link>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-medium text-sm\">{item.label}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ))}\n </div>\n )}\n </>\n )}\n </>\n )}\n </nav>\n\n {/* Collapse Toggle Button */}\n <div className=\"px-3 py-2 border-t border-sidebar-border\">\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setCollapsed(!collapsed)}\n className={`w-full h-8 ${collapsed ? 'px-0 justify-center' : 'justify-start'} hover:bg-sidebar-accent`}\n >\n {collapsed ? (\n <ChevronsRight className=\"w-3.5 h-3.5 text-muted-foreground\" />\n ) : (\n <>\n <ChevronsLeft className=\"w-3.5 h-3.5 text-muted-foreground mr-2\" />\n <span className=\"text-xs text-muted-foreground\">{t('sidebar.collapse')}</span>\n </>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n {collapsed ? t('sidebar.expandSidebar') : t('sidebar.collapseSidebar')}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n\n {/* Organization & Branch selector */}\n {!collapsed ? (\n <div className=\"border-t border-sidebar-border\">\n <OrganizationSelector variant=\"sidebar\" />\n </div>\n ) : (\n selectedOrganization && (\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"px-3 py-3 border-t border-sidebar-border flex justify-center cursor-pointer hover:bg-sidebar-accent transition-colors\">\n <div\n className=\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\"\n style={{ backgroundColor: selectedOrganization.color }}\n >\n {selectedOrganization.shortName}\n </div>\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p className=\"font-semibold text-sm\">{selectedOrganization.name}</p>\n {selectedBranch && (\n <p className=\"text-xs text-muted-foreground\">{selectedBranch.name}</p>\n )}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n )}\n </aside>\n );\n}\n"]}
|