@almadar/std 14.16.0 → 14.18.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.
Files changed (123) hide show
  1. package/behaviors/registry/app/atoms/std-branching-logic.orb +84 -84
  2. package/behaviors/registry/app/atoms/std-checkin.orb +60 -60
  3. package/behaviors/registry/app/atoms/std-dunning.orb +44 -44
  4. package/behaviors/registry/app/atoms/std-event.orb +62 -62
  5. package/behaviors/registry/app/atoms/std-flag.orb +72 -72
  6. package/behaviors/registry/app/atoms/std-geosearch.orb +29 -29
  7. package/behaviors/registry/app/atoms/std-image-upload-multi.orb +54 -56
  8. package/behaviors/registry/app/atoms/std-invoice.orb +124 -124
  9. package/behaviors/registry/app/atoms/std-kitchen-display.orb +45 -45
  10. package/behaviors/registry/app/atoms/std-menu.orb +44 -44
  11. package/behaviors/registry/app/atoms/std-mod-queue.orb +38 -38
  12. package/behaviors/registry/app/atoms/std-modifier-group.orb +56 -56
  13. package/behaviors/registry/app/atoms/std-page-tree.orb +55 -55
  14. package/behaviors/registry/app/atoms/std-payout-ledger.orb +66 -66
  15. package/behaviors/registry/app/atoms/std-question-bank.orb +62 -62
  16. package/behaviors/registry/app/atoms/std-rating-review.orb +67 -67
  17. package/behaviors/registry/app/atoms/std-recurring-charge.orb +74 -74
  18. package/behaviors/registry/app/atoms/std-response-collector.orb +44 -44
  19. package/behaviors/registry/app/atoms/std-rich-editor.orb +68 -68
  20. package/behaviors/registry/app/atoms/std-route-optimize.orb +48 -46
  21. package/behaviors/registry/app/atoms/std-saved-search.orb +72 -72
  22. package/behaviors/registry/app/atoms/std-signature-capture.orb +86 -86
  23. package/behaviors/registry/app/atoms/std-table-map.orb +46 -46
  24. package/behaviors/registry/app/atoms/std-tag-taxonomy.orb +73 -92
  25. package/behaviors/registry/app/atoms/std-technician-dispatch.orb +42 -42
  26. package/behaviors/registry/app/atoms/std-thread.orb +59 -59
  27. package/behaviors/registry/app/atoms/std-ticket-tier.orb +72 -56
  28. package/behaviors/registry/app/atoms/std-trial.orb +67 -67
  29. package/behaviors/registry/app/atoms/std-version-history.orb +93 -93
  30. package/behaviors/registry/app/atoms/std-vote.orb +40 -40
  31. package/behaviors/registry/app/atoms/std-waitlist.orb +50 -50
  32. package/behaviors/registry/app/atoms/std-work-order.orb +61 -61
  33. package/behaviors/registry/app/organisms/std-api-gateway.orb +201 -201
  34. package/behaviors/registry/app/organisms/std-booking-system.orb +676 -676
  35. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +285 -285
  36. package/behaviors/registry/app/organisms/std-cms.orb +265 -265
  37. package/behaviors/registry/app/organisms/std-coding-academy.orb +179 -179
  38. package/behaviors/registry/app/organisms/std-crm.orb +258 -258
  39. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +403 -403
  40. package/behaviors/registry/app/organisms/std-ecommerce.orb +681 -681
  41. package/behaviors/registry/app/organisms/std-event-ticketing.orb +193 -201
  42. package/behaviors/registry/app/organisms/std-field-service.orb +170 -174
  43. package/behaviors/registry/app/organisms/std-finance-tracker.orb +205 -205
  44. package/behaviors/registry/app/organisms/std-forum.orb +127 -128
  45. package/behaviors/registry/app/organisms/std-healthcare.orb +540 -540
  46. package/behaviors/registry/app/organisms/std-helpdesk.orb +175 -175
  47. package/behaviors/registry/app/organisms/std-hr-portal.orb +444 -444
  48. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +344 -344
  49. package/behaviors/registry/app/organisms/std-listings.orb +152 -157
  50. package/behaviors/registry/app/organisms/std-lms.orb +422 -422
  51. package/behaviors/registry/app/organisms/std-marketplace.orb +232 -234
  52. package/behaviors/registry/app/organisms/std-project-manager.orb +193 -193
  53. package/behaviors/registry/app/organisms/std-realtime-chat.orb +248 -248
  54. package/behaviors/registry/app/organisms/std-restaurant-pos.orb +142 -142
  55. package/behaviors/registry/app/organisms/std-social-feed.orb +156 -156
  56. package/behaviors/registry/app/organisms/std-subscription-billing.orb +210 -212
  57. package/behaviors/registry/app/organisms/std-survey.orb +148 -149
  58. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +274 -274
  59. package/behaviors/registry/app/organisms/std-wiki.orb +131 -132
  60. package/behaviors/registry/core/molecules/std-form-advanced.orb +124 -124
  61. package/dist/behaviors/behaviors-registry.json +1 -1
  62. package/dist/behaviors/registry/app/atoms/std-branching-logic.orb +84 -84
  63. package/dist/behaviors/registry/app/atoms/std-checkin.orb +60 -60
  64. package/dist/behaviors/registry/app/atoms/std-dunning.orb +44 -44
  65. package/dist/behaviors/registry/app/atoms/std-event.orb +62 -62
  66. package/dist/behaviors/registry/app/atoms/std-flag.orb +72 -72
  67. package/dist/behaviors/registry/app/atoms/std-geosearch.orb +29 -29
  68. package/dist/behaviors/registry/app/atoms/std-image-upload-multi.orb +54 -56
  69. package/dist/behaviors/registry/app/atoms/std-invoice.orb +124 -124
  70. package/dist/behaviors/registry/app/atoms/std-kitchen-display.orb +45 -45
  71. package/dist/behaviors/registry/app/atoms/std-menu.orb +44 -44
  72. package/dist/behaviors/registry/app/atoms/std-mod-queue.orb +38 -38
  73. package/dist/behaviors/registry/app/atoms/std-modifier-group.orb +56 -56
  74. package/dist/behaviors/registry/app/atoms/std-page-tree.orb +55 -55
  75. package/dist/behaviors/registry/app/atoms/std-payout-ledger.orb +66 -66
  76. package/dist/behaviors/registry/app/atoms/std-question-bank.orb +62 -62
  77. package/dist/behaviors/registry/app/atoms/std-rating-review.orb +67 -67
  78. package/dist/behaviors/registry/app/atoms/std-recurring-charge.orb +74 -74
  79. package/dist/behaviors/registry/app/atoms/std-response-collector.orb +44 -44
  80. package/dist/behaviors/registry/app/atoms/std-rich-editor.orb +68 -68
  81. package/dist/behaviors/registry/app/atoms/std-route-optimize.orb +48 -46
  82. package/dist/behaviors/registry/app/atoms/std-saved-search.orb +72 -72
  83. package/dist/behaviors/registry/app/atoms/std-signature-capture.orb +86 -86
  84. package/dist/behaviors/registry/app/atoms/std-table-map.orb +46 -46
  85. package/dist/behaviors/registry/app/atoms/std-tag-taxonomy.orb +73 -92
  86. package/dist/behaviors/registry/app/atoms/std-technician-dispatch.orb +42 -42
  87. package/dist/behaviors/registry/app/atoms/std-thread.orb +59 -59
  88. package/dist/behaviors/registry/app/atoms/std-ticket-tier.orb +72 -56
  89. package/dist/behaviors/registry/app/atoms/std-trial.orb +67 -67
  90. package/dist/behaviors/registry/app/atoms/std-version-history.orb +93 -93
  91. package/dist/behaviors/registry/app/atoms/std-vote.orb +40 -40
  92. package/dist/behaviors/registry/app/atoms/std-waitlist.orb +50 -50
  93. package/dist/behaviors/registry/app/atoms/std-work-order.orb +61 -61
  94. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +201 -201
  95. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +676 -676
  96. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +285 -285
  97. package/dist/behaviors/registry/app/organisms/std-cms.orb +265 -265
  98. package/dist/behaviors/registry/app/organisms/std-coding-academy.orb +179 -179
  99. package/dist/behaviors/registry/app/organisms/std-crm.orb +258 -258
  100. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +403 -403
  101. package/dist/behaviors/registry/app/organisms/std-ecommerce.orb +681 -681
  102. package/dist/behaviors/registry/app/organisms/std-event-ticketing.orb +193 -201
  103. package/dist/behaviors/registry/app/organisms/std-field-service.orb +170 -174
  104. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +205 -205
  105. package/dist/behaviors/registry/app/organisms/std-forum.orb +127 -128
  106. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +540 -540
  107. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +175 -175
  108. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +444 -444
  109. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +344 -344
  110. package/dist/behaviors/registry/app/organisms/std-listings.orb +152 -157
  111. package/dist/behaviors/registry/app/organisms/std-lms.orb +422 -422
  112. package/dist/behaviors/registry/app/organisms/std-marketplace.orb +232 -234
  113. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +193 -193
  114. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +248 -248
  115. package/dist/behaviors/registry/app/organisms/std-restaurant-pos.orb +142 -142
  116. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +156 -156
  117. package/dist/behaviors/registry/app/organisms/std-subscription-billing.orb +210 -212
  118. package/dist/behaviors/registry/app/organisms/std-survey.orb +148 -149
  119. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +274 -274
  120. package/dist/behaviors/registry/app/organisms/std-wiki.orb +131 -132
  121. package/dist/behaviors/registry/core/molecules/std-form-advanced.orb +124 -124
  122. package/dist/behaviors-registry.json +1 -1
  123. package/package.json +7 -14
