@burdenoff/microfe-subscriberbot 2026.625.1 → 2026.626.1

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.
Files changed (91) hide show
  1. package/dist/subscriberbot/pages/HomePage.js +19 -14
  2. package/dist/subscriberbot/pages/HomePage.js.map +1 -1
  3. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js +66 -60
  4. package/dist/subscriberbot/pages/admin/AdminAnalyticsPage.js.map +1 -1
  5. package/dist/subscriberbot/pages/admin/AdminDashboard.js +83 -44
  6. package/dist/subscriberbot/pages/admin/AdminDashboard.js.map +1 -1
  7. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js +38 -32
  8. package/dist/subscriberbot/pages/admin/AdminFinancialPage.js.map +1 -1
  9. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js +226 -221
  10. package/dist/subscriberbot/pages/admin/AdminOrdersPage.js.map +1 -1
  11. package/dist/subscriberbot/pages/admin/AdminProfilePage.js +127 -125
  12. package/dist/subscriberbot/pages/admin/AdminProfilePage.js.map +1 -1
  13. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js +235 -230
  14. package/dist/subscriberbot/pages/admin/AdminSettingsPage.js.map +1 -1
  15. package/dist/subscriberbot/pages/admin/CartManagementPage.js +267 -262
  16. package/dist/subscriberbot/pages/admin/CartManagementPage.js.map +1 -1
  17. package/dist/subscriberbot/pages/admin/UserManagementPage.js +267 -262
  18. package/dist/subscriberbot/pages/admin/UserManagementPage.js.map +1 -1
  19. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js +46 -41
  20. package/dist/subscriberbot/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  21. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js +257 -252
  22. package/dist/subscriberbot/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  23. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js +231 -194
  24. package/dist/subscriberbot/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  25. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js +167 -162
  26. package/dist/subscriberbot/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  27. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js +128 -126
  28. package/dist/subscriberbot/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  29. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js +297 -300
  30. package/dist/subscriberbot/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  31. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js +220 -223
  32. package/dist/subscriberbot/pages/cart-owner/OrderManagementPage.js.map +1 -1
  33. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js +250 -245
  34. package/dist/subscriberbot/pages/cart-owner/StaffManagementPage.js.map +1 -1
  35. package/dist/subscriberbot/pages/common/HelpSupportPage.js +94 -96
  36. package/dist/subscriberbot/pages/common/HelpSupportPage.js.map +1 -1
  37. package/dist/subscriberbot/pages/common/NotificationCenterPage.js +48 -42
  38. package/dist/subscriberbot/pages/common/NotificationCenterPage.js.map +1 -1
  39. package/dist/subscriberbot/pages/common/SettingsPage.js +745 -736
  40. package/dist/subscriberbot/pages/common/SettingsPage.js.map +1 -1
  41. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js +353 -321
  42. package/dist/subscriberbot/pages/customer/BookingDetailsPage.js.map +1 -1
  43. package/dist/subscriberbot/pages/customer/CartDetailPage.js +258 -225
  44. package/dist/subscriberbot/pages/customer/CartDetailPage.js.map +1 -1
  45. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js +82 -76
  46. package/dist/subscriberbot/pages/customer/CartDiscoveryPage.js.map +1 -1
  47. package/dist/subscriberbot/pages/customer/CheckoutPage.js +212 -215
  48. package/dist/subscriberbot/pages/customer/CheckoutPage.js.map +1 -1
  49. package/dist/subscriberbot/pages/customer/CustomerDashboard.js +416 -381
  50. package/dist/subscriberbot/pages/customer/CustomerDashboard.js.map +1 -1
  51. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js +488 -479
  52. package/dist/subscriberbot/pages/customer/CustomerProfilePage.js.map +1 -1
  53. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js +521 -512
  54. package/dist/subscriberbot/pages/customer/DirectServiceBookingPage.js.map +1 -1
  55. package/dist/subscriberbot/pages/customer/FavoritesPage.js +57 -51
  56. package/dist/subscriberbot/pages/customer/FavoritesPage.js.map +1 -1
  57. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js +56 -50
  58. package/dist/subscriberbot/pages/customer/OrderHistoryPage.js.map +1 -1
  59. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js +65 -60
  60. package/dist/subscriberbot/pages/customer/OrderTrackingPage.js.map +1 -1
  61. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js +79 -73
  62. package/dist/subscriberbot/pages/customer/PaymentMethodsPage.js.map +1 -1
  63. package/dist/subscriberbot/pages/customer/ReviewsPage.js +68 -62
  64. package/dist/subscriberbot/pages/customer/ReviewsPage.js.map +1 -1
  65. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js +60 -54
  66. package/dist/subscriberbot/pages/customer/SavedAddressesPage.js.map +1 -1
  67. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js +292 -255
  68. package/dist/subscriberbot/pages/investor/InvestmentDetailsPage.js.map +1 -1
  69. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js +237 -231
  70. package/dist/subscriberbot/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  71. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js +60 -54
  72. package/dist/subscriberbot/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  73. package/dist/subscriberbot/pages/investor/InvestorDashboard.js +350 -319
  74. package/dist/subscriberbot/pages/investor/InvestorDashboard.js.map +1 -1
  75. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js +106 -100
  76. package/dist/subscriberbot/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  77. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js +51 -45
  78. package/dist/subscriberbot/pages/investor/InvestorPortfolioPage.js.map +1 -1
  79. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js +387 -382
  80. package/dist/subscriberbot/pages/investor/InvestorProfilePage.js.map +1 -1
  81. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js +320 -282
  82. package/dist/subscriberbot/pages/worker/TaskDetailsPage.js.map +1 -1
  83. package/dist/subscriberbot/pages/worker/WorkerDashboard.js +92 -61
  84. package/dist/subscriberbot/pages/worker/WorkerDashboard.js.map +1 -1
  85. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js +82 -77
  86. package/dist/subscriberbot/pages/worker/WorkerOrdersPage.js.map +1 -1
  87. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js +82 -77
  88. package/dist/subscriberbot/pages/worker/WorkerProfilePage.js.map +1 -1
  89. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js +348 -340
  90. package/dist/subscriberbot/pages/worker/WorkerSchedulePage.js.map +1 -1
  91. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"AdminProfilePage.js","names":[],"sources":["../../../../src/subscriberbot/pages/admin/AdminProfilePage.tsx"],"sourcesContent":["/**\n * Admin Profile Page\n * @module subscriberbot/pages/admin\n *\n * Full-featured admin profile with edit mode toggle, save/cancel buttons,\n * editable form fields, account information, permissions as icon badges,\n * admin note, and back navigation.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport {\n User,\n Mail,\n Phone,\n Shield,\n ArrowLeft,\n Save,\n Edit3,\n Building2,\n Clock,\n ShoppingBag,\n BarChart3,\n Settings,\n Users,\n} from 'lucide-react';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface AdminProfile {\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n role: string;\n department: string;\n permissions: string[];\n lastLogin: string;\n accountCreated: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminProfilePage() {\n const { currentUser, navigateTo } = useSubscriberBot();\n const [isEditing, setIsEditing] = useState(false);\n const [saving, setSaving] = useState(false);\n const [profile, setProfile] = useState<AdminProfile>({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n role: 'admin',\n department: 'Administration',\n permissions: [\n 'user_management',\n 'cart_management',\n 'order_management',\n 'analytics',\n 'system_settings',\n ],\n lastLogin: '',\n accountCreated: '',\n });\n\n const loadProfile = useCallback(() => {\n const mockProfile: AdminProfile = {\n firstName: currentUser?.firstName ?? 'Admin',\n lastName: currentUser?.lastName ?? 'User',\n email: currentUser?.email ?? 'admin@subscriberbot.com',\n phone: '+91 98765 43210',\n role: 'admin',\n department: 'Administration',\n permissions: [\n 'user_management',\n 'cart_management',\n 'order_management',\n 'analytics',\n 'system_settings',\n ],\n lastLogin: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(),\n accountCreated: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString(),\n };\n setProfile(mockProfile);\n }, [currentUser]);\n\n useEffect(() => {\n loadProfile();\n }, [loadProfile]);\n\n const handleSave = async () => {\n setSaving(true);\n await new Promise((resolve) => setTimeout(resolve, 1000));\n alert('Profile updated successfully');\n setSaving(false);\n setIsEditing(false);\n };\n\n const handleInputChange = (field: keyof AdminProfile, value: string) => {\n setProfile((prev) => ({ ...prev, [field]: value }));\n };\n\n const formatDate = (d: string) => {\n if (!d) return 'N/A';\n return new Date(d).toLocaleDateString('en-IN', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const permissionIcons: Record<string, typeof Users> = {\n user_management: Users,\n cart_management: ShoppingBag,\n order_management: ShoppingBag,\n analytics: BarChart3,\n system_settings: Settings,\n };\n\n return (\n <PageLayout\n title=\"Admin Profile\"\n description=\"Your admin account information and permissions\"\n actions={\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin')}\n className=\"flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back\n </button>\n {!isEditing ? (\n <button\n type=\"button\"\n onClick={() => setIsEditing(true)}\n className=\"flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Edit3 className=\"h-4 w-4\" />\n Edit Profile\n </button>\n ) : (\n <>\n <button\n type=\"button\"\n onClick={() => {\n setIsEditing(false);\n loadProfile();\n }}\n className=\"flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving}\n className=\"flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n <Save className=\"h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Changes'}\n </button>\n </>\n )}\n </div>\n }\n >\n <div className=\"space-y-6 max-w-4xl\">\n {/* Profile Information */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6\">\n <div className=\"flex items-center mb-6\">\n <div className=\"w-16 h-16 bg-action-primary-bg text-action-primary-text rounded-full flex items-center justify-center text-2xl font-bold mr-4\">\n {profile.firstName.charAt(0)}\n {profile.lastName.charAt(0)}\n </div>\n <div>\n <h2 className=\"text-xl font-semibold text-text-primary\">\n {profile.firstName} {profile.lastName}\n </h2>\n <p className=\"text-text-secondary\">{profile.email}</p>\n <p className=\"text-sm text-text-secondary capitalize\">\n {profile.role} &bull; {profile.department}\n </p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n First Name\n </label>\n <input\n type=\"text\"\n value={profile.firstName}\n onChange={(e) => handleInputChange('firstName', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Last Name\n </label>\n <input\n type=\"text\"\n value={profile.lastName}\n onChange={(e) => handleInputChange('lastName', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Email Address\n </label>\n <input\n type=\"email\"\n value={profile.email}\n onChange={(e) => handleInputChange('email', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={profile.phone}\n onChange={(e) => handleInputChange('phone', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Department\n </label>\n <input\n type=\"text\"\n value={profile.department}\n onChange={(e) => handleInputChange('department', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">Role</label>\n <input\n type=\"text\"\n value={profile.role}\n disabled\n className=\"w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary bg-bg-sunken cursor-not-allowed\"\n />\n <p className=\"text-xs text-text-secondary mt-1\">\n Role cannot be changed from profile page\n </p>\n </div>\n </div>\n </div>\n\n {/* Account Information */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <Clock className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Account Information</h3>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Last Login\n </label>\n <p className=\"rounded-lg bg-bg-sunken p-3 text-sm text-text-primary\">\n {formatDate(profile.lastLogin)}\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Account Created\n </label>\n <p className=\"rounded-lg bg-bg-sunken p-3 text-sm text-text-primary\">\n {formatDate(profile.accountCreated)}\n </p>\n </div>\n </div>\n </div>\n\n {/* Permissions */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <Shield className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Permissions</h3>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3\">\n {profile.permissions.map((permission) => {\n const PermIcon = permissionIcons[permission] ?? Shield;\n return (\n <div\n key={permission}\n className=\"flex items-center gap-2 rounded-lg bg-action-primary-bg/10 text-primary p-3 text-sm font-medium\"\n >\n <PermIcon className=\"h-4 w-4 shrink-0\" />\n <span className=\"uppercase text-xs\">{permission.replace(/_/g, ' ')}</span>\n </div>\n );\n })}\n </div>\n <p className=\"text-xs text-text-secondary mt-4\">\n Permissions are managed by super administrators. Contact your system administrator to\n modify permissions.\n </p>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AdminProfilePage.js","names":[],"sources":["../../../../src/subscriberbot/pages/admin/AdminProfilePage.tsx"],"sourcesContent":["/**\n * Admin Profile Page\n * @module subscriberbot/pages/admin\n *\n * Full-featured admin profile with edit mode toggle, save/cancel buttons,\n * editable form fields, account information, permissions as icon badges,\n * admin note, and back navigation.\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport {\n User,\n Mail,\n Phone,\n Shield,\n ArrowLeft,\n Save,\n Edit3,\n Building2,\n Clock,\n ShoppingBag,\n BarChart3,\n Settings,\n Users,\n} from 'lucide-react';\nimport { PagePurpose, EmphasisPanel } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useSubscriberBot } from '../../context/SubscriberBotContext';\nimport { cn } from '../../utils/cn';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\ninterface AdminProfile {\n firstName: string;\n lastName: string;\n email: string;\n phone: string;\n role: string;\n department: string;\n permissions: string[];\n lastLogin: string;\n accountCreated: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport function AdminProfilePage() {\n const { currentUser, navigateTo } = useSubscriberBot();\n const [isEditing, setIsEditing] = useState(false);\n const [saving, setSaving] = useState(false);\n const [profile, setProfile] = useState<AdminProfile>({\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n role: 'admin',\n department: 'Administration',\n permissions: [\n 'user_management',\n 'cart_management',\n 'order_management',\n 'analytics',\n 'system_settings',\n ],\n lastLogin: '',\n accountCreated: '',\n });\n\n const loadProfile = useCallback(() => {\n const mockProfile: AdminProfile = {\n firstName: currentUser?.firstName ?? 'Admin',\n lastName: currentUser?.lastName ?? 'User',\n email: currentUser?.email ?? 'admin@subscriberbot.com',\n phone: '+91 98765 43210',\n role: 'admin',\n department: 'Administration',\n permissions: [\n 'user_management',\n 'cart_management',\n 'order_management',\n 'analytics',\n 'system_settings',\n ],\n lastLogin: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(),\n accountCreated: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString(),\n };\n setProfile(mockProfile);\n }, [currentUser]);\n\n useEffect(() => {\n loadProfile();\n }, [loadProfile]);\n\n const handleSave = async () => {\n setSaving(true);\n await new Promise((resolve) => setTimeout(resolve, 1000));\n alert('Profile updated successfully');\n setSaving(false);\n setIsEditing(false);\n };\n\n const handleInputChange = (field: keyof AdminProfile, value: string) => {\n setProfile((prev) => ({ ...prev, [field]: value }));\n };\n\n const formatDate = (d: string) => {\n if (!d) return 'N/A';\n return new Date(d).toLocaleDateString('en-IN', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const permissionIcons: Record<string, typeof Users> = {\n user_management: Users,\n cart_management: ShoppingBag,\n order_management: ShoppingBag,\n analytics: BarChart3,\n system_settings: Settings,\n };\n\n return (\n <PageLayout\n title=\"Admin Profile\"\n description=\"Your admin account information and permissions\"\n actions={\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/admin')}\n className=\"flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back\n </button>\n {!isEditing ? (\n <button\n type=\"button\"\n onClick={() => setIsEditing(true)}\n className=\"flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Edit3 className=\"h-4 w-4\" />\n Edit Profile\n </button>\n ) : (\n <>\n <button\n type=\"button\"\n onClick={() => {\n setIsEditing(false);\n loadProfile();\n }}\n className=\"flex items-center gap-1.5 rounded-lg border border-border-seam px-3 py-2 text-sm font-medium text-text-primary hover:bg-accent transition-colors\"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving}\n className=\"flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n <Save className=\"h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Changes'}\n </button>\n </>\n )}\n </div>\n }\n >\n <div className=\"space-y-6 max-w-4xl\">\n <PagePurpose icon={<Shield className=\"h-4 w-4\" />}>\n Your own admin account — who you are, your role and the permissions you hold on\n the platform. Keep your contact details current, review the access you've been\n granted, and update your profile so teammates know how to reach you. Permissions\n are managed centrally; reach out to a super admin to request changes.\n </PagePurpose>\n\n {/* Profile Information — the ONE emphasis zone */}\n <EmphasisPanel>\n <div className=\"flex items-center mb-6\">\n <div className=\"w-16 h-16 bg-action-primary-bg text-action-primary-text rounded-full flex items-center justify-center text-2xl font-bold mr-4\">\n {profile.firstName.charAt(0)}\n {profile.lastName.charAt(0)}\n </div>\n <div>\n <h2 className=\"text-xl font-semibold text-text-primary\">\n {profile.firstName} {profile.lastName}\n </h2>\n <p className=\"text-text-secondary\">{profile.email}</p>\n <p className=\"text-sm text-text-secondary capitalize\">\n {profile.role} &bull; {profile.department}\n </p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n First Name\n </label>\n <input\n type=\"text\"\n value={profile.firstName}\n onChange={(e) => handleInputChange('firstName', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Last Name\n </label>\n <input\n type=\"text\"\n value={profile.lastName}\n onChange={(e) => handleInputChange('lastName', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Email Address\n </label>\n <input\n type=\"email\"\n value={profile.email}\n onChange={(e) => handleInputChange('email', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Phone Number\n </label>\n <input\n type=\"tel\"\n value={profile.phone}\n onChange={(e) => handleInputChange('phone', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Department\n </label>\n <input\n type=\"text\"\n value={profile.department}\n onChange={(e) => handleInputChange('department', e.target.value)}\n disabled={!isEditing}\n className={cn(\n 'w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-[var(--color-focus-ring)]',\n !isEditing && 'bg-bg-sunken cursor-not-allowed'\n )}\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">Role</label>\n <input\n type=\"text\"\n value={profile.role}\n disabled\n className=\"w-full rounded-lg border border-border-seam py-2 px-3 text-sm text-text-primary bg-bg-sunken cursor-not-allowed\"\n />\n <p className=\"text-xs text-text-secondary mt-1\">\n Role cannot be changed from profile page\n </p>\n </div>\n </div>\n </EmphasisPanel>\n\n {/* Account Information */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <Clock className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Account Information</h3>\n </div>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Last Login\n </label>\n <p className=\"rounded-lg bg-bg-sunken p-3 text-sm text-text-primary\">\n {formatDate(profile.lastLogin)}\n </p>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-text-secondary mb-2\">\n Account Created\n </label>\n <p className=\"rounded-lg bg-bg-sunken p-3 text-sm text-text-primary\">\n {formatDate(profile.accountCreated)}\n </p>\n </div>\n </div>\n </div>\n\n {/* Permissions */}\n <div className=\"rounded-lg border border-border-seam bg-bg-surface p-6\">\n <div className=\"flex items-center gap-2 mb-4\">\n <Shield className=\"h-5 w-5 text-text-secondary\" />\n <h3 className=\"text-lg font-semibold text-text-primary\">Permissions</h3>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3\">\n {profile.permissions.map((permission) => {\n const PermIcon = permissionIcons[permission] ?? Shield;\n return (\n <div\n key={permission}\n className=\"flex items-center gap-2 rounded-lg bg-action-primary-bg/10 text-primary p-3 text-sm font-medium\"\n >\n <PermIcon className=\"h-4 w-4 shrink-0\" />\n <span className=\"uppercase text-xs\">{permission.replace(/_/g, ' ')}</span>\n </div>\n );\n })}\n </div>\n <p className=\"text-xs text-text-secondary mt-4\">\n Permissions are managed by super administrators. Contact your system administrator to\n modify permissions.\n </p>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}