feat(admin): wire management modules to live backend and add UGC role
This commit is contained in:
parent
82036a0608
commit
8345d6574c
45 changed files with 6145 additions and 812 deletions
3
.playwright-cli/console-2026-04-01T11-44-14-201Z.log
Normal file
3
.playwright-cli/console-2026-04-01T11-44-14-201Z.log
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[ 32561ms] [VERBOSE] [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o @ http://127.0.0.1:3000/login:0
|
||||||
|
[ 93139ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://127.0.0.1:3000/api/gateway/users/auth/internal/login:0
|
||||||
|
[ 93459ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://127.0.0.1:3000/api/gateway/auth/internal/login:0
|
||||||
1
.playwright-cli/console-2026-04-01T11-53-19-492Z.log
Normal file
1
.playwright-cli/console-2026-04-01T11-53-19-492Z.log
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
[ 1124ms] [VERBOSE] [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o @ http://127.0.0.1:3000/login?from=%2Fadmin%2Fexternal-dashboard-management:0
|
||||||
2
.playwright-cli/console-2026-04-01T12-20-35-038Z.log
Normal file
2
.playwright-cli/console-2026-04-01T12-20-35-038Z.log
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
[ 627ms] [ERROR] Failed to load resource: the server responded with a status of 401 (Unauthorized) @ http://127.0.0.1:3000/api/gateway/api/auth/session:0
|
||||||
|
[ 742ms] [VERBOSE] [DOM] Password field is not contained in a form: (More info: https://goo.gl/9p2vKq) %o @ http://127.0.0.1:3000/login?from=%2Fadmin%2Fexternal-dashboard-management:0
|
||||||
7
.playwright-cli/page-2026-04-01T11-44-14-541Z.yml
Normal file
7
.playwright-cli/page-2026-04-01T11-44-14-541Z.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
- main [ref=e3]:
|
||||||
|
- generic [ref=e5]:
|
||||||
|
- img "NXTGAUGE" [ref=e6]
|
||||||
|
- heading "Admin Access" [level=1] [ref=e7]
|
||||||
|
- paragraph [ref=e8]: Secure sign-in and runtime control center for NXTGAUGE operations.
|
||||||
|
- link "Sign In" [ref=e10] [cursor=pointer]:
|
||||||
|
- /url: /login
|
||||||
45
.playwright-cli/page-2026-04-01T11-44-48-661Z.yml
Normal file
45
.playwright-cli/page-2026-04-01T11-44-48-661Z.yml
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
- main [ref=e11]:
|
||||||
|
- generic [ref=e13]:
|
||||||
|
- generic [ref=e14]:
|
||||||
|
- img "NXTGAUGE" [ref=e16]
|
||||||
|
- generic [ref=e17]:
|
||||||
|
- paragraph [ref=e18]: Internal Admin Portal
|
||||||
|
- heading "Dashboard Access For Operations Team" [level=1] [ref=e20]:
|
||||||
|
- text: Dashboard Access
|
||||||
|
- text: For Operations Team
|
||||||
|
- paragraph [ref=e21]: Sign in to manage roles, approvals, user operations, and runtime module configuration from one control center.
|
||||||
|
- generic [ref=e22]:
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- paragraph [ref=e24]: Access Control
|
||||||
|
- paragraph [ref=e25]: Role Management
|
||||||
|
- generic [ref=e26]:
|
||||||
|
- paragraph [ref=e27]: Workflows
|
||||||
|
- paragraph [ref=e28]: Approvals & Verification
|
||||||
|
- generic [ref=e29]:
|
||||||
|
- paragraph [ref=e30]: Operations
|
||||||
|
- paragraph [ref=e31]: Users & Companies
|
||||||
|
- generic [ref=e32]:
|
||||||
|
- paragraph [ref=e33]: Runtime
|
||||||
|
- paragraph [ref=e34]: Module Visibility
|
||||||
|
- paragraph [ref=e35]: Secured with internal access policies. Authorized personnel only.
|
||||||
|
- generic [ref=e36]:
|
||||||
|
- generic [ref=e37]:
|
||||||
|
- img "NXTGAUGE" [ref=e38]
|
||||||
|
- generic [ref=e39]: Admin
|
||||||
|
- generic [ref=e40]:
|
||||||
|
- heading "Sign In" [level=2] [ref=e41]
|
||||||
|
- paragraph [ref=e42]: Internal team access only.
|
||||||
|
- generic [ref=e43]:
|
||||||
|
- generic [ref=e44]:
|
||||||
|
- generic [ref=e45]: Email
|
||||||
|
- textbox "Enter your email" [ref=e46]
|
||||||
|
- generic [ref=e47]:
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- generic [ref=e49]: Password
|
||||||
|
- button "Forgot?" [ref=e50]
|
||||||
|
- generic [ref=e51]:
|
||||||
|
- textbox "Enter your password" [ref=e52]
|
||||||
|
- button [ref=e53]:
|
||||||
|
- img [ref=e54]
|
||||||
|
- button "Sign In" [ref=e57]
|
||||||
|
- paragraph [ref=e58]: Secure login with internal access policies.
|
||||||
46
.playwright-cli/page-2026-04-01T11-45-48-717Z.yml
Normal file
46
.playwright-cli/page-2026-04-01T11-45-48-717Z.yml
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
- main [ref=e11]:
|
||||||
|
- generic [ref=e13]:
|
||||||
|
- generic [ref=e14]:
|
||||||
|
- img "NXTGAUGE" [ref=e16]
|
||||||
|
- generic [ref=e17]:
|
||||||
|
- paragraph [ref=e18]: Internal Admin Portal
|
||||||
|
- heading "Dashboard Access For Operations Team" [level=1] [ref=e20]:
|
||||||
|
- text: Dashboard Access
|
||||||
|
- text: For Operations Team
|
||||||
|
- paragraph [ref=e21]: Sign in to manage roles, approvals, user operations, and runtime module configuration from one control center.
|
||||||
|
- generic [ref=e22]:
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- paragraph [ref=e24]: Access Control
|
||||||
|
- paragraph [ref=e25]: Role Management
|
||||||
|
- generic [ref=e26]:
|
||||||
|
- paragraph [ref=e27]: Workflows
|
||||||
|
- paragraph [ref=e28]: Approvals & Verification
|
||||||
|
- generic [ref=e29]:
|
||||||
|
- paragraph [ref=e30]: Operations
|
||||||
|
- paragraph [ref=e31]: Users & Companies
|
||||||
|
- generic [ref=e32]:
|
||||||
|
- paragraph [ref=e33]: Runtime
|
||||||
|
- paragraph [ref=e34]: Module Visibility
|
||||||
|
- paragraph [ref=e35]: Secured with internal access policies. Authorized personnel only.
|
||||||
|
- generic [ref=e36]:
|
||||||
|
- generic [ref=e37]:
|
||||||
|
- img "NXTGAUGE" [ref=e38]
|
||||||
|
- generic [ref=e39]: Admin
|
||||||
|
- generic [ref=e40]:
|
||||||
|
- heading "Sign In" [level=2] [ref=e41]
|
||||||
|
- paragraph [ref=e42]: Internal team access only.
|
||||||
|
- generic [ref=e43]:
|
||||||
|
- generic [ref=e44]:
|
||||||
|
- generic [ref=e45]: Email
|
||||||
|
- textbox "Enter your email" [ref=e46]: admin@nxtgauge.com
|
||||||
|
- generic [ref=e47]:
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- generic [ref=e49]: Password
|
||||||
|
- button "Forgot?" [ref=e50]
|
||||||
|
- generic [ref=e51]:
|
||||||
|
- textbox "Enter your password" [ref=e52]: admin123
|
||||||
|
- button [ref=e53]:
|
||||||
|
- img [ref=e54]
|
||||||
|
- paragraph [ref=e59]: Invalid credentials
|
||||||
|
- button "Sign In" [ref=e57]
|
||||||
|
- paragraph [ref=e58]: Secure login with internal access policies.
|
||||||
1
.playwright-cli/page-2026-04-01T11-53-20-588Z.yml
Normal file
1
.playwright-cli/page-2026-04-01T11-53-20-588Z.yml
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- generic [ref=e4]: Checking session…
|
||||||
1
.playwright-cli/page-2026-04-01T12-20-35-620Z.yml
Normal file
1
.playwright-cli/page-2026-04-01T12-20-35-620Z.yml
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
- generic [ref=e4]: Checking session…
|
||||||
229
.playwright-cli/page-2026-04-01T12-22-06-524Z.yml
Normal file
229
.playwright-cli/page-2026-04-01T12-22-06-524Z.yml
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e282]:
|
||||||
|
- button "All Dashboards" [ref=e283] [cursor=pointer]
|
||||||
|
- button "Create Dashboard" [ref=e284] [cursor=pointer]
|
||||||
|
- generic [ref=e285]:
|
||||||
|
- generic [ref=e286]:
|
||||||
|
- textbox "Search dashboards..." [ref=e287]
|
||||||
|
- button "Sort" [ref=e289] [cursor=pointer]:
|
||||||
|
- img [ref=e290]
|
||||||
|
- text: Sort
|
||||||
|
- button "Filters" [ref=e294] [cursor=pointer]:
|
||||||
|
- img [ref=e295]
|
||||||
|
- text: Filters
|
||||||
|
- button "Export" [ref=e297] [cursor=pointer]:
|
||||||
|
- img [ref=e298]
|
||||||
|
- text: Export
|
||||||
|
- table [ref=e302]:
|
||||||
|
- rowgroup [ref=e303]:
|
||||||
|
- row "Name Code Role Widgets Status Updated Actions" [ref=e304]:
|
||||||
|
- columnheader "Name" [ref=e305]
|
||||||
|
- columnheader "Code" [ref=e306]
|
||||||
|
- columnheader "Role" [ref=e307]
|
||||||
|
- columnheader "Widgets" [ref=e308]
|
||||||
|
- columnheader "Status" [ref=e309]
|
||||||
|
- columnheader "Updated" [ref=e310]
|
||||||
|
- columnheader "Actions" [ref=e311]
|
||||||
|
- rowgroup [ref=e312]:
|
||||||
|
- row "Loading dashboards..." [ref=e313]:
|
||||||
|
- cell "Loading dashboards..." [ref=e314]
|
||||||
331
.playwright-cli/page-2026-04-01T12-23-30-252Z.yml
Normal file
331
.playwright-cli/page-2026-04-01T12-23-30-252Z.yml
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Photographer Profile
|
||||||
|
- paragraph [ref=e546]: Manage your photography details, pricing, portfolio, and documents.
|
||||||
|
- generic [ref=e547]:
|
||||||
|
- button "Basic Info" [ref=e548] [cursor=pointer]
|
||||||
|
- button "Photography Details" [ref=e549] [cursor=pointer]
|
||||||
|
- button "Services & Pricing" [ref=e550] [cursor=pointer]
|
||||||
|
- button "Portfolio" [ref=e551] [cursor=pointer]
|
||||||
|
- button "Documents" [ref=e552] [cursor=pointer]
|
||||||
|
- button "Settings" [ref=e553] [cursor=pointer]
|
||||||
|
- generic [ref=e555]:
|
||||||
|
- generic [ref=e556]:
|
||||||
|
- generic [ref=e557]:
|
||||||
|
- paragraph [ref=e558]: Basic Info
|
||||||
|
- generic [ref=e559]: 8 fields
|
||||||
|
- generic [ref=e560]:
|
||||||
|
- generic [ref=e561]:
|
||||||
|
- generic [ref=e562]:
|
||||||
|
- paragraph [ref=e563]: Full Name*
|
||||||
|
- generic [ref=e565]: Enter full name
|
||||||
|
- generic [ref=e566]:
|
||||||
|
- paragraph [ref=e567]: Brand Name*
|
||||||
|
- generic [ref=e569]: Enter brand name
|
||||||
|
- generic [ref=e570]:
|
||||||
|
- paragraph [ref=e571]: Email Address*
|
||||||
|
- generic [ref=e573]: Enter email address
|
||||||
|
- generic [ref=e574]:
|
||||||
|
- paragraph [ref=e575]: Mobile Number*
|
||||||
|
- generic [ref=e577]: Enter mobile number
|
||||||
|
- generic [ref=e578]:
|
||||||
|
- generic [ref=e579]:
|
||||||
|
- paragraph [ref=e580]: City*
|
||||||
|
- generic [ref=e582]: Enter city
|
||||||
|
- generic [ref=e583]:
|
||||||
|
- paragraph [ref=e584]: State*
|
||||||
|
- generic [ref=e586]: Enter state
|
||||||
|
- generic [ref=e587]:
|
||||||
|
- paragraph [ref=e588]: Country*
|
||||||
|
- generic [ref=e589]:
|
||||||
|
- generic [ref=e590]: Select country
|
||||||
|
- generic [ref=e591]: ▾
|
||||||
|
- generic [ref=e592]:
|
||||||
|
- paragraph [ref=e593]: PIN Code*
|
||||||
|
- generic [ref=e595]: Enter 6-digit pincode
|
||||||
|
- generic [ref=e596]:
|
||||||
|
- button "Cancel" [ref=e597]
|
||||||
|
- button "Save Changes" [ref=e598]
|
||||||
|
- generic [ref=e599]:
|
||||||
|
- paragraph [ref=e600]: Profile Completeness
|
||||||
|
- paragraph [ref=e601]: 87%
|
||||||
|
- paragraph [ref=e604]: Active Section
|
||||||
|
- paragraph [ref=e605]: Basic Info
|
||||||
|
- paragraph [ref=e606]: Mandatory Fields
|
||||||
|
- paragraph [ref=e607]: "8"
|
||||||
|
- paragraph [ref=e608]: Marked with *
|
||||||
|
- paragraph [ref=e609]: Manage your photography details, pricing, portfolio, and documents.
|
||||||
|
- generic [ref=e610]:
|
||||||
|
- button "Save Changes" [ref=e611]
|
||||||
|
- button "Reset" [ref=e612]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
568
.playwright-cli/page-2026-04-01T12-23-58-331Z.yml
Normal file
568
.playwright-cli/page-2026-04-01T12-23-58-331Z.yml
Normal file
|
|
@ -0,0 +1,568 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [active] [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Photographer Portfolio
|
||||||
|
- paragraph [ref=e546]: Manage your public portfolio, showcase your work, and control what service seekers see before they accept your contact request.
|
||||||
|
- generic [ref=e616]:
|
||||||
|
- button "Overview Summary" [ref=e617] [cursor=pointer]:
|
||||||
|
- img [ref=e619]
|
||||||
|
- generic [ref=e624]:
|
||||||
|
- generic [ref=e625]: Overview
|
||||||
|
- generic [ref=e626]: Summary
|
||||||
|
- button "About Profile" [ref=e627] [cursor=pointer]:
|
||||||
|
- img [ref=e629]
|
||||||
|
- generic [ref=e633]:
|
||||||
|
- generic [ref=e634]: About
|
||||||
|
- generic [ref=e635]: Profile
|
||||||
|
- button "Services & Pricing Pricing" [ref=e636] [cursor=pointer]:
|
||||||
|
- img [ref=e638]
|
||||||
|
- generic [ref=e643]:
|
||||||
|
- generic [ref=e644]: Services & Pricing
|
||||||
|
- generic [ref=e645]: Pricing
|
||||||
|
- button "Portfolio Gallery Work" [ref=e646] [cursor=pointer]:
|
||||||
|
- img [ref=e648]
|
||||||
|
- generic [ref=e652]:
|
||||||
|
- generic [ref=e653]: Portfolio Gallery
|
||||||
|
- generic [ref=e654]: Work
|
||||||
|
- button "Experience & Equipment History" [ref=e655] [cursor=pointer]:
|
||||||
|
- img [ref=e657]
|
||||||
|
- generic [ref=e661]:
|
||||||
|
- generic [ref=e662]: Experience & Equipment
|
||||||
|
- generic [ref=e663]: History
|
||||||
|
- button "Testimonials Locked" [disabled] [ref=e664]:
|
||||||
|
- img [ref=e666]
|
||||||
|
- generic [ref=e668]:
|
||||||
|
- generic [ref=e669]: Testimonials
|
||||||
|
- generic [ref=e670]: Locked
|
||||||
|
- button "Faqs Answers" [ref=e671] [cursor=pointer]:
|
||||||
|
- img [ref=e673]
|
||||||
|
- generic [ref=e676]:
|
||||||
|
- generic [ref=e677]: Faqs
|
||||||
|
- generic [ref=e678]: Answers
|
||||||
|
- generic [ref=e679]:
|
||||||
|
- generic [ref=e680]:
|
||||||
|
- generic [ref=e682]:
|
||||||
|
- generic [ref=e683]:
|
||||||
|
- generic [ref=e684]:
|
||||||
|
- paragraph [ref=e685]: Alex Morgan
|
||||||
|
- generic [ref=e686]: Verified
|
||||||
|
- generic [ref=e687]: Top Response Rate
|
||||||
|
- generic [ref=e688]: Portfolio UI v2
|
||||||
|
- paragraph [ref=e689]: Photographer
|
||||||
|
- generic [ref=e690]:
|
||||||
|
- generic [ref=e691]: "Area: Mumbai Region"
|
||||||
|
- generic [ref=e692]: "Place: Andheri East, Mumbai"
|
||||||
|
- generic [ref=e693]: "Travel: Mumbai, Navi Mumbai, Thane, Pune"
|
||||||
|
- generic [ref=e694]:
|
||||||
|
- button "Edit Portfolio" [ref=e695] [cursor=pointer]
|
||||||
|
- button "Preview Portfolio" [ref=e696] [cursor=pointer]
|
||||||
|
- generic [ref=e697]:
|
||||||
|
- generic [ref=e698]:
|
||||||
|
- paragraph [ref=e699]: Shoots Done
|
||||||
|
- paragraph [ref=e700]: "248"
|
||||||
|
- generic [ref=e701]:
|
||||||
|
- paragraph [ref=e702]: Years Exp
|
||||||
|
- paragraph [ref=e703]: 7+
|
||||||
|
- generic [ref=e704]:
|
||||||
|
- paragraph [ref=e705]: Verified Pro
|
||||||
|
- paragraph [ref=e706]: Verified
|
||||||
|
- generic [ref=e707]:
|
||||||
|
- paragraph [ref=e708]: Last Delivery
|
||||||
|
- paragraph [ref=e709]: 2 days
|
||||||
|
- generic [ref=e710]:
|
||||||
|
- paragraph [ref=e711]: Will Travel
|
||||||
|
- paragraph [ref=e712]: "Yes"
|
||||||
|
- generic [ref=e713]:
|
||||||
|
- generic [ref=e714]:
|
||||||
|
- generic [ref=e715]:
|
||||||
|
- paragraph [ref=e716]: Profile Strength
|
||||||
|
- paragraph [ref=e717]: 92%
|
||||||
|
- paragraph [ref=e718]: Complete and visible
|
||||||
|
- img [ref=e720]
|
||||||
|
- generic [ref=e723]:
|
||||||
|
- generic [ref=e724]:
|
||||||
|
- paragraph [ref=e725]: Win Momentum
|
||||||
|
- paragraph [ref=e726]: +18%
|
||||||
|
- paragraph [ref=e727]: Last 30 days
|
||||||
|
- img [ref=e729]
|
||||||
|
- generic [ref=e732]:
|
||||||
|
- generic [ref=e733]:
|
||||||
|
- paragraph [ref=e734]: Featured Status
|
||||||
|
- paragraph [ref=e735]: "Yes"
|
||||||
|
- paragraph [ref=e736]: Recommended in search
|
||||||
|
- img [ref=e738]
|
||||||
|
- generic [ref=e741]:
|
||||||
|
- generic [ref=e742]:
|
||||||
|
- paragraph [ref=e743]: Avg. Reply Time
|
||||||
|
- paragraph [ref=e744]: 2 hrs
|
||||||
|
- paragraph [ref=e745]: Fast responder
|
||||||
|
- img [ref=e747]
|
||||||
|
- generic [ref=e749]:
|
||||||
|
- generic [ref=e750]:
|
||||||
|
- paragraph [ref=e752]:
|
||||||
|
- img [ref=e753]
|
||||||
|
- text: About
|
||||||
|
- generic [ref=e757]:
|
||||||
|
- paragraph [ref=e758]: Professional photographer with 7+ years of experience delivering high-quality work across India. Committed to excellence, creativity, and client satisfaction on every project.
|
||||||
|
- generic [ref=e759]:
|
||||||
|
- generic [ref=e760]: Fast response within 2 hours
|
||||||
|
- generic [ref=e761]: Clear scope & milestone planning
|
||||||
|
- generic [ref=e762]: Delivery-first execution
|
||||||
|
- generic [ref=e763]:
|
||||||
|
- generic [ref=e764]:
|
||||||
|
- paragraph [ref=e765]: Years Exp
|
||||||
|
- paragraph [ref=e766]: 7+
|
||||||
|
- generic [ref=e767]:
|
||||||
|
- paragraph [ref=e768]: Projects
|
||||||
|
- paragraph [ref=e769]: "248"
|
||||||
|
- generic [ref=e770]:
|
||||||
|
- paragraph [ref=e771]: Rating
|
||||||
|
- paragraph [ref=e772]: "4.9"
|
||||||
|
- generic [ref=e773]:
|
||||||
|
- paragraph [ref=e774]: Reviews
|
||||||
|
- paragraph [ref=e775]: "128"
|
||||||
|
- generic [ref=e776]:
|
||||||
|
- paragraph [ref=e778]:
|
||||||
|
- img [ref=e779]
|
||||||
|
- text: Specialties
|
||||||
|
- generic [ref=e784]:
|
||||||
|
- generic [ref=e785]: Wedding
|
||||||
|
- generic [ref=e786]: Pre-Wedding
|
||||||
|
- generic [ref=e787]: Candid
|
||||||
|
- generic [ref=e788]: Event
|
||||||
|
- generic [ref=e789]: Portrait
|
||||||
|
- generic [ref=e790]: Lifestyle
|
||||||
|
- generic [ref=e791]:
|
||||||
|
- paragraph [ref=e792]: Languages
|
||||||
|
- generic [ref=e793]:
|
||||||
|
- generic [ref=e794]: English
|
||||||
|
- generic [ref=e795]: Hindi
|
||||||
|
- generic [ref=e796]: Marathi
|
||||||
|
- paragraph [ref=e797]: Service Areas
|
||||||
|
- generic [ref=e798]:
|
||||||
|
- generic [ref=e799]: Mumbai
|
||||||
|
- generic [ref=e800]: Pune
|
||||||
|
- generic [ref=e801]: Thane
|
||||||
|
- generic [ref=e802]: Nashik
|
||||||
|
- generic [ref=e803]:
|
||||||
|
- generic [ref=e804]:
|
||||||
|
- paragraph [ref=e805]:
|
||||||
|
- img [ref=e806]
|
||||||
|
- text: Services & Pricing
|
||||||
|
- generic [ref=e811]: Transparent Pricing
|
||||||
|
- generic [ref=e812]:
|
||||||
|
- generic [ref=e813]:
|
||||||
|
- paragraph [ref=e814]: Essential
|
||||||
|
- paragraph [ref=e815]: ₹15,000
|
||||||
|
- generic [ref=e816]:
|
||||||
|
- generic [ref=e817]:
|
||||||
|
- img [ref=e818]
|
||||||
|
- text: 4-hour shoot
|
||||||
|
- generic [ref=e821]:
|
||||||
|
- img [ref=e822]
|
||||||
|
- text: 100 edited photos
|
||||||
|
- generic [ref=e825]:
|
||||||
|
- img [ref=e826]
|
||||||
|
- text: Online gallery
|
||||||
|
- generic [ref=e829]:
|
||||||
|
- img [ref=e830]
|
||||||
|
- text: 1 location
|
||||||
|
- generic [ref=e833]:
|
||||||
|
- generic [ref=e834]: Most Chosen
|
||||||
|
- paragraph [ref=e835]: Premium
|
||||||
|
- paragraph [ref=e836]: ₹28,000
|
||||||
|
- generic [ref=e837]:
|
||||||
|
- generic [ref=e838]:
|
||||||
|
- img [ref=e839]
|
||||||
|
- text: 8-hour shoot
|
||||||
|
- generic [ref=e842]:
|
||||||
|
- img [ref=e843]
|
||||||
|
- text: 250 edited photos
|
||||||
|
- generic [ref=e846]:
|
||||||
|
- img [ref=e847]
|
||||||
|
- text: Online gallery
|
||||||
|
- generic [ref=e850]:
|
||||||
|
- img [ref=e851]
|
||||||
|
- text: 2 locations
|
||||||
|
- generic [ref=e854]:
|
||||||
|
- img [ref=e855]
|
||||||
|
- text: Drone shots
|
||||||
|
- generic [ref=e858]:
|
||||||
|
- paragraph [ref=e859]: Signature
|
||||||
|
- paragraph [ref=e860]: ₹50,000
|
||||||
|
- generic [ref=e861]:
|
||||||
|
- generic [ref=e862]:
|
||||||
|
- img [ref=e863]
|
||||||
|
- text: Full-day shoot
|
||||||
|
- generic [ref=e866]:
|
||||||
|
- img [ref=e867]
|
||||||
|
- text: 500 edited photos
|
||||||
|
- generic [ref=e870]:
|
||||||
|
- img [ref=e871]
|
||||||
|
- text: USB delivery
|
||||||
|
- generic [ref=e874]:
|
||||||
|
- img [ref=e875]
|
||||||
|
- text: 3 locations
|
||||||
|
- generic [ref=e878]:
|
||||||
|
- img [ref=e879]
|
||||||
|
- text: Drone + Reel
|
||||||
|
- generic [ref=e882]:
|
||||||
|
- generic [ref=e883]:
|
||||||
|
- paragraph [ref=e884]:
|
||||||
|
- img [ref=e885]
|
||||||
|
- text: Portfolio Gallery
|
||||||
|
- button "Upload Images" [ref=e889] [cursor=pointer]
|
||||||
|
- generic [ref=e890]:
|
||||||
|
- generic [ref=e891]:
|
||||||
|
- img [ref=e892]
|
||||||
|
- generic [ref=e896]: Campaign Shot
|
||||||
|
- generic [ref=e897]:
|
||||||
|
- img [ref=e898]
|
||||||
|
- generic [ref=e902]: Result Highlight
|
||||||
|
- generic [ref=e903]:
|
||||||
|
- img [ref=e904]
|
||||||
|
- generic [ref=e908]: Before/After
|
||||||
|
- generic [ref=e909]:
|
||||||
|
- img [ref=e910]
|
||||||
|
- generic [ref=e914]: Client Output
|
||||||
|
- generic [ref=e915]:
|
||||||
|
- img [ref=e916]
|
||||||
|
- generic [ref=e920]: Style Board
|
||||||
|
- generic [ref=e921]:
|
||||||
|
- img [ref=e922]
|
||||||
|
- generic [ref=e926]: Final Delivery
|
||||||
|
- generic [ref=e927]:
|
||||||
|
- img [ref=e928]
|
||||||
|
- generic [ref=e932]: Portfolio Select
|
||||||
|
- generic [ref=e933]:
|
||||||
|
- img [ref=e934]
|
||||||
|
- generic [ref=e938]: Recent Work
|
||||||
|
- generic [ref=e939]:
|
||||||
|
- paragraph [ref=e941]:
|
||||||
|
- img [ref=e942]
|
||||||
|
- text: Experience & Equipment
|
||||||
|
- generic [ref=e946]:
|
||||||
|
- paragraph [ref=e947]: Camera & Equipment
|
||||||
|
- generic [ref=e948]:
|
||||||
|
- generic [ref=e949]: Wedding
|
||||||
|
- generic [ref=e950]: Pre-Wedding
|
||||||
|
- generic [ref=e951]: Candid
|
||||||
|
- generic [ref=e952]: Event
|
||||||
|
- generic [ref=e953]: Portrait
|
||||||
|
- generic [ref=e954]: Lifestyle
|
||||||
|
- generic [ref=e955]:
|
||||||
|
- generic [ref=e956]:
|
||||||
|
- paragraph [ref=e958]: "2018"
|
||||||
|
- paragraph [ref=e959]: Started professional career as Photographer
|
||||||
|
- generic [ref=e960]:
|
||||||
|
- paragraph [ref=e962]: "2020"
|
||||||
|
- paragraph [ref=e963]: Completed 100+ successful projects
|
||||||
|
- generic [ref=e964]:
|
||||||
|
- paragraph [ref=e966]: "2022"
|
||||||
|
- paragraph [ref=e967]: Won regional industry recognition
|
||||||
|
- generic [ref=e968]:
|
||||||
|
- paragraph [ref=e970]: "2024"
|
||||||
|
- paragraph [ref=e971]: Joined Nxtgauge marketplace
|
||||||
|
- generic [ref=e972]:
|
||||||
|
- generic [ref=e973]:
|
||||||
|
- paragraph [ref=e974]:
|
||||||
|
- img [ref=e975]
|
||||||
|
- text: Testimonials
|
||||||
|
- generic [ref=e977]: Locked For New Profiles
|
||||||
|
- generic [ref=e979]:
|
||||||
|
- paragraph [ref=e980]: Testimonials will be activated automatically.
|
||||||
|
- paragraph [ref=e981]:
|
||||||
|
- text: New professionals unlock testimonials after completing at least
|
||||||
|
- strong [ref=e982]: 3 jobs
|
||||||
|
- text: and receiving at least
|
||||||
|
- strong [ref=e983]: 2 customer feedback entries
|
||||||
|
- text: .
|
||||||
|
- paragraph [ref=e984]: "Current progress: 1 jobs completed • 0 feedback received"
|
||||||
|
- generic [ref=e985]:
|
||||||
|
- paragraph [ref=e987]:
|
||||||
|
- img [ref=e988]
|
||||||
|
- text: Frequently Asked Questions
|
||||||
|
- generic [ref=e991]:
|
||||||
|
- button "Do you travel for shoots?" [ref=e992] [cursor=pointer]:
|
||||||
|
- generic [ref=e993]: Do you travel for shoots?
|
||||||
|
- img [ref=e994]
|
||||||
|
- paragraph [ref=e997]: Yes, I cover Pan-India and select international locations. Travel charges apply beyond 50km.
|
||||||
|
- button "How long before I receive the final photos?" [ref=e999] [cursor=pointer]:
|
||||||
|
- generic [ref=e1000]: How long before I receive the final photos?
|
||||||
|
- img [ref=e1001]
|
||||||
|
- button "What equipment do you use?" [ref=e1004] [cursor=pointer]:
|
||||||
|
- generic [ref=e1005]: What equipment do you use?
|
||||||
|
- img [ref=e1006]
|
||||||
|
- button "Do you provide raw files?" [ref=e1009] [cursor=pointer]:
|
||||||
|
- generic [ref=e1010]: Do you provide raw files?
|
||||||
|
- img [ref=e1011]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
BIN
.playwright-cli/page-2026-04-01T12-24-31-373Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T12-24-31-373Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
229
.playwright-cli/page-2026-04-01T12-25-59-897Z.yml
Normal file
229
.playwright-cli/page-2026-04-01T12-25-59-897Z.yml
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e282]:
|
||||||
|
- button "All Dashboards" [ref=e283] [cursor=pointer]
|
||||||
|
- button "Create Dashboard" [ref=e284] [cursor=pointer]
|
||||||
|
- generic [ref=e285]:
|
||||||
|
- generic [ref=e286]:
|
||||||
|
- textbox "Search dashboards..." [ref=e287]
|
||||||
|
- button "Sort" [ref=e289] [cursor=pointer]:
|
||||||
|
- img [ref=e290]
|
||||||
|
- text: Sort
|
||||||
|
- button "Filters" [ref=e294] [cursor=pointer]:
|
||||||
|
- img [ref=e295]
|
||||||
|
- text: Filters
|
||||||
|
- button "Export" [ref=e297] [cursor=pointer]:
|
||||||
|
- img [ref=e298]
|
||||||
|
- text: Export
|
||||||
|
- table [ref=e302]:
|
||||||
|
- rowgroup [ref=e303]:
|
||||||
|
- row "Name Code Role Widgets Status Updated Actions" [ref=e304]:
|
||||||
|
- columnheader "Name" [ref=e305]
|
||||||
|
- columnheader "Code" [ref=e306]
|
||||||
|
- columnheader "Role" [ref=e307]
|
||||||
|
- columnheader "Widgets" [ref=e308]
|
||||||
|
- columnheader "Status" [ref=e309]
|
||||||
|
- columnheader "Updated" [ref=e310]
|
||||||
|
- columnheader "Actions" [ref=e311]
|
||||||
|
- rowgroup [ref=e312]:
|
||||||
|
- row "Loading dashboards..." [ref=e313]:
|
||||||
|
- cell "Loading dashboards..." [ref=e314]
|
||||||
331
.playwright-cli/page-2026-04-01T12-26-50-733Z.yml
Normal file
331
.playwright-cli/page-2026-04-01T12-26-50-733Z.yml
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Photographer Profile
|
||||||
|
- paragraph [ref=e546]: Manage your photography details, pricing, portfolio, and documents.
|
||||||
|
- generic [ref=e547]:
|
||||||
|
- button "Basic Info" [ref=e548] [cursor=pointer]
|
||||||
|
- button "Photography Details" [ref=e549] [cursor=pointer]
|
||||||
|
- button "Services & Pricing" [ref=e550] [cursor=pointer]
|
||||||
|
- button "Portfolio" [ref=e551] [cursor=pointer]
|
||||||
|
- button "Documents" [ref=e552] [cursor=pointer]
|
||||||
|
- button "Settings" [ref=e553] [cursor=pointer]
|
||||||
|
- generic [ref=e555]:
|
||||||
|
- generic [ref=e556]:
|
||||||
|
- generic [ref=e557]:
|
||||||
|
- paragraph [ref=e558]: Basic Info
|
||||||
|
- generic [ref=e559]: 8 fields
|
||||||
|
- generic [ref=e560]:
|
||||||
|
- generic [ref=e561]:
|
||||||
|
- generic [ref=e562]:
|
||||||
|
- paragraph [ref=e563]: Full Name*
|
||||||
|
- generic [ref=e565]: Enter full name
|
||||||
|
- generic [ref=e566]:
|
||||||
|
- paragraph [ref=e567]: Brand Name*
|
||||||
|
- generic [ref=e569]: Enter brand name
|
||||||
|
- generic [ref=e570]:
|
||||||
|
- paragraph [ref=e571]: Email Address*
|
||||||
|
- generic [ref=e573]: Enter email address
|
||||||
|
- generic [ref=e574]:
|
||||||
|
- paragraph [ref=e575]: Mobile Number*
|
||||||
|
- generic [ref=e577]: Enter mobile number
|
||||||
|
- generic [ref=e578]:
|
||||||
|
- generic [ref=e579]:
|
||||||
|
- paragraph [ref=e580]: City*
|
||||||
|
- generic [ref=e582]: Enter city
|
||||||
|
- generic [ref=e583]:
|
||||||
|
- paragraph [ref=e584]: State*
|
||||||
|
- generic [ref=e586]: Enter state
|
||||||
|
- generic [ref=e587]:
|
||||||
|
- paragraph [ref=e588]: Country*
|
||||||
|
- generic [ref=e589]:
|
||||||
|
- generic [ref=e590]: Select country
|
||||||
|
- generic [ref=e591]: ▾
|
||||||
|
- generic [ref=e592]:
|
||||||
|
- paragraph [ref=e593]: PIN Code*
|
||||||
|
- generic [ref=e595]: Enter 6-digit pincode
|
||||||
|
- generic [ref=e596]:
|
||||||
|
- button "Cancel" [ref=e597]
|
||||||
|
- button "Save Changes" [ref=e598]
|
||||||
|
- generic [ref=e599]:
|
||||||
|
- paragraph [ref=e600]: Profile Completeness
|
||||||
|
- paragraph [ref=e601]: 87%
|
||||||
|
- paragraph [ref=e604]: Active Section
|
||||||
|
- paragraph [ref=e605]: Basic Info
|
||||||
|
- paragraph [ref=e606]: Mandatory Fields
|
||||||
|
- paragraph [ref=e607]: "8"
|
||||||
|
- paragraph [ref=e608]: Marked with *
|
||||||
|
- paragraph [ref=e609]: Manage your photography details, pricing, portfolio, and documents.
|
||||||
|
- generic [ref=e610]:
|
||||||
|
- button "Save Changes" [ref=e611]
|
||||||
|
- button "Reset" [ref=e612]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
568
.playwright-cli/page-2026-04-01T12-27-15-103Z.yml
Normal file
568
.playwright-cli/page-2026-04-01T12-27-15-103Z.yml
Normal file
|
|
@ -0,0 +1,568 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [active] [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Photographer Portfolio
|
||||||
|
- paragraph [ref=e546]: Manage your public portfolio, showcase your work, and control what service seekers see before they accept your contact request.
|
||||||
|
- generic [ref=e616]:
|
||||||
|
- button "Overview Summary" [ref=e617] [cursor=pointer]:
|
||||||
|
- img [ref=e619]
|
||||||
|
- generic [ref=e624]:
|
||||||
|
- generic [ref=e625]: Overview
|
||||||
|
- generic [ref=e626]: Summary
|
||||||
|
- button "About Profile" [ref=e627] [cursor=pointer]:
|
||||||
|
- img [ref=e629]
|
||||||
|
- generic [ref=e633]:
|
||||||
|
- generic [ref=e634]: About
|
||||||
|
- generic [ref=e635]: Profile
|
||||||
|
- button "Services & Pricing Pricing" [ref=e636] [cursor=pointer]:
|
||||||
|
- img [ref=e638]
|
||||||
|
- generic [ref=e643]:
|
||||||
|
- generic [ref=e644]: Services & Pricing
|
||||||
|
- generic [ref=e645]: Pricing
|
||||||
|
- button "Portfolio Gallery Work" [ref=e646] [cursor=pointer]:
|
||||||
|
- img [ref=e648]
|
||||||
|
- generic [ref=e652]:
|
||||||
|
- generic [ref=e653]: Portfolio Gallery
|
||||||
|
- generic [ref=e654]: Work
|
||||||
|
- button "Experience & Equipment History" [ref=e655] [cursor=pointer]:
|
||||||
|
- img [ref=e657]
|
||||||
|
- generic [ref=e661]:
|
||||||
|
- generic [ref=e662]: Experience & Equipment
|
||||||
|
- generic [ref=e663]: History
|
||||||
|
- button "Testimonials Locked" [disabled] [ref=e664]:
|
||||||
|
- img [ref=e666]
|
||||||
|
- generic [ref=e668]:
|
||||||
|
- generic [ref=e669]: Testimonials
|
||||||
|
- generic [ref=e670]: Locked
|
||||||
|
- button "Faqs Answers" [ref=e671] [cursor=pointer]:
|
||||||
|
- img [ref=e673]
|
||||||
|
- generic [ref=e676]:
|
||||||
|
- generic [ref=e677]: Faqs
|
||||||
|
- generic [ref=e678]: Answers
|
||||||
|
- generic [ref=e679]:
|
||||||
|
- generic [ref=e680]:
|
||||||
|
- generic [ref=e682]:
|
||||||
|
- generic [ref=e683]:
|
||||||
|
- generic [ref=e684]:
|
||||||
|
- paragraph [ref=e685]: Alex Morgan
|
||||||
|
- generic [ref=e686]: Verified
|
||||||
|
- generic [ref=e687]: Top Response Rate
|
||||||
|
- generic [ref=e688]: Portfolio UI v2
|
||||||
|
- paragraph [ref=e689]: Photographer
|
||||||
|
- generic [ref=e690]:
|
||||||
|
- generic [ref=e691]: "Area: Mumbai Region"
|
||||||
|
- generic [ref=e692]: "Place: Andheri East, Mumbai"
|
||||||
|
- generic [ref=e693]: "Travel: Mumbai, Navi Mumbai, Thane, Pune"
|
||||||
|
- generic [ref=e694]:
|
||||||
|
- button "Edit Portfolio" [ref=e695] [cursor=pointer]
|
||||||
|
- button "Preview Portfolio" [ref=e696] [cursor=pointer]
|
||||||
|
- generic [ref=e697]:
|
||||||
|
- generic [ref=e698]:
|
||||||
|
- paragraph [ref=e699]: Shoots Done
|
||||||
|
- paragraph [ref=e700]: "248"
|
||||||
|
- generic [ref=e701]:
|
||||||
|
- paragraph [ref=e702]: Years Exp
|
||||||
|
- paragraph [ref=e703]: 7+
|
||||||
|
- generic [ref=e704]:
|
||||||
|
- paragraph [ref=e705]: Verified Pro
|
||||||
|
- paragraph [ref=e706]: Verified
|
||||||
|
- generic [ref=e707]:
|
||||||
|
- paragraph [ref=e708]: Last Delivery
|
||||||
|
- paragraph [ref=e709]: 2 days
|
||||||
|
- generic [ref=e710]:
|
||||||
|
- paragraph [ref=e711]: Will Travel
|
||||||
|
- paragraph [ref=e712]: "Yes"
|
||||||
|
- generic [ref=e713]:
|
||||||
|
- generic [ref=e714]:
|
||||||
|
- generic [ref=e715]:
|
||||||
|
- paragraph [ref=e716]: Profile Strength
|
||||||
|
- paragraph [ref=e717]: 92%
|
||||||
|
- paragraph [ref=e718]: Complete and visible
|
||||||
|
- img [ref=e720]
|
||||||
|
- generic [ref=e723]:
|
||||||
|
- generic [ref=e724]:
|
||||||
|
- paragraph [ref=e725]: Win Momentum
|
||||||
|
- paragraph [ref=e726]: +18%
|
||||||
|
- paragraph [ref=e727]: Last 30 days
|
||||||
|
- img [ref=e729]
|
||||||
|
- generic [ref=e732]:
|
||||||
|
- generic [ref=e733]:
|
||||||
|
- paragraph [ref=e734]: Featured Status
|
||||||
|
- paragraph [ref=e735]: "Yes"
|
||||||
|
- paragraph [ref=e736]: Recommended in search
|
||||||
|
- img [ref=e738]
|
||||||
|
- generic [ref=e741]:
|
||||||
|
- generic [ref=e742]:
|
||||||
|
- paragraph [ref=e743]: Avg. Reply Time
|
||||||
|
- paragraph [ref=e744]: 2 hrs
|
||||||
|
- paragraph [ref=e745]: Fast responder
|
||||||
|
- img [ref=e747]
|
||||||
|
- generic [ref=e749]:
|
||||||
|
- generic [ref=e750]:
|
||||||
|
- paragraph [ref=e752]:
|
||||||
|
- img [ref=e753]
|
||||||
|
- text: About
|
||||||
|
- generic [ref=e757]:
|
||||||
|
- paragraph [ref=e758]: Professional photographer with 7+ years of experience delivering high-quality work across India. Committed to excellence, creativity, and client satisfaction on every project.
|
||||||
|
- generic [ref=e759]:
|
||||||
|
- generic [ref=e760]: Fast response within 2 hours
|
||||||
|
- generic [ref=e761]: Clear scope & milestone planning
|
||||||
|
- generic [ref=e762]: Delivery-first execution
|
||||||
|
- generic [ref=e763]:
|
||||||
|
- generic [ref=e764]:
|
||||||
|
- paragraph [ref=e765]: Years Exp
|
||||||
|
- paragraph [ref=e766]: 7+
|
||||||
|
- generic [ref=e767]:
|
||||||
|
- paragraph [ref=e768]: Projects
|
||||||
|
- paragraph [ref=e769]: "248"
|
||||||
|
- generic [ref=e770]:
|
||||||
|
- paragraph [ref=e771]: Rating
|
||||||
|
- paragraph [ref=e772]: "4.9"
|
||||||
|
- generic [ref=e773]:
|
||||||
|
- paragraph [ref=e774]: Reviews
|
||||||
|
- paragraph [ref=e775]: "128"
|
||||||
|
- generic [ref=e776]:
|
||||||
|
- paragraph [ref=e778]:
|
||||||
|
- img [ref=e779]
|
||||||
|
- text: Specialties
|
||||||
|
- generic [ref=e784]:
|
||||||
|
- generic [ref=e785]: Wedding
|
||||||
|
- generic [ref=e786]: Pre-Wedding
|
||||||
|
- generic [ref=e787]: Candid
|
||||||
|
- generic [ref=e788]: Event
|
||||||
|
- generic [ref=e789]: Portrait
|
||||||
|
- generic [ref=e790]: Lifestyle
|
||||||
|
- generic [ref=e791]:
|
||||||
|
- paragraph [ref=e792]: Languages
|
||||||
|
- generic [ref=e793]:
|
||||||
|
- generic [ref=e794]: English
|
||||||
|
- generic [ref=e795]: Hindi
|
||||||
|
- generic [ref=e796]: Marathi
|
||||||
|
- paragraph [ref=e797]: Service Areas
|
||||||
|
- generic [ref=e798]:
|
||||||
|
- generic [ref=e799]: Mumbai
|
||||||
|
- generic [ref=e800]: Pune
|
||||||
|
- generic [ref=e801]: Thane
|
||||||
|
- generic [ref=e802]: Nashik
|
||||||
|
- generic [ref=e803]:
|
||||||
|
- generic [ref=e804]:
|
||||||
|
- paragraph [ref=e805]:
|
||||||
|
- img [ref=e806]
|
||||||
|
- text: Services & Pricing
|
||||||
|
- generic [ref=e811]: Transparent Pricing
|
||||||
|
- generic [ref=e812]:
|
||||||
|
- generic [ref=e813]:
|
||||||
|
- paragraph [ref=e814]: Essential
|
||||||
|
- paragraph [ref=e815]: ₹15,000
|
||||||
|
- generic [ref=e816]:
|
||||||
|
- generic [ref=e817]:
|
||||||
|
- img [ref=e818]
|
||||||
|
- text: 4-hour shoot
|
||||||
|
- generic [ref=e821]:
|
||||||
|
- img [ref=e822]
|
||||||
|
- text: 100 edited photos
|
||||||
|
- generic [ref=e825]:
|
||||||
|
- img [ref=e826]
|
||||||
|
- text: Online gallery
|
||||||
|
- generic [ref=e829]:
|
||||||
|
- img [ref=e830]
|
||||||
|
- text: 1 location
|
||||||
|
- generic [ref=e833]:
|
||||||
|
- generic [ref=e834]: Most Chosen
|
||||||
|
- paragraph [ref=e835]: Premium
|
||||||
|
- paragraph [ref=e836]: ₹28,000
|
||||||
|
- generic [ref=e837]:
|
||||||
|
- generic [ref=e838]:
|
||||||
|
- img [ref=e839]
|
||||||
|
- text: 8-hour shoot
|
||||||
|
- generic [ref=e842]:
|
||||||
|
- img [ref=e843]
|
||||||
|
- text: 250 edited photos
|
||||||
|
- generic [ref=e846]:
|
||||||
|
- img [ref=e847]
|
||||||
|
- text: Online gallery
|
||||||
|
- generic [ref=e850]:
|
||||||
|
- img [ref=e851]
|
||||||
|
- text: 2 locations
|
||||||
|
- generic [ref=e854]:
|
||||||
|
- img [ref=e855]
|
||||||
|
- text: Drone shots
|
||||||
|
- generic [ref=e858]:
|
||||||
|
- paragraph [ref=e859]: Signature
|
||||||
|
- paragraph [ref=e860]: ₹50,000
|
||||||
|
- generic [ref=e861]:
|
||||||
|
- generic [ref=e862]:
|
||||||
|
- img [ref=e863]
|
||||||
|
- text: Full-day shoot
|
||||||
|
- generic [ref=e866]:
|
||||||
|
- img [ref=e867]
|
||||||
|
- text: 500 edited photos
|
||||||
|
- generic [ref=e870]:
|
||||||
|
- img [ref=e871]
|
||||||
|
- text: USB delivery
|
||||||
|
- generic [ref=e874]:
|
||||||
|
- img [ref=e875]
|
||||||
|
- text: 3 locations
|
||||||
|
- generic [ref=e878]:
|
||||||
|
- img [ref=e879]
|
||||||
|
- text: Drone + Reel
|
||||||
|
- generic [ref=e882]:
|
||||||
|
- generic [ref=e883]:
|
||||||
|
- paragraph [ref=e884]:
|
||||||
|
- img [ref=e885]
|
||||||
|
- text: Portfolio Gallery
|
||||||
|
- button "Upload Images" [ref=e889] [cursor=pointer]
|
||||||
|
- generic [ref=e890]:
|
||||||
|
- generic [ref=e891]:
|
||||||
|
- img [ref=e892]
|
||||||
|
- generic [ref=e896]: Campaign Shot
|
||||||
|
- generic [ref=e897]:
|
||||||
|
- img [ref=e898]
|
||||||
|
- generic [ref=e902]: Result Highlight
|
||||||
|
- generic [ref=e903]:
|
||||||
|
- img [ref=e904]
|
||||||
|
- generic [ref=e908]: Before/After
|
||||||
|
- generic [ref=e909]:
|
||||||
|
- img [ref=e910]
|
||||||
|
- generic [ref=e914]: Client Output
|
||||||
|
- generic [ref=e915]:
|
||||||
|
- img [ref=e916]
|
||||||
|
- generic [ref=e920]: Style Board
|
||||||
|
- generic [ref=e921]:
|
||||||
|
- img [ref=e922]
|
||||||
|
- generic [ref=e926]: Final Delivery
|
||||||
|
- generic [ref=e927]:
|
||||||
|
- img [ref=e928]
|
||||||
|
- generic [ref=e932]: Portfolio Select
|
||||||
|
- generic [ref=e933]:
|
||||||
|
- img [ref=e934]
|
||||||
|
- generic [ref=e938]: Recent Work
|
||||||
|
- generic [ref=e939]:
|
||||||
|
- paragraph [ref=e941]:
|
||||||
|
- img [ref=e942]
|
||||||
|
- text: Experience & Equipment
|
||||||
|
- generic [ref=e946]:
|
||||||
|
- paragraph [ref=e947]: Camera & Equipment
|
||||||
|
- generic [ref=e948]:
|
||||||
|
- generic [ref=e949]: Wedding
|
||||||
|
- generic [ref=e950]: Pre-Wedding
|
||||||
|
- generic [ref=e951]: Candid
|
||||||
|
- generic [ref=e952]: Event
|
||||||
|
- generic [ref=e953]: Portrait
|
||||||
|
- generic [ref=e954]: Lifestyle
|
||||||
|
- generic [ref=e955]:
|
||||||
|
- generic [ref=e956]:
|
||||||
|
- paragraph [ref=e958]: "2018"
|
||||||
|
- paragraph [ref=e959]: Started professional career as Photographer
|
||||||
|
- generic [ref=e960]:
|
||||||
|
- paragraph [ref=e962]: "2020"
|
||||||
|
- paragraph [ref=e963]: Completed 100+ successful projects
|
||||||
|
- generic [ref=e964]:
|
||||||
|
- paragraph [ref=e966]: "2022"
|
||||||
|
- paragraph [ref=e967]: Won regional industry recognition
|
||||||
|
- generic [ref=e968]:
|
||||||
|
- paragraph [ref=e970]: "2024"
|
||||||
|
- paragraph [ref=e971]: Joined Nxtgauge marketplace
|
||||||
|
- generic [ref=e972]:
|
||||||
|
- generic [ref=e973]:
|
||||||
|
- paragraph [ref=e974]:
|
||||||
|
- img [ref=e975]
|
||||||
|
- text: Testimonials
|
||||||
|
- generic [ref=e977]: Locked For New Profiles
|
||||||
|
- generic [ref=e979]:
|
||||||
|
- paragraph [ref=e980]: Testimonials will be activated automatically.
|
||||||
|
- paragraph [ref=e981]:
|
||||||
|
- text: New professionals unlock testimonials after completing at least
|
||||||
|
- strong [ref=e982]: 3 jobs
|
||||||
|
- text: and receiving at least
|
||||||
|
- strong [ref=e983]: 2 customer feedback entries
|
||||||
|
- text: .
|
||||||
|
- paragraph [ref=e984]: "Current progress: 1 jobs completed • 0 feedback received"
|
||||||
|
- generic [ref=e985]:
|
||||||
|
- paragraph [ref=e987]:
|
||||||
|
- img [ref=e988]
|
||||||
|
- text: Frequently Asked Questions
|
||||||
|
- generic [ref=e991]:
|
||||||
|
- button "Do you travel for shoots?" [ref=e992] [cursor=pointer]:
|
||||||
|
- generic [ref=e993]: Do you travel for shoots?
|
||||||
|
- img [ref=e994]
|
||||||
|
- paragraph [ref=e997]: Yes, I cover Pan-India and select international locations. Travel charges apply beyond 50km.
|
||||||
|
- button "How long before I receive the final photos?" [ref=e999] [cursor=pointer]:
|
||||||
|
- generic [ref=e1000]: How long before I receive the final photos?
|
||||||
|
- img [ref=e1001]
|
||||||
|
- button "What equipment do you use?" [ref=e1004] [cursor=pointer]:
|
||||||
|
- generic [ref=e1005]: What equipment do you use?
|
||||||
|
- img [ref=e1006]
|
||||||
|
- button "Do you provide raw files?" [ref=e1009] [cursor=pointer]:
|
||||||
|
- generic [ref=e1010]: Do you provide raw files?
|
||||||
|
- img [ref=e1011]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
BIN
.playwright-cli/page-2026-04-01T12-28-29-696Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T12-28-29-696Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
229
.playwright-cli/page-2026-04-01T12-29-33-802Z.yml
Normal file
229
.playwright-cli/page-2026-04-01T12-29-33-802Z.yml
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e282]:
|
||||||
|
- button "All Dashboards" [ref=e283] [cursor=pointer]
|
||||||
|
- button "Create Dashboard" [ref=e284] [cursor=pointer]
|
||||||
|
- generic [ref=e285]:
|
||||||
|
- generic [ref=e286]:
|
||||||
|
- textbox "Search dashboards..." [ref=e287]
|
||||||
|
- button "Sort" [ref=e289] [cursor=pointer]:
|
||||||
|
- img [ref=e290]
|
||||||
|
- text: Sort
|
||||||
|
- button "Filters" [ref=e294] [cursor=pointer]:
|
||||||
|
- img [ref=e295]
|
||||||
|
- text: Filters
|
||||||
|
- button "Export" [ref=e297] [cursor=pointer]:
|
||||||
|
- img [ref=e298]
|
||||||
|
- text: Export
|
||||||
|
- table [ref=e302]:
|
||||||
|
- rowgroup [ref=e303]:
|
||||||
|
- row "Name Code Role Widgets Status Updated Actions" [ref=e304]:
|
||||||
|
- columnheader "Name" [ref=e305]
|
||||||
|
- columnheader "Code" [ref=e306]
|
||||||
|
- columnheader "Role" [ref=e307]
|
||||||
|
- columnheader "Widgets" [ref=e308]
|
||||||
|
- columnheader "Status" [ref=e309]
|
||||||
|
- columnheader "Updated" [ref=e310]
|
||||||
|
- columnheader "Actions" [ref=e311]
|
||||||
|
- rowgroup [ref=e312]:
|
||||||
|
- row "Loading dashboards..." [ref=e313]:
|
||||||
|
- cell "Loading dashboards..." [ref=e314]
|
||||||
BIN
.playwright-cli/page-2026-04-01T12-29-57-632Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T12-29-57-632Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 135 KiB |
331
.playwright-cli/page-2026-04-01T12-35-12-131Z.yml
Normal file
331
.playwright-cli/page-2026-04-01T12-35-12-131Z.yml
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Profile
|
||||||
|
- paragraph [ref=e546]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e547]:
|
||||||
|
- button "Basic Info" [ref=e548] [cursor=pointer]
|
||||||
|
- button "Design Profile" [ref=e549] [cursor=pointer]
|
||||||
|
- button "Services & Pricing" [ref=e550] [cursor=pointer]
|
||||||
|
- button "Portfolio" [ref=e551] [cursor=pointer]
|
||||||
|
- button "Documents" [ref=e552] [cursor=pointer]
|
||||||
|
- button "Settings" [ref=e553] [cursor=pointer]
|
||||||
|
- generic [ref=e555]:
|
||||||
|
- generic [ref=e556]:
|
||||||
|
- generic [ref=e557]:
|
||||||
|
- paragraph [ref=e558]: Basic Info
|
||||||
|
- generic [ref=e559]: 8 fields
|
||||||
|
- generic [ref=e560]:
|
||||||
|
- generic [ref=e561]:
|
||||||
|
- generic [ref=e562]:
|
||||||
|
- paragraph [ref=e563]: Full Name*
|
||||||
|
- generic [ref=e565]: Enter full name
|
||||||
|
- generic [ref=e566]:
|
||||||
|
- paragraph [ref=e567]: Brand Name*
|
||||||
|
- generic [ref=e569]: Enter brand name
|
||||||
|
- generic [ref=e570]:
|
||||||
|
- paragraph [ref=e571]: Email Address*
|
||||||
|
- generic [ref=e573]: Enter email address
|
||||||
|
- generic [ref=e574]:
|
||||||
|
- paragraph [ref=e575]: Mobile Number*
|
||||||
|
- generic [ref=e577]: Enter mobile number
|
||||||
|
- generic [ref=e578]:
|
||||||
|
- generic [ref=e579]:
|
||||||
|
- paragraph [ref=e580]: City*
|
||||||
|
- generic [ref=e582]: Enter city
|
||||||
|
- generic [ref=e583]:
|
||||||
|
- paragraph [ref=e584]: State*
|
||||||
|
- generic [ref=e586]: Enter state
|
||||||
|
- generic [ref=e587]:
|
||||||
|
- paragraph [ref=e588]: Country*
|
||||||
|
- generic [ref=e589]:
|
||||||
|
- generic [ref=e590]: Select country
|
||||||
|
- generic [ref=e591]: ▾
|
||||||
|
- generic [ref=e592]:
|
||||||
|
- paragraph [ref=e593]: PIN Code*
|
||||||
|
- generic [ref=e595]: Enter 6-digit pincode
|
||||||
|
- generic [ref=e596]:
|
||||||
|
- button "Cancel" [ref=e597]
|
||||||
|
- button "Save Changes" [ref=e598]
|
||||||
|
- generic [ref=e599]:
|
||||||
|
- paragraph [ref=e600]: Profile Completeness
|
||||||
|
- paragraph [ref=e601]: 87%
|
||||||
|
- paragraph [ref=e604]: Active Section
|
||||||
|
- paragraph [ref=e605]: Basic Info
|
||||||
|
- paragraph [ref=e606]: Mandatory Fields
|
||||||
|
- paragraph [ref=e607]: "8"
|
||||||
|
- paragraph [ref=e608]: Marked with *
|
||||||
|
- paragraph [ref=e609]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e610]:
|
||||||
|
- button "Save Changes" [ref=e611]
|
||||||
|
- button "Reset" [ref=e612]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
562
.playwright-cli/page-2026-04-01T12-35-36-664Z.yml
Normal file
562
.playwright-cli/page-2026-04-01T12-35-36-664Z.yml
Normal file
|
|
@ -0,0 +1,562 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [active] [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Portfolio
|
||||||
|
- paragraph [ref=e546]: Manage your public portfolio, showcase your work, and control what service seekers see before they accept your contact request.
|
||||||
|
- generic [ref=e616]:
|
||||||
|
- button "Overview Summary" [ref=e617] [cursor=pointer]:
|
||||||
|
- img [ref=e619]
|
||||||
|
- generic [ref=e624]:
|
||||||
|
- generic [ref=e625]: Overview
|
||||||
|
- generic [ref=e626]: Summary
|
||||||
|
- button "About Profile" [ref=e627] [cursor=pointer]:
|
||||||
|
- img [ref=e629]
|
||||||
|
- generic [ref=e633]:
|
||||||
|
- generic [ref=e634]: About
|
||||||
|
- generic [ref=e635]: Profile
|
||||||
|
- button "Services & Pricing Pricing" [ref=e636] [cursor=pointer]:
|
||||||
|
- img [ref=e638]
|
||||||
|
- generic [ref=e643]:
|
||||||
|
- generic [ref=e644]: Services & Pricing
|
||||||
|
- generic [ref=e645]: Pricing
|
||||||
|
- button "Portfolio Work" [ref=e646] [cursor=pointer]:
|
||||||
|
- img [ref=e648]
|
||||||
|
- generic [ref=e652]:
|
||||||
|
- generic [ref=e653]: Portfolio
|
||||||
|
- generic [ref=e654]: Work
|
||||||
|
- button "Experience & Tools History" [ref=e655] [cursor=pointer]:
|
||||||
|
- img [ref=e657]
|
||||||
|
- generic [ref=e661]:
|
||||||
|
- generic [ref=e662]: Experience & Tools
|
||||||
|
- generic [ref=e663]: History
|
||||||
|
- button "Testimonials Locked" [disabled] [ref=e664]:
|
||||||
|
- img [ref=e666]
|
||||||
|
- generic [ref=e668]:
|
||||||
|
- generic [ref=e669]: Testimonials
|
||||||
|
- generic [ref=e670]: Locked
|
||||||
|
- button "Faqs Answers" [ref=e671] [cursor=pointer]:
|
||||||
|
- img [ref=e673]
|
||||||
|
- generic [ref=e676]:
|
||||||
|
- generic [ref=e677]: Faqs
|
||||||
|
- generic [ref=e678]: Answers
|
||||||
|
- generic [ref=e679]:
|
||||||
|
- generic [ref=e680]:
|
||||||
|
- generic [ref=e682]:
|
||||||
|
- generic [ref=e683]:
|
||||||
|
- generic [ref=e684]:
|
||||||
|
- paragraph [ref=e685]: Alex Morgan
|
||||||
|
- generic [ref=e686]: Verified
|
||||||
|
- generic [ref=e687]: Top Response Rate
|
||||||
|
- generic [ref=e688]: Portfolio UI v2
|
||||||
|
- paragraph [ref=e689]: Graphic Designer
|
||||||
|
- generic [ref=e690]:
|
||||||
|
- generic [ref=e691]: "Area: Mumbai Region"
|
||||||
|
- generic [ref=e692]: "Place: Andheri East, Mumbai"
|
||||||
|
- generic [ref=e693]: "Travel: Mumbai, Navi Mumbai, Thane, Pune"
|
||||||
|
- generic [ref=e694]:
|
||||||
|
- button "Edit Portfolio" [ref=e695] [cursor=pointer]
|
||||||
|
- button "Preview Portfolio" [ref=e696] [cursor=pointer]
|
||||||
|
- generic [ref=e697]:
|
||||||
|
- generic [ref=e698]:
|
||||||
|
- paragraph [ref=e699]: Projects Done
|
||||||
|
- paragraph [ref=e700]: "248"
|
||||||
|
- generic [ref=e701]:
|
||||||
|
- paragraph [ref=e702]: Years Exp
|
||||||
|
- paragraph [ref=e703]: 7+
|
||||||
|
- generic [ref=e704]:
|
||||||
|
- paragraph [ref=e705]: Verified Pro
|
||||||
|
- paragraph [ref=e706]: Verified
|
||||||
|
- generic [ref=e707]:
|
||||||
|
- paragraph [ref=e708]: Last Delivery
|
||||||
|
- paragraph [ref=e709]: 2 days
|
||||||
|
- generic [ref=e710]:
|
||||||
|
- paragraph [ref=e711]: Remote OK
|
||||||
|
- paragraph [ref=e712]: "Yes"
|
||||||
|
- generic [ref=e713]:
|
||||||
|
- generic [ref=e714]:
|
||||||
|
- generic [ref=e715]:
|
||||||
|
- paragraph [ref=e716]: Profile Strength
|
||||||
|
- paragraph [ref=e717]: 92%
|
||||||
|
- paragraph [ref=e718]: Complete and visible
|
||||||
|
- img [ref=e720]
|
||||||
|
- generic [ref=e723]:
|
||||||
|
- generic [ref=e724]:
|
||||||
|
- paragraph [ref=e725]: Win Momentum
|
||||||
|
- paragraph [ref=e726]: +18%
|
||||||
|
- paragraph [ref=e727]: Last 30 days
|
||||||
|
- img [ref=e729]
|
||||||
|
- generic [ref=e732]:
|
||||||
|
- generic [ref=e733]:
|
||||||
|
- paragraph [ref=e734]: Featured Status
|
||||||
|
- paragraph [ref=e735]: "Yes"
|
||||||
|
- paragraph [ref=e736]: Recommended in search
|
||||||
|
- img [ref=e738]
|
||||||
|
- generic [ref=e741]:
|
||||||
|
- generic [ref=e742]:
|
||||||
|
- paragraph [ref=e743]: Avg. Reply Time
|
||||||
|
- paragraph [ref=e744]: 2 hrs
|
||||||
|
- paragraph [ref=e745]: Fast responder
|
||||||
|
- img [ref=e747]
|
||||||
|
- generic [ref=e749]:
|
||||||
|
- generic [ref=e750]:
|
||||||
|
- paragraph [ref=e752]:
|
||||||
|
- img [ref=e753]
|
||||||
|
- text: About
|
||||||
|
- generic [ref=e757]:
|
||||||
|
- paragraph [ref=e758]: Professional graphic designer with 7+ years of experience delivering high-quality work across India. Committed to excellence, creativity, and client satisfaction on every project.
|
||||||
|
- generic [ref=e759]:
|
||||||
|
- generic [ref=e760]: Fast response within 2 hours
|
||||||
|
- generic [ref=e761]: Clear scope & milestone planning
|
||||||
|
- generic [ref=e762]: Delivery-first execution
|
||||||
|
- generic [ref=e763]:
|
||||||
|
- generic [ref=e764]:
|
||||||
|
- paragraph [ref=e765]: Years Exp
|
||||||
|
- paragraph [ref=e766]: 7+
|
||||||
|
- generic [ref=e767]:
|
||||||
|
- paragraph [ref=e768]: Projects
|
||||||
|
- paragraph [ref=e769]: "248"
|
||||||
|
- generic [ref=e770]:
|
||||||
|
- paragraph [ref=e771]: Rating
|
||||||
|
- paragraph [ref=e772]: "4.9"
|
||||||
|
- generic [ref=e773]:
|
||||||
|
- paragraph [ref=e774]: Reviews
|
||||||
|
- paragraph [ref=e775]: "128"
|
||||||
|
- generic [ref=e776]:
|
||||||
|
- paragraph [ref=e778]:
|
||||||
|
- img [ref=e779]
|
||||||
|
- text: Specialties
|
||||||
|
- generic [ref=e784]:
|
||||||
|
- generic [ref=e785]: Brand Identity
|
||||||
|
- generic [ref=e786]: UI/UX Design
|
||||||
|
- generic [ref=e787]: Print
|
||||||
|
- generic [ref=e788]: Social Media
|
||||||
|
- generic [ref=e789]: Motion
|
||||||
|
- generic [ref=e790]: Packaging
|
||||||
|
- generic [ref=e791]:
|
||||||
|
- paragraph [ref=e792]: Languages
|
||||||
|
- generic [ref=e793]:
|
||||||
|
- generic [ref=e794]: English
|
||||||
|
- generic [ref=e795]: Hindi
|
||||||
|
- generic [ref=e796]: Marathi
|
||||||
|
- paragraph [ref=e797]: Service Areas
|
||||||
|
- generic [ref=e798]:
|
||||||
|
- generic [ref=e799]: Mumbai
|
||||||
|
- generic [ref=e800]: Pune
|
||||||
|
- generic [ref=e801]: Thane
|
||||||
|
- generic [ref=e802]: Nashik
|
||||||
|
- generic [ref=e803]:
|
||||||
|
- generic [ref=e804]:
|
||||||
|
- paragraph [ref=e805]:
|
||||||
|
- img [ref=e806]
|
||||||
|
- text: Services & Pricing
|
||||||
|
- generic [ref=e811]: Transparent Pricing
|
||||||
|
- generic [ref=e812]:
|
||||||
|
- generic [ref=e813]:
|
||||||
|
- paragraph [ref=e814]: Logo Pack
|
||||||
|
- paragraph [ref=e815]: ₹8,000
|
||||||
|
- generic [ref=e816]:
|
||||||
|
- generic [ref=e817]:
|
||||||
|
- img [ref=e818]
|
||||||
|
- text: 3 logo concepts
|
||||||
|
- generic [ref=e821]:
|
||||||
|
- img [ref=e822]
|
||||||
|
- text: 2 revisions
|
||||||
|
- generic [ref=e825]:
|
||||||
|
- img [ref=e826]
|
||||||
|
- text: All file formats
|
||||||
|
- generic [ref=e829]:
|
||||||
|
- img [ref=e830]
|
||||||
|
- text: Usage rights
|
||||||
|
- generic [ref=e833]:
|
||||||
|
- generic [ref=e834]: Most Chosen
|
||||||
|
- paragraph [ref=e835]: Brand Kit
|
||||||
|
- paragraph [ref=e836]: ₹22,000
|
||||||
|
- generic [ref=e837]:
|
||||||
|
- generic [ref=e838]:
|
||||||
|
- img [ref=e839]
|
||||||
|
- text: Logo + palette
|
||||||
|
- generic [ref=e842]:
|
||||||
|
- img [ref=e843]
|
||||||
|
- text: Typography
|
||||||
|
- generic [ref=e846]:
|
||||||
|
- img [ref=e847]
|
||||||
|
- text: Brand guidelines
|
||||||
|
- generic [ref=e850]:
|
||||||
|
- img [ref=e851]
|
||||||
|
- text: Social templates
|
||||||
|
- generic [ref=e854]:
|
||||||
|
- paragraph [ref=e855]: Full Identity
|
||||||
|
- paragraph [ref=e856]: ₹45,000
|
||||||
|
- generic [ref=e857]:
|
||||||
|
- generic [ref=e858]:
|
||||||
|
- img [ref=e859]
|
||||||
|
- text: Complete brand
|
||||||
|
- generic [ref=e862]:
|
||||||
|
- img [ref=e863]
|
||||||
|
- text: UI kit
|
||||||
|
- generic [ref=e866]:
|
||||||
|
- img [ref=e867]
|
||||||
|
- text: Print collateral
|
||||||
|
- generic [ref=e870]:
|
||||||
|
- img [ref=e871]
|
||||||
|
- text: Motion logo
|
||||||
|
- generic [ref=e874]:
|
||||||
|
- generic [ref=e875]:
|
||||||
|
- paragraph [ref=e876]:
|
||||||
|
- img [ref=e877]
|
||||||
|
- text: Portfolio
|
||||||
|
- button "Upload Images" [ref=e881] [cursor=pointer]
|
||||||
|
- generic [ref=e882]:
|
||||||
|
- generic [ref=e883]:
|
||||||
|
- img [ref=e884]
|
||||||
|
- generic [ref=e888]: Campaign Shot
|
||||||
|
- generic [ref=e889]:
|
||||||
|
- img [ref=e890]
|
||||||
|
- generic [ref=e894]: Result Highlight
|
||||||
|
- generic [ref=e895]:
|
||||||
|
- img [ref=e896]
|
||||||
|
- generic [ref=e900]: Before/After
|
||||||
|
- generic [ref=e901]:
|
||||||
|
- img [ref=e902]
|
||||||
|
- generic [ref=e906]: Client Output
|
||||||
|
- generic [ref=e907]:
|
||||||
|
- img [ref=e908]
|
||||||
|
- generic [ref=e912]: Style Board
|
||||||
|
- generic [ref=e913]:
|
||||||
|
- img [ref=e914]
|
||||||
|
- generic [ref=e918]: Final Delivery
|
||||||
|
- generic [ref=e919]:
|
||||||
|
- img [ref=e920]
|
||||||
|
- generic [ref=e924]: Portfolio Select
|
||||||
|
- generic [ref=e925]:
|
||||||
|
- img [ref=e926]
|
||||||
|
- generic [ref=e930]: Recent Work
|
||||||
|
- generic [ref=e931]:
|
||||||
|
- paragraph [ref=e933]:
|
||||||
|
- img [ref=e934]
|
||||||
|
- text: Experience & Tools
|
||||||
|
- generic [ref=e938]:
|
||||||
|
- paragraph [ref=e939]: Design Tools
|
||||||
|
- generic [ref=e940]:
|
||||||
|
- generic [ref=e941]: Brand Identity
|
||||||
|
- generic [ref=e942]: UI/UX Design
|
||||||
|
- generic [ref=e943]: Print
|
||||||
|
- generic [ref=e944]: Social Media
|
||||||
|
- generic [ref=e945]: Motion
|
||||||
|
- generic [ref=e946]: Packaging
|
||||||
|
- generic [ref=e947]:
|
||||||
|
- generic [ref=e948]:
|
||||||
|
- paragraph [ref=e950]: "2018"
|
||||||
|
- paragraph [ref=e951]: Started professional career as Graphic Designer
|
||||||
|
- generic [ref=e952]:
|
||||||
|
- paragraph [ref=e954]: "2020"
|
||||||
|
- paragraph [ref=e955]: Completed 100+ successful projects
|
||||||
|
- generic [ref=e956]:
|
||||||
|
- paragraph [ref=e958]: "2022"
|
||||||
|
- paragraph [ref=e959]: Won regional industry recognition
|
||||||
|
- generic [ref=e960]:
|
||||||
|
- paragraph [ref=e962]: "2024"
|
||||||
|
- paragraph [ref=e963]: Joined Nxtgauge marketplace
|
||||||
|
- generic [ref=e964]:
|
||||||
|
- generic [ref=e965]:
|
||||||
|
- paragraph [ref=e966]:
|
||||||
|
- img [ref=e967]
|
||||||
|
- text: Testimonials
|
||||||
|
- generic [ref=e969]: Locked For New Profiles
|
||||||
|
- generic [ref=e971]:
|
||||||
|
- paragraph [ref=e972]: Testimonials will be activated automatically.
|
||||||
|
- paragraph [ref=e973]:
|
||||||
|
- text: New professionals unlock testimonials after completing at least
|
||||||
|
- strong [ref=e974]: 3 jobs
|
||||||
|
- text: and receiving at least
|
||||||
|
- strong [ref=e975]: 2 customer feedback entries
|
||||||
|
- text: .
|
||||||
|
- paragraph [ref=e976]: "Current progress: 1 jobs completed • 0 feedback received"
|
||||||
|
- generic [ref=e977]:
|
||||||
|
- paragraph [ref=e979]:
|
||||||
|
- img [ref=e980]
|
||||||
|
- text: Frequently Asked Questions
|
||||||
|
- generic [ref=e983]:
|
||||||
|
- button "What file formats do you deliver?" [ref=e984] [cursor=pointer]:
|
||||||
|
- generic [ref=e985]: What file formats do you deliver?
|
||||||
|
- img [ref=e986]
|
||||||
|
- paragraph [ref=e989]: Final files in AI, PDF, PNG, SVG, and any format required. Print-ready and web-optimised variants included.
|
||||||
|
- button "Do you create brand guidelines?" [ref=e991] [cursor=pointer]:
|
||||||
|
- generic [ref=e992]: Do you create brand guidelines?
|
||||||
|
- img [ref=e993]
|
||||||
|
- button "How many concepts do you provide initially?" [ref=e996] [cursor=pointer]:
|
||||||
|
- generic [ref=e997]: How many concepts do you provide initially?
|
||||||
|
- img [ref=e998]
|
||||||
|
- button "Do you handle printing coordination?" [ref=e1001] [cursor=pointer]:
|
||||||
|
- generic [ref=e1002]: Do you handle printing coordination?
|
||||||
|
- img [ref=e1003]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
BIN
.playwright-cli/page-2026-04-01T12-35-59-303Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T12-35-59-303Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 139 KiB |
229
.playwright-cli/page-2026-04-01T12-56-58-586Z.yml
Normal file
229
.playwright-cli/page-2026-04-01T12-56-58-586Z.yml
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e282]:
|
||||||
|
- button "All Dashboards" [ref=e283] [cursor=pointer]
|
||||||
|
- button "Create Dashboard" [ref=e284] [cursor=pointer]
|
||||||
|
- generic [ref=e285]:
|
||||||
|
- generic [ref=e286]:
|
||||||
|
- textbox "Search dashboards..." [ref=e287]
|
||||||
|
- button "Sort" [ref=e289] [cursor=pointer]:
|
||||||
|
- img [ref=e290]
|
||||||
|
- text: Sort
|
||||||
|
- button "Filters" [ref=e294] [cursor=pointer]:
|
||||||
|
- img [ref=e295]
|
||||||
|
- text: Filters
|
||||||
|
- button "Export" [ref=e297] [cursor=pointer]:
|
||||||
|
- img [ref=e298]
|
||||||
|
- text: Export
|
||||||
|
- table [ref=e302]:
|
||||||
|
- rowgroup [ref=e303]:
|
||||||
|
- row "Name Code Role Widgets Status Updated Actions" [ref=e304]:
|
||||||
|
- columnheader "Name" [ref=e305]
|
||||||
|
- columnheader "Code" [ref=e306]
|
||||||
|
- columnheader "Role" [ref=e307]
|
||||||
|
- columnheader "Widgets" [ref=e308]
|
||||||
|
- columnheader "Status" [ref=e309]
|
||||||
|
- columnheader "Updated" [ref=e310]
|
||||||
|
- columnheader "Actions" [ref=e311]
|
||||||
|
- rowgroup [ref=e312]:
|
||||||
|
- row "Loading dashboards..." [ref=e313]:
|
||||||
|
- cell "Loading dashboards..." [ref=e314]
|
||||||
331
.playwright-cli/page-2026-04-01T12-58-12-110Z.yml
Normal file
331
.playwright-cli/page-2026-04-01T12-58-12-110Z.yml
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Profile
|
||||||
|
- paragraph [ref=e546]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e547]:
|
||||||
|
- button "Basic Info" [ref=e548] [cursor=pointer]
|
||||||
|
- button "Design Profile" [ref=e549] [cursor=pointer]
|
||||||
|
- button "Services & Pricing" [ref=e550] [cursor=pointer]
|
||||||
|
- button "Portfolio" [ref=e551] [cursor=pointer]
|
||||||
|
- button "Documents" [ref=e552] [cursor=pointer]
|
||||||
|
- button "Settings" [ref=e553] [cursor=pointer]
|
||||||
|
- generic [ref=e555]:
|
||||||
|
- generic [ref=e556]:
|
||||||
|
- generic [ref=e557]:
|
||||||
|
- paragraph [ref=e558]: Basic Info
|
||||||
|
- generic [ref=e559]: 8 fields
|
||||||
|
- generic [ref=e560]:
|
||||||
|
- generic [ref=e561]:
|
||||||
|
- generic [ref=e562]:
|
||||||
|
- paragraph [ref=e563]: Full Name*
|
||||||
|
- generic [ref=e565]: Enter full name
|
||||||
|
- generic [ref=e566]:
|
||||||
|
- paragraph [ref=e567]: Brand Name*
|
||||||
|
- generic [ref=e569]: Enter brand name
|
||||||
|
- generic [ref=e570]:
|
||||||
|
- paragraph [ref=e571]: Email Address*
|
||||||
|
- generic [ref=e573]: Enter email address
|
||||||
|
- generic [ref=e574]:
|
||||||
|
- paragraph [ref=e575]: Mobile Number*
|
||||||
|
- generic [ref=e577]: Enter mobile number
|
||||||
|
- generic [ref=e578]:
|
||||||
|
- generic [ref=e579]:
|
||||||
|
- paragraph [ref=e580]: City*
|
||||||
|
- generic [ref=e582]: Enter city
|
||||||
|
- generic [ref=e583]:
|
||||||
|
- paragraph [ref=e584]: State*
|
||||||
|
- generic [ref=e586]: Enter state
|
||||||
|
- generic [ref=e587]:
|
||||||
|
- paragraph [ref=e588]: Country*
|
||||||
|
- generic [ref=e589]:
|
||||||
|
- generic [ref=e590]: Select country
|
||||||
|
- generic [ref=e591]: ▾
|
||||||
|
- generic [ref=e592]:
|
||||||
|
- paragraph [ref=e593]: PIN Code*
|
||||||
|
- generic [ref=e595]: Enter 6-digit pincode
|
||||||
|
- generic [ref=e596]:
|
||||||
|
- button "Cancel" [ref=e597]
|
||||||
|
- button "Save Changes" [ref=e598]
|
||||||
|
- generic [ref=e599]:
|
||||||
|
- paragraph [ref=e600]: Profile Completeness
|
||||||
|
- paragraph [ref=e601]: 87%
|
||||||
|
- paragraph [ref=e604]: Active Section
|
||||||
|
- paragraph [ref=e605]: Basic Info
|
||||||
|
- paragraph [ref=e606]: Mandatory Fields
|
||||||
|
- paragraph [ref=e607]: "8"
|
||||||
|
- paragraph [ref=e608]: Marked with *
|
||||||
|
- paragraph [ref=e609]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e610]:
|
||||||
|
- button "Save Changes" [ref=e611]
|
||||||
|
- button "Reset" [ref=e612]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
562
.playwright-cli/page-2026-04-01T13-01-38-884Z.yml
Normal file
562
.playwright-cli/page-2026-04-01T13-01-38-884Z.yml
Normal file
|
|
@ -0,0 +1,562 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [active] [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Portfolio
|
||||||
|
- paragraph [ref=e546]: Manage your public portfolio, showcase your work, and control what service seekers see before they accept your contact request.
|
||||||
|
- generic [ref=e616]:
|
||||||
|
- button "Overview Summary" [ref=e617] [cursor=pointer]:
|
||||||
|
- img [ref=e619]
|
||||||
|
- generic [ref=e624]:
|
||||||
|
- generic [ref=e625]: Overview
|
||||||
|
- generic [ref=e626]: Summary
|
||||||
|
- button "About Profile" [ref=e627] [cursor=pointer]:
|
||||||
|
- img [ref=e629]
|
||||||
|
- generic [ref=e633]:
|
||||||
|
- generic [ref=e634]: About
|
||||||
|
- generic [ref=e635]: Profile
|
||||||
|
- button "Services & Pricing Pricing" [ref=e636] [cursor=pointer]:
|
||||||
|
- img [ref=e638]
|
||||||
|
- generic [ref=e643]:
|
||||||
|
- generic [ref=e644]: Services & Pricing
|
||||||
|
- generic [ref=e645]: Pricing
|
||||||
|
- button "Portfolio Work" [ref=e646] [cursor=pointer]:
|
||||||
|
- img [ref=e648]
|
||||||
|
- generic [ref=e652]:
|
||||||
|
- generic [ref=e653]: Portfolio
|
||||||
|
- generic [ref=e654]: Work
|
||||||
|
- button "Experience & Tools History" [ref=e655] [cursor=pointer]:
|
||||||
|
- img [ref=e657]
|
||||||
|
- generic [ref=e661]:
|
||||||
|
- generic [ref=e662]: Experience & Tools
|
||||||
|
- generic [ref=e663]: History
|
||||||
|
- button "Testimonials Locked" [disabled] [ref=e664]:
|
||||||
|
- img [ref=e666]
|
||||||
|
- generic [ref=e668]:
|
||||||
|
- generic [ref=e669]: Testimonials
|
||||||
|
- generic [ref=e670]: Locked
|
||||||
|
- button "Faqs Answers" [ref=e671] [cursor=pointer]:
|
||||||
|
- img [ref=e673]
|
||||||
|
- generic [ref=e676]:
|
||||||
|
- generic [ref=e677]: Faqs
|
||||||
|
- generic [ref=e678]: Answers
|
||||||
|
- generic [ref=e679]:
|
||||||
|
- generic [ref=e680]:
|
||||||
|
- generic [ref=e682]:
|
||||||
|
- generic [ref=e683]:
|
||||||
|
- generic [ref=e684]:
|
||||||
|
- paragraph [ref=e685]: Alex Morgan
|
||||||
|
- generic [ref=e686]: Verified
|
||||||
|
- generic [ref=e687]: Top Response Rate
|
||||||
|
- generic [ref=e688]: Portfolio UI v2
|
||||||
|
- paragraph [ref=e689]: Graphic Designer
|
||||||
|
- generic [ref=e690]:
|
||||||
|
- generic [ref=e691]: "Area: Mumbai Region"
|
||||||
|
- generic [ref=e692]: "Place: Andheri East, Mumbai"
|
||||||
|
- generic [ref=e693]: "Travel: Mumbai, Navi Mumbai, Thane, Pune"
|
||||||
|
- generic [ref=e694]:
|
||||||
|
- button "Edit Portfolio" [ref=e695] [cursor=pointer]
|
||||||
|
- button "Preview Portfolio" [ref=e696] [cursor=pointer]
|
||||||
|
- generic [ref=e697]:
|
||||||
|
- generic [ref=e698]:
|
||||||
|
- paragraph [ref=e699]: Projects Done
|
||||||
|
- paragraph [ref=e700]: "248"
|
||||||
|
- generic [ref=e701]:
|
||||||
|
- paragraph [ref=e702]: Years Exp
|
||||||
|
- paragraph [ref=e703]: 7+
|
||||||
|
- generic [ref=e704]:
|
||||||
|
- paragraph [ref=e705]: Verified Pro
|
||||||
|
- paragraph [ref=e706]: Verified
|
||||||
|
- generic [ref=e707]:
|
||||||
|
- paragraph [ref=e708]: Last Delivery
|
||||||
|
- paragraph [ref=e709]: 2 days
|
||||||
|
- generic [ref=e710]:
|
||||||
|
- paragraph [ref=e711]: Remote OK
|
||||||
|
- paragraph [ref=e712]: "Yes"
|
||||||
|
- generic [ref=e713]:
|
||||||
|
- generic [ref=e714]:
|
||||||
|
- generic [ref=e715]:
|
||||||
|
- paragraph [ref=e716]: Profile Strength
|
||||||
|
- paragraph [ref=e717]: 92%
|
||||||
|
- paragraph [ref=e718]: Complete and visible
|
||||||
|
- img [ref=e720]
|
||||||
|
- generic [ref=e723]:
|
||||||
|
- generic [ref=e724]:
|
||||||
|
- paragraph [ref=e725]: Win Momentum
|
||||||
|
- paragraph [ref=e726]: +18%
|
||||||
|
- paragraph [ref=e727]: Last 30 days
|
||||||
|
- img [ref=e729]
|
||||||
|
- generic [ref=e732]:
|
||||||
|
- generic [ref=e733]:
|
||||||
|
- paragraph [ref=e734]: Featured Status
|
||||||
|
- paragraph [ref=e735]: "Yes"
|
||||||
|
- paragraph [ref=e736]: Recommended in search
|
||||||
|
- img [ref=e738]
|
||||||
|
- generic [ref=e741]:
|
||||||
|
- generic [ref=e742]:
|
||||||
|
- paragraph [ref=e743]: Avg. Reply Time
|
||||||
|
- paragraph [ref=e744]: 2 hrs
|
||||||
|
- paragraph [ref=e745]: Fast responder
|
||||||
|
- img [ref=e747]
|
||||||
|
- generic [ref=e749]:
|
||||||
|
- generic [ref=e750]:
|
||||||
|
- paragraph [ref=e752]:
|
||||||
|
- img [ref=e753]
|
||||||
|
- text: About
|
||||||
|
- generic [ref=e757]:
|
||||||
|
- paragraph [ref=e758]: Professional graphic designer with 7+ years of experience delivering high-quality work across India. Committed to excellence, creativity, and client satisfaction on every project.
|
||||||
|
- generic [ref=e759]:
|
||||||
|
- generic [ref=e760]: Fast response within 2 hours
|
||||||
|
- generic [ref=e761]: Clear scope & milestone planning
|
||||||
|
- generic [ref=e762]: Delivery-first execution
|
||||||
|
- generic [ref=e763]:
|
||||||
|
- generic [ref=e764]:
|
||||||
|
- paragraph [ref=e765]: Years Exp
|
||||||
|
- paragraph [ref=e766]: 7+
|
||||||
|
- generic [ref=e767]:
|
||||||
|
- paragraph [ref=e768]: Projects
|
||||||
|
- paragraph [ref=e769]: "248"
|
||||||
|
- generic [ref=e770]:
|
||||||
|
- paragraph [ref=e771]: Rating
|
||||||
|
- paragraph [ref=e772]: "4.9"
|
||||||
|
- generic [ref=e773]:
|
||||||
|
- paragraph [ref=e774]: Reviews
|
||||||
|
- paragraph [ref=e775]: "128"
|
||||||
|
- generic [ref=e776]:
|
||||||
|
- paragraph [ref=e778]:
|
||||||
|
- img [ref=e779]
|
||||||
|
- text: Specialties
|
||||||
|
- generic [ref=e784]:
|
||||||
|
- generic [ref=e785]: Brand Identity
|
||||||
|
- generic [ref=e786]: UI/UX Design
|
||||||
|
- generic [ref=e787]: Print
|
||||||
|
- generic [ref=e788]: Social Media
|
||||||
|
- generic [ref=e789]: Motion
|
||||||
|
- generic [ref=e790]: Packaging
|
||||||
|
- generic [ref=e791]:
|
||||||
|
- paragraph [ref=e792]: Languages
|
||||||
|
- generic [ref=e793]:
|
||||||
|
- generic [ref=e794]: English
|
||||||
|
- generic [ref=e795]: Hindi
|
||||||
|
- generic [ref=e796]: Marathi
|
||||||
|
- paragraph [ref=e797]: Service Areas
|
||||||
|
- generic [ref=e798]:
|
||||||
|
- generic [ref=e799]: Mumbai
|
||||||
|
- generic [ref=e800]: Pune
|
||||||
|
- generic [ref=e801]: Thane
|
||||||
|
- generic [ref=e802]: Nashik
|
||||||
|
- generic [ref=e803]:
|
||||||
|
- generic [ref=e804]:
|
||||||
|
- paragraph [ref=e805]:
|
||||||
|
- img [ref=e806]
|
||||||
|
- text: Services & Pricing
|
||||||
|
- generic [ref=e811]: Transparent Pricing
|
||||||
|
- generic [ref=e812]:
|
||||||
|
- generic [ref=e813]:
|
||||||
|
- paragraph [ref=e814]: Logo Pack
|
||||||
|
- paragraph [ref=e815]: ₹8,000
|
||||||
|
- generic [ref=e816]:
|
||||||
|
- generic [ref=e817]:
|
||||||
|
- img [ref=e818]
|
||||||
|
- text: 3 logo concepts
|
||||||
|
- generic [ref=e821]:
|
||||||
|
- img [ref=e822]
|
||||||
|
- text: 2 revisions
|
||||||
|
- generic [ref=e825]:
|
||||||
|
- img [ref=e826]
|
||||||
|
- text: All file formats
|
||||||
|
- generic [ref=e829]:
|
||||||
|
- img [ref=e830]
|
||||||
|
- text: Usage rights
|
||||||
|
- generic [ref=e833]:
|
||||||
|
- generic [ref=e834]: Most Chosen
|
||||||
|
- paragraph [ref=e835]: Brand Kit
|
||||||
|
- paragraph [ref=e836]: ₹22,000
|
||||||
|
- generic [ref=e837]:
|
||||||
|
- generic [ref=e838]:
|
||||||
|
- img [ref=e839]
|
||||||
|
- text: Logo + palette
|
||||||
|
- generic [ref=e842]:
|
||||||
|
- img [ref=e843]
|
||||||
|
- text: Typography
|
||||||
|
- generic [ref=e846]:
|
||||||
|
- img [ref=e847]
|
||||||
|
- text: Brand guidelines
|
||||||
|
- generic [ref=e850]:
|
||||||
|
- img [ref=e851]
|
||||||
|
- text: Social templates
|
||||||
|
- generic [ref=e854]:
|
||||||
|
- paragraph [ref=e855]: Full Identity
|
||||||
|
- paragraph [ref=e856]: ₹45,000
|
||||||
|
- generic [ref=e857]:
|
||||||
|
- generic [ref=e858]:
|
||||||
|
- img [ref=e859]
|
||||||
|
- text: Complete brand
|
||||||
|
- generic [ref=e862]:
|
||||||
|
- img [ref=e863]
|
||||||
|
- text: UI kit
|
||||||
|
- generic [ref=e866]:
|
||||||
|
- img [ref=e867]
|
||||||
|
- text: Print collateral
|
||||||
|
- generic [ref=e870]:
|
||||||
|
- img [ref=e871]
|
||||||
|
- text: Motion logo
|
||||||
|
- generic [ref=e874]:
|
||||||
|
- generic [ref=e875]:
|
||||||
|
- paragraph [ref=e876]:
|
||||||
|
- img [ref=e877]
|
||||||
|
- text: Portfolio
|
||||||
|
- button "Upload Images" [ref=e881] [cursor=pointer]
|
||||||
|
- generic [ref=e882]:
|
||||||
|
- generic [ref=e883]:
|
||||||
|
- img [ref=e884]
|
||||||
|
- generic [ref=e888]: Campaign Shot
|
||||||
|
- generic [ref=e889]:
|
||||||
|
- img [ref=e890]
|
||||||
|
- generic [ref=e894]: Result Highlight
|
||||||
|
- generic [ref=e895]:
|
||||||
|
- img [ref=e896]
|
||||||
|
- generic [ref=e900]: Before/After
|
||||||
|
- generic [ref=e901]:
|
||||||
|
- img [ref=e902]
|
||||||
|
- generic [ref=e906]: Client Output
|
||||||
|
- generic [ref=e907]:
|
||||||
|
- img [ref=e908]
|
||||||
|
- generic [ref=e912]: Style Board
|
||||||
|
- generic [ref=e913]:
|
||||||
|
- img [ref=e914]
|
||||||
|
- generic [ref=e918]: Final Delivery
|
||||||
|
- generic [ref=e919]:
|
||||||
|
- img [ref=e920]
|
||||||
|
- generic [ref=e924]: Portfolio Select
|
||||||
|
- generic [ref=e925]:
|
||||||
|
- img [ref=e926]
|
||||||
|
- generic [ref=e930]: Recent Work
|
||||||
|
- generic [ref=e931]:
|
||||||
|
- paragraph [ref=e933]:
|
||||||
|
- img [ref=e934]
|
||||||
|
- text: Experience & Tools
|
||||||
|
- generic [ref=e938]:
|
||||||
|
- paragraph [ref=e939]: Design Tools
|
||||||
|
- generic [ref=e940]:
|
||||||
|
- generic [ref=e941]: Brand Identity
|
||||||
|
- generic [ref=e942]: UI/UX Design
|
||||||
|
- generic [ref=e943]: Print
|
||||||
|
- generic [ref=e944]: Social Media
|
||||||
|
- generic [ref=e945]: Motion
|
||||||
|
- generic [ref=e946]: Packaging
|
||||||
|
- generic [ref=e947]:
|
||||||
|
- generic [ref=e948]:
|
||||||
|
- paragraph [ref=e950]: "2018"
|
||||||
|
- paragraph [ref=e951]: Started professional career as Graphic Designer
|
||||||
|
- generic [ref=e952]:
|
||||||
|
- paragraph [ref=e954]: "2020"
|
||||||
|
- paragraph [ref=e955]: Completed 100+ successful projects
|
||||||
|
- generic [ref=e956]:
|
||||||
|
- paragraph [ref=e958]: "2022"
|
||||||
|
- paragraph [ref=e959]: Won regional industry recognition
|
||||||
|
- generic [ref=e960]:
|
||||||
|
- paragraph [ref=e962]: "2024"
|
||||||
|
- paragraph [ref=e963]: Joined Nxtgauge marketplace
|
||||||
|
- generic [ref=e964]:
|
||||||
|
- generic [ref=e965]:
|
||||||
|
- paragraph [ref=e966]:
|
||||||
|
- img [ref=e967]
|
||||||
|
- text: Testimonials
|
||||||
|
- generic [ref=e969]: Locked For New Profiles
|
||||||
|
- generic [ref=e971]:
|
||||||
|
- paragraph [ref=e972]: Testimonials will be activated automatically.
|
||||||
|
- paragraph [ref=e973]:
|
||||||
|
- text: New professionals unlock testimonials after completing at least
|
||||||
|
- strong [ref=e974]: 3 jobs
|
||||||
|
- text: and receiving at least
|
||||||
|
- strong [ref=e975]: 2 customer feedback entries
|
||||||
|
- text: .
|
||||||
|
- paragraph [ref=e976]: "Current progress: 1 jobs completed • 0 feedback received"
|
||||||
|
- generic [ref=e977]:
|
||||||
|
- paragraph [ref=e979]:
|
||||||
|
- img [ref=e980]
|
||||||
|
- text: Frequently Asked Questions
|
||||||
|
- generic [ref=e983]:
|
||||||
|
- button "What file formats do you deliver?" [ref=e984] [cursor=pointer]:
|
||||||
|
- generic [ref=e985]: What file formats do you deliver?
|
||||||
|
- img [ref=e986]
|
||||||
|
- paragraph [ref=e989]: Final files in AI, PDF, PNG, SVG, and any format required. Print-ready and web-optimised variants included.
|
||||||
|
- button "Do you create brand guidelines?" [ref=e991] [cursor=pointer]:
|
||||||
|
- generic [ref=e992]: Do you create brand guidelines?
|
||||||
|
- img [ref=e993]
|
||||||
|
- button "How many concepts do you provide initially?" [ref=e996] [cursor=pointer]:
|
||||||
|
- generic [ref=e997]: How many concepts do you provide initially?
|
||||||
|
- img [ref=e998]
|
||||||
|
- button "Do you handle printing coordination?" [ref=e1001] [cursor=pointer]:
|
||||||
|
- generic [ref=e1002]: Do you handle printing coordination?
|
||||||
|
- img [ref=e1003]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
BIN
.playwright-cli/page-2026-04-01T13-01-57-921Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T13-01-57-921Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 139 KiB |
229
.playwright-cli/page-2026-04-01T15-04-08-550Z.yml
Normal file
229
.playwright-cli/page-2026-04-01T15-04-08-550Z.yml
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e282]:
|
||||||
|
- button "All Dashboards" [ref=e283] [cursor=pointer]
|
||||||
|
- button "Create Dashboard" [ref=e284] [cursor=pointer]
|
||||||
|
- generic [ref=e285]:
|
||||||
|
- generic [ref=e286]:
|
||||||
|
- textbox "Search dashboards..." [ref=e287]
|
||||||
|
- button "Sort" [ref=e289] [cursor=pointer]:
|
||||||
|
- img [ref=e290]
|
||||||
|
- text: Sort
|
||||||
|
- button "Filters" [ref=e294] [cursor=pointer]:
|
||||||
|
- img [ref=e295]
|
||||||
|
- text: Filters
|
||||||
|
- button "Export" [ref=e297] [cursor=pointer]:
|
||||||
|
- img [ref=e298]
|
||||||
|
- text: Export
|
||||||
|
- table [ref=e302]:
|
||||||
|
- rowgroup [ref=e303]:
|
||||||
|
- row "Name Code Role Widgets Status Updated Actions" [ref=e304]:
|
||||||
|
- columnheader "Name" [ref=e305]
|
||||||
|
- columnheader "Code" [ref=e306]
|
||||||
|
- columnheader "Role" [ref=e307]
|
||||||
|
- columnheader "Widgets" [ref=e308]
|
||||||
|
- columnheader "Status" [ref=e309]
|
||||||
|
- columnheader "Updated" [ref=e310]
|
||||||
|
- columnheader "Actions" [ref=e311]
|
||||||
|
- rowgroup [ref=e312]:
|
||||||
|
- row "Loading dashboards..." [ref=e313]:
|
||||||
|
- cell "Loading dashboards..." [ref=e314]
|
||||||
331
.playwright-cli/page-2026-04-01T15-07-27-464Z.yml
Normal file
331
.playwright-cli/page-2026-04-01T15-07-27-464Z.yml
Normal file
|
|
@ -0,0 +1,331 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Profile
|
||||||
|
- paragraph [ref=e546]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e547]:
|
||||||
|
- button "Basic Info" [ref=e548] [cursor=pointer]
|
||||||
|
- button "Design Profile" [ref=e549] [cursor=pointer]
|
||||||
|
- button "Services & Pricing" [ref=e550] [cursor=pointer]
|
||||||
|
- button "Portfolio" [ref=e551] [cursor=pointer]
|
||||||
|
- button "Documents" [ref=e552] [cursor=pointer]
|
||||||
|
- button "Settings" [ref=e553] [cursor=pointer]
|
||||||
|
- generic [ref=e555]:
|
||||||
|
- generic [ref=e556]:
|
||||||
|
- generic [ref=e557]:
|
||||||
|
- paragraph [ref=e558]: Basic Info
|
||||||
|
- generic [ref=e559]: 8 fields
|
||||||
|
- generic [ref=e560]:
|
||||||
|
- generic [ref=e561]:
|
||||||
|
- generic [ref=e562]:
|
||||||
|
- paragraph [ref=e563]: Full Name*
|
||||||
|
- generic [ref=e565]: Enter full name
|
||||||
|
- generic [ref=e566]:
|
||||||
|
- paragraph [ref=e567]: Brand Name*
|
||||||
|
- generic [ref=e569]: Enter brand name
|
||||||
|
- generic [ref=e570]:
|
||||||
|
- paragraph [ref=e571]: Email Address*
|
||||||
|
- generic [ref=e573]: Enter email address
|
||||||
|
- generic [ref=e574]:
|
||||||
|
- paragraph [ref=e575]: Mobile Number*
|
||||||
|
- generic [ref=e577]: Enter mobile number
|
||||||
|
- generic [ref=e578]:
|
||||||
|
- generic [ref=e579]:
|
||||||
|
- paragraph [ref=e580]: City*
|
||||||
|
- generic [ref=e582]: Enter city
|
||||||
|
- generic [ref=e583]:
|
||||||
|
- paragraph [ref=e584]: State*
|
||||||
|
- generic [ref=e586]: Enter state
|
||||||
|
- generic [ref=e587]:
|
||||||
|
- paragraph [ref=e588]: Country*
|
||||||
|
- generic [ref=e589]:
|
||||||
|
- generic [ref=e590]: Select country
|
||||||
|
- generic [ref=e591]: ▾
|
||||||
|
- generic [ref=e592]:
|
||||||
|
- paragraph [ref=e593]: PIN Code*
|
||||||
|
- generic [ref=e595]: Enter 6-digit pincode
|
||||||
|
- generic [ref=e596]:
|
||||||
|
- button "Cancel" [ref=e597]
|
||||||
|
- button "Save Changes" [ref=e598]
|
||||||
|
- generic [ref=e599]:
|
||||||
|
- paragraph [ref=e600]: Profile Completeness
|
||||||
|
- paragraph [ref=e601]: 87%
|
||||||
|
- paragraph [ref=e604]: Active Section
|
||||||
|
- paragraph [ref=e605]: Basic Info
|
||||||
|
- paragraph [ref=e606]: Mandatory Fields
|
||||||
|
- paragraph [ref=e607]: "8"
|
||||||
|
- paragraph [ref=e608]: Marked with *
|
||||||
|
- paragraph [ref=e609]: Manage design profile, service pricing, portfolio assets, and documents.
|
||||||
|
- generic [ref=e610]:
|
||||||
|
- button "Save Changes" [ref=e611]
|
||||||
|
- button "Reset" [ref=e612]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
519
.playwright-cli/page-2026-04-01T15-11-16-859Z.yml
Normal file
519
.playwright-cli/page-2026-04-01T15-11-16-859Z.yml
Normal file
|
|
@ -0,0 +1,519 @@
|
||||||
|
- generic [ref=e4]:
|
||||||
|
- complementary [ref=e6]:
|
||||||
|
- generic [ref=e7]:
|
||||||
|
- link "Nxtgauge" [ref=e8] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img "Nxtgauge" [ref=e9]
|
||||||
|
- button "Collapse sidebar" [ref=e10] [cursor=pointer]:
|
||||||
|
- img [ref=e11]
|
||||||
|
- navigation [ref=e13]:
|
||||||
|
- link "Dashboard" [ref=e15] [cursor=pointer]:
|
||||||
|
- /url: /admin
|
||||||
|
- img [ref=e16]
|
||||||
|
- generic [ref=e21]: Dashboard
|
||||||
|
- generic [ref=e23]:
|
||||||
|
- link "Department Management" [ref=e24] [cursor=pointer]:
|
||||||
|
- /url: /admin/department
|
||||||
|
- img [ref=e25]
|
||||||
|
- generic [ref=e29]: Department Management
|
||||||
|
- link "Designation Management" [ref=e30] [cursor=pointer]:
|
||||||
|
- /url: /admin/designation
|
||||||
|
- img [ref=e31]
|
||||||
|
- generic [ref=e34]: Designation Management
|
||||||
|
- link "Internal Role Management" [ref=e35] [cursor=pointer]:
|
||||||
|
- /url: /admin/roles
|
||||||
|
- img [ref=e36]
|
||||||
|
- generic [ref=e39]: Internal Role Management
|
||||||
|
- link "Employee Management" [ref=e40] [cursor=pointer]:
|
||||||
|
- /url: /admin/employees
|
||||||
|
- img [ref=e41]
|
||||||
|
- generic [ref=e46]: Employee Management
|
||||||
|
- generic [ref=e48]:
|
||||||
|
- link "External Role Management" [ref=e49] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-roles
|
||||||
|
- img [ref=e50]
|
||||||
|
- generic [ref=e53]: External Role Management
|
||||||
|
- link "External Onboarding Management" [ref=e54] [cursor=pointer]:
|
||||||
|
- /url: /admin/onboarding-management
|
||||||
|
- img [ref=e55]
|
||||||
|
- generic [ref=e58]: External Onboarding Management
|
||||||
|
- link "Internal Dashboard Management" [ref=e59] [cursor=pointer]:
|
||||||
|
- /url: /admin/internal-dashboard-management
|
||||||
|
- img [ref=e60]
|
||||||
|
- generic [ref=e65]: Internal Dashboard Management
|
||||||
|
- link "External Dashboard Management" [ref=e66] [cursor=pointer]:
|
||||||
|
- /url: /admin/external-dashboard-management
|
||||||
|
- img [ref=e67]
|
||||||
|
- generic [ref=e72]: External Dashboard Management
|
||||||
|
- generic [ref=e74]:
|
||||||
|
- link "Verification Management" [ref=e75] [cursor=pointer]:
|
||||||
|
- /url: /admin/verification
|
||||||
|
- img [ref=e76]
|
||||||
|
- generic [ref=e79]: Verification Management
|
||||||
|
- link "Approval Management" [ref=e80] [cursor=pointer]:
|
||||||
|
- /url: /admin/approval
|
||||||
|
- img [ref=e81]
|
||||||
|
- generic [ref=e84]: Approval Management
|
||||||
|
- generic [ref=e86]:
|
||||||
|
- link "Users Management" [ref=e87] [cursor=pointer]:
|
||||||
|
- /url: /admin/users
|
||||||
|
- img [ref=e88]
|
||||||
|
- generic [ref=e93]: Users Management
|
||||||
|
- link "Company Management" [ref=e94] [cursor=pointer]:
|
||||||
|
- /url: /admin/company
|
||||||
|
- img [ref=e95]
|
||||||
|
- generic [ref=e99]: Company Management
|
||||||
|
- link "Candidate Management" [ref=e100] [cursor=pointer]:
|
||||||
|
- /url: /admin/candidate
|
||||||
|
- img [ref=e101]
|
||||||
|
- generic [ref=e105]: Candidate Management
|
||||||
|
- link "Customer Management" [ref=e106] [cursor=pointer]:
|
||||||
|
- /url: /admin/customer
|
||||||
|
- img [ref=e107]
|
||||||
|
- generic [ref=e111]: Customer Management
|
||||||
|
- generic [ref=e113]:
|
||||||
|
- link "Photographer Management" [ref=e114] [cursor=pointer]:
|
||||||
|
- /url: /admin/photographer
|
||||||
|
- img [ref=e115]
|
||||||
|
- generic [ref=e118]: Photographer Management
|
||||||
|
- link "Makeup Artist Management" [ref=e119] [cursor=pointer]:
|
||||||
|
- /url: /admin/makeup-artist
|
||||||
|
- img [ref=e120]
|
||||||
|
- generic [ref=e126]: Makeup Artist Management
|
||||||
|
- link "Tutors Management" [ref=e127] [cursor=pointer]:
|
||||||
|
- /url: /admin/tutors
|
||||||
|
- img [ref=e128]
|
||||||
|
- generic [ref=e130]: Tutors Management
|
||||||
|
- link "Developers Management" [ref=e131] [cursor=pointer]:
|
||||||
|
- /url: /admin/developers
|
||||||
|
- img [ref=e132]
|
||||||
|
- generic [ref=e136]: Developers Management
|
||||||
|
- link "Video Editor Management" [ref=e137] [cursor=pointer]:
|
||||||
|
- /url: /admin/video-editors
|
||||||
|
- img [ref=e138]
|
||||||
|
- generic [ref=e140]: Video Editor Management
|
||||||
|
- link "Fitness Trainer Management" [ref=e141] [cursor=pointer]:
|
||||||
|
- /url: /admin/fitness-trainers
|
||||||
|
- img [ref=e142]
|
||||||
|
- generic [ref=e144]: Fitness Trainer Management
|
||||||
|
- link "Catering Services Management" [ref=e145] [cursor=pointer]:
|
||||||
|
- /url: /admin/catering-services
|
||||||
|
- img [ref=e146]
|
||||||
|
- generic [ref=e149]: Catering Services Management
|
||||||
|
- link "Graphics Designer Management" [ref=e150] [cursor=pointer]:
|
||||||
|
- /url: /admin/graphic-designers
|
||||||
|
- img [ref=e151]
|
||||||
|
- generic [ref=e156]: Graphics Designer Management
|
||||||
|
- link "Social Media Manager Management" [ref=e157] [cursor=pointer]:
|
||||||
|
- /url: /admin/social-media-managers
|
||||||
|
- img [ref=e158]
|
||||||
|
- generic [ref=e161]: Social Media Manager Management
|
||||||
|
- generic [ref=e163]:
|
||||||
|
- link "Jobs Management" [ref=e164] [cursor=pointer]:
|
||||||
|
- /url: /admin/jobs
|
||||||
|
- img [ref=e165]
|
||||||
|
- generic [ref=e169]: Jobs Management
|
||||||
|
- link "Leads Management" [ref=e170] [cursor=pointer]:
|
||||||
|
- /url: /admin/leads
|
||||||
|
- img [ref=e171]
|
||||||
|
- generic [ref=e175]: Leads Management
|
||||||
|
- link "Applications Management" [ref=e176] [cursor=pointer]:
|
||||||
|
- /url: /admin/applications
|
||||||
|
- img [ref=e177]
|
||||||
|
- generic [ref=e180]: Applications Management
|
||||||
|
- link "Responses Management" [ref=e181] [cursor=pointer]:
|
||||||
|
- /url: /admin/responses
|
||||||
|
- img [ref=e182]
|
||||||
|
- generic [ref=e185]: Responses Management
|
||||||
|
- generic [ref=e187]:
|
||||||
|
- link "Pricing Management" [ref=e188] [cursor=pointer]:
|
||||||
|
- /url: /admin/pricing
|
||||||
|
- img [ref=e189]
|
||||||
|
- generic [ref=e193]: Pricing Management
|
||||||
|
- link "Credit Management" [ref=e194] [cursor=pointer]:
|
||||||
|
- /url: /admin/credit
|
||||||
|
- img [ref=e195]
|
||||||
|
- generic [ref=e197]: Credit Management
|
||||||
|
- link "Coupon Management" [ref=e198] [cursor=pointer]:
|
||||||
|
- /url: /admin/coupon
|
||||||
|
- img [ref=e199]
|
||||||
|
- generic [ref=e202]: Coupon Management
|
||||||
|
- link "Discount Management" [ref=e203] [cursor=pointer]:
|
||||||
|
- /url: /admin/discount
|
||||||
|
- img [ref=e204]
|
||||||
|
- generic [ref=e208]: Discount Management
|
||||||
|
- link "Tax Management" [ref=e209] [cursor=pointer]:
|
||||||
|
- /url: /admin/tax
|
||||||
|
- img [ref=e210]
|
||||||
|
- generic [ref=e213]: Tax Management
|
||||||
|
- link "Order Management" [ref=e214] [cursor=pointer]:
|
||||||
|
- /url: /admin/order
|
||||||
|
- img [ref=e215]
|
||||||
|
- generic [ref=e219]: Order Management
|
||||||
|
- link "Invoice Management" [ref=e220] [cursor=pointer]:
|
||||||
|
- /url: /admin/invoice
|
||||||
|
- img [ref=e221]
|
||||||
|
- generic [ref=e225]: Invoice Management
|
||||||
|
- generic [ref=e227]:
|
||||||
|
- link "Knowledge Base Management" [ref=e228] [cursor=pointer]:
|
||||||
|
- /url: /admin/kb
|
||||||
|
- img [ref=e229]
|
||||||
|
- generic [ref=e231]: Knowledge Base Management
|
||||||
|
- link "Notifications" [ref=e232] [cursor=pointer]:
|
||||||
|
- /url: /admin/notifications
|
||||||
|
- img [ref=e233]
|
||||||
|
- generic [ref=e236]: Notifications
|
||||||
|
- link "Review Management" [ref=e237] [cursor=pointer]:
|
||||||
|
- /url: /admin/review
|
||||||
|
- img [ref=e238]
|
||||||
|
- generic [ref=e240]: Review Management
|
||||||
|
- link "Support Management" [ref=e241] [cursor=pointer]:
|
||||||
|
- /url: /admin/support
|
||||||
|
- img [ref=e242]
|
||||||
|
- generic [ref=e244]: Support Management
|
||||||
|
- link "Report Management" [ref=e245] [cursor=pointer]:
|
||||||
|
- /url: /admin/report
|
||||||
|
- img [ref=e246]
|
||||||
|
- generic [ref=e248]: Report Management
|
||||||
|
- link "Ledger Management" [ref=e249] [cursor=pointer]:
|
||||||
|
- /url: /admin/ledger
|
||||||
|
- img [ref=e250]
|
||||||
|
- generic [ref=e253]: Ledger Management
|
||||||
|
- generic [ref=e254]:
|
||||||
|
- banner [ref=e255]:
|
||||||
|
- generic [ref=e257]:
|
||||||
|
- button "Toggle theme" [ref=e258] [cursor=pointer]:
|
||||||
|
- img [ref=e259]
|
||||||
|
- button "Notifications" [ref=e261] [cursor=pointer]:
|
||||||
|
- img [ref=e262]
|
||||||
|
- button "Settings" [ref=e265] [cursor=pointer]:
|
||||||
|
- img [ref=e266]
|
||||||
|
- button "User menu" [ref=e270] [cursor=pointer]:
|
||||||
|
- generic [ref=e271]: AD
|
||||||
|
- generic [ref=e272]:
|
||||||
|
- paragraph [ref=e273]: Admin User
|
||||||
|
- paragraph [ref=e274]: Super Admin
|
||||||
|
- button "Logout" [ref=e275] [cursor=pointer]
|
||||||
|
- main [ref=e277]:
|
||||||
|
- generic [ref=e278]:
|
||||||
|
- generic [ref=e279]:
|
||||||
|
- heading "External Dashboard Management" [level=1] [ref=e280]
|
||||||
|
- paragraph [ref=e281]: Create dashboards with tabs, sidebar and fields, then preview before saving.
|
||||||
|
- generic [ref=e443]:
|
||||||
|
- generic [ref=e444]:
|
||||||
|
- paragraph [ref=e445]: Edit External Dashboard
|
||||||
|
- button "Back" [ref=e446] [cursor=pointer]
|
||||||
|
- generic [ref=e447]:
|
||||||
|
- button "General" [ref=e448] [cursor=pointer]
|
||||||
|
- button "Tabs" [ref=e449] [cursor=pointer]
|
||||||
|
- button "Sidebar" [ref=e450] [cursor=pointer]
|
||||||
|
- button "Fields" [ref=e451] [cursor=pointer]
|
||||||
|
- button "Preview" [ref=e452] [cursor=pointer]: Preview
|
||||||
|
- generic [ref=e456]:
|
||||||
|
- generic [ref=e457]:
|
||||||
|
- paragraph [ref=e458]: Actual End-User Dashboard UI Preview
|
||||||
|
- generic [ref=e459]: Active
|
||||||
|
- generic [ref=e460]:
|
||||||
|
- complementary [ref=e461]:
|
||||||
|
- img "Nxtgauge" [ref=e463]
|
||||||
|
- generic [ref=e464]:
|
||||||
|
- button "My Dashboard" [ref=e465] [cursor=pointer]:
|
||||||
|
- img [ref=e466]
|
||||||
|
- text: My Dashboard
|
||||||
|
- button "My Profile" [ref=e471] [cursor=pointer]:
|
||||||
|
- img [ref=e472]
|
||||||
|
- text: My Profile
|
||||||
|
- button "My Portfolio" [active] [ref=e476] [cursor=pointer]:
|
||||||
|
- img [ref=e477]
|
||||||
|
- text: My Portfolio
|
||||||
|
- button "Leads" [ref=e481] [cursor=pointer]:
|
||||||
|
- img [ref=e482]
|
||||||
|
- text: Leads
|
||||||
|
- button "My Responses" [ref=e486] [cursor=pointer]:
|
||||||
|
- img [ref=e487]
|
||||||
|
- text: My Responses
|
||||||
|
- button "Credits" [ref=e490] [cursor=pointer]:
|
||||||
|
- img [ref=e491]
|
||||||
|
- text: Credits
|
||||||
|
- button "Explore Nxtgauge" [ref=e496] [cursor=pointer]:
|
||||||
|
- img [ref=e497]
|
||||||
|
- text: Explore Nxtgauge
|
||||||
|
- button "Verification" [ref=e500] [cursor=pointer]:
|
||||||
|
- img [ref=e501]
|
||||||
|
- text: Verification
|
||||||
|
- button "Help Center" [ref=e504] [cursor=pointer]:
|
||||||
|
- img [ref=e505]
|
||||||
|
- text: Help Center
|
||||||
|
- button "Settings" [ref=e507] [cursor=pointer]:
|
||||||
|
- img [ref=e508]
|
||||||
|
- text: Settings
|
||||||
|
- button "Switch Services" [ref=e511] [cursor=pointer]:
|
||||||
|
- img [ref=e512]
|
||||||
|
- text: Switch Services
|
||||||
|
- button "Logout" [ref=e517] [cursor=pointer]:
|
||||||
|
- img [ref=e518]
|
||||||
|
- text: Logout
|
||||||
|
- main [ref=e521]:
|
||||||
|
- generic [ref=e522]:
|
||||||
|
- generic [ref=e524]:
|
||||||
|
- img [ref=e525]
|
||||||
|
- textbox "Search resources..." [ref=e528]
|
||||||
|
- generic [ref=e529]:
|
||||||
|
- button [ref=e530] [cursor=pointer]:
|
||||||
|
- img [ref=e531]
|
||||||
|
- button [ref=e534] [cursor=pointer]:
|
||||||
|
- img [ref=e535]
|
||||||
|
- button [ref=e538] [cursor=pointer]:
|
||||||
|
- img [ref=e539]
|
||||||
|
- generic [ref=e542]:
|
||||||
|
- generic [ref=e543]:
|
||||||
|
- paragraph [ref=e544]: Current View
|
||||||
|
- paragraph [ref=e545]: Graphic Designer Portfolio
|
||||||
|
- paragraph [ref=e546]: Manage your public portfolio, showcase your work, and control what service seekers see before they accept your contact request.
|
||||||
|
- generic [ref=e616]:
|
||||||
|
- button "Overview" [ref=e617] [cursor=pointer]:
|
||||||
|
- img [ref=e619]
|
||||||
|
- generic [ref=e624]: Overview
|
||||||
|
- button "About" [ref=e625] [cursor=pointer]:
|
||||||
|
- img [ref=e627]
|
||||||
|
- generic [ref=e631]: About
|
||||||
|
- button "Services & Pricing" [ref=e632] [cursor=pointer]:
|
||||||
|
- img [ref=e634]
|
||||||
|
- generic [ref=e639]: Services & Pricing
|
||||||
|
- button "Portfolio" [ref=e640] [cursor=pointer]:
|
||||||
|
- img [ref=e642]
|
||||||
|
- generic [ref=e646]: Portfolio
|
||||||
|
- button "Experience & Tools" [ref=e647] [cursor=pointer]:
|
||||||
|
- img [ref=e649]
|
||||||
|
- generic [ref=e653]: Experience & Tools
|
||||||
|
- button "Testimonials · Locked" [disabled] [ref=e654]:
|
||||||
|
- img [ref=e656]
|
||||||
|
- generic [ref=e658]: Testimonials · Locked
|
||||||
|
- button "Faqs" [ref=e659] [cursor=pointer]:
|
||||||
|
- img [ref=e661]
|
||||||
|
- generic [ref=e664]: Faqs
|
||||||
|
- generic [ref=e665]:
|
||||||
|
- generic [ref=e666]:
|
||||||
|
- generic [ref=e668]:
|
||||||
|
- generic [ref=e669]:
|
||||||
|
- generic [ref=e670]:
|
||||||
|
- paragraph [ref=e671]: Alex Morgan
|
||||||
|
- generic [ref=e672]: Verified
|
||||||
|
- generic [ref=e673]: Top Response Rate
|
||||||
|
- paragraph [ref=e674]: Graphic Designer
|
||||||
|
- generic [ref=e675]:
|
||||||
|
- generic [ref=e676]: "Area: Mumbai Region"
|
||||||
|
- generic [ref=e677]: "Place: Andheri East, Mumbai"
|
||||||
|
- generic [ref=e678]: "Travel: Mumbai, Navi Mumbai, Thane, Pune"
|
||||||
|
- generic [ref=e679]:
|
||||||
|
- button "Edit Portfolio" [ref=e680] [cursor=pointer]
|
||||||
|
- button "Preview Portfolio" [ref=e681] [cursor=pointer]
|
||||||
|
- generic [ref=e682]:
|
||||||
|
- generic [ref=e683]:
|
||||||
|
- paragraph [ref=e684]: Projects Done
|
||||||
|
- paragraph [ref=e685]: "248"
|
||||||
|
- generic [ref=e686]:
|
||||||
|
- paragraph [ref=e687]: Years Exp
|
||||||
|
- paragraph [ref=e688]: 7+
|
||||||
|
- generic [ref=e689]:
|
||||||
|
- paragraph [ref=e690]: Verified Pro
|
||||||
|
- paragraph [ref=e691]: Verified
|
||||||
|
- generic [ref=e692]:
|
||||||
|
- paragraph [ref=e693]: Last Delivery
|
||||||
|
- paragraph [ref=e694]: 2 days
|
||||||
|
- generic [ref=e695]:
|
||||||
|
- generic [ref=e696]:
|
||||||
|
- paragraph [ref=e698]:
|
||||||
|
- img [ref=e699]
|
||||||
|
- text: About
|
||||||
|
- generic [ref=e703]:
|
||||||
|
- paragraph [ref=e704]: Professional graphic designer with 7+ years of experience delivering high-quality work across India. Committed to excellence, creativity, and client satisfaction on every project.
|
||||||
|
- generic [ref=e705]:
|
||||||
|
- generic [ref=e706]: Fast response within 2 hours
|
||||||
|
- generic [ref=e707]: Clear scope & milestone planning
|
||||||
|
- generic [ref=e708]: Delivery-first execution
|
||||||
|
- generic [ref=e709]:
|
||||||
|
- generic [ref=e710]:
|
||||||
|
- paragraph [ref=e711]: Years Exp
|
||||||
|
- paragraph [ref=e712]: 7+
|
||||||
|
- generic [ref=e713]:
|
||||||
|
- paragraph [ref=e714]: Projects
|
||||||
|
- paragraph [ref=e715]: "248"
|
||||||
|
- generic [ref=e716]:
|
||||||
|
- paragraph [ref=e717]: Rating
|
||||||
|
- paragraph [ref=e718]: "4.9"
|
||||||
|
- generic [ref=e719]:
|
||||||
|
- paragraph [ref=e720]: Reviews
|
||||||
|
- paragraph [ref=e721]: "128"
|
||||||
|
- generic [ref=e722]:
|
||||||
|
- paragraph [ref=e724]:
|
||||||
|
- img [ref=e725]
|
||||||
|
- text: Specialties
|
||||||
|
- generic [ref=e730]:
|
||||||
|
- generic [ref=e731]: Brand Identity
|
||||||
|
- generic [ref=e732]: UI/UX Design
|
||||||
|
- generic [ref=e733]: Print
|
||||||
|
- generic [ref=e734]: Social Media
|
||||||
|
- generic [ref=e735]: Motion
|
||||||
|
- generic [ref=e736]: Packaging
|
||||||
|
- generic [ref=e737]:
|
||||||
|
- paragraph [ref=e738]: Languages
|
||||||
|
- generic [ref=e739]:
|
||||||
|
- generic [ref=e740]: English
|
||||||
|
- generic [ref=e741]: Hindi
|
||||||
|
- generic [ref=e742]: Marathi
|
||||||
|
- paragraph [ref=e743]: Service Areas
|
||||||
|
- generic [ref=e744]:
|
||||||
|
- generic [ref=e745]: Mumbai
|
||||||
|
- generic [ref=e746]: Pune
|
||||||
|
- generic [ref=e747]: Thane
|
||||||
|
- generic [ref=e748]: Nashik
|
||||||
|
- generic [ref=e749]:
|
||||||
|
- generic [ref=e750]:
|
||||||
|
- paragraph [ref=e751]:
|
||||||
|
- img [ref=e752]
|
||||||
|
- text: Services & Pricing
|
||||||
|
- generic [ref=e757]: Transparent Pricing
|
||||||
|
- generic [ref=e758]:
|
||||||
|
- generic [ref=e759]:
|
||||||
|
- paragraph [ref=e760]: Logo Pack
|
||||||
|
- paragraph [ref=e761]: ₹8,000
|
||||||
|
- generic [ref=e762]:
|
||||||
|
- generic [ref=e763]:
|
||||||
|
- img [ref=e764]
|
||||||
|
- text: 3 logo concepts
|
||||||
|
- generic [ref=e767]:
|
||||||
|
- img [ref=e768]
|
||||||
|
- text: 2 revisions
|
||||||
|
- generic [ref=e771]:
|
||||||
|
- img [ref=e772]
|
||||||
|
- text: All file formats
|
||||||
|
- generic [ref=e775]:
|
||||||
|
- img [ref=e776]
|
||||||
|
- text: Usage rights
|
||||||
|
- generic [ref=e779]:
|
||||||
|
- generic [ref=e780]: Most Chosen
|
||||||
|
- paragraph [ref=e781]: Brand Kit
|
||||||
|
- paragraph [ref=e782]: ₹22,000
|
||||||
|
- generic [ref=e783]:
|
||||||
|
- generic [ref=e784]:
|
||||||
|
- img [ref=e785]
|
||||||
|
- text: Logo + palette
|
||||||
|
- generic [ref=e788]:
|
||||||
|
- img [ref=e789]
|
||||||
|
- text: Typography
|
||||||
|
- generic [ref=e792]:
|
||||||
|
- img [ref=e793]
|
||||||
|
- text: Brand guidelines
|
||||||
|
- generic [ref=e796]:
|
||||||
|
- img [ref=e797]
|
||||||
|
- text: Social templates
|
||||||
|
- generic [ref=e800]:
|
||||||
|
- paragraph [ref=e801]: Full Identity
|
||||||
|
- paragraph [ref=e802]: ₹45,000
|
||||||
|
- generic [ref=e803]:
|
||||||
|
- generic [ref=e804]:
|
||||||
|
- img [ref=e805]
|
||||||
|
- text: Complete brand
|
||||||
|
- generic [ref=e808]:
|
||||||
|
- img [ref=e809]
|
||||||
|
- text: UI kit
|
||||||
|
- generic [ref=e812]:
|
||||||
|
- img [ref=e813]
|
||||||
|
- text: Print collateral
|
||||||
|
- generic [ref=e816]:
|
||||||
|
- img [ref=e817]
|
||||||
|
- text: Motion logo
|
||||||
|
- generic [ref=e820]:
|
||||||
|
- generic [ref=e821]:
|
||||||
|
- paragraph [ref=e822]:
|
||||||
|
- img [ref=e823]
|
||||||
|
- text: Portfolio
|
||||||
|
- button "Upload Images" [ref=e827] [cursor=pointer]
|
||||||
|
- generic [ref=e828]:
|
||||||
|
- generic [ref=e829]:
|
||||||
|
- img [ref=e830]
|
||||||
|
- generic [ref=e834]: Campaign Shot
|
||||||
|
- generic [ref=e835]:
|
||||||
|
- img [ref=e836]
|
||||||
|
- generic [ref=e840]: Result Highlight
|
||||||
|
- generic [ref=e841]:
|
||||||
|
- img [ref=e842]
|
||||||
|
- generic [ref=e846]: Before/After
|
||||||
|
- generic [ref=e847]:
|
||||||
|
- img [ref=e848]
|
||||||
|
- generic [ref=e852]: Client Output
|
||||||
|
- generic [ref=e853]:
|
||||||
|
- img [ref=e854]
|
||||||
|
- generic [ref=e858]: Style Board
|
||||||
|
- generic [ref=e859]:
|
||||||
|
- img [ref=e860]
|
||||||
|
- generic [ref=e864]: Final Delivery
|
||||||
|
- generic [ref=e865]:
|
||||||
|
- img [ref=e866]
|
||||||
|
- generic [ref=e870]: Portfolio Select
|
||||||
|
- generic [ref=e871]:
|
||||||
|
- img [ref=e872]
|
||||||
|
- generic [ref=e876]: Recent Work
|
||||||
|
- generic [ref=e877]:
|
||||||
|
- paragraph [ref=e879]:
|
||||||
|
- img [ref=e880]
|
||||||
|
- text: Experience & Tools
|
||||||
|
- generic [ref=e884]:
|
||||||
|
- paragraph [ref=e885]: Design Tools
|
||||||
|
- generic [ref=e886]:
|
||||||
|
- generic [ref=e887]: Brand Identity
|
||||||
|
- generic [ref=e888]: UI/UX Design
|
||||||
|
- generic [ref=e889]: Print
|
||||||
|
- generic [ref=e890]: Social Media
|
||||||
|
- generic [ref=e891]: Motion
|
||||||
|
- generic [ref=e892]: Packaging
|
||||||
|
- generic [ref=e893]:
|
||||||
|
- generic [ref=e894]:
|
||||||
|
- paragraph [ref=e896]: "2018"
|
||||||
|
- paragraph [ref=e897]: Started professional career as Graphic Designer
|
||||||
|
- generic [ref=e898]:
|
||||||
|
- paragraph [ref=e900]: "2020"
|
||||||
|
- paragraph [ref=e901]: Completed 100+ successful projects
|
||||||
|
- generic [ref=e902]:
|
||||||
|
- paragraph [ref=e904]: "2022"
|
||||||
|
- paragraph [ref=e905]: Won regional industry recognition
|
||||||
|
- generic [ref=e906]:
|
||||||
|
- paragraph [ref=e908]: "2024"
|
||||||
|
- paragraph [ref=e909]: Joined Nxtgauge marketplace
|
||||||
|
- generic [ref=e910]:
|
||||||
|
- generic [ref=e911]:
|
||||||
|
- paragraph [ref=e912]:
|
||||||
|
- img [ref=e913]
|
||||||
|
- text: Testimonials
|
||||||
|
- generic [ref=e915]: Locked For New Profiles
|
||||||
|
- generic [ref=e917]:
|
||||||
|
- paragraph [ref=e918]: Testimonials will be activated automatically.
|
||||||
|
- paragraph [ref=e919]:
|
||||||
|
- text: New professionals unlock testimonials after completing at least
|
||||||
|
- strong [ref=e920]: 3 jobs
|
||||||
|
- text: and receiving at least
|
||||||
|
- strong [ref=e921]: 2 customer feedback entries
|
||||||
|
- text: .
|
||||||
|
- paragraph [ref=e922]: "Current progress: 1 jobs completed • 0 feedback received"
|
||||||
|
- generic [ref=e923]:
|
||||||
|
- paragraph [ref=e925]:
|
||||||
|
- img [ref=e926]
|
||||||
|
- text: Frequently Asked Questions
|
||||||
|
- generic [ref=e929]:
|
||||||
|
- button "What file formats do you deliver?" [ref=e930] [cursor=pointer]:
|
||||||
|
- generic [ref=e931]: What file formats do you deliver?
|
||||||
|
- img [ref=e932]
|
||||||
|
- paragraph [ref=e935]: Final files in AI, PDF, PNG, SVG, and any format required. Print-ready and web-optimised variants included.
|
||||||
|
- button "Do you create brand guidelines?" [ref=e937] [cursor=pointer]:
|
||||||
|
- generic [ref=e938]: Do you create brand guidelines?
|
||||||
|
- img [ref=e939]
|
||||||
|
- button "How many concepts do you provide initially?" [ref=e942] [cursor=pointer]:
|
||||||
|
- generic [ref=e943]: How many concepts do you provide initially?
|
||||||
|
- img [ref=e944]
|
||||||
|
- button "Do you handle printing coordination?" [ref=e947] [cursor=pointer]:
|
||||||
|
- generic [ref=e948]: Do you handle printing coordination?
|
||||||
|
- img [ref=e949]
|
||||||
|
- generic [ref=e613]:
|
||||||
|
- button "Cancel" [ref=e614] [cursor=pointer]
|
||||||
|
- button "Update Dashboard" [ref=e615] [cursor=pointer]
|
||||||
BIN
.playwright-cli/page-2026-04-01T15-11-31-570Z.png
Normal file
BIN
.playwright-cli/page-2026-04-01T15-11-31-570Z.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 136 KiB |
|
|
@ -7,7 +7,7 @@ import {
|
||||||
WalletCards, CreditCard, Tag, Percent, Receipt, ShoppingCart,
|
WalletCards, CreditCard, Tag, Percent, Receipt, ShoppingCart,
|
||||||
FileCheck, Star, HeadphonesIcon, BarChart3,
|
FileCheck, Star, HeadphonesIcon, BarChart3,
|
||||||
ChevronLeft, BadgeCheck, Activity, Film, Utensils, PenTool,
|
ChevronLeft, BadgeCheck, Activity, Film, Utensils, PenTool,
|
||||||
Megaphone, Bell,
|
Megaphone, Bell, Video,
|
||||||
} from 'lucide-solid';
|
} from 'lucide-solid';
|
||||||
|
|
||||||
type NavItem = {
|
type NavItem = {
|
||||||
|
|
@ -54,6 +54,7 @@ const GROUPS: NavItem[][] = [
|
||||||
{ href: '/admin/catering-services', label: 'Catering Services Management', icon: Utensils, moduleKeys: ['CATERING_SERVICES_MANAGEMENT', 'CATERING_SERVICES'] },
|
{ href: '/admin/catering-services', label: 'Catering Services Management', icon: Utensils, moduleKeys: ['CATERING_SERVICES_MANAGEMENT', 'CATERING_SERVICES'] },
|
||||||
{ href: '/admin/graphic-designers', label: 'Graphics Designer Management', icon: PenTool, moduleKeys: ['GRAPHIC_DESIGNER_MANAGEMENT', 'GRAPHIC_DESIGNERS'] },
|
{ href: '/admin/graphic-designers', label: 'Graphics Designer Management', icon: PenTool, moduleKeys: ['GRAPHIC_DESIGNER_MANAGEMENT', 'GRAPHIC_DESIGNERS'] },
|
||||||
{ href: '/admin/social-media-managers', label: 'Social Media Manager Management', icon: Megaphone, moduleKeys: ['SOCIAL_MEDIA_MANAGEMENT', 'SOCIAL_MEDIA_MANAGER_MANAGEMENT', 'SOCIAL_MEDIA_MANAGERS'] },
|
{ href: '/admin/social-media-managers', label: 'Social Media Manager Management', icon: Megaphone, moduleKeys: ['SOCIAL_MEDIA_MANAGEMENT', 'SOCIAL_MEDIA_MANAGER_MANAGEMENT', 'SOCIAL_MEDIA_MANAGERS'] },
|
||||||
|
{ href: '/admin/ugc-content-creator', label: 'UGC Content Creator Management', icon: Video, moduleKeys: ['UGC_CONTENT_CREATOR_MANAGEMENT', 'UGC_CONTENT_CREATOR'] },
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
{ href: '/admin/jobs', label: 'Jobs Management', icon: BriefcaseBusiness, moduleKeys: ['JOBS_MANAGEMENT', 'JOBS'] },
|
{ href: '/admin/jobs', label: 'Jobs Management', icon: BriefcaseBusiness, moduleKeys: ['JOBS_MANAGEMENT', 'JOBS'] },
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ type SortMode = 'newest' | 'oldest' | 'name_asc' | 'name_desc';
|
||||||
|
|
||||||
async function fetchUsers(role: string): Promise<any[]> {
|
async function fetchUsers(role: string): Promise<any[]> {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API}/api/admin/users?role=${encodeURIComponent(role)}`);
|
const res = await fetch(`${API}/api/admin/users?role=${role.toUpperCase()}`);
|
||||||
if (!res.ok) throw new Error('Failed to load');
|
if (!res.ok) throw new Error('Failed to load');
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
return Array.isArray(data) ? data : (data.users || []);
|
return Array.isArray(data) ? data : (data.users || []);
|
||||||
|
|
|
||||||
|
|
@ -149,134 +149,7 @@ function extractDocuments(source: any): ApprovalDocument[] {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const FALLBACK_APPROVAL_ROWS: ApprovalRecord[] = [
|
|
||||||
{
|
|
||||||
id: 'AP-P-92841',
|
|
||||||
name: 'Profile Approval - Sarah Jenkins (Demo)',
|
|
||||||
applicantName: 'Sarah Jenkins (Demo)',
|
|
||||||
approvalType: 'PROFILE',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
roleTags: ['Photographer'],
|
|
||||||
primaryService: 'Photography',
|
|
||||||
area: 'T. Nagar, Chennai',
|
|
||||||
submittedDate: '2026-04-01',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
assignedApprover: 'Unassigned',
|
|
||||||
priority: 'MEDIUM',
|
|
||||||
status: 'PENDING',
|
|
||||||
updatedAt: '2026-04-01',
|
|
||||||
sourceKey: 'fallback:profile:92841',
|
|
||||||
submittedFields: [
|
|
||||||
{ label: 'Name / Title', value: 'Sarah Jenkins' },
|
|
||||||
{ label: 'Email', value: 'sarah.jenkins@nxtgauge.com' },
|
|
||||||
{ label: 'Mobile', value: '+91 90000 00001' },
|
|
||||||
{ label: 'Area', value: 'T. Nagar' },
|
|
||||||
{ label: 'Place', value: 'Chennai' },
|
|
||||||
],
|
|
||||||
documents: [
|
|
||||||
{ id: 'identity-proof', title: 'Identity Proof', type: 'IMAGE', url: '/nxtgauge-logo.png', status: 'SUBMITTED' },
|
|
||||||
{ id: 'address-proof', title: 'Address Proof', type: 'PDF', url: '/nxtgauge-icon.png', status: 'SUBMITTED' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'AP-F-92835',
|
|
||||||
name: 'Portfolio Approval - Marcus Davis (Demo)',
|
|
||||||
applicantName: 'Marcus Davis (Demo)',
|
|
||||||
approvalType: 'PORTFOLIO',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
roleTags: ['Graphic Designer'],
|
|
||||||
primaryService: 'Design Portfolio',
|
|
||||||
area: 'Velachery, Chennai',
|
|
||||||
submittedDate: '2026-04-01',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
assignedApprover: 'Unassigned',
|
|
||||||
priority: 'HIGH',
|
|
||||||
status: 'PENDING',
|
|
||||||
updatedAt: '2026-04-01',
|
|
||||||
sourceKey: 'fallback:portfolio:92835',
|
|
||||||
submittedFields: [
|
|
||||||
{ label: 'Name / Title', value: 'Marcus Davis' },
|
|
||||||
{ label: 'Role / Category', value: 'Graphic Designer' },
|
|
||||||
{ label: 'Area', value: 'Velachery' },
|
|
||||||
{ label: 'Description', value: 'Portfolio submitted for verification.' },
|
|
||||||
],
|
|
||||||
documents: [
|
|
||||||
{ id: 'portfolio-1', title: 'Portfolio Image 1', type: 'IMAGE', url: '/nxtgauge-logo.png', status: 'SUBMITTED' },
|
|
||||||
{ id: 'portfolio-2', title: 'Portfolio Image 2', type: 'IMAGE', url: '/nxtgauge-icon.png', status: 'SUBMITTED' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'AP-B-92839',
|
|
||||||
name: 'Business Approval - Zenith Tech Hub (Demo)',
|
|
||||||
applicantName: 'Zenith Tech Hub (Demo)',
|
|
||||||
approvalType: 'BUSINESS',
|
|
||||||
userType: 'COMPANY',
|
|
||||||
roleTags: ['Company'],
|
|
||||||
primaryService: 'Hiring Company',
|
|
||||||
area: 'Guindy, Chennai',
|
|
||||||
submittedDate: '2026-03-31',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
assignedApprover: 'Unassigned',
|
|
||||||
priority: 'HIGH',
|
|
||||||
status: 'PENDING',
|
|
||||||
updatedAt: '2026-03-31',
|
|
||||||
sourceKey: 'fallback:company:92839',
|
|
||||||
submittedFields: [
|
|
||||||
{ label: 'Name / Title', value: 'Zenith Tech Hub' },
|
|
||||||
{ label: 'Email', value: 'admin@zenithtechhub.com' },
|
|
||||||
{ label: 'Area', value: 'Guindy' },
|
|
||||||
{ label: 'Place', value: 'Chennai' },
|
|
||||||
],
|
|
||||||
documents: [
|
|
||||||
{ id: 'gst-certificate', title: 'GST Certificate', type: 'PDF', url: '/nxtgauge-logo.png', status: 'SUBMITTED' },
|
|
||||||
{ id: 'incorporation', title: 'Incorporation Certificate', type: 'PDF', url: '/nxtgauge-icon.png', status: 'SUBMITTED' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'AP-R-92812',
|
|
||||||
name: 'Requirement Approval - Luxury Wedding Shoot (Demo)',
|
|
||||||
applicantName: 'Luxury Wedding Shoot (Demo)',
|
|
||||||
approvalType: 'REQUIREMENT',
|
|
||||||
userType: 'CUSTOMER',
|
|
||||||
roleTags: ['Service Seeker', 'Photographer'],
|
|
||||||
primaryService: 'Service Requirement',
|
|
||||||
area: 'Adyar, Chennai',
|
|
||||||
submittedDate: '2026-03-30',
|
|
||||||
verificationStatus: 'FLAGGED',
|
|
||||||
assignedApprover: 'Unassigned',
|
|
||||||
priority: 'CRITICAL',
|
|
||||||
status: 'ESCALATED',
|
|
||||||
updatedAt: '2026-03-30',
|
|
||||||
sourceKey: 'fallback:requirement:92812',
|
|
||||||
submittedFields: [
|
|
||||||
{ label: 'Name / Title', value: 'Luxury Wedding Shoot' },
|
|
||||||
{ label: 'Role / Category', value: 'Photographer' },
|
|
||||||
{ label: 'Area', value: 'Adyar' },
|
|
||||||
{ label: 'Description', value: 'Need urgent premium wedding photography team.' },
|
|
||||||
],
|
|
||||||
documents: [
|
|
||||||
{ id: 'requirement-brief', title: 'Requirement Brief', type: 'PDF', url: '/nxtgauge-logo.png', status: 'SUBMITTED' },
|
|
||||||
{ id: 'reference-moodboard', title: 'Reference Moodboard', type: 'IMAGE', url: '/nxtgauge-icon.png', status: 'SUBMITTED' },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
function mergeWithFallbackRows(sourceRows: ApprovalRecord[]): ApprovalRecord[] {
|
|
||||||
const merged = [...sourceRows];
|
|
||||||
for (const demo of FALLBACK_APPROVAL_ROWS) {
|
|
||||||
const duplicate = merged.some((row) => {
|
|
||||||
const rowKey = String(row.sourceKey || '').toLowerCase();
|
|
||||||
const rowName = String(row.applicantName || '').toLowerCase();
|
|
||||||
const rowType = String(row.approvalType || '').toLowerCase();
|
|
||||||
const demoName = String(demo.applicantName || '').toLowerCase();
|
|
||||||
const demoType = String(demo.approvalType || '').toLowerCase();
|
|
||||||
if (rowKey.startsWith('fallback:')) return rowKey === String(demo.sourceKey || '').toLowerCase();
|
|
||||||
return rowName === demoName && rowType === demoType;
|
|
||||||
});
|
|
||||||
if (!duplicate) merged.push(demo);
|
|
||||||
}
|
|
||||||
return merged;
|
|
||||||
}
|
|
||||||
|
|
||||||
function verificationToApprovalType(requestType: ApprovalQueueItem['requestType']): ApprovalRecord['approvalType'] {
|
function verificationToApprovalType(requestType: ApprovalQueueItem['requestType']): ApprovalRecord['approvalType'] {
|
||||||
if (requestType === 'Portfolio Approval') return 'PORTFOLIO';
|
if (requestType === 'Portfolio Approval') return 'PORTFOLIO';
|
||||||
|
|
@ -503,11 +376,10 @@ export default function ApprovalManagementPage() {
|
||||||
return arr.findIndex((candidate) => (candidate.sourceKey || candidate.id) === key) === index;
|
return arr.findIndex((candidate) => (candidate.sourceKey || candidate.id) === key) === index;
|
||||||
});
|
});
|
||||||
|
|
||||||
const withDemo = mergeWithFallbackRows(deduped);
|
setRows(deduped);
|
||||||
setRows(withDemo.length ? withDemo : FALLBACK_APPROVAL_ROWS);
|
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
setRows(FALLBACK_APPROVAL_ROWS);
|
setRows([]);
|
||||||
setError(e?.message || 'Could not reach approvals API. Showing demo approval queue data.');
|
setError(e?.message || 'Could not reach approvals API.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,6 @@ type CandidateRecord = CrudRecord & {
|
||||||
registeredDate?: string;
|
registeredDate?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_CANDIDATES: CandidateRecord[] = [
|
|
||||||
{ id: 'c1', name: 'Arjun Sharma', email: 'arjun.s@example.com', phone: '+91 98765 43210', location: 'Mumbai', experience: '5 years', status: 'ACTIVE', registeredDate: '2026-01-15', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'c2', name: 'Priya Nair', email: 'priya.n@example.com', phone: '+91 98765 43211', location: 'Bangalore', experience: '3 years', status: 'ACTIVE', registeredDate: '2026-02-10', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'c3', name: 'Rahul Verma', email: 'rahul.v@example.com', phone: '+91 98765 43212', location: 'Delhi', experience: '1 year', status: 'PENDING', registeredDate: '2026-03-05', updatedAt: '2026-03-27' },
|
|
||||||
];
|
|
||||||
|
|
||||||
function StatusBadge(props: { status: string }) {
|
function StatusBadge(props: { status: string }) {
|
||||||
const active = () => props.status === 'ACTIVE';
|
const active = () => props.status === 'ACTIVE';
|
||||||
const pending = () => props.status === 'PENDING';
|
const pending = () => props.status === 'PENDING';
|
||||||
|
|
@ -47,21 +41,23 @@ export default function CandidateManagementPage() {
|
||||||
|
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API}/api/admin/users?role=job_seeker`);
|
const res = await fetch(`${API}/api/admin/users?role=JOB_SEEKER`);
|
||||||
if (!res.ok) throw new Error();
|
if (!res.ok) throw new Error('Fetch failed');
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
const list = Array.isArray(data) ? data : (data.users || []);
|
const list = (Array.isArray(data) ? data : []).map((u: any) => ({
|
||||||
if (list.length === 0) setRows(FALLBACK_CANDIDATES);
|
|
||||||
else setRows(list.map((u: any) => ({
|
|
||||||
id: u.id,
|
id: u.id,
|
||||||
name: u.name || u.full_name || '—',
|
name: u.full_name || u.email.split('@')[0],
|
||||||
email: u.email,
|
email: u.email,
|
||||||
status: (u.status || 'ACTIVE').toUpperCase(),
|
status: (u.status || 'ACTIVE').toUpperCase(),
|
||||||
updatedAt: u.updated_at || '',
|
registeredDate: u.created_at ? new Date(u.created_at).toLocaleDateString() : '—',
|
||||||
registeredDate: u.created_at ? new Date(u.created_at).toLocaleDateString() : '—'
|
updatedAt: u.updated_at || u.created_at || '—',
|
||||||
} as CandidateRecord)));
|
location: 'Not Specified',
|
||||||
} catch {
|
experience: 'Not Specified'
|
||||||
setRows(FALLBACK_CANDIDATES);
|
} as CandidateRecord));
|
||||||
|
setRows(list);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Candidate load error:', e);
|
||||||
|
setRows([]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -72,7 +68,7 @@ export default function CandidateManagementPage() {
|
||||||
if (statusFilter() !== 'all') r = r.filter((d) => d.status === statusFilter().toUpperCase());
|
if (statusFilter() !== 'all') r = r.filter((d) => d.status === statusFilter().toUpperCase());
|
||||||
const q = search().toLowerCase();
|
const q = search().toLowerCase();
|
||||||
if (q) {
|
if (q) {
|
||||||
r = r.filter(r => r.name.toLowerCase().includes(q) || r.email.toLowerCase().includes(q));
|
r = r.filter(it => it.name.toLowerCase().includes(q) || it.email.toLowerCase().includes(q));
|
||||||
}
|
}
|
||||||
const sorted = [...r];
|
const sorted = [...r];
|
||||||
const mode = sortBy();
|
const mode = sortBy();
|
||||||
|
|
|
||||||
|
|
@ -1,65 +1,60 @@
|
||||||
import { For, Show, createMemo, createSignal, onMount } from 'solid-js';
|
import { For, Show, createMemo, createSignal, onMount } from 'solid-js';
|
||||||
import AdminShell from '~/components/AdminShell';
|
import AdminShell from '~/components/AdminShell';
|
||||||
import type { CrudRecord } from '~/lib/admin/types';
|
|
||||||
|
|
||||||
const API = '/api/gateway';
|
type AdminContact = {
|
||||||
|
name: string;
|
||||||
type CompanyRecord = CrudRecord & {
|
email: string;
|
||||||
industry?: string;
|
phone: string;
|
||||||
city?: string;
|
|
||||||
email?: string;
|
|
||||||
status: 'ACTIVE' | 'INACTIVE' | 'PENDING' | 'SUSPENDED';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_COMPANIES: CompanyRecord[] = [
|
type CompanyRecord = {
|
||||||
{ id: 'cp1', name: 'Tech Solutions Inc', industry: 'Software', city: 'Mumbai', email: 'contact@techsolutions.com', status: 'ACTIVE', updatedAt: '2026-03-27' },
|
id: string;
|
||||||
{ id: 'cp2', name: 'Creative Designs', industry: 'Design', city: 'Bangalore', email: 'hello@creativedesigns.in', status: 'ACTIVE', updatedAt: '2026-03-27' },
|
companyCode: string;
|
||||||
{ id: 'cp3', name: 'Global Logistics', industry: 'Logistics', city: 'Chennai', email: 'info@globallogistics.com', status: 'PENDING', updatedAt: '2026-03-27' },
|
name: string;
|
||||||
];
|
registrationNumber: string;
|
||||||
|
industry: string;
|
||||||
function StatusBadge(props: { status: string }) {
|
location: string;
|
||||||
const active = () => props.status === 'ACTIVE';
|
joinedOn: string;
|
||||||
const pending = () => props.status === 'PENDING';
|
adminContact: AdminContact;
|
||||||
return (
|
accountStatus: string;
|
||||||
<span style={`display:inline-flex;align-items:center;border-radius:9999px;border:1px solid ${active() ? '#FFD8C2' : pending() ? '#F6D78F' : '#D1D5DB'};background:${active() ? '#FFF1EB' : pending() ? '#FFF3D6' : '#F3F4F6'};color:${active() ? '#FF5E13' : pending() ? '#B7791F' : '#4B5563'};padding:2px 10px;font-size:12px;font-weight:500`}>
|
verificationStatus: string;
|
||||||
<span style={`display:inline-block;width:6px;height:6px;border-radius:50%;background:${active() ? '#FF5E13' : pending() ? '#B7791F' : '#9CA3AF'};margin-right:5px;flex-shrink:0`} />
|
subscriptionType: string;
|
||||||
{props.status.charAt(0) + props.status.slice(1).toLowerCase()}
|
jobPostingsCount: number;
|
||||||
</span>
|
totalHires: number;
|
||||||
);
|
updatedAt: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export default function CompanyManagementPage() {
|
export default function CompanyManagementPage() {
|
||||||
const [view, setView] = createSignal<'list' | 'detail' | 'form'>('list');
|
const [rows, setRows] = createSignal<CompanyRecord[]>([]);
|
||||||
const [listTab, setListTab] = createSignal<'all' | 'create' | 'view'>('all');
|
|
||||||
const [detailTab, setDetailTab] = createSignal<'overview' | 'employees' | 'verification'>('overview');
|
|
||||||
|
|
||||||
const [search, setSearch] = createSignal('');
|
const [search, setSearch] = createSignal('');
|
||||||
const [statusFilter, setStatusFilter] = createSignal('all');
|
const [statusFilter, setStatusFilter] = createSignal('all');
|
||||||
const [sortBy, setSortBy] = createSignal<'name_asc' | 'name_desc' | 'industry_asc' | 'industry_desc'>('name_asc');
|
const [sortBy, setSortBy] = createSignal('name_asc');
|
||||||
const [sortMenuOpen, setSortMenuOpen] = createSignal(false);
|
|
||||||
const [filterMenuOpen, setFilterMenuOpen] = createSignal(false);
|
|
||||||
const [rows, setRows] = createSignal<CompanyRecord[]>([]);
|
|
||||||
const [selectedCompany, setSelectedCompany] = createSignal<CompanyRecord | null>(null);
|
|
||||||
const [openMenuId, setOpenMenuId] = createSignal<string | null>(null);
|
|
||||||
|
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API}/api/admin/companies`);
|
const r = await fetch('/api/admin/companies');
|
||||||
if (!res.ok) throw new Error();
|
if (!r.ok) throw new Error('Failed to fetch companies');
|
||||||
const data = await res.json();
|
const data = await r.json();
|
||||||
const list = Array.isArray(data) ? data : (data.companies || []);
|
const mapped: CompanyRecord[] = data.map((c: any) => ({
|
||||||
if (list.length === 0) setRows(FALLBACK_COMPANIES);
|
|
||||||
else setRows(list.map((c: any) => ({
|
|
||||||
id: c.id,
|
id: c.id,
|
||||||
name: c.company_name || c.companyName || c.name || '—',
|
companyCode: c.id.slice(0, 8).toUpperCase(),
|
||||||
industry: c.industry,
|
name: c.company_name,
|
||||||
city: c.city,
|
registrationNumber: c.registration_number || 'Pending Registration',
|
||||||
email: c.email,
|
industry: c.industry || 'Not Specified',
|
||||||
status: (c.status || 'ACTIVE').toUpperCase(),
|
location: 'Not Specified',
|
||||||
updatedAt: c.updated_at || c.createdAt || ''
|
joinedOn: new Date(c.created_at).toLocaleDateString(),
|
||||||
} as CompanyRecord)));
|
adminContact: { name: 'Company Admin', email: '...', phone: '...' },
|
||||||
} catch {
|
accountStatus: c.status.toUpperCase(),
|
||||||
setRows(FALLBACK_COMPANIES);
|
verificationStatus: c.status === 'APPROVED' ? 'VERIFIED' : 'PENDING',
|
||||||
|
subscriptionType: 'STANDARD',
|
||||||
|
jobPostingsCount: 0,
|
||||||
|
totalHires: 0,
|
||||||
|
updatedAt: c.updated_at,
|
||||||
|
}));
|
||||||
|
setRows(mapped);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
setRows([]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -67,231 +62,77 @@ export default function CompanyManagementPage() {
|
||||||
|
|
||||||
const filteredRows = createMemo(() => {
|
const filteredRows = createMemo(() => {
|
||||||
let r = rows();
|
let r = rows();
|
||||||
if (statusFilter() !== 'all') r = r.filter((d) => d.status === statusFilter().toUpperCase());
|
if (statusFilter() !== 'all') r = r.filter((d) => d.accountStatus === statusFilter().toUpperCase());
|
||||||
const q = search().toLowerCase();
|
const q = search().toLowerCase();
|
||||||
if (q) {
|
if (q) {
|
||||||
r = r.filter(r => r.name.toLowerCase().includes(q) || (r.email || '').toLowerCase().includes(q));
|
r = r.filter(it => it.name.toLowerCase().includes(q) || it.companyCode.toLowerCase().includes(q));
|
||||||
}
|
}
|
||||||
const sorted = [...r];
|
const sorted = [...r];
|
||||||
const mode = sortBy();
|
|
||||||
sorted.sort((a, b) => {
|
sorted.sort((a, b) => {
|
||||||
if (mode === 'name_desc') return b.name.localeCompare(a.name);
|
if (sortBy() === 'name_desc') return b.name.localeCompare(a.name);
|
||||||
if (mode === 'industry_desc') return (b.industry || '').localeCompare(a.industry || '');
|
|
||||||
if (mode === 'industry_asc') return (a.industry || '').localeCompare(b.industry || '');
|
|
||||||
return a.name.localeCompare(b.name);
|
return a.name.localeCompare(b.name);
|
||||||
});
|
});
|
||||||
return sorted;
|
return sorted;
|
||||||
});
|
});
|
||||||
|
|
||||||
const exportCsv = () => {
|
|
||||||
const headers = ['Company Name', 'Industry', 'City', 'Email', 'Status'];
|
|
||||||
const body = filteredRows().map((row) => [
|
|
||||||
row.name || '',
|
|
||||||
row.industry || '',
|
|
||||||
row.city || '',
|
|
||||||
row.email || '',
|
|
||||||
row.status || '',
|
|
||||||
]);
|
|
||||||
const csv = [headers, ...body]
|
|
||||||
.map((line) => line.map((cell) => `"${String(cell).replace(/"/g, '""')}"`).join(','))
|
|
||||||
.join('\n');
|
|
||||||
|
|
||||||
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
|
||||||
const url = URL.createObjectURL(blob);
|
|
||||||
const link = document.createElement('a');
|
|
||||||
link.href = url;
|
|
||||||
link.download = 'companies.csv';
|
|
||||||
link.click();
|
|
||||||
URL.revokeObjectURL(url);
|
|
||||||
};
|
|
||||||
|
|
||||||
const openDetail = (row: CompanyRecord) => { setSelectedCompany(row); setListTab('view'); setOpenMenuId(null); };
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AdminShell>
|
<AdminShell>
|
||||||
<div class="w-full space-y-6 pb-8">
|
<div class="w-full space-y-6 pb-8">
|
||||||
<div style="margin-bottom: 1.5rem">
|
<div class="flex items-center justify-between">
|
||||||
<h1 class="text-[28px] font-bold leading-tight text-[#111827]">Company Management</h1>
|
<div>
|
||||||
<p class="mt-1 text-[14px] text-[#6B7280]">Manage and monitor all corporate accounts and business entities</p>
|
<h1 class="text-2xl font-bold text-[#111827]">Companies Management</h1>
|
||||||
|
<p class="text-sm text-[#6B7280]">Manage all registered companies and their verification status.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* ── LIST VIEW ── */}
|
<div class="flex items-center gap-4 bg-white p-4 rounded-xl border border-[#E5E7EB]">
|
||||||
<div>
|
<input
|
||||||
{/* Tabs */}
|
type="text"
|
||||||
<div style="margin-top:24px;display:flex;align-items:center;gap:24px;border-bottom:1px solid #E5E7EB">
|
placeholder="Search company..."
|
||||||
{([
|
class="flex-1 h-10 px-4 rounded-lg border border-[#E5E7EB] outline-none focus:border-[#FF5E13]"
|
||||||
{ key: 'all', label: 'All Companies', action: () => { setListTab('all'); setStatusFilter('all'); } },
|
value={search()}
|
||||||
{ key: 'create', label: 'Create Company', action: () => { setListTab('create'); setView('form'); } },
|
onInput={(e) => setSearch(e.currentTarget.value)}
|
||||||
{ key: 'view', label: 'View Profile', action: () => setListTab('view') },
|
/>
|
||||||
] as const).map((tab) => (
|
<select
|
||||||
<button
|
class="h-10 px-4 rounded-lg border border-[#E5E7EB] outline-none"
|
||||||
type="button"
|
value={statusFilter()}
|
||||||
onClick={tab.action}
|
onChange={(e) => setStatusFilter(e.currentTarget.value)}
|
||||||
style={`padding-bottom:12px;font-size:14px;font-weight:500;background:none;border:none;cursor:pointer;${listTab() === tab.key ? 'color:#FF5E13;border-bottom:2px solid #FF5E13;margin-bottom:-1px' : 'color:#6B7280'}`}
|
>
|
||||||
>
|
<option value="all">All Status</option>
|
||||||
{tab.label}
|
<option value="pending">Pending</option>
|
||||||
</button>
|
<option value="active">Active</option>
|
||||||
))}
|
<option value="suspended">Suspended</option>
|
||||||
</div>
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* View Profile panel */}
|
<div class="bg-white rounded-xl border border-[#E5E7EB] overflow-hidden">
|
||||||
<Show when={listTab() === 'view'}>
|
<table class="min-w-full divide-y divide-[#E5E7EB]">
|
||||||
<Show
|
<thead class="bg-[#F9FAFB]">
|
||||||
when={!selectedCompany()}
|
<tr>
|
||||||
>
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#4B5563] uppercase tracking-wider">Company</th>
|
||||||
<div style="margin-top:24px;border-radius:16px;border:1px solid #E5E7EB;background:white;padding:48px 24px;text-align:center">
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#4B5563] uppercase tracking-wider">Industry</th>
|
||||||
<p style="font-size:15px;font-weight:600;color:#111827">No company selected</p>
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#4B5563] uppercase tracking-wider">Status</th>
|
||||||
<p style="margin-top:6px;font-size:13px;color:#6B7280">Click the <strong>⋮</strong> menu on any company row and choose <strong>View Profile</strong>.</p>
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#4B5563] uppercase tracking-wider">Joined</th>
|
||||||
</div>
|
</tr>
|
||||||
</Show>
|
</thead>
|
||||||
<Show when={selectedCompany()}>
|
<tbody class="divide-y divide-[#E5E7EB]">
|
||||||
<div style="margin-top:24px;border-radius:16px;border:1px solid #E5E7EB;background:white;box-shadow:0 1px 4px rgba(0,0,0,0.06);overflow:hidden">
|
<For each={filteredRows()}>{(c) => (
|
||||||
<div style="padding:20px 24px;border-bottom:1px solid #E5E7EB;display:flex;align-items:center;justify-content:space-between">
|
<tr>
|
||||||
<div>
|
<td class="px-6 py-4">
|
||||||
<h2 style="font-size:18px;font-weight:700;color:#111827">{selectedCompany()!.name}</h2>
|
<div class="font-semibold text-[#111827]">{c.name}</div>
|
||||||
<p style="margin-top:2px;font-size:13px;color:#6B7280">{selectedCompany()!.industry} • {selectedCompany()!.city}</p>
|
<div class="text-xs text-[#6B7280]">{c.companyCode}</div>
|
||||||
</div>
|
</td>
|
||||||
<StatusBadge status={selectedCompany()!.status} />
|
<td class="px-6 py-4 text-sm text-[#4B5563]">{c.industry}</td>
|
||||||
</div>
|
<td class="px-6 py-4">
|
||||||
|
<span class={`px-2 py-1 text-xs font-bold rounded-full ${c.accountStatus === 'ACTIVE' ? 'bg-green-100 text-green-700' : 'bg-yellow-100 text-yellow-700'}`}>
|
||||||
<div style="display:flex;align-items:center;gap:4px;border-bottom:1px solid #E5E7EB;padding:0 24px;background:#FAFAFA">
|
{c.accountStatus}
|
||||||
{(['overview', 'employees', 'verification'] as const).map((tab, i) => {
|
</span>
|
||||||
const labels = ['Overview', 'Employee List', 'Verification'];
|
</td>
|
||||||
const active = () => detailTab() === tab;
|
<td class="px-6 py-4 text-sm text-[#4B5563]">{c.joinedOn}</td>
|
||||||
return (
|
</tr>
|
||||||
<button type="button" onClick={() => setDetailTab(tab)} style={`position:relative;padding:14px 12px;font-size:13px;font-weight:600;background:none;border:none;cursor:pointer;color:${active() ? '#FF5E13' : '#6B7280'}`}>
|
)}</For>
|
||||||
{labels[i]}
|
</tbody>
|
||||||
<Show when={active()}><span style="position:absolute;left:0;right:0;bottom:0;height:2px;background:#FF5E13;border-radius:2px 2px 0 0" /></Show>
|
</table>
|
||||||
</button>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="padding:24px">
|
|
||||||
<Show when={detailTab() === 'overview'}>
|
|
||||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:24px">
|
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:20px">
|
|
||||||
<h3 style="font-size:14px;font-weight:700;color:#111827;margin-bottom:16px">Company Profile</h3>
|
|
||||||
<div style="display:flex;flex-direction:column;gap:12px">
|
|
||||||
{[
|
|
||||||
{ l: 'Industry', v: selectedCompany()!.industry || '—' },
|
|
||||||
{ l: 'City', v: selectedCompany()!.city || '—' },
|
|
||||||
{ l: 'Email', v: selectedCompany()!.email || '—' },
|
|
||||||
{ l: 'Last Updated', v: selectedCompany()!.updatedAt || '—' },
|
|
||||||
].map(item => (
|
|
||||||
<div style="display:flex;justify-content:space-between">
|
|
||||||
<span style="font-size:13px;color:#6B7280">{item.l}</span>
|
|
||||||
<span style="font-size:13px;font-weight:600;color:#111827">{item.v}</span>
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="display:flex;align-items:center;gap:10px;padding:14px 24px;border-top:1px solid #E5E7EB">
|
|
||||||
<button type="button" style="height:36px;border-radius:8px;background:#0D0D2A;padding:0 16px;font-size:13px;font-weight:600;color:white;border:none;cursor:pointer">Edit Company</button>
|
|
||||||
<button type="button" onClick={() => { setSelectedCompany(null); setListTab('all'); }} style="height:36px;border-radius:8px;border:1px solid #E5E7EB;background:white;padding:0 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer">Back to List</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</Show>
|
|
||||||
|
|
||||||
<div style={{ display: listTab() === 'view' ? 'none' : 'block' }}>
|
|
||||||
<div style="margin-top:1.5rem;margin-left:-24px;margin-right:-24px;border-radius:0;border-left:none;border-right:none;overflow:hidden;border-top:1px solid #E5E7EB;border-bottom:1px solid #E5E7EB;background:white;box-shadow:0 1px 3px rgba(0,0,0,0.06)">
|
|
||||||
<div style="display:flex;align-items:center;gap:8px;padding:14px 20px;border-bottom:1px solid #F3F4F6">
|
|
||||||
<input
|
|
||||||
value={search()}
|
|
||||||
onInput={(e) => setSearch(e.currentTarget.value)}
|
|
||||||
placeholder="Search companies..."
|
|
||||||
style="height:34px;flex:1;border-radius:8px;border:1px solid #E5E7EB;background:white;padding:0 12px;font-size:13px;color:#111827;outline:none"
|
|
||||||
/>
|
|
||||||
<div style="position:relative">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => { setSortMenuOpen((v) => !v); setFilterMenuOpen(false); }}
|
|
||||||
style="display:inline-flex;height:34px;align-items:center;gap:6px;border-radius:8px;border:1px solid #E5E7EB;background:white;padding:0 12px;font-size:12px;font-weight:500;color:#374151;cursor:pointer"
|
|
||||||
>
|
|
||||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 4v13"/><path d="m3 13 4 4 4-4"/><path d="M17 20V7"/><path d="m21 11-4-4-4 4"/></svg>
|
|
||||||
Sort
|
|
||||||
</button>
|
|
||||||
<Show when={sortMenuOpen()}>
|
|
||||||
<div style="position:absolute;left:0;top:38px;z-index:30;min-width:200px;border-radius:12px;border:1px solid #E5E7EB;background:white;padding:6px;box-shadow:0 4px 16px rgba(0,0,0,0.1)">
|
|
||||||
{(['name_asc', 'name_desc', 'industry_asc', 'industry_desc'] as const).map((s, i) => (
|
|
||||||
<button type="button" onClick={() => { setSortBy(s); setSortMenuOpen(false); }} style={`display:block;width:100%;border-radius:8px;padding:8px 12px;text-align:left;font-size:13px;background:none;border:none;cursor:pointer;color:${sortBy() === s ? '#FF5E13' : '#374151'};background:${sortBy() === s ? '#FFF1EB' : 'transparent'}`}>
|
|
||||||
{['Name (A-Z)', 'Name (Z-A)', 'Industry (A-Z)', 'Industry (Z-A)'][i]}
|
|
||||||
</button>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</div>
|
|
||||||
<div style="position:relative">
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => { setFilterMenuOpen((v) => !v); setSortMenuOpen(false); }}
|
|
||||||
style="display:inline-flex;height:34px;align-items:center;gap:6px;border-radius:8px;border:1px solid #E5E7EB;background:white;padding:0 12px;font-size:12px;font-weight:500;color:#374151;cursor:pointer"
|
|
||||||
>
|
|
||||||
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 5h18M6 12h12M10 19h4"/></svg>
|
|
||||||
Filters
|
|
||||||
</button>
|
|
||||||
<Show when={filterMenuOpen()}>
|
|
||||||
<div style="position:absolute;left:0;top:38px;z-index:30;min-width:160px;border-radius:12px;border:1px solid #E5E7EB;background:white;padding:6px;box-shadow:0 4px 16px rgba(0,0,0,0.1)">
|
|
||||||
{(['all', 'active', 'pending', 'inactive'] as const).map((s) => (
|
|
||||||
<button type="button" onClick={() => { setStatusFilter(s); setFilterMenuOpen(false); }} style={`display:block;width:100%;border-radius:8px;padding:8px 12px;text-align:left;font-size:13px;background:none;border:none;cursor:pointer;color:${statusFilter() === s ? '#FF5E13' : '#374151'};background:${statusFilter() === s ? '#FFF1EB' : 'transparent'}`}>
|
|
||||||
{s === 'all' ? 'All Status' : s === 'active' ? 'Active' : s === 'pending' ? 'Pending' : 'Inactive'}
|
|
||||||
</button>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</div>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={exportCsv}
|
|
||||||
style="display:inline-flex;height:34px;align-items:center;gap:6px;border-radius:8px;border:1px solid #D1D5DB;background:#fff;padding:0 12px;font-size:12px;font-weight:600;color:#0f172a;cursor:pointer"
|
|
||||||
>
|
|
||||||
Export
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="overflow-x-auto">
|
|
||||||
<table class="min-w-full">
|
|
||||||
<thead>
|
|
||||||
<tr style="background:#0D0D2A;text-align:left">
|
|
||||||
{['Company Name', 'Industry', 'City', 'Email', 'Status', 'Actions'].map(h => (
|
|
||||||
<th style="padding:10px 20px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#FFFFFF;white-space:nowrap">{h}</th>
|
|
||||||
))}
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<For each={filteredRows()}>
|
|
||||||
{(row) => (
|
|
||||||
<tr style="border-bottom:1px solid #F3F4F6" class="hover:bg-[#FAFAFA] transition-colors">
|
|
||||||
<td style="padding:12px 20px;font-size:14px;font-weight:600;color:#111827">{row.name}</td>
|
|
||||||
<td style="padding:12px 20px;font-size:13px;color:#6B7280">{row.industry || '—'}</td>
|
|
||||||
<td style="padding:12px 20px;font-size:13px;color:#6B7280">{row.city || '—'}</td>
|
|
||||||
<td style="padding:12px 20px;font-size:13px;color:#6B7280">{row.email || '—'}</td>
|
|
||||||
<td style="padding:12px 20px"><StatusBadge status={row.status} /></td>
|
|
||||||
<td style="padding:12px 20px;position:relative">
|
|
||||||
<button type="button" onClick={() => setOpenMenuId(openMenuId() === row.id ? null : row.id)} style="display:inline-flex;height:32px;width:32px;align-items:center;justify-content:center;border-radius:8px;color:#9CA3AF;background:none;border:none;cursor:pointer">
|
|
||||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="5" r="1.5"/><circle cx="12" cy="12" r="1.5"/><circle cx="12" cy="19" r="1.5"/></svg>
|
|
||||||
</button>
|
|
||||||
<Show when={openMenuId() === row.id}>
|
|
||||||
<div style="position:absolute;right:20px;top:44px;z-index:20;width:180px;border-radius:12px;border:1px solid #E5E7EB;background:white;padding:6px;box-shadow:0 4px 20px rgba(0,0,0,0.12)">
|
|
||||||
<button type="button" onClick={() => openDetail(row)} style="display:flex;width:100%;align-items:center;gap:10px;border-radius:8px;padding:8px 12px;font-size:13px;color:#374151;background:none;border:none;cursor:pointer;text-align:left">View Profile</button>
|
|
||||||
<button type="button" style="display:flex;width:100%;align-items:center;gap:10px;border-radius:8px;padding:8px 12px;font-size:13px;color:#374151;background:none;border:none;cursor:pointer;text-align:left">Edit Company</button>
|
|
||||||
<button type="button" style="display:flex;width:100%;align-items:center;gap:10px;border-radius:8px;padding:8px 12px;font-size:13px;color:#DC2626;background:none;border:none;cursor:pointer;text-align:left">Deactivate</button>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
)}
|
|
||||||
</For>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</AdminShell>
|
</AdminShell>
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,6 @@ type CustomerRecord = CrudRecord & {
|
||||||
registeredDate?: string;
|
registeredDate?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_CUSTOMERS: CustomerRecord[] = [
|
|
||||||
{ id: 'cs1', name: 'Arjun Sharma', email: 'arjun.s@example.com', phone: '+91 98765 43210', location: 'Mumbai', totalOrders: 12, status: 'ACTIVE', registeredDate: '2026-01-15', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'cs2', name: 'Priya Nair', email: 'priya.n@example.com', phone: '+91 98765 43211', location: 'Bangalore', totalOrders: 5, status: 'ACTIVE', registeredDate: '2026-02-10', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'cs3', name: 'Rahul Verma', email: 'rahul.v@example.com', phone: '+91 98765 43212', location: 'Delhi', totalOrders: 0, status: 'PENDING', registeredDate: '2026-03-05', updatedAt: '2026-03-27' },
|
|
||||||
];
|
|
||||||
|
|
||||||
function StatusBadge(props: { status: string }) {
|
function StatusBadge(props: { status: string }) {
|
||||||
const active = () => props.status === 'ACTIVE';
|
const active = () => props.status === 'ACTIVE';
|
||||||
const pending = () => props.status === 'PENDING';
|
const pending = () => props.status === 'PENDING';
|
||||||
|
|
@ -46,22 +40,23 @@ export default function CustomerManagementPage() {
|
||||||
|
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API}/api/admin/users?role=customer`);
|
const res = await fetch(`${API}/api/admin/users?role=CUSTOMER`);
|
||||||
if (!res.ok) throw new Error();
|
if (!res.ok) throw new Error('Fetch failed');
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
const list = Array.isArray(data) ? data : (data.users || []);
|
const list = (Array.isArray(data) ? data : []).map((u: any) => ({
|
||||||
if (list.length === 0) setRows(FALLBACK_CUSTOMERS);
|
|
||||||
else setRows(list.map((u: any) => ({
|
|
||||||
id: u.id,
|
id: u.id,
|
||||||
name: u.name || u.full_name || '—',
|
name: u.full_name || u.email.split('@')[0],
|
||||||
email: u.email,
|
email: u.email,
|
||||||
status: (u.status || 'ACTIVE').toUpperCase(),
|
status: (u.status || 'ACTIVE').toUpperCase(),
|
||||||
updatedAt: u.updated_at || '',
|
|
||||||
registeredDate: u.created_at ? new Date(u.created_at).toLocaleDateString() : '—',
|
registeredDate: u.created_at ? new Date(u.created_at).toLocaleDateString() : '—',
|
||||||
totalOrders: u.total_orders || 0
|
updatedAt: u.updated_at || u.created_at || '—',
|
||||||
} as CustomerRecord)));
|
location: 'Not Specified',
|
||||||
} catch {
|
totalOrders: 0
|
||||||
setRows(FALLBACK_CUSTOMERS);
|
} as CustomerRecord));
|
||||||
|
setRows(list);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Customer load error:', e);
|
||||||
|
setRows([]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -72,7 +67,7 @@ export default function CustomerManagementPage() {
|
||||||
if (statusFilter() !== 'all') r = r.filter((d) => d.status === statusFilter().toUpperCase());
|
if (statusFilter() !== 'all') r = r.filter((d) => d.status === statusFilter().toUpperCase());
|
||||||
const q = search().toLowerCase();
|
const q = search().toLowerCase();
|
||||||
if (q) {
|
if (q) {
|
||||||
r = r.filter(r => r.name.toLowerCase().includes(q) || r.email.toLowerCase().includes(q));
|
r = r.filter(it => it.name.toLowerCase().includes(q) || it.email.toLowerCase().includes(q));
|
||||||
}
|
}
|
||||||
const sorted = [...r];
|
const sorted = [...r];
|
||||||
const mode = sortBy();
|
const mode = sortBy();
|
||||||
|
|
|
||||||
|
|
@ -157,68 +157,7 @@ export default function CreateEmployeePage() {
|
||||||
const accessToken = typeof sessionStorage !== 'undefined'
|
const accessToken = typeof sessionStorage !== 'undefined'
|
||||||
? (sessionStorage.getItem('nxtgauge_admin_access_token') || '').trim()
|
? (sessionStorage.getItem('nxtgauge_admin_access_token') || '').trim()
|
||||||
: '';
|
: '';
|
||||||
const getUsersByEmail = async () => {
|
const res = await fetch(`${API}/api/admin/employees/provision`, {
|
||||||
const userRes = await fetch(`${API}/api/admin/users?q=${encodeURIComponent(email().trim())}&per_page=100`, {
|
|
||||||
headers: {
|
|
||||||
Accept: 'application/json',
|
|
||||||
...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),
|
|
||||||
},
|
|
||||||
credentials: 'include',
|
|
||||||
}).catch(() => null);
|
|
||||||
const userPayload = await userRes?.json().catch(() => null);
|
|
||||||
const users = Array.isArray(userPayload)
|
|
||||||
? userPayload
|
|
||||||
: Array.isArray(userPayload?.users)
|
|
||||||
? userPayload.users
|
|
||||||
: Array.isArray(userPayload?.items)
|
|
||||||
? userPayload.items
|
|
||||||
: [];
|
|
||||||
const exact = users.find((u: any) => String(u?.email || '').trim().toLowerCase() === email().trim().toLowerCase());
|
|
||||||
const resolvedId =
|
|
||||||
userPayload?.user?.id
|
|
||||||
|| userPayload?.data?.user?.id
|
|
||||||
|| userPayload?.data?.id
|
|
||||||
|| exact?.id
|
|
||||||
|| userPayload?.id
|
|
||||||
|| users?.[0]?.id;
|
|
||||||
return resolvedId;
|
|
||||||
};
|
|
||||||
|
|
||||||
let userId = await getUsersByEmail();
|
|
||||||
if (!userId && createLoginCreds()) {
|
|
||||||
const regRes = await fetch(`${API}/auth/register`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
|
|
||||||
credentials: 'include',
|
|
||||||
body: JSON.stringify({
|
|
||||||
full_name: fullName().trim() || email().trim(),
|
|
||||||
email: email().trim().toLowerCase(),
|
|
||||||
password: loginPassword().trim(),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
const regRaw = await regRes.text();
|
|
||||||
let regPayload: any = {};
|
|
||||||
if (regRaw) {
|
|
||||||
try { regPayload = JSON.parse(regRaw); } catch { regPayload = { message: regRaw }; }
|
|
||||||
}
|
|
||||||
if (!regRes.ok && (regPayload?.code || '').toString().toUpperCase() !== 'EMAIL_EXISTS') {
|
|
||||||
throw new Error(regPayload?.error || regPayload?.message || `Failed to create login credentials (${regRes.status})`);
|
|
||||||
}
|
|
||||||
userId =
|
|
||||||
regPayload?.user_id
|
|
||||||
|| regPayload?.id
|
|
||||||
|| regPayload?.user?.id
|
|
||||||
|| regPayload?.data?.user?.id
|
|
||||||
|| regPayload?.data?.id;
|
|
||||||
|
|
||||||
if (!userId) {
|
|
||||||
userId = await getUsersByEmail();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!userId) throw new Error('Unable to resolve or create login user for this employee.');
|
|
||||||
|
|
||||||
const res = await fetch(`${API}/api/admin/employees`, {
|
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
|
|
@ -227,16 +166,19 @@ export default function CreateEmployeePage() {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
credentials: 'include',
|
credentials: 'include',
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
user_id: userId,
|
email: email().trim(),
|
||||||
|
full_name: fullName().trim(),
|
||||||
role_id: roleId(),
|
role_id: roleId(),
|
||||||
department_id: deptId(),
|
department_id: deptId(),
|
||||||
designation_id: desigId(),
|
designation_id: desigId(),
|
||||||
employee_code: employeeCode() || undefined,
|
employee_code: employeeCode() || undefined,
|
||||||
|
generate_login: createLoginCreds(),
|
||||||
|
password: createLoginCreds() ? loginPassword().trim() : undefined,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
const body = await res.json().catch(() => ({}));
|
const body = await res.json().catch(() => ({}));
|
||||||
throw new Error((body as any).message || 'Failed to create employee');
|
throw new Error((body as any).error || (body as any).message || 'Failed to create employee');
|
||||||
}
|
}
|
||||||
navigate('/admin/employees');
|
navigate('/admin/employees');
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,8 @@ const USER_TYPE_OPTIONS = ['COMPANY', 'CANDIDATE', 'PHOTOGRAPHER', 'MAKEUP_ARTIS
|
||||||
|
|
||||||
const ONBOARDING_SCHEMAS = [
|
const ONBOARDING_SCHEMAS = [
|
||||||
'company_onboarding_v1', 'job_seeker_onboarding_v1', 'customer_onboarding_v1', 'photographer_onboarding_v1',
|
'company_onboarding_v1', 'job_seeker_onboarding_v1', 'customer_onboarding_v1', 'photographer_onboarding_v1',
|
||||||
'makeup_artist_onboarding_v1', 'tutor_onboarding_v1', 'developer_onboarding_v1', 'video_editor_onboarding_v1', 'ugc_content_creator_onboarding_v1'
|
'makeup_artist_onboarding_v1', 'tutor_onboarding_v1', 'developer_onboarding_v1', 'video_editor_onboarding_v1',
|
||||||
|
'ugc_content_creator_onboarding_v1'
|
||||||
];
|
];
|
||||||
|
|
||||||
const MODULES_BY_VERTICAL = {
|
const MODULES_BY_VERTICAL = {
|
||||||
|
|
@ -173,7 +174,13 @@ export default function ExternalRoleManagementPage() {
|
||||||
const [reqOnbAppr, setReqOnbAppr] = createSignal(true);
|
const [reqOnbAppr, setReqOnbAppr] = createSignal(true);
|
||||||
const [reqLeadAppr, setReqLeadAppr] = createSignal(false);
|
const [reqLeadAppr, setReqLeadAppr] = createSignal(false);
|
||||||
const [reqJobAppr, setReqJobAppr] = createSignal(false);
|
const [reqJobAppr, setReqJobAppr] = createSignal(false);
|
||||||
const [limitsJson, setLimitsJson] = createSignal('{}');
|
|
||||||
|
// Structured Limits
|
||||||
|
const [limitMaxLeadRequests, setLimitMaxLeadRequests] = createSignal(20);
|
||||||
|
const [limitMaxLeadAcceptances, setLimitMaxLeadAcceptances] = createSignal(10);
|
||||||
|
const [limitMaxActiveRequirements, setLimitMaxActiveRequirements] = createSignal(2);
|
||||||
|
const [limitMonthlyFreeJobs, setLimitMonthlyFreeJobs] = createSignal(1);
|
||||||
|
|
||||||
const [status, setStatus] = createSignal<'ACTIVE' | 'INACTIVE'>('ACTIVE');
|
const [status, setStatus] = createSignal<'ACTIVE' | 'INACTIVE'>('ACTIVE');
|
||||||
const [isSaving, setIsSaving] = createSignal(false);
|
const [isSaving, setIsSaving] = createSignal(false);
|
||||||
const [error, setError] = createSignal('');
|
const [error, setError] = createSignal('');
|
||||||
|
|
@ -268,7 +275,8 @@ export default function ExternalRoleManagementPage() {
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
setEditingId(null); setName(''); setCode(''); setVertical('marketplace'); setCategory('provider');
|
setEditingId(null); setName(''); setCode(''); setVertical('marketplace'); setCategory('provider');
|
||||||
setAssignedUserTypes([]); setOnboardingId(ONBOARDING_SCHEMAS[0]); setEnabledModules([]); setPermissions({});
|
setAssignedUserTypes([]); setOnboardingId(ONBOARDING_SCHEMAS[0]); setEnabledModules([]); setPermissions({});
|
||||||
setReqOnbAppr(true); setReqLeadAppr(false); setReqJobAppr(false); setLimitsJson('{}');
|
setReqOnbAppr(true); setReqLeadAppr(false); setReqJobAppr(false);
|
||||||
|
setLimitMaxLeadRequests(20); setLimitMaxLeadAcceptances(10); setLimitMaxActiveRequirements(2); setLimitMonthlyFreeJobs(1);
|
||||||
setStatus('ACTIVE'); setFormTab('general');
|
setStatus('ACTIVE'); setFormTab('general');
|
||||||
setSearchParams({ view: undefined, editingId: undefined });
|
setSearchParams({ view: undefined, editingId: undefined });
|
||||||
};
|
};
|
||||||
|
|
@ -287,7 +295,19 @@ export default function ExternalRoleManagementPage() {
|
||||||
setCategory(row.category); setAssignedUserTypes(row.assignedUserTypes || []); setOnboardingId(row.onboardingSchemaId);
|
setCategory(row.category); setAssignedUserTypes(row.assignedUserTypes || []); setOnboardingId(row.onboardingSchemaId);
|
||||||
setEnabledModules(row.modules); setPermissions(row.permissions);
|
setEnabledModules(row.modules); setPermissions(row.permissions);
|
||||||
setReqOnbAppr(row.requiresOnboardingApproval); setReqLeadAppr(row.requiresLeadApproval);
|
setReqOnbAppr(row.requiresOnboardingApproval); setReqLeadAppr(row.requiresLeadApproval);
|
||||||
setReqJobAppr(row.requiresJobApproval); setLimitsJson(row.featureLimits);
|
setReqJobAppr(row.requiresJobApproval);
|
||||||
|
|
||||||
|
// Parse limits
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(row.featureLimits || '{}');
|
||||||
|
setLimitMaxLeadRequests(parsed.maxLeadRequests ?? 20);
|
||||||
|
setLimitMaxLeadAcceptances(parsed.maxLeadAcceptances ?? 10);
|
||||||
|
setLimitMaxActiveRequirements(parsed.maxActiveRequirements ?? 2);
|
||||||
|
setLimitMonthlyFreeJobs(parsed.monthlyFreeJobs ?? 1);
|
||||||
|
} catch {
|
||||||
|
setLimitMaxLeadRequests(20); setLimitMaxLeadAcceptances(10); setLimitMaxActiveRequirements(2); setLimitMonthlyFreeJobs(1);
|
||||||
|
}
|
||||||
|
|
||||||
setStatus(row.status); setView('form'); setOpenMenuId(null);
|
setStatus(row.status); setView('form'); setOpenMenuId(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -328,11 +348,6 @@ export default function ExternalRoleManagementPage() {
|
||||||
setFormTab('general');
|
setFormTab('general');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!validateJson(limitsJson())) {
|
|
||||||
setError('Invalid JSON in feature limits.');
|
|
||||||
setFormTab('settings');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setIsSaving(true);
|
setIsSaving(true);
|
||||||
setError('');
|
setError('');
|
||||||
|
|
@ -353,7 +368,12 @@ export default function ExternalRoleManagementPage() {
|
||||||
lead: reqLeadAppr(),
|
lead: reqLeadAppr(),
|
||||||
job: reqJobAppr(),
|
job: reqJobAppr(),
|
||||||
},
|
},
|
||||||
feature_limits: JSON.parse(limitsJson()),
|
feature_limits: {
|
||||||
|
maxLeadRequests: limitMaxLeadRequests(),
|
||||||
|
maxLeadAcceptances: limitMaxLeadAcceptances(),
|
||||||
|
maxActiveRequirements: limitMaxActiveRequirements(),
|
||||||
|
monthlyFreeJobs: limitMonthlyFreeJobs(),
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const endpoint = editingId()
|
const endpoint = editingId()
|
||||||
? `${API}/api/admin/roles/${editingId()}`
|
? `${API}/api/admin/roles/${editingId()}`
|
||||||
|
|
@ -853,11 +873,27 @@ export default function ExternalRoleManagementPage() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<FormInput label="Feature Limits (JSON)" type="textarea" value={limitsJson()} onInput={setLimitsJson} placeholder='{"maxActiveJobs": 5, "maxApplications": 10}' />
|
<h3 style="font-size:14px;font-weight:700;color:#111827;margin-bottom:12px">Marketplace & Job Limits</h3>
|
||||||
<Show when={limitsJson().trim() && !validateJson(limitsJson())}>
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px;background:#F9FAFB;border-radius:12px;border:1px solid #E5E7EB">
|
||||||
<p style="margin-top:4px;font-size:12px;color:#DC2626;font-weight:500">Invalid JSON format</p>
|
<label style="display:block">
|
||||||
</Show>
|
<span style="font-size:12px;font-weight:600;color:#6B7280">Max Requests per Lead</span>
|
||||||
|
<input type="number" value={limitMaxLeadRequests()} onInput={e => setLimitMaxLeadRequests(parseInt(e.currentTarget.value) || 0)} style="display:block;margin-top:6px;height:36px;width:100%;border-radius:8px;border:1px solid #E5E7EB;padding:0 12px;font-size:13px" />
|
||||||
|
</label>
|
||||||
|
<label style="display:block">
|
||||||
|
<span style="font-size:12px;font-weight:600;color:#6B7280">Max Acceptances per Lead</span>
|
||||||
|
<input type="number" value={limitMaxLeadAcceptances()} onInput={e => setLimitMaxLeadAcceptances(parseInt(e.currentTarget.value) || 0)} style="display:block;margin-top:6px;height:36px;width:100%;border-radius:8px;border:1px solid #E5E7EB;padding:0 12px;font-size:13px" />
|
||||||
|
</label>
|
||||||
|
<label style="display:block">
|
||||||
|
<span style="font-size:12px;font-weight:600;color:#6B7280">Max Active Requirements</span>
|
||||||
|
<input type="number" value={limitMaxActiveRequirements()} onInput={e => setLimitMaxActiveRequirements(parseInt(e.currentTarget.value) || 0)} style="display:block;margin-top:6px;height:36px;width:100%;border-radius:8px;border:1px solid #E5E7EB;padding:0 12px;font-size:13px" />
|
||||||
|
</label>
|
||||||
|
<label style="display:block">
|
||||||
|
<span style="font-size:12px;font-weight:600;color:#6B7280">Monthly Free Job Posts (refill)</span>
|
||||||
|
<input type="number" value={limitMonthlyFreeJobs()} onInput={e => setLimitMonthlyFreeJobs(parseInt(e.currentTarget.value) || 0)} style="display:block;margin-top:6px;height:36px;width:100%;border-radius:8px;border:1px solid #E5E7EB;padding:0 12px;font-size:13px" />
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:10px;background:#F9FAFB;border:1px solid #E5E7EB;max-width:400px">
|
<div style="display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:10px;background:#F9FAFB;border:1px solid #E5E7EB;max-width:400px">
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { For, Show, createEffect, createMemo, createSignal, onCleanup, onMount } from 'solid-js';
|
import { For, Show, createEffect, createMemo, createSignal, onCleanup, onMount, createResource } from 'solid-js';
|
||||||
import { useSearchParams } from '@solidjs/router';
|
import { useSearchParams } from '@solidjs/router';
|
||||||
import {
|
import {
|
||||||
BarChart3,
|
BarChart3,
|
||||||
|
|
@ -25,6 +25,23 @@ import {
|
||||||
import type { RuntimeDashboardLayout } from '~/lib/runtime/types';
|
import type { RuntimeDashboardLayout } from '~/lib/runtime/types';
|
||||||
import { loadAdminDashboardLayout, saveAdminDashboardLayout } from '~/lib/runtime/storage';
|
import { loadAdminDashboardLayout, saveAdminDashboardLayout } from '~/lib/runtime/storage';
|
||||||
|
|
||||||
|
const API = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8000';
|
||||||
|
|
||||||
|
async function fetchMetrics() {
|
||||||
|
const accessToken = typeof sessionStorage !== 'undefined'
|
||||||
|
? (sessionStorage.getItem('nxtgauge_admin_access_token') || '').trim()
|
||||||
|
: '';
|
||||||
|
const res = await fetch(`${API}/api/admin/dashboard/metrics`, {
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json',
|
||||||
|
...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),
|
||||||
|
},
|
||||||
|
credentials: 'include',
|
||||||
|
});
|
||||||
|
if (!res.ok) throw new Error('Failed to load metrics');
|
||||||
|
return res.json();
|
||||||
|
}
|
||||||
|
|
||||||
type WidgetStateKind = 'live' | 'empty' | 'pending';
|
type WidgetStateKind = 'live' | 'empty' | 'pending';
|
||||||
type WidgetType = 'summary' | 'analytics';
|
type WidgetType = 'summary' | 'analytics';
|
||||||
type SortMode = 'layout' | 'name' | 'status';
|
type SortMode = 'layout' | 'name' | 'status';
|
||||||
|
|
@ -191,11 +208,13 @@ function PendingPreview() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function LivePreview() {
|
function LivePreview(props: { value?: string; trend?: string; trendUp?: boolean }) {
|
||||||
return (
|
return (
|
||||||
<div class="flex h-full flex-col items-center justify-center">
|
<div class="flex h-full flex-col items-center justify-center">
|
||||||
<p class="text-[26px] font-bold leading-none text-[#111827]">12,458</p>
|
<p class="text-[26px] font-bold leading-none text-[#111827]">{props.value || '0'}</p>
|
||||||
<p class="mt-2 inline-flex items-center gap-1 text-xs font-semibold text-[#FA5014]">↗ +12.5%</p>
|
<p class="mt-2 inline-flex items-center gap-1 text-xs font-semibold text-[#FA5014]">
|
||||||
|
{props.trendUp ? '↗' : '↘'} {props.trend || '0%'}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -216,6 +235,25 @@ export default function AdminHomePage() {
|
||||||
const [sortMode, setSortMode] = createSignal<SortMode>('layout');
|
const [sortMode, setSortMode] = createSignal<SortMode>('layout');
|
||||||
const [gridLayout, setGridLayout] = createSignal<GridLayoutMode>('3x4');
|
const [gridLayout, setGridLayout] = createSignal<GridLayoutMode>('3x4');
|
||||||
|
|
||||||
|
const [metrics] = createResource(fetchMetrics);
|
||||||
|
|
||||||
|
const getWidgetState = (key: string) => {
|
||||||
|
if (key.startsWith('kpi_')) {
|
||||||
|
const idMap: Record<string, string> = {
|
||||||
|
kpi_total_users: 'users',
|
||||||
|
kpi_active_companies: 'companies',
|
||||||
|
kpi_open_leads: 'leads',
|
||||||
|
kpi_credits_purchased: 'credits',
|
||||||
|
};
|
||||||
|
if (metrics.loading) return { state: 'pending', statusLabel: 'Loading...' };
|
||||||
|
const m = metrics()?.kpis?.find((k: any) => k.id === idMap[key]);
|
||||||
|
if (m) return { state: 'live', statusLabel: 'Live Data', data: m };
|
||||||
|
return { state: 'empty', statusLabel: 'No Data' };
|
||||||
|
}
|
||||||
|
const meta = WIDGET_META[key];
|
||||||
|
return { state: meta?.state || 'empty', statusLabel: meta?.statusLabel || 'No Data' };
|
||||||
|
};
|
||||||
|
|
||||||
const orderedWidgets = createMemo(() => {
|
const orderedWidgets = createMemo(() => {
|
||||||
const current = layout();
|
const current = layout();
|
||||||
const rows = current.order
|
const rows = current.order
|
||||||
|
|
@ -243,9 +281,9 @@ export default function AdminHomePage() {
|
||||||
next.sort((a, b) => {
|
next.sort((a, b) => {
|
||||||
if (mode === 'name') return a.title.localeCompare(b.title);
|
if (mode === 'name') return a.title.localeCompare(b.title);
|
||||||
const rank = (key: string) => {
|
const rank = (key: string) => {
|
||||||
const state = WIDGET_META[key]?.state || 'empty';
|
const info = getWidgetState(key);
|
||||||
if (state === 'live') return 1;
|
if (info.state === 'live') return 1;
|
||||||
if (state === 'empty') return 2;
|
if (info.state === 'empty') return 2;
|
||||||
return 3;
|
return 3;
|
||||||
};
|
};
|
||||||
return rank(a.widgetKey) - rank(b.widgetKey);
|
return rank(a.widgetKey) - rank(b.widgetKey);
|
||||||
|
|
@ -420,7 +458,8 @@ export default function AdminHomePage() {
|
||||||
{(definition) => {
|
{(definition) => {
|
||||||
const visible = () => layout().visibility[definition.widgetKey] !== false;
|
const visible = () => layout().visibility[definition.widgetKey] !== false;
|
||||||
const meta = WIDGET_META[definition.widgetKey];
|
const meta = WIDGET_META[definition.widgetKey];
|
||||||
const state = meta?.state || 'empty';
|
const stateInfo = getWidgetState(definition.widgetKey);
|
||||||
|
const state = stateInfo.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="flex items-center justify-between gap-4 rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] px-4 py-4">
|
<div class="flex items-center justify-between gap-4 rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] px-4 py-4">
|
||||||
|
|
@ -434,8 +473,8 @@ export default function AdminHomePage() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex shrink-0 items-center gap-2">
|
<div class="flex shrink-0 items-center gap-2">
|
||||||
<span class={`hidden rounded-full border px-2 py-0.5 text-[10px] font-semibold sm:inline-flex ${badgeClass(state)}`}>
|
<span class={`hidden rounded-full border px-2 py-0.5 text-[10px] font-semibold sm:inline-flex ${badgeClass(state as WidgetStateKind)}`}>
|
||||||
{meta?.statusLabel || 'No Data'}
|
{stateInfo.statusLabel}
|
||||||
</span>
|
</span>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|
@ -466,7 +505,8 @@ export default function AdminHomePage() {
|
||||||
<For each={orderedWidgets()}>
|
<For each={orderedWidgets()}>
|
||||||
{(definition) => {
|
{(definition) => {
|
||||||
const meta = WIDGET_META[definition.widgetKey];
|
const meta = WIDGET_META[definition.widgetKey];
|
||||||
const state = meta?.state || 'empty';
|
const stateInfo = getWidgetState(definition.widgetKey);
|
||||||
|
const state = stateInfo.state;
|
||||||
const isOpenMenu = () => openMenuId() === definition.widgetKey;
|
const isOpenMenu = () => openMenuId() === definition.widgetKey;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -522,7 +562,7 @@ export default function AdminHomePage() {
|
||||||
<h3 class="text-center text-[15px] font-semibold text-[#111827]">{definition.title}</h3>
|
<h3 class="text-center text-[15px] font-semibold text-[#111827]">{definition.title}</h3>
|
||||||
<div class="mt-4 h-[116px] w-full max-w-[210px] rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-4">
|
<div class="mt-4 h-[116px] w-full max-w-[210px] rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-4">
|
||||||
<Show when={state === 'live'}>
|
<Show when={state === 'live'}>
|
||||||
<LivePreview />
|
<LivePreview value={stateInfo.data?.value} trend={stateInfo.data?.trend} trendUp={stateInfo.data?.trendUp} />
|
||||||
</Show>
|
</Show>
|
||||||
<Show when={state === 'empty'}>
|
<Show when={state === 'empty'}>
|
||||||
<EmptyPreview />
|
<EmptyPreview />
|
||||||
|
|
@ -531,8 +571,8 @@ export default function AdminHomePage() {
|
||||||
<PendingPreview />
|
<PendingPreview />
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
<span class={`mt-4 inline-flex rounded-full border px-2 py-1 text-[11px] font-semibold ${badgeClass(state)}`}>
|
<span class={`mt-4 inline-flex rounded-full border px-2 py-1 text-[11px] font-semibold ${badgeClass(state as WidgetStateKind)}`}>
|
||||||
{meta?.statusLabel || 'No Data'}
|
{stateInfo.statusLabel}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,6 @@ type JobRecord = CrudRecord & {
|
||||||
postedDate?: string;
|
postedDate?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_JOBS: JobRecord[] = [
|
|
||||||
{ id: 'j1', name: 'Senior UI/UX Designer', title: 'Senior UI/UX Designer', company: 'Creative Designs', location: 'Remote', rate: '₹800–₹1200/hr', status: 'ACTIVE', postedDate: '2026-03-25', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'j2', name: 'Full Stack Developer', title: 'Full Stack Developer', company: 'Tech Solutions Inc', location: 'Mumbai', rate: '₹1000–₹1500/hr', status: 'PENDING_APPROVAL', postedDate: '2026-03-24', updatedAt: '2026-03-27' },
|
|
||||||
{ id: 'j3', name: 'Marketing Specialist', title: 'Marketing Specialist', company: 'Global Brands', location: 'Delhi', rate: '₹500–₹700/hr', status: 'DRAFT', postedDate: '2026-03-26', updatedAt: '2026-03-27' },
|
|
||||||
];
|
|
||||||
|
|
||||||
function StatusBadge(props: { status: string }) {
|
function StatusBadge(props: { status: string }) {
|
||||||
const getColors = () => {
|
const getColors = () => {
|
||||||
switch (props.status) {
|
switch (props.status) {
|
||||||
|
|
@ -56,11 +50,10 @@ export default function JobsManagementPage() {
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API}/api/jobs?limit=100`);
|
const res = await fetch(`${API}/api/jobs?limit=100`);
|
||||||
if (!res.ok) throw new Error();
|
if (!res.ok) throw new Error('Fetch failed');
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
const list = Array.isArray(data) ? data : (data.jobs || []);
|
const list = Array.isArray(data) ? data : (data.jobs || []);
|
||||||
if (list.length === 0) setRows(FALLBACK_JOBS);
|
setRows(list.map((j: any) => ({
|
||||||
else setRows(list.map(j => ({
|
|
||||||
id: j.id,
|
id: j.id,
|
||||||
name: j.title || '—',
|
name: j.title || '—',
|
||||||
title: j.title || '—',
|
title: j.title || '—',
|
||||||
|
|
@ -71,8 +64,9 @@ export default function JobsManagementPage() {
|
||||||
postedDate: j.created_at ? new Date(j.created_at).toLocaleDateString() : '—',
|
postedDate: j.created_at ? new Date(j.created_at).toLocaleDateString() : '—',
|
||||||
updatedAt: j.updated_at || ''
|
updatedAt: j.updated_at || ''
|
||||||
} as JobRecord)));
|
} as JobRecord)));
|
||||||
} catch {
|
} catch (e) {
|
||||||
setRows(FALLBACK_JOBS);
|
console.error('Jobs load error:', e);
|
||||||
|
setRows([]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -92,7 +86,7 @@ export default function JobsManagementPage() {
|
||||||
list = list.filter((r) => r.status === map[statusFilter()]);
|
list = list.filter((r) => r.status === map[statusFilter()]);
|
||||||
}
|
}
|
||||||
const q = search().toLowerCase();
|
const q = search().toLowerCase();
|
||||||
if (q) list = list.filter(r => r.title.toLowerCase().includes(q) || r.company?.toLowerCase().includes(q));
|
if (q) list = list.filter(r => r.title.toLowerCase().includes(q) || (r.company || '').toLowerCase().includes(q));
|
||||||
const sorted = [...list];
|
const sorted = [...list];
|
||||||
sorted.sort((a, b) => {
|
sorted.sort((a, b) => {
|
||||||
if (sortBy() === 'title_asc') return a.title.localeCompare(b.title);
|
if (sortBy() === 'title_asc') return a.title.localeCompare(b.title);
|
||||||
|
|
@ -102,8 +96,7 @@ export default function JobsManagementPage() {
|
||||||
if (sortBy() === 'posted_oldest') return aDate - bDate;
|
if (sortBy() === 'posted_oldest') return aDate - bDate;
|
||||||
return bDate - aDate;
|
return bDate - aDate;
|
||||||
});
|
});
|
||||||
list = sorted;
|
return sorted;
|
||||||
return list;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const exportCsv = () => {
|
const exportCsv = () => {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const API = '/api/gateway';
|
||||||
const ROLE_OPTIONS = [
|
const ROLE_OPTIONS = [
|
||||||
'company', 'job_seeker', 'customer', 'photographer', 'video_editor',
|
'company', 'job_seeker', 'customer', 'photographer', 'video_editor',
|
||||||
'graphic_designer', 'social_media_manager', 'fitness_trainer',
|
'graphic_designer', 'social_media_manager', 'fitness_trainer',
|
||||||
'catering_services', 'makeup_artist', 'tutor', 'developer',
|
'catering_services', 'makeup_artist', 'tutor', 'developer', 'ugc_content_creator',
|
||||||
];
|
];
|
||||||
|
|
||||||
async function loadLeads(): Promise<any[]> {
|
async function loadLeads(): Promise<any[]> {
|
||||||
|
|
|
||||||
|
|
@ -315,8 +315,33 @@ export default function OnboardingManagementPage() {
|
||||||
|
|
||||||
const [auditSearch, setAuditSearch] = createSignal('');
|
const [auditSearch, setAuditSearch] = createSignal('');
|
||||||
|
|
||||||
|
const API = '/api/gateway';
|
||||||
|
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
setRows(FALLBACK_SCHEMAS);
|
try {
|
||||||
|
const res = await fetch(`${API}/api/admin/onboarding-config`);
|
||||||
|
if (!res.ok) throw new Error('Fetch failed');
|
||||||
|
const data = await res.json();
|
||||||
|
const items = Array.isArray(data) ? data : (data.items || []);
|
||||||
|
const list = items.map((c: any) => ({
|
||||||
|
id: c.id,
|
||||||
|
name: `${c.role_key} Onboarding Flow`,
|
||||||
|
code: `ONB-${c.role_key.toUpperCase()}-${c.version}`,
|
||||||
|
userType: 'PROFESSIONAL',
|
||||||
|
role: c.role_key,
|
||||||
|
description: `Standard onboarding flow for ${c.role_key}`,
|
||||||
|
steps: [],
|
||||||
|
requiredDocuments: [],
|
||||||
|
verificationType: 'IDENTITY',
|
||||||
|
status: (c.is_active ? 'ACTIVE' : 'DRAFT') as 'ACTIVE' | 'DRAFT',
|
||||||
|
version: `v${c.version}`,
|
||||||
|
updatedAt: new Date(c.updated_at).toLocaleDateString()
|
||||||
|
} as OnboardingSchema));
|
||||||
|
setRows(list);
|
||||||
|
} catch (e) {
|
||||||
|
console.error('Onboarding load error:', e);
|
||||||
|
setRows(FALLBACK_SCHEMAS);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onMount(() => void load());
|
onMount(() => void load());
|
||||||
|
|
|
||||||
13
src/routes/admin/ugc-content-creator.tsx
Normal file
13
src/routes/admin/ugc-content-creator.tsx
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
import RoleUserManagementTablePage from '~/components/admin/RoleUserManagementTablePage';
|
||||||
|
|
||||||
|
export default function UgcContentCreatorManagementPage() {
|
||||||
|
return (
|
||||||
|
<RoleUserManagementTablePage
|
||||||
|
role="UGC_CONTENT_CREATOR"
|
||||||
|
title="UGC Content Creator Management"
|
||||||
|
subtitle="Manage all registered UGC Content Creators, review their portfolios, and monitor performance."
|
||||||
|
emptyLabel="No UGC Content Creators found."
|
||||||
|
viewHref={(id) => `/admin/users?id=${id}&tab=view`}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -27,120 +27,6 @@ type ExternalUserRecord = {
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_USERS: ExternalUserRecord[] = [
|
|
||||||
{
|
|
||||||
id: 'u1',
|
|
||||||
userCode: 'U-102348',
|
|
||||||
name: 'Marcus Thorne',
|
|
||||||
email: 'm.thorne@creative.co',
|
|
||||||
phone: '+91 98765 43210',
|
|
||||||
location: 'T. Nagar, Chennai',
|
|
||||||
joinedOn: '2026-01-10',
|
|
||||||
lastActive: '2 hours ago',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
accountStatus: 'ACTIVE',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
onboardingStatus: 'COMPLETED',
|
|
||||||
registeredRoles: [
|
|
||||||
{ key: 'photographer', name: 'Photographer', status: 'ACTIVE', registeredOn: '2026-01-12' },
|
|
||||||
{ key: 'designer', name: 'Designer', status: 'ACTIVE', registeredOn: '2026-01-20' },
|
|
||||||
],
|
|
||||||
portfolioCount: 15,
|
|
||||||
notes: 'High response rate profile.',
|
|
||||||
updatedAt: '2026-04-02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'u2',
|
|
||||||
userCode: 'U-102389',
|
|
||||||
name: 'Elena Rodriguez',
|
|
||||||
email: 'elena.rodriguez@techhub.io',
|
|
||||||
phone: '+91 98765 43211',
|
|
||||||
location: 'Guindy, Chennai',
|
|
||||||
joinedOn: '2026-02-04',
|
|
||||||
lastActive: '5 hours ago',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
accountStatus: 'ACTIVE',
|
|
||||||
verificationStatus: 'IN_REVIEW',
|
|
||||||
onboardingStatus: 'SUBMITTED',
|
|
||||||
registeredRoles: [{ key: 'developer', name: 'Developer', status: 'PENDING', registeredOn: '2026-02-06' }],
|
|
||||||
portfolioCount: 4,
|
|
||||||
notes: 'Role pending verification checklist.',
|
|
||||||
updatedAt: '2026-04-02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'u3',
|
|
||||||
userCode: 'U-102452',
|
|
||||||
name: 'Sam Jenkins',
|
|
||||||
email: 'sam.j@no-agency.net',
|
|
||||||
phone: '+91 98765 43212',
|
|
||||||
location: 'Adyar, Chennai',
|
|
||||||
joinedOn: '2026-03-01',
|
|
||||||
lastActive: '1 day ago',
|
|
||||||
userType: 'JOBSEEKER',
|
|
||||||
accountStatus: 'SUSPENDED',
|
|
||||||
verificationStatus: 'UNVERIFIED',
|
|
||||||
onboardingStatus: 'NOT_STARTED',
|
|
||||||
registeredRoles: [],
|
|
||||||
portfolioCount: 0,
|
|
||||||
notes: 'No documents submitted. Follow-up campaign candidate.',
|
|
||||||
updatedAt: '2026-04-01',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'u4',
|
|
||||||
userCode: 'U-102510',
|
|
||||||
name: 'Nodal Agency Ltd',
|
|
||||||
email: 'billing@nodal.agency',
|
|
||||||
phone: '+91 98765 43213',
|
|
||||||
location: 'Velachery, Chennai',
|
|
||||||
joinedOn: '2026-01-25',
|
|
||||||
lastActive: '20 mins ago',
|
|
||||||
userType: 'COMPANY',
|
|
||||||
accountStatus: 'ACTIVE',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
onboardingStatus: 'COMPLETED',
|
|
||||||
registeredRoles: [{ key: 'company', name: 'Company', status: 'ACTIVE', registeredOn: '2026-01-26' }],
|
|
||||||
portfolioCount: 0,
|
|
||||||
notes: 'Company account in good standing.',
|
|
||||||
updatedAt: '2026-04-02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'u5',
|
|
||||||
userCode: 'U-102555',
|
|
||||||
name: 'Victor Vance',
|
|
||||||
email: 'vance@archive.io',
|
|
||||||
phone: '+91 98765 43214',
|
|
||||||
location: 'Anna Nagar, Chennai',
|
|
||||||
joinedOn: '2026-02-14',
|
|
||||||
lastActive: '10 mins ago',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
accountStatus: 'ACTIVE',
|
|
||||||
verificationStatus: 'PENDING',
|
|
||||||
onboardingStatus: 'IN_PROGRESS',
|
|
||||||
registeredRoles: [{ key: 'archivist', name: 'Archivist', status: 'PENDING', registeredOn: '2026-02-18' }],
|
|
||||||
portfolioCount: 2,
|
|
||||||
notes: 'Awaiting ID re-upload.',
|
|
||||||
updatedAt: '2026-04-02',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'u6',
|
|
||||||
userCode: 'U-102640',
|
|
||||||
name: 'Jameson Lee',
|
|
||||||
email: 'jlee@global.net',
|
|
||||||
phone: '+91 98765 43215',
|
|
||||||
location: 'Porur, Chennai',
|
|
||||||
joinedOn: '2026-02-28',
|
|
||||||
lastActive: '3 hours ago',
|
|
||||||
userType: 'CUSTOMER',
|
|
||||||
accountStatus: 'ACTIVE',
|
|
||||||
verificationStatus: 'VERIFIED',
|
|
||||||
onboardingStatus: 'COMPLETED',
|
|
||||||
registeredRoles: [{ key: 'service-seeker', name: 'Service Seeker', status: 'ACTIVE', registeredOn: '2026-03-01' }],
|
|
||||||
portfolioCount: 0,
|
|
||||||
notes: 'Posts requirements regularly.',
|
|
||||||
updatedAt: '2026-04-02',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
function StatusBadge(props: { status: string }) {
|
function StatusBadge(props: { status: string }) {
|
||||||
const active = () => props.status === 'ACTIVE' || props.status === 'VERIFIED' || props.status === 'COMPLETED';
|
const active = () => props.status === 'ACTIVE' || props.status === 'VERIFIED' || props.status === 'COMPLETED';
|
||||||
const pending = () => props.status === 'PENDING' || props.status === 'IN_REVIEW' || props.status === 'SUBMITTED' || props.status === 'IN_PROGRESS';
|
const pending = () => props.status === 'PENDING' || props.status === 'IN_REVIEW' || props.status === 'SUBMITTED' || props.status === 'IN_PROGRESS';
|
||||||
|
|
@ -175,10 +61,40 @@ export default function UsersManagementPage() {
|
||||||
const [filterOpen, setFilterOpen] = createSignal(false);
|
const [filterOpen, setFilterOpen] = createSignal(false);
|
||||||
const [openMenuId, setOpenMenuId] = createSignal<string | null>(null);
|
const [openMenuId, setOpenMenuId] = createSignal<string | null>(null);
|
||||||
const [selectedUser, setSelectedUser] = createSignal<ExternalUserRecord | null>(null);
|
const [selectedUser, setSelectedUser] = createSignal<ExternalUserRecord | null>(null);
|
||||||
const currentUser = createMemo<ExternalUserRecord>(() => selectedUser() ?? FALLBACK_USERS[0]);
|
|
||||||
|
const currentUser = createMemo<ExternalUserRecord | null>(() => selectedUser());
|
||||||
|
|
||||||
const load = async () => {
|
const load = async () => {
|
||||||
setRows(FALLBACK_USERS);
|
try {
|
||||||
|
const r = await fetch('/api/gateway/api/admin/users');
|
||||||
|
if (!r.ok) throw new Error('Failed to fetch users');
|
||||||
|
const data = await r.json();
|
||||||
|
|
||||||
|
const mapped: ExternalUserRecord[] = (Array.isArray(data) ? data : []).map((u: any) => ({
|
||||||
|
id: u.id,
|
||||||
|
userCode: u.id.slice(0, 8).toUpperCase(),
|
||||||
|
name: u.full_name || u.email.split('@')[0],
|
||||||
|
email: u.email,
|
||||||
|
location: 'Not Specified',
|
||||||
|
joinedOn: u.created_at ? u.created_at.slice(0, 10) : '—',
|
||||||
|
userType: u.roles.includes('COMPANY') ? 'COMPANY' : u.roles.includes('JOBSEEKER') ? 'JOBSEEKER' : u.roles.includes('CUSTOMER') ? 'CUSTOMER' : 'PROFESSIONAL',
|
||||||
|
accountStatus: (u.status || 'ACTIVE').toUpperCase(),
|
||||||
|
verificationStatus: 'VERIFIED',
|
||||||
|
onboardingStatus: 'COMPLETED',
|
||||||
|
registeredRoles: (u.roles || []).map((r: string) => ({
|
||||||
|
key: r.toLowerCase(),
|
||||||
|
name: r.split('_').map(w => w.charAt(0) + w.slice(1).toLowerCase()).join(' '),
|
||||||
|
status: 'ACTIVE'
|
||||||
|
})),
|
||||||
|
portfolioCount: 0,
|
||||||
|
updatedAt: u.updated_at || u.created_at || '—',
|
||||||
|
}));
|
||||||
|
|
||||||
|
setRows(mapped);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
setRows([]);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onMount(() => void load());
|
onMount(() => void load());
|
||||||
|
|
@ -339,43 +255,43 @@ export default function UsersManagementPage() {
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:16px;background:white;overflow:hidden">
|
<div style="border:1px solid #E5E7EB;border-radius:16px;background:white;overflow:hidden">
|
||||||
<div style="padding:18px 22px;border-bottom:1px solid #E5E7EB;display:flex;align-items:center;justify-content:space-between;gap:16px">
|
<div style="padding:18px 22px;border-bottom:1px solid #E5E7EB;display:flex;align-items:center;justify-content:space-between;gap:16px">
|
||||||
<div>
|
<div>
|
||||||
<h2 style="font-size:22px;font-weight:700;color:#111827">User Profile: {currentUser().name}</h2>
|
<h2 style="font-size:22px;font-weight:700;color:#111827">User Profile: {currentUser()?.name}</h2>
|
||||||
<p style="font-size:14px;color:#6B7280;margin-top:4px">View and manage account information, registered roles, and activity history.</p>
|
<p style="font-size:14px;color:#6B7280;margin-top:4px">View and manage account information, registered roles, and activity history.</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="display:flex;gap:10px">
|
<div style="display:flex;gap:10px">
|
||||||
<button type="button" onClick={() => toggleSuspend(currentUser())} style="height:40px;border-radius:10px;border:1px solid #E5E7EB;background:white;padding:0 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer">{currentUser().accountStatus === 'SUSPENDED' ? 'Activate' : 'Suspend'}</button>
|
<button type="button" onClick={() => toggleSuspend(currentUser()!)} style="height:40px;border-radius:10px;border:1px solid #E5E7EB;background:white;padding:0 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer">{currentUser()?.accountStatus === 'SUSPENDED' ? 'Activate' : 'Suspend'}</button>
|
||||||
<button type="button" onClick={() => toggleBlock(currentUser())} style="height:40px;border-radius:10px;border:1px solid #E5E7EB;background:white;padding:0 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer">{currentUser().accountStatus === 'BLOCKED' ? 'Unblock' : 'Block'}</button>
|
<button type="button" onClick={() => toggleBlock(currentUser()!)} style="height:40px;border-radius:10px;border:1px solid #E5E7EB;background:white;padding:0 16px;font-size:13px;font-weight:600;color:#374151;cursor:pointer">{currentUser()?.accountStatus === 'BLOCKED' ? 'Unblock' : 'Block'}</button>
|
||||||
<button type="button" style="height:40px;border-radius:10px;background:#0D0D2A;padding:0 16px;font-size:13px;font-weight:600;color:white;border:none;cursor:pointer">Edit Profile</button>
|
<button type="button" style="height:40px;border-radius:10px;background:#0D0D2A;padding:0 16px;font-size:13px;font-weight:600;color:white;border:none;cursor:pointer">Edit Profile</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="padding:18px 22px;display:grid;grid-template-columns:2fr 1fr;gap:14px;border-bottom:1px solid #E5E7EB">
|
<div style="padding:18px 22px;display:grid;grid-template-columns:2fr 1fr;gap:14px;border-bottom:1px solid #E5E7EB">
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:14px;display:grid;grid-template-columns:120px 1fr 1fr 1fr;gap:14px;align-items:center">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:14px;display:grid;grid-template-columns:120px 1fr 1fr 1fr;gap:14px;align-items:center">
|
||||||
<div style="width:110px;height:110px;border-radius:12px;border:1px solid #E5E7EB;background:#F9FAFB;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;color:#94A3B8">{currentUser().name.charAt(0)}</div>
|
<div style="width:110px;height:110px;border-radius:12px;border:1px solid #E5E7EB;background:#F9FAFB;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;color:#94A3B8">{currentUser()?.name.charAt(0)}</div>
|
||||||
<div>
|
<div>
|
||||||
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">User ID</p>
|
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">User ID</p>
|
||||||
<p style="font-size:20px;font-weight:700;color:#111827">{currentUser().userCode}</p>
|
<p style="font-size:20px;font-weight:700;color:#111827">{currentUser()?.userCode}</p>
|
||||||
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Account Status</p>
|
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Account Status</p>
|
||||||
<StatusBadge status={currentUser().accountStatus} />
|
<StatusBadge status={currentUser()?.accountStatus || 'ACTIVE'} />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Email Address</p>
|
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Email Address</p>
|
||||||
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser().email}</p>
|
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.email}</p>
|
||||||
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Joined Date</p>
|
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Joined Date</p>
|
||||||
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser().joinedOn}</p>
|
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.joinedOn}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Phone</p>
|
<p style="font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Phone</p>
|
||||||
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser().phone || '—'}</p>
|
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.phone || '—'}</p>
|
||||||
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Location</p>
|
<p style="margin-top:8px;font-size:11px;color:#9CA3AF;text-transform:uppercase;letter-spacing:0.06em">Location</p>
|
||||||
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser().location}</p>
|
<p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.location}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px">
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Total Roles</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser().registeredRoles.length}</p></div>
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Total Roles</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser()?.registeredRoles.length || 0}</p></div>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Active Roles</p><p style="font-size:30px;font-weight:700;color:#FF5E13">{currentUser().registeredRoles.filter((r) => r.status === 'ACTIVE').length}</p></div>
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Active Roles</p><p style="font-size:30px;font-weight:700;color:#FF5E13">{currentUser()?.registeredRoles.filter((r) => r.status === 'ACTIVE').length || 0}</p></div>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Pending</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser().registeredRoles.filter((r) => r.status === 'PENDING').length}</p></div>
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Pending</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser()?.registeredRoles.filter((r) => r.status === 'PENDING').length || 0}</p></div>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Portfolio</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser().portfolioCount}</p></div>
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:12px"><p style="font-size:11px;color:#9CA3AF;text-transform:uppercase">Portfolio</p><p style="font-size:30px;font-weight:700;color:#111827">{currentUser()?.portfolioCount || 0}</p></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -401,16 +317,16 @@ export default function UsersManagementPage() {
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<p style="font-size:18px;font-weight:700;color:#111827">Personal Summary</p>
|
<p style="font-size:18px;font-weight:700;color:#111827">Personal Summary</p>
|
||||||
<div style="margin-top:14px;display:flex;flex-direction:column;gap:10px">
|
<div style="margin-top:14px;display:flex;flex-direction:column;gap:10px">
|
||||||
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">Full Name</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser().name}</span></div>
|
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">Full Name</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.name}</span></div>
|
||||||
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">User Type</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser().userType}</span></div>
|
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">User Type</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.userType}</span></div>
|
||||||
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">Last Active</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser().lastActive || '—'}</span></div>
|
<div style="display:flex;justify-content:space-between"><span style="font-size:13px;color:#6B7280">Last Active</span><span style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.lastActive || '—'}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<p style="font-size:18px;font-weight:700;color:#111827">Registered Roles</p>
|
<p style="font-size:18px;font-weight:700;color:#111827">Registered Roles</p>
|
||||||
<Show when={currentUser().registeredRoles.length > 0} fallback={<p style="margin-top:14px;font-size:14px;color:#6B7280">No role registered yet. Use this list for re-engagement campaigns.</p>}>
|
<Show when={(currentUser()?.registeredRoles.length || 0) > 0} fallback={<p style="margin-top:14px;font-size:14px;color:#6B7280">No role registered yet.</p>}>
|
||||||
<div style="margin-top:14px;display:flex;flex-wrap:wrap;gap:8px">
|
<div style="margin-top:14px;display:flex;flex-wrap:wrap;gap:8px">
|
||||||
<For each={currentUser().registeredRoles}>{(role) => <RoleChip role={role} />}</For>
|
<For each={currentUser()?.registeredRoles}>{(role) => <RoleChip role={role} />}</For>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -419,18 +335,18 @@ export default function UsersManagementPage() {
|
||||||
|
|
||||||
<Show when={detailTab() === 'personal'}>
|
<Show when={detailTab() === 'personal'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px">
|
||||||
<div><p style="font-size:12px;color:#9CA3AF">Name</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser().name}</p></div>
|
<div><p style="font-size:12px;color:#9CA3AF">Name</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.name}</p></div>
|
||||||
<div><p style="font-size:12px;color:#9CA3AF">Email</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser().email}</p></div>
|
<div><p style="font-size:12px;color:#9CA3AF">Email</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.email}</p></div>
|
||||||
<div><p style="font-size:12px;color:#9CA3AF">Phone</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser().phone || '—'}</p></div>
|
<div><p style="font-size:12px;color:#9CA3AF">Phone</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.phone || '—'}</p></div>
|
||||||
<div><p style="font-size:12px;color:#9CA3AF">Location</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser().location}</p></div>
|
<div><p style="font-size:12px;color:#9CA3AF">Location</p><p style="font-size:14px;font-weight:600;color:#111827">{currentUser()?.location}</p></div>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
|
|
||||||
<Show when={detailTab() === 'roles'}>
|
<Show when={detailTab() === 'roles'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<Show when={currentUser().registeredRoles.length > 0} fallback={<p style="font-size:14px;color:#6B7280">No role registrations yet.</p>}>
|
<Show when={(currentUser()?.registeredRoles.length || 0) > 0} fallback={<p style="font-size:14px;color:#6B7280">No role registrations yet.</p>}>
|
||||||
<div style="display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px">
|
<div style="display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px">
|
||||||
<For each={currentUser().registeredRoles}>
|
<For each={currentUser()?.registeredRoles}>
|
||||||
{(role) => (
|
{(role) => (
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:10px;padding:12px">
|
<div style="border:1px solid #E5E7EB;border-radius:10px;padding:12px">
|
||||||
<div style="display:flex;justify-content:space-between;align-items:center"><p style="font-size:15px;font-weight:700;color:#111827">{role.name}</p><StatusBadge status={role.status} /></div>
|
<div style="display:flex;justify-content:space-between;align-items:center"><p style="font-size:15px;font-weight:700;color:#111827">{role.name}</p><StatusBadge status={role.status} /></div>
|
||||||
|
|
@ -445,27 +361,27 @@ export default function UsersManagementPage() {
|
||||||
|
|
||||||
<Show when={detailTab() === 'portfolio'}>
|
<Show when={detailTab() === 'portfolio'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<p style="font-size:14px;color:#111827;font-weight:600">Portfolio assets submitted: {currentUser().portfolioCount}</p>
|
<p style="font-size:14px;color:#111827;font-weight:600">Portfolio assets submitted: {currentUser()?.portfolioCount || 0}</p>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
|
|
||||||
<Show when={detailTab() === 'verification'}>
|
<Show when={detailTab() === 'verification'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px;display:flex;gap:12px;align-items:center">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px;display:flex;gap:12px;align-items:center">
|
||||||
<StatusBadge status={currentUser().verificationStatus} />
|
<StatusBadge status={currentUser()?.verificationStatus || 'VERIFIED'} />
|
||||||
<span style="font-size:14px;color:#374151">Onboarding: {currentUser().onboardingStatus.split('_').join(' ')}</span>
|
<span style="font-size:14px;color:#374151">Onboarding: {currentUser()?.onboardingStatus.split('_').join(' ') || 'COMPLETED'}</span>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
|
|
||||||
<Show when={detailTab() === 'activity'}>
|
<Show when={detailTab() === 'activity'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<p style="font-size:14px;color:#111827;font-weight:600">Last Active: {currentUser().lastActive || '—'}</p>
|
<p style="font-size:14px;color:#111827;font-weight:600">Last Active: {currentUser()?.lastActive || '—'}</p>
|
||||||
<p style="font-size:13px;color:#6B7280;margin-top:8px">Joined on {currentUser().joinedOn}</p>
|
<p style="font-size:13px;color:#6B7280;margin-top:8px">Joined on {currentUser()?.joinedOn}</p>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
|
|
||||||
<Show when={detailTab() === 'notes'}>
|
<Show when={detailTab() === 'notes'}>
|
||||||
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
<div style="border:1px solid #E5E7EB;border-radius:12px;padding:16px">
|
||||||
<p style="font-size:14px;color:#111827">{currentUser().notes || 'No notes yet.'}</p>
|
<p style="font-size:14px;color:#111827">{currentUser()?.notes || 'No notes yet.'}</p>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -148,100 +148,6 @@ const normalizeRoleSpecKey = (value: string) => {
|
||||||
return 'PROFESSIONAL';
|
return 'PROFESSIONAL';
|
||||||
};
|
};
|
||||||
|
|
||||||
const FALLBACK_VERIFICATION_ROWS: VerificationRow[] = [
|
|
||||||
{
|
|
||||||
id: 'VR-92841',
|
|
||||||
applicantName: 'Sarah Jenkins',
|
|
||||||
requestType: 'Portfolio Approval',
|
|
||||||
roleLabel: 'Photographer',
|
|
||||||
submittedOn: '2026-04-01',
|
|
||||||
status: 'UNDER_REVIEW',
|
|
||||||
priority: 'HIGH',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
area: 'T. Nagar, Chennai',
|
|
||||||
userId: 'u-1001',
|
|
||||||
roleKey: 'PHOTOGRAPHER',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92839',
|
|
||||||
applicantName: 'Zenith Tech Hub',
|
|
||||||
requestType: 'Company Approval',
|
|
||||||
roleLabel: 'Company',
|
|
||||||
submittedOn: '2026-04-01',
|
|
||||||
status: 'DOCUMENTS_REQUESTED',
|
|
||||||
priority: 'MEDIUM',
|
|
||||||
userType: 'COMPANY',
|
|
||||||
area: 'Guindy, Chennai',
|
|
||||||
userId: 'u-1002',
|
|
||||||
roleKey: 'COMPANY',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92835',
|
|
||||||
applicantName: 'Marcus Davis',
|
|
||||||
requestType: 'Profile Approval',
|
|
||||||
roleLabel: 'Graphic Designer',
|
|
||||||
submittedOn: '2026-03-31',
|
|
||||||
status: 'REVISION_REQUESTED',
|
|
||||||
priority: 'LOW',
|
|
||||||
userType: 'PROFESSIONAL',
|
|
||||||
area: 'Velachery, Chennai',
|
|
||||||
userId: 'u-1003',
|
|
||||||
roleKey: 'GRAPHIC_DESIGNER',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92812',
|
|
||||||
applicantName: 'Wedding Shoot Request',
|
|
||||||
requestType: 'Service Seeker Requirement',
|
|
||||||
roleLabel: 'Service Seeker',
|
|
||||||
submittedOn: '2026-03-31',
|
|
||||||
status: 'APPROVED',
|
|
||||||
priority: 'MEDIUM',
|
|
||||||
userType: 'CUSTOMER',
|
|
||||||
area: 'Adyar, Chennai',
|
|
||||||
userId: 'u-1004',
|
|
||||||
roleKey: 'CUSTOMER',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92798',
|
|
||||||
applicantName: 'Elena Petrova',
|
|
||||||
requestType: 'Job Seeker Approval',
|
|
||||||
roleLabel: 'Job Seeker',
|
|
||||||
submittedOn: '2026-03-30',
|
|
||||||
status: 'PENDING',
|
|
||||||
priority: 'MEDIUM',
|
|
||||||
userType: 'JOBSEEKER',
|
|
||||||
area: 'Anna Nagar, Chennai',
|
|
||||||
userId: 'u-1005',
|
|
||||||
roleKey: 'JOB_SEEKER',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92772',
|
|
||||||
applicantName: 'Arjun Service Seeker',
|
|
||||||
requestType: 'Service Seeker Profile Approval',
|
|
||||||
roleLabel: 'Service Seeker',
|
|
||||||
submittedOn: '2026-03-30',
|
|
||||||
status: 'UNDER_REVIEW',
|
|
||||||
priority: 'MEDIUM',
|
|
||||||
userType: 'CUSTOMER',
|
|
||||||
area: 'T. Nagar, Chennai',
|
|
||||||
userId: 'u-1006',
|
|
||||||
roleKey: 'CUSTOMER',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'VR-92744',
|
|
||||||
applicantName: 'Zenith Tech Hub - Senior Architect',
|
|
||||||
requestType: 'Job Approval',
|
|
||||||
roleLabel: 'Company',
|
|
||||||
submittedOn: '2026-03-29',
|
|
||||||
status: 'PENDING',
|
|
||||||
priority: 'HIGH',
|
|
||||||
userType: 'COMPANY',
|
|
||||||
area: 'Guindy, Chennai',
|
|
||||||
userId: 'u-1007',
|
|
||||||
roleKey: 'COMPANY',
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default function VerificationManagementPage() {
|
export default function VerificationManagementPage() {
|
||||||
const [rows, setRows] = createSignal<VerificationRow[]>([]);
|
const [rows, setRows] = createSignal<VerificationRow[]>([]);
|
||||||
const [search, setSearch] = createSignal('');
|
const [search, setSearch] = createSignal('');
|
||||||
|
|
@ -379,10 +285,10 @@ export default function VerificationManagementPage() {
|
||||||
});
|
});
|
||||||
|
|
||||||
const mergedRows = [...profileRows, ...portfolioRows, ...jobRows, ...requirementRows];
|
const mergedRows = [...profileRows, ...portfolioRows, ...jobRows, ...requirementRows];
|
||||||
setRows(mergedRows.length ? mergedRows : FALLBACK_VERIFICATION_ROWS);
|
setRows(mergedRows);
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
setRows(FALLBACK_VERIFICATION_ROWS);
|
setRows([]);
|
||||||
setError(e?.message ? `${e.message} Showing demo queue data.` : 'Could not load verification queue. Showing demo queue data.');
|
setError(e?.message ? e.message : 'Could not load verification queue.');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -436,7 +342,6 @@ export default function VerificationManagementPage() {
|
||||||
});
|
});
|
||||||
|
|
||||||
const displayRows = createMemo(() => {
|
const displayRows = createMemo(() => {
|
||||||
if (rows().length === 0) return FALLBACK_VERIFICATION_ROWS;
|
|
||||||
return filteredRows();
|
return filteredRows();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -678,15 +583,72 @@ export default function VerificationManagementPage() {
|
||||||
window.localStorage.setItem(APPROVAL_QUEUE_STORAGE_KEY, JSON.stringify([item, ...filtered]));
|
window.localStorage.setItem(APPROVAL_QUEUE_STORAGE_KEY, JSON.stringify([item, ...filtered]));
|
||||||
};
|
};
|
||||||
|
|
||||||
const applySelectedStatus = (nextStatus: VerificationStatus) => {
|
const applySelectedStatus = async (nextStatus: VerificationStatus) => {
|
||||||
const current = selectedRow();
|
const current = selectedRow();
|
||||||
if (!current) return;
|
if (!current) return;
|
||||||
const nextRow = { ...current, status: nextStatus };
|
|
||||||
setSelectedRow(nextRow);
|
const isApprove = nextStatus === 'APPROVED';
|
||||||
setRows((prev) => prev.map((item) => (item.id === current.id ? { ...item, status: nextStatus } : item)));
|
const isReject = nextStatus === 'REJECTED';
|
||||||
if (nextStatus === 'APPROVED') {
|
|
||||||
pushToApprovalQueue(nextRow);
|
if (!isApprove && !isReject) {
|
||||||
setActionMessage('Verified and sent to Approval Management for final approval.');
|
// local update only for intermediate states if needed, but usually we skip backend call here
|
||||||
|
setRows((prev) => prev.map((item) => (item.id === current.id ? { ...item, status: nextStatus } : item)));
|
||||||
|
setSelectedRow({ ...current, status: nextStatus });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const accessToken = typeof sessionStorage !== 'undefined'
|
||||||
|
? sessionStorage.getItem('nxtgauge_admin_access_token') || ''
|
||||||
|
: '';
|
||||||
|
const common = {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Accept: 'application/json',
|
||||||
|
...(accessToken ? { Authorization: `Bearer ${accessToken}` } : {}),
|
||||||
|
},
|
||||||
|
credentials: 'include' as const,
|
||||||
|
body: isReject ? JSON.stringify({ reason: requestNote() }) : undefined,
|
||||||
|
};
|
||||||
|
|
||||||
|
let endpoint = '';
|
||||||
|
const rawId = current.id.split('-').pop() || '';
|
||||||
|
const userId = current.userId;
|
||||||
|
|
||||||
|
if (current.requestType === 'Job Approval') {
|
||||||
|
const jobId = current.payload?.id || rawId;
|
||||||
|
endpoint = `/api/admin/approvals/jobs/${jobId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
} else if (current.requestType === 'Service Seeker Requirement') {
|
||||||
|
const reqId = current.payload?.id || rawId;
|
||||||
|
endpoint = `/api/admin/approvals/requirements/${reqId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
} else if (current.requestType === 'Company Approval') {
|
||||||
|
endpoint = `/api/admin/approvals/profiles/company/${userId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
} else if (current.requestType === 'Service Seeker Profile Approval') {
|
||||||
|
endpoint = `/api/admin/approvals/profiles/customer/${userId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
} else if (current.requestType === 'Job Seeker Approval') {
|
||||||
|
endpoint = `/api/admin/approvals/profiles/job_seeker/${userId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
} else {
|
||||||
|
endpoint = `/api/admin/approvals/profiles/professional/${current.roleKey}/${userId}/${isApprove ? 'approve' : 'reject'}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = await fetch(`${API}${endpoint}`, common);
|
||||||
|
if (!res.ok) {
|
||||||
|
const txt = await res.text();
|
||||||
|
throw new Error(`Failed to update status (${res.status}): ${txt}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
setRows((prev) => prev.map((item) => (item.id === current.id ? { ...item, status: nextStatus } : item)));
|
||||||
|
setSelectedRow({ ...current, status: nextStatus });
|
||||||
|
|
||||||
|
if (isApprove) {
|
||||||
|
pushToApprovalQueue({ ...current, status: nextStatus });
|
||||||
|
setActionMessage('Successfully verified and sent to Approval Management.');
|
||||||
|
} else {
|
||||||
|
setActionMessage('Successfully rejected submission.');
|
||||||
|
}
|
||||||
|
} catch (e: any) {
|
||||||
|
setError(e.message || 'Failed to update backend status');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1028,28 +990,46 @@ export default function VerificationManagementPage() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Show when={selectedPortfolio().length > 0}>
|
<div style="border-radius:16px;border:1px solid #E5E7EB;background:white;box-shadow:0 1px 4px rgba(0,0,0,0.06);overflow:hidden">
|
||||||
<div style="border-radius:16px;border:1px solid #E5E7EB;background:white;box-shadow:0 1px 4px rgba(0,0,0,0.06);overflow:hidden">
|
<div style="padding:16px 20px;border-bottom:1px solid #F3F4F6;display:flex;align-items:center;justify-content:space-between;background:#FFFBF0">
|
||||||
<div style="padding:16px 20px;border-bottom:1px solid #F3F4F6;display:flex;align-items:center;justify-content:space-between">
|
<h3 style="margin:0;font-size:16px;font-weight:700;color:#854D0E">Verification Requirements Checklist</h3>
|
||||||
<h3 style="margin:0;font-size:16px;font-weight:700;color:#111827">Portfolio Photos</h3>
|
<span style="font-size:12px;font-weight:600;color:#A16207">System Audit</span>
|
||||||
<span style="font-size:12px;color:#6B7280">{selectedPortfolio().length} images</span>
|
</div>
|
||||||
</div>
|
<div style="padding:20px;display:grid;gap:12px">
|
||||||
<div style="padding:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px">
|
<For each={selectedDocuments()}>
|
||||||
<For each={selectedPortfolio()}>
|
{(doc) => (
|
||||||
{(asset) => (
|
<div style="display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:8px;background:#F9FAFB;border:1px solid #E5E7EB">
|
||||||
<button
|
<div style="display:flex;align-items:center;gap:10px">
|
||||||
type="button"
|
<div style={`width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;${doc.status === 'SUBMITTED' ? 'background:#22C55E' : 'background:#EF4444'}`}>
|
||||||
onClick={() => setViewer({ open: true, title: asset.title, type: 'IMAGE', url: asset.url })}
|
<Show when={doc.status === 'SUBMITTED'} fallback={<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>}>
|
||||||
style="border:1px solid #E5E7EB;border-radius:10px;background:#FFFFFF;padding:0;cursor:pointer;overflow:hidden;text-align:left"
|
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="4"><polyline points="20 6 9 17 4 12"/></svg>
|
||||||
>
|
</Show>
|
||||||
<img src={asset.url} alt={asset.title} style="width:100%;height:110px;object-fit:cover;display:block" />
|
</div>
|
||||||
<div style="padding:8px 10px;font-size:12px;font-weight:600;color:#374151">{asset.title}</div>
|
<span style="font-size:13px;font-weight:600;color:#374151">{doc.title}</span>
|
||||||
</button>
|
</div>
|
||||||
)}
|
<span style={`font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;${doc.status === 'SUBMITTED' ? 'background:#DCFCE7;color:#166534' : 'background:#FEE2E2;color:#991B1B'}`}>
|
||||||
</For>
|
{doc.status === 'SUBMITTED' ? 'RECEIVED' : 'MISSING'}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</For>
|
||||||
|
|
||||||
|
<div style="margin-top:8px;padding-top:16px;border-top:1px dashed #E5E7EB">
|
||||||
|
<p style="font-size:12px;font-weight:700;color:#6B7280;margin-bottom:8px;text-transform:uppercase">Profile Completeness</p>
|
||||||
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px">
|
||||||
|
<For each={selectedFieldValues().slice(0, 6)}>
|
||||||
|
{(field) => (
|
||||||
|
<div style="display:flex;align-items:center;gap:8px;font-size:12px;color:#4B5563">
|
||||||
|
<div style={`width:6px;height:6px;border-radius:50%;${field.value && field.value !== '—' ? 'background:#22C55E' : 'background:#EF4444'}`} />
|
||||||
|
<span style="opacity:0.8">{field.label}:</span>
|
||||||
|
<span style="font-weight:600">{field.value && field.value !== '—' ? 'Filled' : 'Empty'}</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</For>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</div>
|
||||||
|
|
||||||
<div style="border-radius:16px;border:1px solid #E5E7EB;background:white;box-shadow:0 1px 4px rgba(0,0,0,0.06);padding:16px">
|
<div style="border-radius:16px;border:1px solid #E5E7EB;background:white;box-shadow:0 1px 4px rgba(0,0,0,0.06);padding:16px">
|
||||||
<h3 style="margin:0 0 8px;font-size:16px;font-weight:700;color:#111827">Reviewer Actions</h3>
|
<h3 style="margin:0 0 8px;font-size:16px;font-weight:700;color:#111827">Reviewer Actions</h3>
|
||||||
|
|
|
||||||
|
|
@ -76,11 +76,9 @@ export default function LoginPage() {
|
||||||
const body = JSON.stringify({ email: email().trim().toLowerCase(), password: password(), loginTarget: 'admin' });
|
const body = JSON.stringify({ email: email().trim().toLowerCase(), password: password(), loginTarget: 'admin' });
|
||||||
const headers = { 'Content-Type': 'application/json', Accept: 'application/json', 'x-portal-target': 'admin' };
|
const headers = { 'Content-Type': 'application/json', Accept: 'application/json', 'x-portal-target': 'admin' };
|
||||||
let payload: any = {}; let status = 500; let success = false;
|
let payload: any = {}; let status = 500; let success = false;
|
||||||
for (const url of ['/api/gateway/users/auth/internal/login', '/api/gateway/auth/internal/login']) {
|
const r = await fetch('/api/admin/auth/login', { method: 'POST', headers, credentials: 'include', body });
|
||||||
const r = await fetch(url, { method: 'POST', headers, credentials: 'include', body });
|
status = r.status; payload = await r.json().catch(() => ({}));
|
||||||
status = r.status; payload = await r.json().catch(() => ({}));
|
if (r.ok) { success = true; }
|
||||||
if (r.ok) { success = true; break; }
|
|
||||||
}
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
const fallback = status === 502 ? 'Auth service unavailable (502). Please retry in 1–2 minutes.' : 'Sign in failed.';
|
const fallback = status === 502 ? 'Auth service unavailable (502). Please retry in 1–2 minutes.' : 'Sign in failed.';
|
||||||
throw new Error(pickManagementLoginError(payload) || fallback);
|
throw new Error(pickManagementLoginError(payload) || fallback);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue