@almadar/std 14.9.0 → 14.10.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 (35) hide show
  1. package/behaviors/registry/app/organisms/std-api-gateway.orb +419 -171
  2. package/behaviors/registry/app/organisms/std-booking-system.orb +760 -620
  3. package/behaviors/registry/app/organisms/std-cicd-pipeline.orb +477 -229
  4. package/behaviors/registry/app/organisms/std-cms.orb +433 -298
  5. package/behaviors/registry/app/organisms/std-crm.orb +355 -215
  6. package/behaviors/registry/app/organisms/std-devops-dashboard.orb +504 -369
  7. package/behaviors/registry/app/organisms/std-finance-tracker.orb +271 -189
  8. package/behaviors/registry/app/organisms/std-healthcare.orb +676 -468
  9. package/behaviors/registry/app/organisms/std-helpdesk.orb +246 -166
  10. package/behaviors/registry/app/organisms/std-hr-portal.orb +534 -399
  11. package/behaviors/registry/app/organisms/std-iot-dashboard.orb +420 -340
  12. package/behaviors/registry/app/organisms/std-lms.orb +462 -378
  13. package/behaviors/registry/app/organisms/std-project-manager.orb +282 -200
  14. package/behaviors/registry/app/organisms/std-realtime-chat.orb +317 -235
  15. package/behaviors/registry/app/organisms/std-social-feed.orb +256 -137
  16. package/behaviors/registry/app/organisms/std-trading-dashboard.orb +342 -218
  17. package/behaviors/registry/core/molecules/std-app-layout.orb +90 -21
  18. package/dist/behaviors/registry/app/organisms/std-api-gateway.orb +419 -171
  19. package/dist/behaviors/registry/app/organisms/std-booking-system.orb +760 -620
  20. package/dist/behaviors/registry/app/organisms/std-cicd-pipeline.orb +477 -229
  21. package/dist/behaviors/registry/app/organisms/std-cms.orb +433 -298
  22. package/dist/behaviors/registry/app/organisms/std-crm.orb +355 -215
  23. package/dist/behaviors/registry/app/organisms/std-devops-dashboard.orb +504 -369
  24. package/dist/behaviors/registry/app/organisms/std-finance-tracker.orb +271 -189
  25. package/dist/behaviors/registry/app/organisms/std-healthcare.orb +676 -468
  26. package/dist/behaviors/registry/app/organisms/std-helpdesk.orb +246 -166
  27. package/dist/behaviors/registry/app/organisms/std-hr-portal.orb +534 -399
  28. package/dist/behaviors/registry/app/organisms/std-iot-dashboard.orb +420 -340
  29. package/dist/behaviors/registry/app/organisms/std-lms.orb +462 -378
  30. package/dist/behaviors/registry/app/organisms/std-project-manager.orb +282 -200
  31. package/dist/behaviors/registry/app/organisms/std-realtime-chat.orb +317 -235
  32. package/dist/behaviors/registry/app/organisms/std-social-feed.orb +256 -137
  33. package/dist/behaviors/registry/app/organisms/std-trading-dashboard.orb +342 -218
  34. package/dist/behaviors/registry/core/molecules/std-app-layout.orb +90 -21
  35. package/package.json +1 -1
@@ -109,16 +109,18 @@
109
109
  "ref": "AppShell.traits.AppLayout",
110
110
  "name": "EmployeeAppLayout",
111
111
  "config": {
112
+ "appName": "HRPortal",
113
+ "contentTrait": "@trait.EmployeeCatalog",
112
114
  "navItems": [
113
115
  {
114
- "href": "/employees",
116
+ "icon": "users",
115
117
  "label": "Employees",
116
- "icon": "users"
118
+ "href": "/employees"
117
119
  },
118
120
  {
121
+ "href": "/onboarding",
119
122
  "label": "Onboarding",
120
- "icon": "clipboard-check",
121
- "href": "/onboarding"
123
+ "icon": "clipboard-check"
122
124
  },
123
125
  {
124
126
  "href": "/timeoff",
@@ -126,16 +128,14 @@
126
128
  "label": "Time Off"
127
129
  },
128
130
  {
129
- "label": "Org Chart",
130
131
  "icon": "git-branch",
131
- "href": "/org-chart"
132
+ "href": "/org-chart",
133
+ "label": "Org Chart"
132
134
  }
133
135
  ],
134
136
  "searchEvent": "EMPLOYEE_SEARCH",
135
137
  "notifications": [],
136
- "notificationClickEvent": "EMPLOYEE_NOTIFICATIONS_OPEN",
137
- "contentTrait": "@trait.EmployeeCatalog",
138
- "appName": "HRPortal"
138
+ "notificationClickEvent": "EMPLOYEE_NOTIFICATIONS_OPEN"
139
139
  },
140
140
  "events": {
141
141
  "NOTIFY_CLICK": "EMPLOYEE_NOTIFICATIONS_OPEN",
@@ -223,53 +223,55 @@
223
223
  "main",
224
224
  {
225
225
  "direction": "vertical",
226
+ "type": "stack",
227
+ "gap": "lg",
226
228
  "children": [
227
229
  {
230
+ "gap": "md",
228
231
  "direction": "horizontal",
232
+ "type": "stack",
229
233
  "children": [
230
234
  {
231
- "type": "stack",
232
- "direction": "horizontal",
233
- "align": "center",
234
235
  "gap": "sm",
236
+ "align": "center",
237
+ "direction": "horizontal",
235
238
  "children": [
236
239
  {
237
- "name": "users",
238
- "type": "icon"
240
+ "type": "icon",
241
+ "name": "users"
239
242
  },
240
243
  {
241
- "variant": "h2",
242
244
  "type": "typography",
245
+ "variant": "h2",
243
246
  "content": "Employees"
244
247
  }
245
- ]
248
+ ],
249
+ "type": "stack"
246
250
  },
247
251
  {
248
- "direction": "horizontal",
249
252
  "type": "stack",
253
+ "gap": "sm",
250
254
  "children": [
251
255
  {
252
- "icon": "plus",
253
- "type": "button",
254
- "action": "CREATE",
255
256
  "variant": "primary",
256
- "label": "Add Employee"
257
+ "action": "CREATE",
258
+ "label": "Add Employee",
259
+ "type": "button",
260
+ "icon": "plus"
257
261
  }
258
262
  ],
259
- "gap": "sm"
263
+ "direction": "horizontal"
260
264
  }
261
265
  ],
262
266
  "align": "center",
263
- "type": "stack",
264
- "gap": "md",
265
267
  "justify": "between"
266
268
  },
267
269
  {
268
270
  "type": "divider"
269
271
  },
270
272
  {
271
- "direction": "horizontal",
272
273
  "type": "stack",
274
+ "direction": "horizontal",
273
275
  "gap": "sm",
274
276
  "children": [
275
277
  "@trait.EmployeeSearch",
@@ -282,9 +284,7 @@
282
284
  "type": "divider"
283
285
  },
284
286
  "@trait.EmployeeBrowseList"
285
- ],
286
- "gap": "lg",
287
- "type": "stack"
287
+ ]
288
288
  }
289
289
  ]
290
290
  ]
@@ -305,32 +305,32 @@
305
305
  {
306
306
  "type": "stack",
307
307
  "align": "center",
308
- "direction": "vertical",
309
308
  "className": "py-8",
310
309
  "children": [
311
310
  {
312
- "name": "bell",
313
- "type": "icon"
311
+ "type": "icon",
312
+ "name": "bell"
314
313
  },
315
314
  {
316
315
  "type": "typography",
317
- "content": "No notifications",
318
- "variant": "h3"
316
+ "variant": "h3",
317
+ "content": "No notifications"
319
318
  },
320
319
  {
321
- "content": "You're all caught up.",
322
320
  "color": "muted",
321
+ "type": "typography",
323
322
  "variant": "caption",
324
- "type": "typography"
323
+ "content": "You're all caught up."
325
324
  },
326
325
  {
327
326
  "label": "Back to employees",
328
- "type": "button",
327
+ "action": "INIT",
329
328
  "variant": "ghost",
330
- "action": "INIT"
329
+ "type": "button"
331
330
  }
332
331
  ],
333
- "gap": "md"
332
+ "gap": "md",
333
+ "direction": "vertical"
334
334
  }
335
335
  ]
336
336
  ]
@@ -343,8 +343,8 @@
343
343
  "ref": "Search.traits.SearchResultSearch",
344
344
  "name": "EmployeeSearch",
345
345
  "config": {
346
- "event": "SEARCH",
347
- "placeholder": "Search employees by name…"
346
+ "placeholder": "Search employees by name…",
347
+ "event": "SEARCH"
348
348
  }
349
349
  },
350
350
  {
@@ -353,7 +353,6 @@
353
353
  "config": {
354
354
  "filters": [
355
355
  {
356
- "label": "Department",
357
356
  "field": "department",
358
357
  "options": [
359
358
  "engineering",
@@ -363,18 +362,19 @@
363
362
  "hr",
364
363
  "finance"
365
364
  ],
366
- "filterType": "select"
365
+ "filterType": "select",
366
+ "label": "Department"
367
367
  },
368
368
  {
369
- "field": "role",
370
369
  "options": [
371
370
  "manager",
372
371
  "lead",
373
372
  "ic",
374
373
  "intern"
375
374
  ],
376
- "filterType": "select",
377
- "label": "Role"
375
+ "field": "role",
376
+ "label": "Role",
377
+ "filterType": "select"
378
378
  },
379
379
  {
380
380
  "options": [
@@ -394,33 +394,30 @@
394
394
  "ref": "Stats.traits.StatsItemStats",
395
395
  "name": "EmployeeStats",
396
396
  "config": {
397
+ "title": "Workforce Overview",
397
398
  "metrics": [
398
399
  {
399
- "label": "Total Employees",
400
- "format": "number",
401
- "aggregation": "count",
402
400
  "icon": "users",
403
- "variant": "primary"
401
+ "format": "number",
402
+ "label": "Total Employees",
403
+ "variant": "primary",
404
+ "aggregation": "count"
404
405
  },
405
406
  {
406
407
  "label": "By Department",
407
- "format": "number",
408
- "aggregation": "count",
408
+ "icon": "layers",
409
409
  "variant": "default",
410
- "icon": "layers"
410
+ "aggregation": "count",
411
+ "format": "number"
411
412
  },
412
413
  {
413
- "format": "number",
414
- "label": "New This Month",
415
- "icon": "user-plus",
416
414
  "aggregation": "count",
417
- "variant": "info"
415
+ "variant": "info",
416
+ "icon": "user-plus",
417
+ "label": "New This Month",
418
+ "format": "number"
418
419
  },
419
420
  {
420
- "aggregation": "count",
421
- "icon": "calendar-off",
422
- "variant": "warning",
423
- "format": "number",
424
421
  "filter": [
425
422
  "fn",
426
423
  "row",
@@ -430,10 +427,13 @@
430
427
  "leave"
431
428
  ]
432
429
  ],
433
- "label": "On Leave"
430
+ "icon": "calendar-off",
431
+ "label": "On Leave",
432
+ "variant": "warning",
433
+ "aggregation": "count",
434
+ "format": "number"
434
435
  }
435
- ],
436
- "title": "Workforce Overview"
436
+ ]
437
437
  },
438
438
  "listens": [
439
439
  {
@@ -450,13 +450,13 @@
450
450
  "ref": "Graphs.traits.GraphItemGraph",
451
451
  "name": "EmployeeGraphs",
452
452
  "config": {
453
- "chartType": "pie",
454
453
  "categoryField": "department",
455
- "showLegend": true,
456
454
  "title": "Employees by Department",
457
455
  "height": 280.0,
456
+ "showLegend": true,
458
457
  "aggregation": "count",
459
- "subtitle": "Headcount distribution"
458
+ "subtitle": "Headcount distribution",
459
+ "chartType": "pie"
460
460
  },
461
461
  "listens": [
462
462
  {
@@ -474,6 +474,25 @@
474
474
  "name": "EmployeeBrowseList",
475
475
  "linkedEntity": "Employee",
476
476
  "config": {
477
+ "itemActions": [
478
+ {
479
+ "label": "View",
480
+ "event": "VIEW",
481
+ "variant": "ghost"
482
+ },
483
+ {
484
+ "event": "EDIT",
485
+ "variant": "ghost",
486
+ "label": "Edit"
487
+ },
488
+ {
489
+ "label": "Delete",
490
+ "event": "DELETE",
491
+ "variant": "danger"
492
+ }
493
+ ],
494
+ "gap": "sm",
495
+ "imageField": "avatar",
477
496
  "fields": [
478
497
  {
479
498
  "name": "name",
@@ -493,31 +512,12 @@
493
512
  "name": "email"
494
513
  },
495
514
  {
496
- "format": "date",
497
- "name": "hireDate",
498
515
  "variant": "caption",
499
- "label": "Joined"
500
- }
501
- ],
502
- "imageField": "avatar",
503
- "itemActions": [
504
- {
505
- "label": "View",
506
- "event": "VIEW",
507
- "variant": "ghost"
508
- },
509
- {
510
- "event": "EDIT",
511
- "variant": "ghost",
512
- "label": "Edit"
513
- },
514
- {
515
- "event": "DELETE",
516
- "label": "Delete",
517
- "variant": "danger"
516
+ "name": "hireDate",
517
+ "label": "Joined",
518
+ "format": "date"
518
519
  }
519
- ],
520
- "gap": "sm"
520
+ ]
521
521
  },
522
522
  "listens": [
523
523
  {
@@ -576,8 +576,8 @@
576
576
  "name": "EmployeeCreate",
577
577
  "linkedEntity": "Employee",
578
578
  "config": {
579
- "mode": "create",
580
579
  "icon": "plus-circle",
580
+ "mode": "create",
581
581
  "title": "Add Employee",
582
582
  "fields": [
583
583
  "name",
@@ -608,6 +608,7 @@
608
608
  "name": "EmployeeEdit",
609
609
  "linkedEntity": "Employee",
610
610
  "config": {
611
+ "title": "Edit Employee",
611
612
  "fields": [
612
613
  "name",
613
614
  "email",
@@ -617,8 +618,7 @@
617
618
  "status"
618
619
  ],
619
620
  "mode": "edit",
620
- "icon": "edit",
621
- "title": "Edit Employee"
621
+ "icon": "edit"
622
622
  },
623
623
  "events": {
624
624
  "OPEN": "EDIT",
@@ -641,8 +641,8 @@
641
641
  "linkedEntity": "Employee",
642
642
  "config": {
643
643
  "title": "Employee Details",
644
- "icon": "eye",
645
644
  "mode": "edit",
645
+ "icon": "eye",
646
646
  "fields": [
647
647
  "name",
648
648
  "email",
@@ -671,14 +671,14 @@
671
671
  "name": "EmployeeDelete",
672
672
  "linkedEntity": "Employee",
673
673
  "config": {
674
- "confirmLabel": "Delete",
674
+ "title": "Delete Employee",
675
675
  "alertMessage": "This action cannot be undone.",
676
- "icon": "alert-triangle",
677
- "title": "Delete Employee"
676
+ "confirmLabel": "Delete",
677
+ "icon": "alert-triangle"
678
678
  },
679
679
  "events": {
680
- "CONFIRM": "EMPLOYEE_DELETED",
681
- "REQUEST": "DELETE"
680
+ "REQUEST": "DELETE",
681
+ "CONFIRM": "EMPLOYEE_DELETED"
682
682
  },
683
683
  "listens": [
684
684
  {
@@ -884,13 +884,13 @@
884
884
  "config": {
885
885
  "bucket": "employee-avatars",
886
886
  "maxSize": 5242880.0,
887
+ "acl": "public-read",
887
888
  "allowedMimeTypes": [
888
889
  "image/jpeg",
889
890
  "image/png",
890
891
  "image/webp"
891
892
  ],
892
- "uiTrait": "@trait.EmployeeAvatarUploadForm",
893
- "acl": "public-read"
893
+ "uiTrait": "@trait.EmployeeAvatarUploadForm"
894
894
  }
895
895
  },
896
896
  {
@@ -935,39 +935,39 @@
935
935
  "render-ui",
936
936
  "main",
937
937
  {
938
+ "gap": "md",
938
939
  "children": [
939
940
  {
940
- "type": "stack",
941
- "align": "center",
942
- "gap": "sm",
943
941
  "children": [
944
942
  {
945
- "type": "icon",
946
- "name": "image"
943
+ "name": "image",
944
+ "type": "icon"
947
945
  },
948
946
  {
949
- "variant": "h3",
950
947
  "content": "Upload Avatar",
951
- "type": "typography"
948
+ "type": "typography",
949
+ "variant": "h3"
952
950
  }
953
951
  ],
952
+ "type": "stack",
953
+ "gap": "sm",
954
+ "align": "center",
954
955
  "direction": "horizontal"
955
956
  },
956
957
  {
957
958
  "inputType": "text",
958
- "placeholder": "Choose file path…",
959
- "type": "input"
959
+ "type": "input",
960
+ "placeholder": "Choose file path…"
960
961
  },
961
962
  {
963
+ "variant": "primary",
962
964
  "type": "button",
963
- "label": "Upload",
964
965
  "action": "UPLOAD",
965
- "variant": "primary",
966
- "icon": "upload"
966
+ "icon": "upload",
967
+ "label": "Upload"
967
968
  }
968
969
  ],
969
970
  "direction": "vertical",
970
- "gap": "md",
971
971
  "type": "stack"
972
972
  }
973
973
  ]
@@ -1041,6 +1041,10 @@
1041
1041
  {
1042
1042
  "name": "OnboardingOrbital",
1043
1043
  "uses": [
1044
+ {
1045
+ "from": "std/behaviors/std-app-layout",
1046
+ "as": "AppShell"
1047
+ },
1044
1048
  {
1045
1049
  "from": "std/behaviors/std-service-email",
1046
1050
  "as": "Email"
@@ -1089,6 +1093,44 @@
1089
1093
  ]
1090
1094
  },
1091
1095
  "traits": [
1096
+ {
1097
+ "ref": "AppShell.traits.AppLayout",
1098
+ "name": "OnboardingAppLayout",
1099
+ "linkedEntity": "Onboarding",
1100
+ "config": {
1101
+ "appName": "HRPortal",
1102
+ "navItems": [
1103
+ {
1104
+ "label": "Employees",
1105
+ "href": "/employees",
1106
+ "icon": "users"
1107
+ },
1108
+ {
1109
+ "icon": "clipboard-check",
1110
+ "href": "/onboarding",
1111
+ "label": "Onboarding"
1112
+ },
1113
+ {
1114
+ "label": "Time Off",
1115
+ "href": "/timeoff",
1116
+ "icon": "calendar"
1117
+ },
1118
+ {
1119
+ "href": "/org-chart",
1120
+ "icon": "git-branch",
1121
+ "label": "Org Chart"
1122
+ }
1123
+ ],
1124
+ "notifications": [],
1125
+ "notificationClickEvent": "ONBOARDING_NOTIFICATIONS_OPEN",
1126
+ "contentTrait": "@trait.OnboardingWizard",
1127
+ "searchEvent": "ONBOARDING_SEARCH"
1128
+ },
1129
+ "events": {
1130
+ "SEARCH": "ONBOARDING_SEARCH",
1131
+ "NOTIFY_CLICK": "ONBOARDING_NOTIFICATIONS_OPEN"
1132
+ }
1133
+ },
1092
1134
  {
1093
1135
  "name": "OnboardingWizard",
1094
1136
  "category": "interaction",
@@ -1349,25 +1391,23 @@
1349
1391
  "render-ui",
1350
1392
  "main",
1351
1393
  {
1352
- "className": "max-w-xl mx-auto w-full",
1353
- "gap": "lg",
1354
1394
  "direction": "vertical",
1355
1395
  "children": [
1356
1396
  {
1357
- "gap": "sm",
1397
+ "direction": "horizontal",
1358
1398
  "children": [
1359
1399
  {
1360
1400
  "name": "clipboard-check",
1361
1401
  "type": "icon"
1362
1402
  },
1363
1403
  {
1364
- "variant": "h2",
1404
+ "type": "typography",
1365
1405
  "content": "Employee Onboarding",
1366
- "type": "typography"
1406
+ "variant": "h2"
1367
1407
  }
1368
1408
  ],
1369
- "direction": "horizontal",
1370
1409
  "align": "center",
1410
+ "gap": "sm",
1371
1411
  "type": "stack"
1372
1412
  },
1373
1413
  {
@@ -1377,26 +1417,26 @@
1377
1417
  "Setup Checklist",
1378
1418
  "Review"
1379
1419
  ],
1380
- "type": "wizard-progress",
1381
- "currentStep": 0.0
1420
+ "currentStep": 0.0,
1421
+ "type": "wizard-progress"
1382
1422
  },
1383
1423
  {
1384
1424
  "type": "divider"
1385
1425
  },
1386
1426
  {
1387
- "content": "Employee Details",
1427
+ "variant": "h3",
1388
1428
  "type": "typography",
1389
- "variant": "h3"
1429
+ "content": "Employee Details"
1390
1430
  },
1391
1431
  {
1392
- "mode": "create",
1393
1432
  "type": "form-section",
1394
- "showCancel": false,
1433
+ "mode": "create",
1434
+ "submitEvent": "NEXT",
1395
1435
  "fields": [
1396
1436
  {
1437
+ "min": 2.0,
1397
1438
  "name": "employeeName",
1398
- "required": true,
1399
- "min": 2.0
1439
+ "required": true
1400
1440
  },
1401
1441
  {
1402
1442
  "type": "email",
@@ -1409,10 +1449,12 @@
1409
1449
  }
1410
1450
  ],
1411
1451
  "submitLabel": "Continue",
1412
- "submitEvent": "NEXT"
1452
+ "showCancel": false
1413
1453
  }
1414
1454
  ],
1415
- "type": "stack"
1455
+ "className": "max-w-xl mx-auto w-full",
1456
+ "type": "stack",
1457
+ "gap": "lg"
1416
1458
  }
1417
1459
  ]
1418
1460
  ]
@@ -1447,50 +1489,50 @@
1447
1489
  "render-ui",
1448
1490
  "main",
1449
1491
  {
1450
- "direction": "vertical",
1451
1492
  "children": [
1452
1493
  {
1453
1494
  "type": "typography",
1454
- "variant": "h2",
1455
- "content": "Employee Onboarding"
1495
+ "content": "Employee Onboarding",
1496
+ "variant": "h2"
1456
1497
  },
1457
1498
  {
1499
+ "currentStep": 1.0,
1458
1500
  "type": "wizard-progress",
1459
1501
  "steps": [
1460
1502
  "Employee Details",
1461
1503
  "Manager Assignment",
1462
1504
  "Setup Checklist",
1463
1505
  "Review"
1464
- ],
1465
- "currentStep": 1.0
1506
+ ]
1466
1507
  },
1467
1508
  {
1468
1509
  "type": "divider"
1469
1510
  },
1470
1511
  {
1471
- "content": "Manager Assignment",
1472
1512
  "type": "typography",
1513
+ "content": "Manager Assignment",
1473
1514
  "variant": "h3"
1474
1515
  },
1475
1516
  {
1476
- "type": "form-section",
1477
- "submitLabel": "Continue",
1478
- "entity": "@entity",
1479
1517
  "cancelLabel": "Back",
1480
1518
  "mode": "edit",
1519
+ "entity": "@entity",
1481
1520
  "submitEvent": "NEXT",
1482
- "cancelEvent": "PREV",
1521
+ "type": "form-section",
1483
1522
  "fields": [
1484
1523
  {
1485
1524
  "name": "manager",
1486
1525
  "required": true
1487
1526
  }
1488
- ]
1527
+ ],
1528
+ "cancelEvent": "PREV",
1529
+ "submitLabel": "Continue"
1489
1530
  }
1490
1531
  ],
1491
1532
  "className": "max-w-xl mx-auto w-full",
1492
- "type": "stack",
1493
- "gap": "lg"
1533
+ "gap": "lg",
1534
+ "direction": "vertical",
1535
+ "type": "stack"
1494
1536
  }
1495
1537
  ]
1496
1538
  ]
@@ -1516,45 +1558,45 @@
1516
1558
  "render-ui",
1517
1559
  "main",
1518
1560
  {
1561
+ "direction": "vertical",
1519
1562
  "gap": "lg",
1520
1563
  "className": "max-w-xl mx-auto w-full",
1521
- "direction": "vertical",
1522
1564
  "children": [
1523
1565
  {
1524
- "variant": "h2",
1525
1566
  "type": "typography",
1567
+ "variant": "h2",
1526
1568
  "content": "Employee Onboarding"
1527
1569
  },
1528
1570
  {
1571
+ "currentStep": 2.0,
1529
1572
  "type": "wizard-progress",
1530
1573
  "steps": [
1531
1574
  "Employee Details",
1532
1575
  "Manager Assignment",
1533
1576
  "Setup Checklist",
1534
1577
  "Review"
1535
- ],
1536
- "currentStep": 2.0
1578
+ ]
1537
1579
  },
1538
1580
  {
1539
1581
  "type": "divider"
1540
1582
  },
1541
1583
  {
1584
+ "content": "Setup Checklist",
1542
1585
  "variant": "h3",
1543
- "type": "typography",
1544
- "content": "Setup Checklist"
1586
+ "type": "typography"
1545
1587
  },
1546
1588
  {
1547
- "cancelEvent": "PREV",
1548
- "submitLabel": "Continue",
1549
1589
  "type": "form-section",
1550
- "submitEvent": "NEXT",
1551
- "entity": "@entity",
1552
- "cancelLabel": "Back",
1553
1590
  "mode": "edit",
1591
+ "entity": "@entity",
1592
+ "submitLabel": "Continue",
1554
1593
  "fields": [
1555
1594
  "equipmentReady",
1556
1595
  "accessGranted"
1557
- ]
1596
+ ],
1597
+ "cancelLabel": "Back",
1598
+ "cancelEvent": "PREV",
1599
+ "submitEvent": "NEXT"
1558
1600
  }
1559
1601
  ],
1560
1602
  "type": "stack"
@@ -1571,58 +1613,58 @@
1571
1613
  "render-ui",
1572
1614
  "main",
1573
1615
  {
1616
+ "type": "stack",
1617
+ "direction": "vertical",
1618
+ "className": "max-w-xl mx-auto w-full",
1574
1619
  "children": [
1575
1620
  {
1576
- "variant": "h2",
1577
1621
  "content": "Employee Onboarding",
1578
- "type": "typography"
1622
+ "type": "typography",
1623
+ "variant": "h2"
1579
1624
  },
1580
1625
  {
1626
+ "currentStep": 0.0,
1627
+ "type": "wizard-progress",
1581
1628
  "steps": [
1582
1629
  "Employee Details",
1583
1630
  "Manager Assignment",
1584
1631
  "Setup Checklist",
1585
1632
  "Review"
1586
- ],
1587
- "type": "wizard-progress",
1588
- "currentStep": 0.0
1633
+ ]
1589
1634
  },
1590
1635
  {
1591
1636
  "type": "divider"
1592
1637
  },
1593
1638
  {
1639
+ "type": "typography",
1594
1640
  "content": "Employee Details",
1595
- "variant": "h3",
1596
- "type": "typography"
1641
+ "variant": "h3"
1597
1642
  },
1598
1643
  {
1599
- "submitLabel": "Continue",
1600
1644
  "showCancel": false,
1645
+ "submitLabel": "Continue",
1646
+ "mode": "edit",
1647
+ "entity": "@entity",
1648
+ "type": "form-section",
1601
1649
  "fields": [
1602
1650
  {
1603
1651
  "min": 2.0,
1604
- "name": "employeeName",
1605
- "required": true
1652
+ "required": true,
1653
+ "name": "employeeName"
1606
1654
  },
1607
1655
  {
1608
1656
  "name": "email",
1609
- "type": "email",
1610
- "required": true
1657
+ "required": true,
1658
+ "type": "email"
1611
1659
  },
1612
1660
  {
1613
- "name": "department",
1614
- "required": true
1661
+ "required": true,
1662
+ "name": "department"
1615
1663
  }
1616
1664
  ],
1617
- "type": "form-section",
1618
- "submitEvent": "NEXT",
1619
- "entity": "@entity",
1620
- "mode": "edit"
1665
+ "submitEvent": "NEXT"
1621
1666
  }
1622
1667
  ],
1623
- "type": "stack",
1624
- "direction": "vertical",
1625
- "className": "max-w-xl mx-auto w-full",
1626
1668
  "gap": "lg"
1627
1669
  }
1628
1670
  ]
@@ -1654,7 +1696,7 @@
1654
1696
  "render-ui",
1655
1697
  "main",
1656
1698
  {
1657
- "type": "stack",
1699
+ "gap": "lg",
1658
1700
  "children": [
1659
1701
  {
1660
1702
  "content": "Review Onboarding",
@@ -1662,14 +1704,14 @@
1662
1704
  "variant": "h2"
1663
1705
  },
1664
1706
  {
1707
+ "type": "wizard-progress",
1665
1708
  "steps": [
1666
1709
  "Employee Details",
1667
1710
  "Manager Assignment",
1668
1711
  "Setup Checklist",
1669
1712
  "Review"
1670
1713
  ],
1671
- "currentStep": 3.0,
1672
- "type": "wizard-progress"
1714
+ "currentStep": 3.0
1673
1715
  },
1674
1716
  {
1675
1717
  "type": "divider"
@@ -1678,43 +1720,46 @@
1678
1720
  "type": "stack",
1679
1721
  "children": [
1680
1722
  {
1681
- "type": "stack",
1682
- "direction": "horizontal",
1683
- "justify": "between",
1684
1723
  "children": [
1685
1724
  {
1725
+ "type": "typography",
1686
1726
  "content": "Employee",
1687
- "variant": "caption",
1688
- "type": "typography"
1727
+ "variant": "caption"
1689
1728
  },
1690
1729
  {
1730
+ "type": "typography",
1691
1731
  "variant": "body",
1692
- "content": "@entity.employeeName",
1693
- "type": "typography"
1732
+ "content": "@entity.employeeName"
1694
1733
  }
1695
1734
  ],
1735
+ "justify": "between",
1736
+ "type": "stack",
1737
+ "direction": "horizontal",
1696
1738
  "gap": "md"
1697
1739
  },
1698
1740
  {
1699
- "gap": "md",
1700
- "type": "stack",
1701
- "direction": "horizontal",
1702
1741
  "justify": "between",
1742
+ "direction": "horizontal",
1743
+ "gap": "md",
1703
1744
  "children": [
1704
1745
  {
1705
- "content": "Email",
1706
1746
  "type": "typography",
1707
- "variant": "caption"
1747
+ "variant": "caption",
1748
+ "content": "Email"
1708
1749
  },
1709
1750
  {
1751
+ "variant": "body",
1710
1752
  "content": "@entity.email",
1711
- "type": "typography",
1712
- "variant": "body"
1753
+ "type": "typography"
1713
1754
  }
1714
- ]
1755
+ ],
1756
+ "type": "stack"
1715
1757
  },
1716
1758
  {
1717
1759
  "gap": "md",
1760
+ "justify": "between",
1761
+ "direction": "horizontal",
1762
+ "type": "stack",
1718
1763
  "children": [
1719
1764
  {
1720
1765
  "variant": "caption",
@@ -1722,34 +1767,33 @@
1722
1767
  "type": "typography"
1723
1768
  },
1724
1769
  {
1725
- "type": "typography",
1770
+ "content": "@entity.department",
1726
1771
  "variant": "body",
1727
- "content": "@entity.department"
1772
+ "type": "typography"
1728
1773
  }
1729
- ],
1730
- "justify": "between",
1731
- "type": "stack",
1732
- "direction": "horizontal"
1774
+ ]
1733
1775
  },
1734
1776
  {
1777
+ "justify": "between",
1735
1778
  "children": [
1736
1779
  {
1780
+ "variant": "caption",
1737
1781
  "content": "Manager",
1738
- "type": "typography",
1739
- "variant": "caption"
1782
+ "type": "typography"
1740
1783
  },
1741
1784
  {
1742
1785
  "variant": "body",
1743
- "content": "@entity.manager",
1744
- "type": "typography"
1786
+ "type": "typography",
1787
+ "content": "@entity.manager"
1745
1788
  }
1746
1789
  ],
1747
- "direction": "horizontal",
1748
- "justify": "between",
1749
1790
  "type": "stack",
1750
- "gap": "md"
1791
+ "gap": "md",
1792
+ "direction": "horizontal"
1751
1793
  },
1752
1794
  {
1795
+ "type": "stack",
1796
+ "gap": "md",
1753
1797
  "children": [
1754
1798
  {
1755
1799
  "type": "typography",
@@ -1758,32 +1802,30 @@
1758
1802
  },
1759
1803
  {
1760
1804
  "type": "typography",
1761
- "variant": "body",
1762
- "content": "@entity.equipmentReady"
1805
+ "content": "@entity.equipmentReady",
1806
+ "variant": "body"
1763
1807
  }
1764
1808
  ],
1765
- "justify": "between",
1766
- "type": "stack",
1767
1809
  "direction": "horizontal",
1768
- "gap": "md"
1810
+ "justify": "between"
1769
1811
  },
1770
1812
  {
1771
- "justify": "between",
1772
- "type": "stack",
1773
1813
  "children": [
1774
1814
  {
1775
- "type": "typography",
1776
1815
  "variant": "caption",
1777
- "content": "Access Granted"
1816
+ "content": "Access Granted",
1817
+ "type": "typography"
1778
1818
  },
1779
1819
  {
1820
+ "type": "typography",
1780
1821
  "variant": "body",
1781
- "content": "@entity.accessGranted",
1782
- "type": "typography"
1822
+ "content": "@entity.accessGranted"
1783
1823
  }
1784
1824
  ],
1785
1825
  "direction": "horizontal",
1786
- "gap": "md"
1826
+ "type": "stack",
1827
+ "gap": "md",
1828
+ "justify": "between"
1787
1829
  }
1788
1830
  ],
1789
1831
  "gap": "sm",
@@ -1795,28 +1837,28 @@
1795
1837
  {
1796
1838
  "children": [
1797
1839
  {
1840
+ "type": "button",
1841
+ "action": "PREV",
1798
1842
  "variant": "ghost",
1799
1843
  "icon": "arrow-left",
1800
- "type": "button",
1801
- "label": "Back",
1802
- "action": "PREV"
1844
+ "label": "Back"
1803
1845
  },
1804
1846
  {
1805
- "icon": "check",
1806
- "action": "COMPLETE",
1807
1847
  "variant": "primary",
1808
1848
  "type": "button",
1849
+ "action": "COMPLETE",
1850
+ "icon": "check",
1809
1851
  "label": "Complete Onboarding"
1810
1852
  }
1811
1853
  ],
1812
- "type": "stack",
1813
1854
  "direction": "horizontal",
1814
- "gap": "sm",
1815
- "justify": "between"
1855
+ "type": "stack",
1856
+ "justify": "between",
1857
+ "gap": "sm"
1816
1858
  }
1817
1859
  ],
1818
- "gap": "lg",
1819
1860
  "direction": "vertical",
1861
+ "type": "stack",
1820
1862
  "className": "max-w-xl mx-auto w-full"
1821
1863
  }
1822
1864
  ]
@@ -1831,50 +1873,50 @@
1831
1873
  "render-ui",
1832
1874
  "main",
1833
1875
  {
1834
- "type": "stack",
1835
- "direction": "vertical",
1836
- "gap": "lg",
1837
- "className": "max-w-xl mx-auto w-full",
1838
1876
  "children": [
1839
1877
  {
1840
- "content": "Employee Onboarding",
1841
1878
  "variant": "h2",
1842
- "type": "typography"
1879
+ "type": "typography",
1880
+ "content": "Employee Onboarding"
1843
1881
  },
1844
1882
  {
1845
- "currentStep": 1.0,
1846
- "type": "wizard-progress",
1847
1883
  "steps": [
1848
1884
  "Employee Details",
1849
1885
  "Manager Assignment",
1850
1886
  "Setup Checklist",
1851
1887
  "Review"
1852
- ]
1888
+ ],
1889
+ "type": "wizard-progress",
1890
+ "currentStep": 1.0
1853
1891
  },
1854
1892
  {
1855
1893
  "type": "divider"
1856
1894
  },
1857
1895
  {
1896
+ "content": "Manager Assignment",
1858
1897
  "type": "typography",
1859
- "variant": "h3",
1860
- "content": "Manager Assignment"
1898
+ "variant": "h3"
1861
1899
  },
1862
1900
  {
1863
- "type": "form-section",
1901
+ "submitEvent": "NEXT",
1864
1902
  "cancelEvent": "PREV",
1865
1903
  "submitLabel": "Continue",
1866
- "submitEvent": "NEXT",
1904
+ "entity": "@entity",
1905
+ "type": "form-section",
1906
+ "cancelLabel": "Back",
1867
1907
  "fields": [
1868
1908
  {
1869
1909
  "name": "manager",
1870
1910
  "required": true
1871
1911
  }
1872
1912
  ],
1873
- "cancelLabel": "Back",
1874
- "mode": "edit",
1875
- "entity": "@entity"
1913
+ "mode": "edit"
1876
1914
  }
1877
- ]
1915
+ ],
1916
+ "direction": "vertical",
1917
+ "gap": "lg",
1918
+ "type": "stack",
1919
+ "className": "max-w-xl mx-auto w-full"
1878
1920
  }
1879
1921
  ]
1880
1922
  ]
@@ -1898,8 +1940,8 @@
1898
1940
  "@entity",
1899
1941
  {
1900
1942
  "emit": {
1901
- "success": "OnboardingSaved",
1902
- "failure": "OnboardingSaveFailed"
1943
+ "failure": "OnboardingSaveFailed",
1944
+ "success": "OnboardingSaved"
1903
1945
  }
1904
1946
  }
1905
1947
  ],
@@ -1909,9 +1951,9 @@
1909
1951
  "send",
1910
1952
  {
1911
1953
  "recipient": "@entity.email",
1912
- "subject": "Welcome to the team",
1954
+ "body": "Welcome aboard! Your manager and equipment have been set up.",
1913
1955
  "sender": "hr@example.com",
1914
- "body": "Welcome aboard! Your manager and equipment have been set up."
1956
+ "subject": "Welcome to the team"
1915
1957
  },
1916
1958
  {
1917
1959
  "emit": {
@@ -1936,35 +1978,35 @@
1936
1978
  "render-ui",
1937
1979
  "main",
1938
1980
  {
1939
- "type": "stack",
1940
1981
  "children": [
1941
1982
  {
1942
1983
  "name": "check-circle",
1943
1984
  "type": "icon"
1944
1985
  },
1945
1986
  {
1987
+ "content": "Onboarding Complete!",
1946
1988
  "type": "typography",
1947
- "variant": "h2",
1948
- "content": "Onboarding Complete!"
1989
+ "variant": "h2"
1949
1990
  },
1950
1991
  {
1951
- "content": "The new employee has been fully onboarded.",
1952
1992
  "variant": "body",
1953
- "type": "typography",
1954
- "color": "muted"
1993
+ "content": "The new employee has been fully onboarded.",
1994
+ "color": "muted",
1995
+ "type": "typography"
1955
1996
  },
1956
1997
  {
1998
+ "type": "button",
1999
+ "action": "RESTART",
1957
2000
  "label": "Start new onboarding",
1958
2001
  "variant": "ghost",
1959
- "action": "RESTART",
1960
- "icon": "rotate-ccw",
1961
- "type": "button"
2002
+ "icon": "rotate-ccw"
1962
2003
  }
1963
2004
  ],
1964
- "direction": "vertical",
1965
- "className": "max-w-xl mx-auto w-full py-12",
1966
2005
  "gap": "lg",
1967
- "align": "center"
2006
+ "align": "center",
2007
+ "className": "max-w-xl mx-auto w-full py-12",
2008
+ "type": "stack",
2009
+ "direction": "vertical"
1968
2010
  }
1969
2011
  ]
1970
2012
  ]
@@ -1978,7 +2020,6 @@
1978
2020
  "render-ui",
1979
2021
  "main",
1980
2022
  {
1981
- "direction": "vertical",
1982
2023
  "children": [
1983
2024
  {
1984
2025
  "variant": "h2",
@@ -1999,26 +2040,27 @@
1999
2040
  "type": "divider"
2000
2041
  },
2001
2042
  {
2043
+ "variant": "h3",
2002
2044
  "content": "Setup Checklist",
2003
- "type": "typography",
2004
- "variant": "h3"
2045
+ "type": "typography"
2005
2046
  },
2006
2047
  {
2007
- "mode": "edit",
2048
+ "entity": "@entity",
2049
+ "submitLabel": "Continue",
2008
2050
  "cancelLabel": "Back",
2051
+ "mode": "edit",
2009
2052
  "fields": [
2010
2053
  "equipmentReady",
2011
2054
  "accessGranted"
2012
2055
  ],
2013
- "entity": "@entity",
2014
- "type": "form-section",
2015
2056
  "cancelEvent": "PREV",
2016
- "submitLabel": "Continue",
2057
+ "type": "form-section",
2017
2058
  "submitEvent": "NEXT"
2018
2059
  }
2019
2060
  ],
2020
- "type": "stack",
2061
+ "direction": "vertical",
2021
2062
  "gap": "lg",
2063
+ "type": "stack",
2022
2064
  "className": "max-w-xl mx-auto w-full"
2023
2065
  }