@@ -133,28 +133,28 @@
133
133
  "ref": "AppShell.traits.AppLayout",
134
134
  "name": "WorkOrderAppLayout",
135
135
  "config": {
136
+ "notifications": [],
137
+ "appName": "Field Service",
138
+ "notificationClickEvent": "WORK_ORDER_NOTIFICATIONS_OPEN",
139
+ "contentTrait": "@trait.WorkOrderCatalog",
140
+ "searchEvent": "WORK_ORDER_SEARCH",
136
141
  "navItems": [
137
142
  {
138
- "href": "/workorders",
143
+ "icon": "clipboard-list",
139
144
  "label": "Work Orders",
140
- "icon": "clipboard-list"
145
+ "href": "/workorders"
141
146
  },
142
147
  {
143
148
  "icon": "hard-hat",
144
- "href": "/technicians",
145
- "label": "Technicians"
149
+ "label": "Technicians",
150
+ "href": "/technicians"
146
151
  },
147
152
  {
148
- "label": "Check In",
149
153
  "icon": "map-pin",
150
- "href": "/jobs/checkin"
154
+ "href": "/jobs/checkin",
155
+ "label": "Check In"
151
156
  }
152
- ],
153
- "notifications": [],
154
- "notificationClickEvent": "WORK_ORDER_NOTIFICATIONS_OPEN",
155
- "contentTrait": "@trait.WorkOrderCatalog",
156
- "searchEvent": "WORK_ORDER_SEARCH",
157
- "appName": "Field Service"
157
+ ]
158
158
  },
