@apptimate/core-lib 4.3.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@apptimate/core-lib",
3
- "version": "4.3.0",
3
+ "version": "4.5.0",
4
4
  "main": "src/index.ts",
5
5
  "types": "src/index.ts",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "dependencies": {
10
- "js-cookie": "^3.0.5",
11
10
  "clsx": "^2.1.1",
12
- "tailwind-merge": "^3.5.0"
11
+ "js-cookie": "^3.0.5",
12
+ "tailwind-merge": "^3.5.0",
13
+ "zod": "^4.4.3"
13
14
  },
14
15
  "devDependencies": {
15
16
  "@types/js-cookie": "^3.0.6"
package/src/client.ts CHANGED
@@ -13,3 +13,4 @@ export * from './utils/currencyService';
13
13
 
14
14
  export * from './api-services/procurement.client';
15
15
  export * from './api-services/printable-templates.client';
16
+ export * from './schemas/approvalWorkflowSchema';
@@ -90,7 +90,7 @@ export const ICON_REGISTRY: { name: string; category: string }[] = [
90
90
  { name: 'Building2', category: 'People' },
91
91
  { name: 'Building', category: 'People' },
92
92
  { name: 'Briefcase', category: 'People' },
93
- { name: 'HardHat', category: 'People' },
93
+ { name: 'Crane', category: 'People' },
94
94
  { name: 'GraduationCap', category: 'People' },
95
95
 
96
96
  // Settings / System
@@ -108,6 +108,7 @@ export const MENU_ITEM_REGISTRY: RegistryItem[] = [
108
108
  // ── Procurement Module ──
109
109
  { key: 'procurement__orders', label: 'Purchase Orders', path: '/procurement/orders', module: 'Procurement', defaultGroup: 'Orders', permission: null },
110
110
  { key: 'procurement__grn', label: 'Goods Receipt', path: '/procurement/grns', module: 'Procurement', defaultGroup: 'Receiving', permission: null },
111
+ { key: 'procurement__settings', label: 'Settings', path: '/procurement/settings', module: 'Procurement', defaultGroup: 'Configuration', permission: 'procurement_setting.view' },
111
112
  { key: 'procurement__invoices', label: 'Invoices', path: '/finance/invoices', module: 'Procurement', defaultGroup: 'Finance', permission: null },
112
113
  { key: 'procurement__payments', label: 'Payments', path: '/finance/payments', module: 'Procurement', defaultGroup: 'Finance', permission: null },
113
114
 
@@ -244,7 +245,9 @@ export const MENU_ITEM_REGISTRY: RegistryItem[] = [
244
245
  { key: 'construction__shifts', label: 'Shift Master', path: '/construction/shifts', module: 'Construction', defaultGroup: 'Workforce', permission: null },
245
246
  { key: 'construction__attendance', label: 'Attendance & Timesheets', path: '/construction/attendance', module: 'Construction', defaultGroup: 'Workforce', permission: null },
246
247
 
248
+ { key: 'construction__equipment_types', label: 'Equipment Types', path: '/construction/equipment/types', module: 'Construction', defaultGroup: 'Equipment & Plant', permission: null },
247
249
  { key: 'construction__equipment', label: 'Equipment Master', path: '/construction/equipment', module: 'Construction', defaultGroup: 'Equipment & Plant', permission: null },
250
+ { key: 'construction__equipment_allocation', label: 'Equipment Allocation', path: '/construction/equipment/allocation', module: 'Construction', defaultGroup: 'Equipment & Plant', permission: null },
248
251
  { key: 'construction__fuel_logs', label: 'Fuel Logs', path: '/construction/equipment/fuel-logs', module: 'Construction', defaultGroup: 'Equipment & Plant', permission: null },
249
252
  { key: 'construction__maintenance', label: 'Maintenance', path: '/construction/equipment/maintenance', module: 'Construction', defaultGroup: 'Equipment & Plant', permission: null },
250
253
 
@@ -257,9 +260,9 @@ export const MENU_ITEM_REGISTRY: RegistryItem[] = [
257
260
 
258
261
  { key: 'construction__dsr', label: 'Daily Site Reports', path: '/construction/site-execution/dsr', module: 'Construction', defaultGroup: 'Site Execution', permission: null },
259
262
  { key: 'construction__progress', label: 'Progress Measurement', path: '/construction/site-execution/progress', module: 'Construction', defaultGroup: 'Site Execution', permission: null },
263
+ { key: 'construction__subcontractor_progress', label: 'Subcontractor Progress', path: '/construction/site-execution/subcontractor-progress', module: 'Construction', defaultGroup: 'Site Execution', permission: null },
260
264
 
261
265
  { key: 'construction__drawings', label: 'Drawing Register', path: '/construction/document-control/drawings', module: 'Construction', defaultGroup: 'Document Control', permission: null },
262
- { key: 'construction__transmittals', label: 'Transmittals', path: '/construction/document-control/transmittals', module: 'Construction', defaultGroup: 'Document Control', permission: null },
263
266
  { key: 'construction__rfis', label: 'RFIs', path: '/construction/document-control/rfis', module: 'Construction', defaultGroup: 'Document Control', permission: null },
264
267
 
265
268
  { key: 'construction__quality_ir', label: 'Inspection Requests', path: '/construction/quality/ir', module: 'Construction', defaultGroup: 'Quality', permission: null },
@@ -270,10 +273,18 @@ export const MENU_ITEM_REGISTRY: RegistryItem[] = [
270
273
  { key: 'construction__safety_incidents', label: 'Incident Log', path: '/construction/safety/incidents', module: 'Construction', defaultGroup: 'Safety', permission: null },
271
274
  { key: 'construction__ptw', label: 'Permit to Work', path: '/construction/safety/ptw', module: 'Construction', defaultGroup: 'Safety', permission: null },
272
275
 
276
+ { key: 'construction__approval_workflows', label: 'Approval Workflows', path: '/construction/settings/approvals', module: 'Construction', defaultGroup: 'Configuration', permission: null },
277
+ { key: 'construction__test_types', label: 'Test Types', path: '/construction/settings/test-types', module: 'Construction', defaultGroup: 'Configuration', permission: null },
278
+ { key: 'construction__settings', label: 'Settings', path: '/construction/settings', module: 'Construction', defaultGroup: 'Configuration', permission: null },
279
+
273
280
  // ── CRM Module ──
274
281
  { key: 'crm__dashboard', label: 'Overview', path: '/crm', module: 'CRM', defaultGroup: 'Overview', permission: null },
275
- { key: 'crm__customers', label: 'Customers', path: '/crm/customers', module: 'CRM', defaultGroup: 'Core', permission: null },
276
- { key: 'crm__leads', label: 'Leads', path: '/crm/leads', module: 'CRM', defaultGroup: 'Sales', permission: null },
282
+ { key: 'crm__spaces', label: 'Spaces', path: '/crm/spaces', module: 'CRM', defaultGroup: 'Sales', permission: 'crm_space.view' },
283
+ { key: 'crm__leads', label: 'Leads', path: '/crm/leads', module: 'CRM', defaultGroup: 'Sales', permission: 'crm_lead.view' },
284
+ { key: 'crm__sales', label: 'Confirmed Sales', path: '/crm/sales', module: 'CRM', defaultGroup: 'Sales', permission: 'crm_sale.view' },
285
+ { key: 'crm__tasks', label: 'Tasks', path: '/crm/tasks', module: 'CRM', defaultGroup: 'Operations', permission: 'crm_task.view' },
286
+ { key: 'crm__payments', label: 'Expected Payments', path: '/crm/payments', module: 'CRM', defaultGroup: 'Operations', permission: 'crm_expected_payment.view' },
287
+ { key: 'crm__settings_custom_fields', label: 'Custom Fields', path: '/crm/settings/custom-fields', module: 'CRM', defaultGroup: 'Settings', permission: 'crm_custom_field.view' },
277
288
  ];
278
289
 
279
290
  /**
@@ -389,6 +400,7 @@ export const MENU_PRESETS: MenuPreset[] = [
389
400
  secondaryItems: [
390
401
  'procurement__orders', 'procurement__grn',
391
402
  'procurement__invoices', 'procurement__payments',
403
+ 'procurement__settings',
392
404
  ],
393
405
  },
394
406
  {
@@ -483,7 +495,7 @@ export const MENU_PRESETS: MenuPreset[] = [
483
495
  {
484
496
  id: 'construction',
485
497
  label: 'Construction',
486
- iconName: 'HardHat',
498
+ iconName: 'Crane',
487
499
  secondaryItems: [
488
500
  'construction__dashboard',
489
501
  'construction__projects',
@@ -500,7 +512,9 @@ export const MENU_PRESETS: MenuPreset[] = [
500
512
  'construction__workforce',
501
513
  'construction__shifts',
502
514
  'construction__attendance',
515
+ 'construction__equipment_types',
503
516
  'construction__equipment',
517
+ 'construction__equipment_allocation',
504
518
  'construction__fuel_logs',
505
519
  'construction__maintenance',
506
520
  'construction__schedule_tasks',
@@ -510,6 +524,7 @@ export const MENU_PRESETS: MenuPreset[] = [
510
524
  'construction__ipcs',
511
525
  'construction__dsr',
512
526
  'construction__progress',
527
+ 'construction__subcontractor_progress',
513
528
  'construction__drawings',
514
529
  'construction__transmittals',
515
530
  'construction__rfis',
@@ -519,6 +534,9 @@ export const MENU_PRESETS: MenuPreset[] = [
519
534
  'construction__material_testing',
520
535
  'construction__safety_incidents',
521
536
  'construction__ptw',
537
+ 'construction__approval_workflows',
538
+ 'construction__test_types',
539
+ 'construction__settings',
522
540
  ],
523
541
  },
524
542
  {
@@ -528,7 +546,12 @@ export const MENU_PRESETS: MenuPreset[] = [
528
546
  secondaryItems: [
529
547
  'crm__dashboard',
530
548
  'crm__customers',
549
+ 'crm__spaces',
531
550
  'crm__leads',
551
+ 'crm__sales',
552
+ 'crm__tasks',
553
+ 'crm__payments',
554
+ 'crm__settings_custom_fields',
532
555
  ],
533
556
  }
534
557
  ],
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+
3
+ export const approvalStepSchema = z.object({
4
+ step_order: z.number().int().positive(),
5
+ approver_type: z.enum(["user", "role"]),
6
+ approver_id: z.string().min(1, "Approver is required")
7
+ });
8
+
9
+ export const approvalWorkflowSchema = z.object({
10
+ entity_type: z.string().min(1, "Entity Type is required"),
11
+ workflow_name: z.string().min(1, "Workflow Name is required"),
12
+ description: z.string().optional(),
13
+ steps: z.array(approvalStepSchema).min(1, "At least one approval step is required")
14
+ });
15
+
16
+ export type ApprovalStep = z.infer<typeof approvalStepSchema>;
17
+ export type ApprovalWorkflowFormData = z.infer<typeof approvalWorkflowSchema>;