2024
2066
  ]
@@ -2087,14 +2129,12 @@
2087
2129
  "render-ui",
2088
2130
  "main",
2089
2131
  {
2090
- "type": "stack",
2091
- "gap": "lg",
2092
2132
  "className": "max-w-xl mx-auto w-full",
2093
2133
  "children": [
2094
2134
  {
2095
- "variant": "h2",
2096
2135
  "type": "typography",
2097
- "content": "Employee Onboarding"
2136
+ "content": "Employee Onboarding",
2137
+ "variant": "h2"
2098
2138
  },
2099
2139
  {
2100
2140
  "type": "wizard-progress",
@@ -2115,8 +2155,6 @@
2115
2155
  "variant": "h3"
2116
2156
  },
2117
2157
  {
2118
- "submitLabel": "Continue",
2119
- "type": "form-section",
2120
2158
  "submitEvent": "NEXT",
2121
2159
  "fields": [
2122
2160
  {
@@ -2125,20 +2163,24 @@
2125
2163
  "min": 2.0
2126
2164
  },
2127
2165
  {
2166
+ "type": "email",
2128
2167
  "required": true,
2129
- "name": "email",
2130
- "type": "email"
2168
+ "name": "email"
2131
2169
  },
2132
2170
  {
2133
2171
  "name": "department",
2134
2172
  "required": true
2135
2173
  }
2136
2174
  ],
2175
+ "mode": "create",
2176
+ "type": "form-section",
2137
2177
  "showCancel": false,
2138
- "mode": "create"
2178
+ "submitLabel": "Continue"
2139
2179
  }
2140
2180
  ],
2141
- "direction": "vertical"
2181
+ "type": "stack",
2182
+ "direction": "vertical",
2183
+ "gap": "lg"
2142
2184
  }