159
159
  "events": {
160
160
  "SEARCH": "WORK_ORDER_SEARCH",
@@ -241,59 +241,58 @@
241
241
  "render-ui",
242
242
  "main",
243
243
  {
244
- "type": "stack",
245
244
  "children": [
246
245
  {
247
246
  "direction": "horizontal",
248
- "justify": "between",
247
+ "align": "center",
249
248
  "gap": "md",
250
249
  "type": "stack",
250
+ "justify": "between",
251
251
  "children": [
252
252
  {
253
- "gap": "sm",
254
253
  "align": "center",
254
+ "type": "stack",
255
255
  "direction": "horizontal",
256
+ "gap": "sm",
256
257
  "children": [
257
258
  {
258
- "name": "clipboard-list",
259
- "type": "icon"
259
+ "type": "icon",
260
+ "name": "clipboard-list"
260
261
  },
261
262
  {
262
- "type": "typography",
263
263
  "variant": "h2",
264
+ "type": "typography",
264
265
  "content": "Work Orders"
265
266
  }
266
- ],
267
- "type": "stack"
267
+ ]
268
268
  },
269
269
  {
270
- "direction": "horizontal",
271
270
  "children": [
272
271
  {
273
- "variant": "primary",
274
272
  "type": "button",
275
273
  "label": "New Work Order",
276
- "action": "CREATE",
277
- "icon": "plus"
274
+ "variant": "primary",
275
+ "icon": "plus",
276
+ "action": "CREATE"
278
277
  }
279
278
  ],
280
279
  "gap": "sm",
280
+ "direction": "horizontal",
281
281
  "type": "stack"
282
282
  }
283
- ],
284
- "align": "center"
283
+ ]
285
284
  },
286
285
  {
287
286
  "type": "divider"
288
287
  },
289
288
  {
290
- "direction": "horizontal",
291
- "type": "stack",
292
289
  "align": "center",
290
+ "type": "stack",
293
291
  "children": [
294
292
  "@trait.WorkOrderSearch",
295
293
  "@trait.WorkOrderFilter"
296
294
  ],
295
+ "direction": "horizontal",
297
296
  "gap": "md"
298
297
  },
299
298
  "@trait.WorkOrderStats",
@@ -306,22 +305,23 @@
306
305
  },
307
306
  {
308
307
  "content": "Dispatch",
309
- "type": "typography",
310
- "variant": "h3"
308
+ "variant": "h3",
309
+ "type": "typography"
311
310
  },
312
311
  "@trait.WorkOrderDispatch",
313
312
  {
314
313
  "type": "divider"
315
314
  },
316
315
  {
317
- "content": "Routes",
316
+ "variant": "h3",
318
317
  "type": "typography",
319
- "variant": "h3"
318
+ "content": "Routes"
320
319
  },
321
320
  "@trait.WorkOrderRoutes"
322
321
  ],
322
+ "direction": "vertical",
323
323
  "gap": "lg",
324
- "direction": "vertical"
324
+ "type": "stack"
325
325
  }
326
326
  ]
327
327
  ]
@@ -340,7 +340,10 @@
340
340
  "render-ui",
341
341
  "main",
342
342
  {
343
+ "direction": "vertical",
343
344
  "gap": "md",
345
+ "align": "center",
346
+ "type": "stack",
344
347
  "className": "py-8",
345
348
  "children": [
346
349
  {
@@ -348,26 +351,23 @@
348
351
  "type": "icon"
349
352
  },
350
353
  {
351
- "content": "No notifications",
352
354
  "type": "typography",
355
+ "content": "No notifications",
353
356
  "variant": "h3"
354
357
  },
355
358
  {
356
- "type": "typography",
357
359
  "color": "muted",
360
+ "type": "typography",
358
361
  "variant": "caption",
359
362
  "content": "You're all caught up."
360
363
  },
361
364
  {
362
- "label": "Back to work orders",
365
+ "action": "INIT",
363
366
  "variant": "ghost",
364
- "type": "button",
365
- "action": "INIT"
367
+ "label": "Back to work orders",
368
+ "type": "button"
366
369
  }
367
- ],
368
- "type": "stack",
369
- "direction": "vertical",
370
- "align": "center"
370
+ ]
371
371
  }
372
372
  ]
373
373
  ]
@@ -388,23 +388,21 @@
388
388
  "ref": "Filter.traits.FilterTargetFilter",
389
389
  "name": "WorkOrderFilter",
390
390
  "config": {
391
- "event": "WORK_ORDER_FILTER",
392
391
  "filters": [
393
392
  {
394
- "field": "priority",
395
- "filterType": "select",
396
- "label": "Priority",
397
393
  "options": [
398
394
  "low",
399
395
  "normal",
400
396
  "high",
401
397
  "urgent"
402
- ]
398
+ ],
399
+ "field": "priority",
400
+ "label": "Priority",
401
+ "filterType": "select"
403
402
  },
404
403
  {
405
- "label": "Status",
406
- "field": "status",
407
404
  "filterType": "select",
405
+ "label": "Status",
408
406
  "options": [
409
407
  "created",
410
408
  "assigned",
@@ -412,9 +410,11 @@
412
410
  "on-site",
413
411
  "completed",
414
412
  "cancelled"
415
- ]
413
+ ],
414
+ "field": "status"
416
415
  }
417
- ]
416
+ ],
417
+ "event": "WORK_ORDER_FILTER"
418
418
  }
419
419
  },
420
420
  {
@@ -424,13 +424,15 @@
424
424
  "title": "Work Orders",
425
425
  "metrics": [
426
426
  {
427
- "variant": "primary",
428
- "label": "Total",
429
427
  "icon": "clipboard-list",
430
428
  "format": "number",
429
+ "variant": "primary",
430
+ "label": "Total",
431
431
  "aggregation": "count"
432
432
  },
433
433
  {
434
+ "icon": "circle",
435
+ "aggregation": "count",
434
436
  "filter": [
435
437
  "fn",
436
438
  "row",
@@ -440,17 +442,16 @@
440
442
  "created"
441
443
  ]
442
444
  ],
443
- "icon": "circle",
444
445
  "label": "Open",
445
- "aggregation": "count",
446
- "format": "number",
447
- "variant": "warning"
446
+ "variant": "warning",
447
+ "format": "number"
448
448
  },
449
449
  {
450
450
  "aggregation": "count",
451
+ "label": "On Site",
452
+ "variant": "info",
451
453
  "icon": "map-pin",
452
454
  "format": "number",
453
- "variant": "info",
454
455
  "filter": [
455
456
  "fn",
456
457
  "row",
@@ -459,14 +460,9 @@
459
460
  "@row.status",
460
461
  "on-site"
461
462
  ]
462
- ],
463
- "label": "On Site"
463
+ ]
464
464
  },
465
465
  {
466
- "icon": "check-circle",
467
- "variant": "success",
468
- "aggregation": "count",
469
- "format": "number",
470
466
  "filter": [
471
467
  "fn",
472
468
  "row",
@@ -476,7 +472,11 @@
476
472
  "completed"
477
473
  ]
478
474
  ],