2143
2185
  ]
2144
2186
  ]
@@ -2153,6 +2195,9 @@
2153
2195
  "name": "OnboardingPage",
2154
2196
  "path": "/onboarding",
2155
2197
  "traits": [
2198
+ {
2199
+ "ref": "OnboardingAppLayout"
2200
+ },
2156
2201
  {
2157
2202
  "ref": "OnboardingWizard"
2158
2203
  }
@@ -2163,6 +2208,10 @@
2163
2208
  {
2164
2209
  "name": "TimeOffOrbital",
2165
2210
  "uses": [
2211
+ {
2212
+ "from": "std/behaviors/std-app-layout",
2213
+ "as": "AppShell"
2214
+ },
2166
2215
  {
2167
2216
  "from": "std/behaviors/std-browse",
2168
2217
  "as": "Browse"
@@ -2248,6 +2297,44 @@
2248
2297
  ]
2249
2298
  },
2250
2299
  "traits": [
2300
+ {
2301
+ "ref": "AppShell.traits.AppLayout",
2302
+ "name": "TimeOffAppLayout",
2303
+ "linkedEntity": "TimeOff",
2304
+ "config": {
2305
+ "navItems": [
2306
+ {
2307
+ "label": "Employees",
2308
+ "href": "/employees",
2309
+ "icon": "users"
2310
+ },
2311
+ {
2312
+ "label": "Onboarding",
2313
+ "icon": "clipboard-check",
2314
+ "href": "/onboarding"
2315
+ },
2316
+ {
2317
+ "label": "Time Off",
2318
+ "href": "/timeoff",
2319
+ "icon": "calendar"
2320
+ },
2321
+ {
2322
+ "label": "Org Chart",
2323
+ "href": "/org-chart",
2324
+ "icon": "git-branch"
2325
+ }
2326
+ ],
2327
+ "contentTrait": "@trait.TimeOffCatalog",
2328
+ "notifications": [],
2329
+ "notificationClickEvent": "TIME_OFF_NOTIFICATIONS_OPEN",
2330
+ "appName": "HRPortal",
2331
+ "searchEvent": "TIME_OFF_SEARCH"
2332
+ },
2333
+ "events": {
2334
+ "SEARCH": "TIME_OFF_SEARCH",
2335
+ "NOTIFY_CLICK": "TIME_OFF_NOTIFICATIONS_OPEN"
2336
+ }
2337
+ },
2251
2338
  {
2252
2339
  "name": "TimeOffCatalog",
2253
2340
  "category": "interaction",
@@ -2292,12 +2379,9 @@
2292
2379
  {
2293
2380
  "children": [
2294
2381
  {
2295
- "gap": "md",
2296
- "justify": "between",
2297
- "type": "stack",
2382
+ "direction": "horizontal",
2298
2383
  "children": [
2299
2384
  {
2300
- "type": "stack",
2301
2385
  "align": "center",
2302
2386
  "children": [
2303
2387
  {
@@ -2306,30 +2390,33 @@
2306
2390
  },
2307
2391
  {
2308
2392
  "type": "typography",
2309
- "variant": "h2",
2310
- "content": "Time Off Requests"
2393
+ "content": "Time Off Requests",
2394
+ "variant": "h2"
2311
2395
  }
2312
2396
  ],
2397
+ "type": "stack",
2313
2398
  "direction": "horizontal",
2314
2399
  "gap": "sm"
2315
2400
  },
2316
2401
  {
2402
+ "gap": "sm",
2317
2403
  "type": "stack",
2318
2404
  "children": [
2319
2405
  {
2320
2406
  "label": "Request Time Off",
2321
- "variant": "primary",
2322
- "action": "CREATE",
2323
2407
  "type": "button",
2324
- "icon": "plus"
2408
+ "variant": "primary",
2409
+ "icon": "plus",
2410
+ "action": "CREATE"
2325
2411
  }
2326
2412
  ],
2327
- "gap": "sm",
2328
2413
  "direction": "horizontal"
2329
2414
  }
2330
2415
  ],
2416
+ "justify": "between",
2417
+ "type": "stack",
2331
2418
  "align": "center",
2332
- "direction": "horizontal"
2419
+ "gap": "md"
2333
2420
  },
2334
2421
  {
2335
2422
  "type": "divider"
@@ -2356,9 +2443,9 @@
2356
2443
  "name": "TimeOffCalendar",
2357
2444
  "linkedEntity": "TimeOff",
2358
2445
  "config": {
2446
+ "colorField": "status",
2359
2447
  "dateField": "startDate",
2360
- "titleField": "reason",
2361
- "colorField": "status"
2448
+ "titleField": "reason"
2362
2449
  },
2363
2450
  "listens": [
2364
2451
  {
@@ -2392,29 +2479,13 @@
2392
2479
  "name": "TimeOffBrowseList",
2393
2480
  "linkedEntity": "TimeOff",
2394
2481
  "config": {
2395
- "itemActions": [
2396
- {
2397
- "label": "View",
2398
- "event": "VIEW",
2399
- "variant": "ghost"
2400
- },
2401
- {
2402
- "variant": "ghost",
2403
- "event": "EDIT",
2404
- "label": "Edit"
2405
- },
2406
- {
2407
- "variant": "danger",
2408
- "label": "Delete",
2409
- "event": "DELETE"
2410
- }
2411
- ],
2482
+ "gap": "sm",
2412
2483
  "fields": [
2413
2484
  {
2414
2485
  "icon": "user",
2415
- "variant": "h4",
2416
2486
  "name": "employeeName",
2417
- "label": "Employee"
2487
+ "label": "Employee",
2488
+ "variant": "h4"
2418
2489
  },
2419
2490
  {
2420
2491
  "label": "Type",
@@ -2422,19 +2493,19 @@
2422
2493
  "name": "leaveType"
2423
2494
  },
2424
2495
  {
2425
- "name": "status",
2426
- "variant": "badge"
2496
+ "variant": "badge",
2497
+ "name": "status"
2427
2498
  },
2428
2499
  {
2429
- "name": "startDate",
2430
2500
  "format": "date",
2431
- "variant": "caption",
2432
- "label": "From"
2501
+ "name": "startDate",
2502
+ "label": "From",
2503
+ "variant": "caption"
2433
2504
  },
2434
2505
  {
2506
+ "variant": "caption",
2435
2507
  "name": "endDate",
2436
2508
  "label": "To",
2437
- "variant": "caption",
2438
2509
  "format": "date"
2439
2510
  },
2440
2511
  {
@@ -2442,7 +2513,23 @@
2442
2513
  "variant": "caption"
2443
2514
  }
2444
2515
  ],
2445
- "gap": "sm"
2516
+ "itemActions": [
2517
+ {
2518
+ "label": "View",
2519
+ "event": "VIEW",
2520
+ "variant": "ghost"
2521
+ },
2522
+ {
2523
+ "label": "Edit",
2524
+ "event": "EDIT",
2525
+ "variant": "ghost"
2526
+ },
2527
+ {
2528
+ "label": "Delete",
2529
+ "variant": "danger",
2530
+ "event": "DELETE"
2531
+ }
2532
+ ]
2446
2533
  },
2447
2534
  "listens": [
2448
2535
  {
@@ -2477,6 +2564,7 @@
2477
2564
  "linkedEntity": "TimeOff",
2478
2565
  "config": {
2479
2566
  "mode": "create",
2567
+ "icon": "plus-circle",
2480
2568
  "fields": [
2481
2569
  "employeeName",
2482
2570
  "employeeEmail",
@@ -2486,12 +2574,11 @@
2486
2574
  "reason",
2487
2575
  "status"
2488
2576
  ],
2489
- "icon": "plus-circle",
2490
2577
  "title": "Request Time Off"
2491
2578
  },
2492
2579
  "events": {
2493
- "OPEN": "CREATE",
2494
- "SAVE": "TIME_OFF_CREATED"
2580
+ "SAVE": "TIME_OFF_CREATED",
2581
+ "OPEN": "CREATE"
2495
2582
  },
2496
2583
  "listens": [
2497
2584
  {
@@ -2509,8 +2596,9 @@
2509
2596
  "name": "TimeOffEdit",
2510
2597
  "linkedEntity": "TimeOff",
2511
2598
  "config": {
2512
- "icon": "edit",
2513
2599
  "title": "Edit Time Off",
2600
+ "icon": "edit",
2601
+ "mode": "edit",
2514
2602
  "fields": [
2515
2603
  "employeeName",
2516
2604
  "employeeEmail",
@@ -2519,12 +2607,11 @@
2519
2607
  "endDate",
2520
2608
  "reason",
2521
2609
  "status"
2522
- ],
2523
- "mode": "edit"
2610
+ ]
2524
2611
  },
2525
2612
  "events": {
2526
- "OPEN": "EDIT",
2527
- "SAVE": "TIME_OFF_UPDATED"
2613
+ "SAVE": "TIME_OFF_UPDATED",
2614
+ "OPEN": "EDIT"
2528
2615
  },
2529
2616
  "listens": [
2530
2617
  {
@@ -2542,7 +2629,7 @@
2542
2629
  "name": "TimeOffView",
2543
2630
  "linkedEntity": "TimeOff",
2544
2631
  "config": {
2545
- "mode": "edit",
2632
+ "icon": "eye",
2546
2633
  "fields": [
2547
2634
  "employeeName",
2548
2635
  "employeeEmail",
@@ -2553,7 +2640,7 @@
2553
2640
  "status"
2554
2641
  ],
2555
2642
  "title": "Time Off Details",
2556
- "icon": "eye"
2643
+ "mode": "edit"
2557
2644
  },
2558
2645
  "events": {
2559
2646
  "OPEN": "VIEW"
@@ -2809,8 +2896,8 @@
2809
2896
  "send",
2810
2897
  {
2811
2898
  "subject": "Time-off @payload.data.status",
2812
- "sender": "hr@example.com",
2813
2899
  "recipient": "@payload.data.employeeEmail",
2900
+ "sender": "hr@example.com",
2814
2901
  "body": "Your time-off request has been updated. Status: @payload.data.status."
2815
2902
  },
2816
2903
  {
@@ -2874,6 +2961,9 @@
2874
2961
  "name": "TimeOffPage",
2875
2962
  "path": "/timeoff",
2876
2963
  "traits": [
2964
+ {
2965
+ "ref": "TimeOffAppLayout"
2966
+ },
2877
2967
  {
2878
2968
  "ref": "TimeOffCatalog"
2879
2969
  },
@@ -2905,6 +2995,10 @@
2905
2995
  {
2906
2996
  "name": "OrgChartOrbital",
2907
2997
  "uses": [
2998
+ {
2999
+ "from": "std/behaviors/std-app-layout",
3000
+ "as": "AppShell"
3001
+ },
2908
3002
  {
2909
3003
  "from": "std/behaviors/std-related",
2910
3004
  "as": "Related"
@@ -2942,6 +3036,44 @@
2942
3036
  ]
2943
3037
  },
2944
3038
  "traits": [
3039
+ {
3040
+ "ref": "AppShell.traits.AppLayout",
3041
+ "name": "OrgChartAppLayout",
3042
+ "linkedEntity": "OrgNode",
3043
+ "config": {
3044
+ "notificationClickEvent": "ORG_CHART_NOTIFICATIONS_OPEN",
3045
+ "navItems": [
3046
+ {
3047
+ "href": "/employees",
3048
+ "icon": "users",
3049
+ "label": "Employees"
3050
+ },
3051
+ {
3052
+ "label": "Onboarding",
3053
+ "href": "/onboarding",
3054
+ "icon": "clipboard-check"
3055
+ },
3056
+ {
3057
+ "icon": "calendar",
3058
+ "label": "Time Off",
3059
+ "href": "/timeoff"
3060
+ },
3061
+ {
3062
+ "href": "/org-chart",
3063
+ "icon": "git-branch",
3064
+ "label": "Org Chart"
3065
+ }
3066
+ ],
3067
+ "contentTrait": "@trait.OrgChartDisplay",
3068
+ "notifications": [],
3069
+ "appName": "HRPortal",
3070
+ "searchEvent": "ORG_CHART_SEARCH"
3071
+ },
3072
+ "events": {
3073
+ "SEARCH": "ORG_CHART_SEARCH",
3074
+ "NOTIFY_CLICK": "ORG_CHART_NOTIFICATIONS_OPEN"
3075
+ }
3076
+ },
2945
3077
  {
2946
3078
  "ref": "Related.traits.RelatedItemList",
2947
3079
  "name": "EmployeeRelated",
@@ -3055,8 +3187,8 @@
3055
3187
  "OrgNode",
3056
3188
  {
3057
3189
  "emit": {
3058
- "success": "OrgChartLoaded",
3059
- "failure": "OrgChartLoadFailed"
3190
+ "failure": "OrgChartLoadFailed",
3191
+ "success": "OrgChartLoaded"
3060
3192
  }
3061
3193
  }
3062
3194
  ],
@@ -3065,41 +3197,40 @@
3065
3197
  "main",
3066
3198
  {
3067
3199
  "direction": "vertical",
3068
- "gap": "lg",
3069
- "className": "max-w-6xl mx-auto w-full p-4",
3200
+ "type": "stack",
3070
3201
  "children": [
3071
3202
  {
3072
- "align": "center",
3203
+ "justify": "between",
3073
3204
  "type": "stack",
3074
3205
  "direction": "horizontal",
3075
- "justify": "between",
3206
+ "gap": "md",
3076
3207
  "children": [
3077
3208
  {
3078
3209
  "direction": "horizontal",
3079
- "type": "stack",
3080
3210
  "gap": "sm",
3081
- "align": "center",
3082
3211
  "children": [
3083
3212
  {
3084
3213
  "name": "git-branch",
3085
3214
  "type": "icon"
3086
3215
  },
3087
3216
  {
3088
- "variant": "h2",
3089
3217
  "type": "typography",
3218
+ "variant": "h2",
3090
3219
  "content": "Org Chart"
3091
3220
  }
3092
- ]
3221
+ ],
3222
+ "align": "center",
3223
+ "type": "stack"
3093
3224
  },
3094
3225
  {
3095
3226
  "type": "button",
3096
- "icon": "refresh-cw",
3097
- "label": "Refresh",
3227
+ "action": "REFRESH",
3098
3228
  "variant": "secondary",
3099
- "action": "REFRESH"
3229
+ "label": "Refresh",
3230
+ "icon": "refresh-cw"
3100
3231
  }
3101
3232
  ],
3102
- "gap": "md"
3233
+ "align": "center"
3103
3234
  },
3104
3235
  {
3105
3236
  "type": "divider"
@@ -3107,50 +3238,51 @@
3107
3238
  {
3108
3239
  "type": "graph-view",
3109
3240
  "width": 800.0,
3110
- "nodes": [
3111
- {
3112
- "label": "CEO",
3113
- "id": "ceo"
3114
- },
3241
+ "height": 400.0,
3242
+ "edges": [
3115
3243
  {
3116
- "id": "vp-eng",
3117
- "label": "VP Engineering"
3244
+ "source": "ceo",
3245
+ "target": "vp-eng"
3118
3246
  },
3119
3247
  {
3120
- "id": "vp-sales",
3121
- "label": "VP Sales"
3248
+ "target": "vp-sales",
3249
+ "source": "ceo"
3122
3250
  },
3123
3251
  {
3124
- "id": "lead-fe",
3125
- "label": "Frontend Lead"
3252
+ "source": "vp-eng",
3253
+ "target": "lead-fe"
3126
3254
  },
3127
3255
  {
3128
- "id": "lead-be",
3129
- "label": "Backend Lead"
3256
+ "source": "vp-eng",
3257
+ "target": "lead-be"
3130
3258
  }
3131
3259
  ],
3132
- "edges": [
3260
+ "nodes": [
3133
3261
  {
3134
- "target": "vp-eng",
3135
- "source": "ceo"
3262
+ "id": "ceo",
3263
+ "label": "CEO"
3136
3264
  },
3137
3265
  {
3138
- "source": "ceo",
3139
- "target": "vp-sales"
3266
+ "id": "vp-eng",
3267
+ "label": "VP Engineering"
3140
3268
  },
3141
3269
  {
3142
- "source": "vp-eng",
3143
- "target": "lead-fe"
3270
+ "label": "VP Sales",
3271
+ "id": "vp-sales"
3144
3272
  },
3145
3273
  {
3146
- "source": "vp-eng",
3147
- "target": "lead-be"
3274
+ "label": "Frontend Lead",
3275
+ "id": "lead-fe"
3276
+ },
3277
+ {
3278
+ "label": "Backend Lead",
3279
+ "id": "lead-be"
3148
3280
  }
3149
- ],
3150
- "height": 400.0
3281
+ ]
3151
3282
  }
3152
3283
  ],
3153
- "type": "stack"
3284
+ "className": "max-w-6xl mx-auto w-full p-4",
3285
+ "gap": "lg"
3154
3286
  }
3155
3287
  ]
3156
3288
  ]
@@ -3168,36 +3300,36 @@
3168
3300
  "className": "max-w-6xl mx-auto w-full p-4",
3169
3301
  "children": [
3170
3302
  {
3303
+ "justify": "between",
3171
3304
  "gap": "md",
3305
+ "direction": "horizontal",
3306
+ "align": "center",
3172
3307
  "children": [
3173
3308
  {
3309
+ "direction": "horizontal",
3310
+ "type": "stack",
3311
+ "gap": "sm",
3312
+ "align": "center",
3174
3313
  "children": [
3175
3314
  {
3176
- "type": "icon",
3177
- "name": "git-branch"
3315
+ "name": "git-branch",
3316
+ "type": "icon"
3178
3317
  },
3179
3318
  {
3319
+ "type": "typography",
3180
3320
  "variant": "h2",
3181
- "content": "Org Chart",
3182
- "type": "typography"
3321
+ "content": "Org Chart"
3183
3322
  }
3184
- ],
3185
- "direction": "horizontal",
3186
- "gap": "sm",
3187
- "align": "center",
3188
- "type": "stack"
3323
+ ]
3189
3324
  },
3190
3325
  {
3191
- "action": "REFRESH",
3192
- "icon": "refresh-cw",
3193
- "label": "Refresh",
3194
3326
  "variant": "secondary",
3327
+ "label": "Refresh",
3328
+ "icon": "refresh-cw",
3329
+ "action": "REFRESH",
3195
3330
  "type": "button"
3196
3331
  }
3197
3332
  ],
3198
- "justify": "between",
3199
- "align": "center",
3200
- "direction": "horizontal",
3201
3333
  "type": "stack"
3202
3334
  },
3203
3335
  {
@@ -3223,34 +3355,34 @@
3223
3355
  "label": "Frontend Lead"
3224
3356
  },
3225
3357
  {
3226
- "id": "lead-be",
3227
- "label": "Backend Lead"
3358
+ "label": "Backend Lead",
3359
+ "id": "lead-be"
3228
3360
  }
3229
3361
  ],
3230
- "type": "graph-view",
3231
3362
  "height": 400.0,
3232
3363
  "edges": [
3233
3364
  {
3234
- "target": "vp-eng",
3235
- "source": "ceo"
3365
+ "source": "ceo",
3366
+ "target": "vp-eng"
3236
3367
  },
3237
3368
  {
3238
- "source": "ceo",
3239
- "target": "vp-sales"
3369
+ "target": "vp-sales",
3370
+ "source": "ceo"
3240
3371
  },
3241
3372
  {
3242
- "target": "lead-fe",
3243
- "source": "vp-eng"
3373
+ "source": "vp-eng",
3374
+ "target": "lead-fe"
3244
3375
  },
3245
3376
  {
3246
3377
  "source": "vp-eng",
3247
3378
  "target": "lead-be"
3248
3379
  }
3249
- ]
3380
+ ],
3381
+ "type": "graph-view"
3250
3382
  }
3251
3383
  ],
3252
- "type": "stack",
3253
- "direction": "vertical"
3384
+ "direction": "vertical",
3385
+ "type": "stack"
3254
3386
  }
3255
3387
  ]
3256
3388
  ]
@@ -3274,21 +3406,21 @@
3274
3406
  "render-ui",
3275
3407
  "main",
3276
3408
  {
3409
+ "type": "stack",
3410
+ "className": "py-12",
3277
3411
  "children": [
3278
3412
  {
3279
3413
  "type": "spinner"
3280
3414
  },
3281
3415
  {
3282
- "color": "muted",
3283
- "content": "Refreshing…",
3416
+ "variant": "caption",
3284
3417
  "type": "typography",
3285
- "variant": "caption"
3418
+ "content": "Refreshing…",
3419
+ "color": "muted"
3286
3420
  }
3287
3421
  ],
3288
3422
  "gap": "md",
3289
- "type": "stack",
3290
3423
  "align": "center",
3291
- "className": "py-12",
3292
3424
  "direction": "vertical"
3293
3425
  }
3294
3426
  ]
@@ -3304,6 +3436,9 @@
3304
3436
  "name": "OrgChartPage",
3305
3437
  "path": "/org-chart",
3306
3438
  "traits": [
3439
+ {
3440
+ "ref": "OrgChartAppLayout"
3441
+ },
3307
3442
  {
3308
3443
  "ref": "OrgChartDisplay"
3309
3444
  },