479
- "label": "Completed"
475
+ "label": "Completed",
476
+ "aggregation": "count",
477
+ "variant": "success",
478
+ "icon": "check-circle",
479
+ "format": "number"
480
480
  }
481
481
  ]
482
482
  },
@@ -496,12 +496,11 @@
496
496
  "name": "WorkOrderBrowseList",
497
497
  "linkedEntity": "WorkOrderRow",
498
498
  "config": {
499
- "cols": 1.0,
500
499
  "itemActions": [
501
500
  {
502
- "label": "View",
503
501
  "variant": "ghost",
504
- "event": "VIEW"
502
+ "event": "VIEW",
503
+ "label": "View"
505
504
  },
506
505
  {
507
506
  "label": "Edit",
@@ -509,32 +508,34 @@
509
508
  "variant": "ghost"
510
509
  },
511
510
  {
511
+ "variant": "danger",
512
512
  "label": "Delete",
513
- "event": "DELETE",
514
- "variant": "danger"
513
+ "event": "DELETE"
515
514
  }
516
515
  ],
516
+ "cols": 1.0,
517
+ "gap": "sm",
517
518
  "fields": [
518
519
  {
519
- "name": "customerName",
520
520
  "variant": "h4",
521
- "icon": "user"
521
+ "icon": "user",
522
+ "name": "customerName"
522
523
  },
523
524
  {
524
- "name": "serviceType",
525
- "variant": "body"
525
+ "variant": "body",
526
+ "name": "serviceType"
526
527
  },
527
528
  {
528
529
  "variant": "caption",
529
530
  "name": "address"
530
531
  },
531
532
  {
532
- "name": "priority",
533
- "variant": "badge"
533
+ "variant": "badge",
534
+ "name": "priority"
534
535
  },
535
536
  {
536
- "name": "status",
537
- "variant": "badge"
537
+ "variant": "badge",
538
+ "name": "status"
538
539
  },
539
540
  {
540
541
  "name": "assignedTo",
@@ -544,8 +545,7 @@
544
545
  "variant": "caption",
545
546
  "name": "etaMinutes"
546
547
  }
547
- ],
548
- "gap": "sm"
548
+ ]
549
549
  },
550
550
  "listens": [
551
551
  {
@@ -593,7 +593,6 @@
593
593
  {
594
594
  "ref": "Dispatch.traits.TechnicianDispatch",
595
595
  "name": "WorkOrderDispatch",
596
- "linkedEntity": "WorkOrderRow",
597
596
  "config": {
598
597
  "title": "Available Technicians"
599
598
  }
@@ -610,6 +609,9 @@
610
609
  "name": "WorkOrderCreate",
611
610
  "linkedEntity": "WorkOrderRow",
612
611
  "config": {
612
+ "mode": "create",
613
+ "icon": "plus-circle",
614
+ "title": "New Work Order",
613
615
  "fields": [
614
616
  "customerName",
615
617
  "serviceType",
@@ -620,10 +622,7 @@
620
622
  "scheduledAt",
621
623
  "etaMinutes",
622
624
  "notes"
623
- ],
624
- "icon": "plus-circle",
625
- "title": "New Work Order",
626
- "mode": "create"
625
+ ]
627
626
  },
628
627
  "events": {
629
628
  "OPEN": "CREATE"
@@ -644,8 +643,8 @@
644
643
  "name": "WorkOrderEdit",
645
644
  "linkedEntity": "WorkOrderRow",
646
645
  "config": {
647
- "title": "Edit Work Order",
648
646
  "icon": "edit",
647
+ "title": "Edit Work Order",
649
648
  "mode": "edit",
650
649
  "fields": [
651
650
  "customerName",
@@ -679,8 +678,6 @@
679
678
  "linkedEntity": "WorkOrderRow",
680
679
  "config": {
681
680
  "title": "View Work Order",
682
- "icon": "eye",
683
- "mode": "edit",
684
681
  "fields": [
685
682
  "customerName",
686
683
  "serviceType",
@@ -691,7 +688,9 @@
691
688
  "scheduledAt",
692
689
  "etaMinutes",
693
690
  "notes"
694
- ]
691
+ ],
692
+ "mode": "edit",
693
+ "icon": "eye"
695
694
  },
696
695
  "events": {
697
696
  "OPEN": "VIEW"
@@ -712,14 +711,14 @@
712
711
  "name": "WorkOrderDelete",
713
712
  "linkedEntity": "WorkOrderRow",
714
713
  "config": {
715
- "icon": "alert-triangle",
714
+ "alertMessage": "This action cannot be undone.",
716
715
  "title": "Delete Work Order",
717
- "confirmLabel": "Delete",
718
- "alertMessage": "This action cannot be undone."
716
+ "icon": "alert-triangle",
717
+ "confirmLabel": "Delete"
719
718
  },
720
719
  "events": {
721
- "REQUEST": "DELETE",
722
- "CONFIRM": "CONFIRM_DELETE"
720
+ "CONFIRM": "CONFIRM_DELETE",
721
+ "REQUEST": "DELETE"
723
722
  },
724
723
  "listens": [
725
724
  {
@@ -1052,12 +1051,11 @@
1052
1051
  {
1053
1052
  "ref": "AppShell.traits.AppLayout",
1054
1053
  "name": "TechnicianAppLayout",
1055
- "linkedEntity": "TechnicianRow",
1056
1054
  "config": {
1057
1055
  "navItems": [
1058
1056
  {
1059
- "icon": "clipboard-list",
1060
1057
  "href": "/workorders",
1058
+ "icon": "clipboard-list",
1061
1059
  "label": "Work Orders"
1062
1060
  },
1063
1061
  {
@@ -1067,15 +1065,15 @@
1067
1065
  },
1068
1066
  {
1069
1067
  "icon": "map-pin",
1070
- "label": "Check In",
1071
- "href": "/jobs/checkin"
1068
+ "href": "/jobs/checkin",
1069
+ "label": "Check In"
1072
1070
  }
1073
1071
  ],
1074
- "appName": "Field Service",
1075
1072
  "searchEvent": "TECHNICIAN_SEARCH",
1073
+ "notifications": [],
1076
1074
  "contentTrait": "@trait.TechnicianCatalog",
1077
- "notificationClickEvent": "TECHNICIAN_NOTIFICATIONS_OPEN",
1078
- "notifications": []
1075
+ "appName": "Field Service",
1076
+ "notificationClickEvent": "TECHNICIAN_NOTIFICATIONS_OPEN"
1079
1077
  },
1080
1078
  "events": {
1081
1079
  "NOTIFY_CLICK": "TECHNICIAN_NOTIFICATIONS_OPEN",
@@ -1163,47 +1161,45 @@
1163
1161
  "main",
1164
1162
  {
1165
1163
  "gap": "lg",
1166
- "type": "stack",
1167
- "direction": "vertical",
1168
1164
  "children": [
1169
1165
  {
1170
- "direction": "horizontal",
1171
- "justify": "between",
1172
- "type": "stack",
1173
1166
  "align": "center",
1167
+ "type": "stack",
1174
1168
  "children": [
1175
1169
  {
1170
+ "type": "stack",
1171
+ "gap": "sm",
1172
+ "align": "center",
1173
+ "direction": "horizontal",
1176
1174
  "children": [
1177
1175
  {
1178
- "name": "hard-hat",
1179
- "type": "icon"
1176
+ "type": "icon",
1177
+ "name": "hard-hat"
1180
1178
  },
1181
1179
  {
1182
- "type": "typography",
1183
1180
  "content": "Technicians",
1184
- "variant": "h2"
1181
+ "variant": "h2",
1182
+ "type": "typography"
1185
1183
  }
1186
- ],
1187
- "gap": "sm",
1188
- "type": "stack",
1189
- "direction": "horizontal",
1190
- "align": "center"
1184
+ ]
1191
1185
  },
1192
1186
  {
1193
- "gap": "sm",
1194
- "type": "stack",
1195
1187
  "direction": "horizontal",
1188
+ "type": "stack",
1189
+ "gap": "sm",
1196
1190
  "children": [
1197
1191
  {
1198
1192
  "variant": "primary",
1199
1193
  "icon": "user-plus",
1200
1194
  "type": "button",
1201
- "action": "CREATE",
1202
- "label": "Add Technician"
1195
+ "label": "Add Technician",
1196
+ "action": "CREATE"
1203
1197
  }
1204
1198
  ]
1205
1199
  }
1206
1200
  ],
1201
+ "direction": "horizontal",
1202
+ "justify": "between",
1207
1203
  "gap": "md"
1208
1204
  },
1209
1205
  {
@@ -1214,8 +1210,8 @@
1214
1210
  "type": "divider"
1215
1211
  },
1216
1212
  {
1217
- "variant": "h3",
1218
1213
  "type": "typography",
1214
+ "variant": "h3",
1219
1215
  "content": "Dispatch Board"
1220
1216
  },
1221
1217
  "@trait.TechnicianDispatchBoard",
@@ -1223,12 +1219,14 @@
1223
1219
  "type": "divider"
1224
1220
  },
1225
1221
  {
1226
- "variant": "h3",
1227
1222
  "type": "typography",
1228
- "content": "Field Check-In"
1223
+ "content": "Field Check-In",
1224
+ "variant": "h3"
1229
1225
  },
1230
1226
  "@trait.TechnicianFieldCheckin"
1231
- ]
1227
+ ],
1228
+ "type": "stack",
1229
+ "direction": "vertical"
1232
1230
  }
1233
1231
  ]
1234
1232
  ]
@@ -1247,6 +1245,10 @@
1247
1245
  "render-ui",
1248
1246
  "main",
1249
1247
  {
1248
+ "align": "center",
1249
+ "gap": "md",
1250
+ "type": "stack",
1251
+ "className": "py-8",
1250
1252
  "children": [
1251
1253
  {
1252
1254
  "type": "icon",
@@ -1258,23 +1260,19 @@
1258
1260
  "content": "No notifications"
1259
1261
  },
1260
1262
  {
1261
- "content": "You're all caught up.",
1262
1263
  "color": "muted",
1263
- "type": "typography",
1264
- "variant": "caption"
1264
+ "variant": "caption",
1265
+ "content": "You're all caught up.",
1266
+ "type": "typography"
1265
1267
  },
1266
1268
  {
1267
1269
  "variant": "ghost",
1270
+ "label": "Back to technicians",
1268
1271
  "action": "INIT",
1269
- "type": "button",
1270
- "label": "Back to technicians"
1272
+ "type": "button"
1271
1273
  }
1272
1274
  ],
1273
- "className": "py-8",
1274
- "type": "stack",
1275
- "gap": "md",
1276
- "direction": "vertical",
1277
- "align": "center"
1275
+ "direction": "vertical"
1278
1276
  }
1279
1277
  ]
1280
1278
  ]
@@ -1288,11 +1286,13 @@
1288
1286
  "name": "TechnicianBrowseList",
1289
1287
  "linkedEntity": "TechnicianRow",
1290
1288
  "config": {
1289
+ "cols": 1.0,
1290
+ "gap": "sm",
1291
1291
  "fields": [
1292
1292
  {
1293
+ "name": "name",
1293
1294
  "variant": "h4",
1294
- "icon": "hard-hat",
1295
- "name": "name"
1295
+ "icon": "hard-hat"
1296
1296
  },
1297
1297
  {
1298
1298
  "name": "phone",
@@ -1307,16 +1307,14 @@
1307
1307
  "variant": "badge"
1308
1308
  },
1309
1309
  {
1310
- "name": "currentOrderId",
1311
- "variant": "caption"
1310
+ "variant": "caption",
1311
+ "name": "currentOrderId"
1312
1312
  },
1313
1313
  {
1314
- "variant": "caption",
1315
- "name": "lastSeenAt"
1314
+ "name": "lastSeenAt",
1315
+ "variant": "caption"
1316
1316
  }
1317
1317
  ],
1318
- "cols": 1.0,
1319
- "gap": "sm",
1320
1318
  "itemActions": [
1321
1319
  {
1322
1320
  "variant": "ghost",
@@ -1329,9 +1327,9 @@
1329
1327
  "variant": "ghost"
1330
1328
  },
1331
1329
  {
1332
- "label": "Delete",
1333
1330
  "event": "DELETE",
1334
- "variant": "danger"
1331
+ "variant": "danger",
1332
+ "label": "Delete"
1335
1333
  }
1336
1334
  ]
1337
1335
  },
@@ -1372,7 +1370,6 @@
1372
1370
  {
1373
1371
  "ref": "Checkin.traits.CheckinScan",
1374
1372
  "name": "TechnicianFieldCheckin",
1375
- "linkedEntity": "TechnicianRow",
1376
1373
  "config": {
1377
1374
  "mode": "geo",
1378
1375
  "title": "Technician Check-In"
@@ -1384,8 +1381,8 @@
1384
1381
  "linkedEntity": "TechnicianRow",
1385
1382
  "config": {
1386
1383
  "title": "Add Technician",
1387
- "icon": "user-plus",
1388
1384
  "mode": "create",
1385
+ "icon": "user-plus",
1389
1386
  "fields": [
1390
1387
  "name",
1391
1388
  "phone",
@@ -1416,7 +1413,7 @@
1416
1413
  "linkedEntity": "TechnicianRow",
1417
1414
  "config": {
1418
1415
  "icon": "edit",
1419
- "mode": "edit",
1416
+ "title": "Edit Technician",
1420
1417
  "fields": [
1421
1418
  "name",
1422
1419
  "phone",
@@ -1426,7 +1423,7 @@
1426
1423
  "lat",
1427
1424
  "lng"
1428
1425
  ],
1429
- "title": "Edit Technician"
1426
+ "mode": "edit"
1430
1427
  },
1431
1428
  "events": {
1432
1429
  "OPEN": "EDIT"
@@ -1447,9 +1444,6 @@
1447
1444
  "name": "TechnicianView",
1448
1445
  "linkedEntity": "TechnicianRow",
1449
1446
  "config": {
1450
- "title": "View Technician",
1451
- "icon": "eye",
1452
- "mode": "edit",
1453
1447
  "fields": [
1454
1448
  "name",
1455
1449
  "phone",
@@ -1459,7 +1453,10 @@
1459
1453
  "lat",
1460
1454
  "lng",
1461
1455
  "lastSeenAt"
1462
- ]
1456
+ ],
1457
+ "mode": "edit",
1458
+ "icon": "eye",
1459
+ "title": "View Technician"
1463
1460
  },
1464
1461
  "events": {
1465
1462
  "OPEN": "VIEW"
@@ -1718,30 +1715,29 @@
1718
1715
  {
1719
1716
  "ref": "AppShell.traits.AppLayout",
1720
1717
  "name": "JobCheckinAppLayout",
1721
- "linkedEntity": "JobCheckinRow",
1722
1718
  "config": {
1723
- "notificationClickEvent": "JOB_CHECKIN_NOTIFICATIONS_OPEN",
1724
- "searchEvent": "JOB_CHECKIN_SEARCH",
1725
- "notifications": [],
1726
- "contentTrait": "@trait.JobCheckinComposer",
1727
- "appName": "Field Service",
1728
1719
  "navItems": [
1729
1720
  {
1730
- "label": "Work Orders",
1731
1721
  "href": "/workorders",
1732
- "icon": "clipboard-list"
1722
+ "icon": "clipboard-list",
1723
+ "label": "Work Orders"
1733
1724
  },
1734
1725
  {
1735
- "icon": "hard-hat",
1736
1726
  "label": "Technicians",
1737
- "href": "/technicians"
1727
+ "href": "/technicians",
1728
+ "icon": "hard-hat"
1738
1729
  },
1739
1730
  {
1740
- "label": "Check In",
1731
+ "href": "/jobs/checkin",
1741
1732
  "icon": "map-pin",
1742
- "href": "/jobs/checkin"
1733
+ "label": "Check In"
1743
1734
  }
1744
- ]
1735
+ ],
1736
+ "notificationClickEvent": "JOB_CHECKIN_NOTIFICATIONS_OPEN",
1737
+ "appName": "Field Service",
1738
+ "searchEvent": "JOB_CHECKIN_SEARCH",
1739
+ "contentTrait": "@trait.JobCheckinComposer",
1740
+ "notifications": []
1745
1741
  },
1746
1742
  "events": {
1747
1743
  "SEARCH": "JOB_CHECKIN_SEARCH",
@@ -1774,13 +1770,13 @@
1774
1770
  "render-ui",
1775
1771
  "main",
1776
1772
  {
1777
- "direction": "vertical",
1778
1773
  "gap": "lg",
1774
+ "direction": "vertical",
1779
1775
  "type": "stack",
1780
1776
  "className": "max-w-3xl mx-auto w-full",
1781
1777
  "children": [
1782
1778
  {
1783
- "direction": "horizontal",
1779
+ "type": "stack",
1784
1780
  "children": [
1785
1781
  {
1786
1782
  "type": "icon",
@@ -1792,31 +1788,31 @@
1792
1788
  "variant": "h2"
1793
1789
  }
1794
1790
  ],
1795
- "align": "center",
1796
1791
  "gap": "sm",
1797
- "type": "stack"
1792
+ "direction": "horizontal",
1793
+ "align": "center"
1798
1794
  },
1799
1795
  {
1800
- "variant": "caption",
1801
- "color": "muted",
1796
+ "content": "Verify your arrival, complete the job, and capture the customer's signature.",
1802
1797
  "type": "typography",
1803
- "content": "Verify your arrival, complete the job, and capture the customer's signature."
1798
+ "variant": "caption",
1799
+ "color": "muted"
1804
1800
  },
1805
1801
  {
1806
1802
  "type": "divider"
1807
1803
  },
1808
1804
  {
1805
+ "variant": "h3",
1809
1806
  "content": "1. Arrival check-in",
1810
- "type": "typography",
1811
- "variant": "h3"
1807
+ "type": "typography"
1812
1808
  },
1813
1809
  "@trait.JobArrivalCheckin",
1814
1810
  {
1815
1811
  "type": "divider"
1816
1812
  },
1817
1813
  {
1818
- "type": "typography",
1819
1814
  "variant": "h3",
1815
+ "type": "typography",
1820
1816
  "content": "2. Customer signature"
1821
1817
  },
1822
1818
  "@trait.JobCompletionSignature"