@tailor-platform/app-shell 1.19.0 → 1.20.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/dist/app-shell-core.css +2 -2
- package/dist/app-shell.d.ts +807 -130
- package/dist/app-shell.js +12419 -10930
- package/dist/{appshell-DQTz-QwK.js → appshell-B4QkQvXF.js} +377 -360
- package/dist/fonts/inter.css +7 -7
- package/dist/fonts/noto-sans-jp.css +116 -116
- package/dist/testing.d.ts +119 -89
- package/dist/testing.js +1 -1
- package/dist/vite-plugin.d.ts +119 -89
- package/package.json +10 -8
- package/skills/app-shell-patterns/SKILL.md +4 -3
- package/skills/app-shell-patterns/references/api/create-ai-gateway-client.md +32 -2
- package/skills/app-shell-patterns/references/api/define-module.md +5 -5
- package/skills/app-shell-patterns/references/api/router/use-params.md +2 -2
- package/skills/app-shell-patterns/references/api/use-ai-chat.md +46 -8
- package/skills/app-shell-patterns/references/api/use-app-shell-config.md +4 -4
- package/skills/app-shell-patterns/references/api/use-app-shell-data.md +5 -5
- package/skills/app-shell-patterns/references/api/use-app-shell.md +2 -2
- package/skills/app-shell-patterns/references/api/use-auth.md +3 -3
- package/skills/app-shell-patterns/references/api/use-route-error.md +12 -12
- package/skills/app-shell-patterns/references/components/action-panel.md +4 -2
- package/skills/app-shell-patterns/references/components/activity-card.md +3 -3
- package/skills/app-shell-patterns/references/components/ai-chat.md +37 -3
- package/skills/app-shell-patterns/references/components/app-shell.md +6 -5
- package/skills/app-shell-patterns/references/components/card.md +2 -2
- package/skills/app-shell-patterns/references/components/data-table.md +87 -31
- package/skills/app-shell-patterns/references/components/date-picker.md +2 -2
- package/skills/app-shell-patterns/references/components/default-sidebar.md +2 -2
- package/skills/app-shell-patterns/references/components/dialog.md +8 -0
- package/skills/app-shell-patterns/references/components/filter-rail.md +10 -3
- package/skills/app-shell-patterns/references/components/form.md +5 -5
- package/skills/app-shell-patterns/references/components/global-header-layout.md +31 -8
- package/skills/app-shell-patterns/references/components/layout.md +24 -17
- package/skills/app-shell-patterns/references/components/select.md +8 -0
- package/skills/app-shell-patterns/references/components/sidebar-group.md +9 -7
- package/skills/app-shell-patterns/references/components/sidebar-layout.md +74 -11
- package/skills/app-shell-patterns/references/components/sidebar-section.md +8 -8
- package/skills/app-shell-patterns/references/components/tabs.md +32 -2
- package/skills/app-shell-patterns/references/components/tree.md +342 -0
- package/skills/app-shell-patterns/references/components/with-guard.md +5 -5
- package/skills/app-shell-patterns/references/concepts/authentication.md +1 -1
- package/skills/app-shell-patterns/references/concepts/routing-navigation.md +3 -3
- package/skills/app-shell-patterns/references/concepts/styling-theming.md +13 -13
- package/skills/app-shell-patterns/references/migrations.md +20 -0
- package/skills/app-shell-patterns/references/pages/document-detail.md +8 -12
- package/skills/app-shell-patterns/references/patterns/interaction-multi-select.md +1 -1
package/dist/vite-plugin.d.ts
CHANGED
|
@@ -16,17 +16,17 @@ declare namespace Root {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
declare namespace
|
|
19
|
+
declare namespace Title {
|
|
20
20
|
var displayName: string;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
declare namespace
|
|
24
|
+
declare namespace Description {
|
|
25
25
|
var displayName: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
declare namespace
|
|
29
|
+
declare namespace Root {
|
|
30
30
|
var displayName: string;
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -36,32 +36,12 @@ declare namespace Row {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
declare namespace
|
|
40
|
-
var displayName: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
declare namespace Cell {
|
|
45
|
-
var displayName: string;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
declare namespace Caption {
|
|
50
|
-
var displayName: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
declare namespace Root {
|
|
55
|
-
var displayName: string;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
declare namespace Title {
|
|
39
|
+
declare namespace Group {
|
|
60
40
|
var displayName: string;
|
|
61
41
|
}
|
|
62
42
|
|
|
63
43
|
|
|
64
|
-
declare namespace
|
|
44
|
+
declare namespace Separator {
|
|
65
45
|
var displayName: string;
|
|
66
46
|
}
|
|
67
47
|
|
|
@@ -86,42 +66,42 @@ declare namespace Fallback {
|
|
|
86
66
|
}
|
|
87
67
|
|
|
88
68
|
|
|
89
|
-
declare namespace
|
|
69
|
+
declare namespace Root {
|
|
90
70
|
var displayName: string;
|
|
91
71
|
}
|
|
92
72
|
|
|
93
73
|
|
|
94
|
-
declare namespace
|
|
74
|
+
declare namespace Header {
|
|
95
75
|
var displayName: string;
|
|
96
76
|
}
|
|
97
77
|
|
|
98
78
|
|
|
99
|
-
declare namespace
|
|
79
|
+
declare namespace Body {
|
|
100
80
|
var displayName: string;
|
|
101
81
|
}
|
|
102
82
|
|
|
103
83
|
|
|
104
|
-
declare namespace
|
|
84
|
+
declare namespace Footer {
|
|
105
85
|
var displayName: string;
|
|
106
86
|
}
|
|
107
87
|
|
|
108
88
|
|
|
109
|
-
declare namespace
|
|
89
|
+
declare namespace Row {
|
|
110
90
|
var displayName: string;
|
|
111
91
|
}
|
|
112
92
|
|
|
113
93
|
|
|
114
|
-
declare namespace
|
|
94
|
+
declare namespace Head {
|
|
115
95
|
var displayName: string;
|
|
116
96
|
}
|
|
117
97
|
|
|
118
98
|
|
|
119
|
-
declare namespace
|
|
99
|
+
declare namespace Cell {
|
|
120
100
|
var displayName: string;
|
|
121
101
|
}
|
|
122
102
|
|
|
123
103
|
|
|
124
|
-
declare namespace
|
|
104
|
+
declare namespace Caption {
|
|
125
105
|
var displayName: string;
|
|
126
106
|
}
|
|
127
107
|
|
|
@@ -131,52 +111,52 @@ declare namespace Root {
|
|
|
131
111
|
}
|
|
132
112
|
|
|
133
113
|
|
|
134
|
-
declare namespace
|
|
114
|
+
declare namespace Trigger {
|
|
135
115
|
var displayName: string;
|
|
136
116
|
}
|
|
137
117
|
|
|
138
118
|
|
|
139
|
-
declare namespace
|
|
119
|
+
declare namespace Close {
|
|
140
120
|
var displayName: string;
|
|
141
121
|
}
|
|
142
122
|
|
|
143
123
|
|
|
144
|
-
declare namespace
|
|
124
|
+
declare namespace Content {
|
|
145
125
|
var displayName: string;
|
|
146
126
|
}
|
|
147
127
|
|
|
148
128
|
|
|
149
|
-
declare namespace
|
|
129
|
+
declare namespace Header {
|
|
150
130
|
var displayName: string;
|
|
151
131
|
}
|
|
152
132
|
|
|
153
133
|
|
|
154
|
-
declare namespace
|
|
134
|
+
declare namespace Footer {
|
|
155
135
|
var displayName: string;
|
|
156
136
|
}
|
|
157
137
|
|
|
158
138
|
|
|
159
|
-
declare namespace
|
|
139
|
+
declare namespace Title {
|
|
160
140
|
var displayName: string;
|
|
161
141
|
}
|
|
162
142
|
|
|
163
143
|
|
|
164
|
-
declare namespace
|
|
144
|
+
declare namespace Description {
|
|
165
145
|
var displayName: string;
|
|
166
146
|
}
|
|
167
147
|
|
|
168
148
|
|
|
169
|
-
declare namespace
|
|
149
|
+
declare namespace Root {
|
|
170
150
|
var displayName: string;
|
|
171
151
|
}
|
|
172
152
|
|
|
173
153
|
|
|
174
|
-
declare namespace
|
|
154
|
+
declare namespace Header {
|
|
175
155
|
var displayName: string;
|
|
176
156
|
}
|
|
177
157
|
|
|
178
158
|
|
|
179
|
-
declare namespace
|
|
159
|
+
declare namespace Content {
|
|
180
160
|
var displayName: string;
|
|
181
161
|
}
|
|
182
162
|
|
|
@@ -356,162 +336,207 @@ declare namespace Panel {
|
|
|
356
336
|
}
|
|
357
337
|
|
|
358
338
|
|
|
339
|
+
declare namespace Trigger {
|
|
340
|
+
var displayName: string;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
declare namespace Provider {
|
|
345
|
+
var displayName: string;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
|
|
359
349
|
declare namespace Root {
|
|
360
350
|
var displayName: string;
|
|
361
351
|
}
|
|
362
352
|
|
|
363
353
|
|
|
364
|
-
declare namespace
|
|
354
|
+
declare namespace Header {
|
|
365
355
|
var displayName: string;
|
|
366
356
|
}
|
|
367
357
|
|
|
368
358
|
|
|
369
|
-
declare namespace
|
|
359
|
+
declare namespace ClearAll {
|
|
370
360
|
var displayName: string;
|
|
371
361
|
}
|
|
372
362
|
|
|
373
363
|
|
|
374
|
-
declare namespace
|
|
364
|
+
declare namespace Sections {
|
|
375
365
|
var displayName: string;
|
|
376
366
|
}
|
|
377
367
|
|
|
378
368
|
|
|
379
|
-
declare namespace
|
|
369
|
+
declare namespace Settings {
|
|
380
370
|
var displayName: string;
|
|
381
371
|
}
|
|
382
372
|
|
|
383
373
|
|
|
384
|
-
declare namespace
|
|
374
|
+
declare namespace ComboboxRoot {
|
|
385
375
|
var displayName: string;
|
|
386
376
|
}
|
|
387
377
|
|
|
388
378
|
|
|
389
|
-
declare namespace
|
|
379
|
+
declare namespace ComboboxInput {
|
|
390
380
|
var displayName: string;
|
|
391
381
|
}
|
|
392
382
|
|
|
393
383
|
|
|
394
|
-
declare namespace
|
|
384
|
+
declare namespace ComboboxTrigger {
|
|
395
385
|
var displayName: string;
|
|
396
386
|
}
|
|
397
387
|
|
|
398
388
|
|
|
399
|
-
declare namespace
|
|
389
|
+
declare namespace ComboboxInputGroup {
|
|
400
390
|
var displayName: string;
|
|
401
391
|
}
|
|
402
392
|
|
|
403
393
|
|
|
404
|
-
declare namespace
|
|
394
|
+
declare namespace ComboboxContent {
|
|
405
395
|
var displayName: string;
|
|
406
396
|
}
|
|
407
397
|
|
|
408
398
|
|
|
409
|
-
declare namespace
|
|
399
|
+
declare namespace ComboboxList {
|
|
410
400
|
var displayName: string;
|
|
411
401
|
}
|
|
412
402
|
|
|
413
403
|
|
|
414
|
-
declare namespace
|
|
404
|
+
declare namespace ComboboxItem {
|
|
415
405
|
var displayName: string;
|
|
416
406
|
}
|
|
417
407
|
|
|
418
408
|
|
|
419
|
-
declare namespace
|
|
409
|
+
declare namespace ComboboxEmpty {
|
|
420
410
|
var displayName: string;
|
|
421
411
|
}
|
|
422
412
|
|
|
423
413
|
|
|
424
|
-
declare namespace
|
|
414
|
+
declare namespace ComboboxGroup {
|
|
425
415
|
var displayName: string;
|
|
426
416
|
}
|
|
427
417
|
|
|
428
418
|
|
|
429
|
-
declare namespace
|
|
419
|
+
declare namespace ComboboxGroupLabel {
|
|
430
420
|
var displayName: string;
|
|
431
421
|
}
|
|
432
422
|
|
|
433
423
|
|
|
434
|
-
declare namespace
|
|
424
|
+
declare namespace ComboboxClear {
|
|
435
425
|
var displayName: string;
|
|
436
426
|
}
|
|
437
427
|
|
|
438
428
|
|
|
439
|
-
declare namespace
|
|
429
|
+
declare namespace ComboboxChips {
|
|
440
430
|
var displayName: string;
|
|
441
431
|
}
|
|
442
432
|
|
|
443
433
|
|
|
444
|
-
declare namespace
|
|
434
|
+
declare namespace ComboboxChip {
|
|
445
435
|
var displayName: string;
|
|
446
436
|
}
|
|
447
437
|
|
|
448
438
|
|
|
449
|
-
declare namespace
|
|
439
|
+
declare namespace ComboboxChipRemove {
|
|
450
440
|
var displayName: string;
|
|
451
441
|
}
|
|
452
442
|
|
|
453
443
|
|
|
454
|
-
declare namespace
|
|
444
|
+
declare namespace ComboboxValue {
|
|
455
445
|
var displayName: string;
|
|
456
446
|
}
|
|
457
447
|
|
|
458
448
|
|
|
459
|
-
declare namespace
|
|
449
|
+
declare namespace ComboboxStatus {
|
|
460
450
|
var displayName: string;
|
|
461
451
|
}
|
|
462
452
|
|
|
463
453
|
|
|
464
|
-
declare namespace
|
|
454
|
+
declare namespace ComboboxCollection {
|
|
465
455
|
var displayName: string;
|
|
466
456
|
}
|
|
467
457
|
|
|
468
458
|
|
|
469
|
-
declare namespace
|
|
459
|
+
declare namespace Provider {
|
|
470
460
|
var displayName: string;
|
|
471
461
|
}
|
|
472
462
|
|
|
473
463
|
|
|
474
|
-
declare namespace
|
|
464
|
+
declare namespace Root {
|
|
475
465
|
var displayName: string;
|
|
476
466
|
}
|
|
477
467
|
|
|
478
468
|
|
|
479
|
-
declare namespace
|
|
469
|
+
declare namespace Trigger {
|
|
480
470
|
var displayName: string;
|
|
481
471
|
}
|
|
482
472
|
|
|
483
473
|
|
|
484
|
-
declare namespace
|
|
474
|
+
declare namespace Content {
|
|
485
475
|
var displayName: string;
|
|
486
476
|
}
|
|
487
477
|
|
|
488
478
|
|
|
489
|
-
declare namespace
|
|
479
|
+
declare namespace SelectRoot {
|
|
490
480
|
var displayName: string;
|
|
491
481
|
}
|
|
492
482
|
|
|
493
483
|
|
|
494
|
-
declare namespace
|
|
484
|
+
declare namespace SelectTrigger {
|
|
495
485
|
var displayName: string;
|
|
496
486
|
}
|
|
497
487
|
|
|
498
488
|
|
|
499
|
-
declare namespace
|
|
489
|
+
declare namespace SelectValue {
|
|
500
490
|
var displayName: string;
|
|
501
491
|
}
|
|
502
492
|
|
|
503
493
|
|
|
504
|
-
declare namespace
|
|
494
|
+
declare namespace SelectContent {
|
|
505
495
|
var displayName: string;
|
|
506
496
|
}
|
|
507
497
|
|
|
508
498
|
|
|
509
|
-
declare namespace
|
|
499
|
+
declare namespace SelectItem {
|
|
510
500
|
var displayName: string;
|
|
511
501
|
}
|
|
512
502
|
|
|
513
503
|
|
|
514
|
-
declare namespace
|
|
504
|
+
declare namespace SelectGroup {
|
|
505
|
+
var displayName: string;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
declare namespace SelectGroupLabel {
|
|
510
|
+
var displayName: string;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
declare namespace SelectSeparator {
|
|
515
|
+
var displayName: string;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
declare namespace Root {
|
|
520
|
+
var displayName: string;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
declare namespace Viewport {
|
|
525
|
+
var displayName: string;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
declare namespace Row {
|
|
530
|
+
var displayName: string;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
declare namespace Interval {
|
|
535
|
+
var displayName: string;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
declare namespace TimelineLink {
|
|
515
540
|
var displayName: string;
|
|
516
541
|
}
|
|
517
542
|
|
|
@@ -596,76 +621,81 @@ declare namespace AutocompleteStatus {
|
|
|
596
621
|
}
|
|
597
622
|
|
|
598
623
|
|
|
599
|
-
declare namespace
|
|
624
|
+
declare namespace TreeRow {
|
|
600
625
|
var displayName: string;
|
|
601
626
|
}
|
|
602
627
|
|
|
603
628
|
|
|
604
|
-
declare namespace
|
|
629
|
+
declare namespace Root {
|
|
605
630
|
var displayName: string;
|
|
606
631
|
}
|
|
607
632
|
|
|
608
633
|
|
|
609
|
-
declare namespace
|
|
634
|
+
declare namespace Items {
|
|
610
635
|
var displayName: string;
|
|
611
636
|
}
|
|
612
637
|
|
|
613
638
|
|
|
614
|
-
declare namespace
|
|
639
|
+
declare namespace Item {
|
|
615
640
|
var displayName: string;
|
|
616
641
|
}
|
|
617
642
|
|
|
618
643
|
|
|
619
|
-
declare namespace
|
|
644
|
+
declare namespace DataTableRoot {
|
|
620
645
|
var displayName: string;
|
|
621
646
|
}
|
|
622
647
|
|
|
623
648
|
|
|
624
|
-
declare namespace
|
|
649
|
+
declare namespace DataTableTable {
|
|
625
650
|
var displayName: string;
|
|
626
651
|
}
|
|
627
652
|
|
|
628
653
|
|
|
629
|
-
declare namespace
|
|
654
|
+
declare namespace DataTableToolbar {
|
|
630
655
|
var displayName: string;
|
|
631
656
|
}
|
|
632
657
|
|
|
633
658
|
|
|
634
|
-
declare namespace
|
|
659
|
+
declare namespace DataTableColumnSettings {
|
|
635
660
|
var displayName: string;
|
|
636
661
|
}
|
|
637
662
|
|
|
638
663
|
|
|
639
|
-
declare namespace
|
|
664
|
+
declare namespace DataTableFooter {
|
|
640
665
|
var displayName: string;
|
|
641
666
|
}
|
|
642
667
|
|
|
643
668
|
|
|
644
|
-
declare namespace
|
|
669
|
+
declare namespace DataTableFilters {
|
|
645
670
|
var displayName: string;
|
|
646
671
|
}
|
|
647
672
|
|
|
648
673
|
|
|
649
|
-
declare namespace
|
|
674
|
+
declare namespace DataTableBody {
|
|
650
675
|
var displayName: string;
|
|
651
676
|
}
|
|
652
677
|
|
|
653
678
|
|
|
654
|
-
declare namespace
|
|
679
|
+
declare namespace DataTableHeaders {
|
|
655
680
|
var displayName: string;
|
|
656
681
|
}
|
|
657
682
|
|
|
658
683
|
|
|
659
|
-
declare namespace
|
|
684
|
+
declare namespace AddFilterPanel {
|
|
660
685
|
var displayName: string;
|
|
661
686
|
}
|
|
662
687
|
|
|
663
688
|
|
|
664
|
-
declare namespace
|
|
689
|
+
declare namespace AsyncErrorState {
|
|
665
690
|
var displayName: string;
|
|
666
691
|
}
|
|
667
692
|
|
|
668
693
|
|
|
669
|
-
declare namespace
|
|
694
|
+
declare namespace DataTableHeaderContextMenu {
|
|
695
|
+
var displayName: string;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
declare namespace DataTableCellContextMenu {
|
|
670
700
|
var displayName: string;
|
|
671
701
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/app-shell",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "An opinionated React application framework for building ERP applications on Tailor Platform",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"app-shell",
|
|
@@ -65,8 +65,9 @@
|
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@fontsource-variable/noto-sans-jp": "5.3.0",
|
|
68
|
-
"@microsoft/api-extractor": "7.
|
|
69
|
-
"@
|
|
68
|
+
"@microsoft/api-extractor": "7.60.1",
|
|
69
|
+
"@tailor-platform/eslint-plugin-app-shell": "0.3.0",
|
|
70
|
+
"@tailwindcss/postcss": "^4.3.5",
|
|
70
71
|
"@testing-library/react": "16.3.3",
|
|
71
72
|
"@testing-library/user-event": "14.6.8",
|
|
72
73
|
"@types/encoding-japanese": "2.2.1",
|
|
@@ -75,20 +76,21 @@
|
|
|
75
76
|
"@types/react": "^19",
|
|
76
77
|
"@types/react-dom": "^19",
|
|
77
78
|
"@vitejs/plugin-react": "^6.1.0",
|
|
78
|
-
"@vitest/browser-playwright": "4.1.
|
|
79
|
-
"@vitest/coverage-v8": "4.1.
|
|
79
|
+
"@vitest/browser-playwright": "4.1.12",
|
|
80
|
+
"@vitest/coverage-v8": "4.1.12",
|
|
80
81
|
"happy-dom": "21.0.4",
|
|
81
82
|
"playwright": "1.63.0",
|
|
82
|
-
"postcss": "8.5.
|
|
83
|
+
"postcss": "8.5.32",
|
|
83
84
|
"react": "^19.2.7",
|
|
84
85
|
"react-dom": "^19.2.7",
|
|
85
86
|
"react-hook-form": "7.71.2",
|
|
86
|
-
"tailwindcss": "^4.3.
|
|
87
|
+
"tailwindcss": "^4.3.5",
|
|
87
88
|
"tw-animate-css": "1.4.0",
|
|
88
89
|
"typescript": "5.9.3",
|
|
89
90
|
"vite": "^8.2.2",
|
|
90
91
|
"vite-plugin-dts": "5.1.2",
|
|
91
|
-
"vitest": "^4.1.
|
|
92
|
+
"vitest": "^4.1.12",
|
|
93
|
+
"zod": "4.6.7"
|
|
92
94
|
},
|
|
93
95
|
"peerDependencies": {
|
|
94
96
|
"react": ">=19.2.7",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: app-shell-patterns
|
|
3
3
|
description: "Best-practice UI patterns and correct component usage for building pages in apps that use @tailor-platform/app-shell. Use when: building or editing any screen, page, list, table, detail view, form, modal, dialog, wizard, or bulk/confirm/toast interaction in an app with @tailor-platform/app-shell installed — when choosing the right AppShell component, layout, or design token for a UI — or when upgrading @tailor-platform/app-shell, or diagnosing styling, theming, or dark-mode breakage that appeared after a version bump."
|
|
4
4
|
metadata:
|
|
5
|
-
app-shell-version: "1.
|
|
5
|
+
app-shell-version: "1.20.0"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# App-Shell Patterns
|
|
@@ -13,7 +13,7 @@ Select and implement the correct UI pattern using @tailor-platform/app-shell com
|
|
|
13
13
|
|
|
14
14
|
## Version
|
|
15
15
|
|
|
16
|
-
This skill was generated from `@tailor-platform/app-shell` **1.
|
|
16
|
+
This skill was generated from `@tailor-platform/app-shell` **1.20.0**. Before relying on it, compare that with the version installed in the app you're working on (resolve `@tailor-platform/app-shell/package.json` from that app, not the monorepo root). If they differ, this copy is stale: tell the user and suggest re-syncing it from the installed package's `skills/app-shell-patterns/` directory.
|
|
17
17
|
|
|
18
18
|
## Concepts
|
|
19
19
|
|
|
@@ -88,6 +88,7 @@ Every AppShell component, its API surface, and usage guidance. Read the entry fo
|
|
|
88
88
|
| [Timeline](references/components/timeline.md) | Composable primitives for building time-based layouts with axis guides, row backgrounds, intervals, and dependency links |
|
|
89
89
|
| [Toolbar](references/components/toolbar.md) | Full-width action bars with composable rows, grouped controls, and keyboard navigation |
|
|
90
90
|
| [Tooltip](references/components/tooltip.md) | Hover/focus tooltip with configurable placement and shared delay via Tooltip.Provider |
|
|
91
|
+
| [Tree](references/components/tree.md) | Browse, pick one, or tick many items in a hierarchy — inline with Tree, or in a search dialog with TreePicker |
|
|
91
92
|
| [WithGuard](references/components/with-guard.md) | Conditionally render UI elements based on guard evaluation with support for async permissions checks |
|
|
92
93
|
|
|
93
94
|
## Available Hooks & Functions
|
|
@@ -109,7 +110,7 @@ Hooks, factory functions, guards, and router utilities exported by AppShell.
|
|
|
109
110
|
| [useLocation](references/api/router/use-location.md) | Hook to access current location object with pathname, search, and state |
|
|
110
111
|
| [useNavigate](references/api/router/use-navigate.md) | Hook for programmatic navigation between routes |
|
|
111
112
|
| [useParams](references/api/router/use-params.md) | Hook to access dynamic route parameters |
|
|
112
|
-
| [useAIChat](references/api/use-ai-chat.md) |
|
|
113
|
+
| [useAIChat](references/api/use-ai-chat.md) | AI Gateway chat hook with optional local tools |
|
|
113
114
|
| [useAppShell](references/api/use-app-shell.md) | Hook to access AppShell context data and configuration |
|
|
114
115
|
| [useAppShellConfig](references/api/use-app-shell-config.md) | Hook to access AppShell configuration data |
|
|
115
116
|
| [useAppShellData](references/api/use-app-shell-data.md) | Hook to access custom context data passed to AppShell |
|
|
@@ -7,7 +7,7 @@ description: Create a low-level AI Gateway client that reuses AppShell authentic
|
|
|
7
7
|
|
|
8
8
|
# createAIGatewayClient
|
|
9
9
|
|
|
10
|
-
Creates a small AI Gateway transport client for
|
|
10
|
+
Creates a small AI Gateway transport client for chat completions and local function tool calls.
|
|
11
11
|
|
|
12
12
|
## Signature
|
|
13
13
|
|
|
@@ -43,6 +43,7 @@ interface AIGatewayClient {
|
|
|
43
43
|
The iterable yields completion events:
|
|
44
44
|
|
|
45
45
|
- `text-delta` — append `event.text` to build the assistant response
|
|
46
|
+
- `tool-call` — a local function tool call requested by the model
|
|
46
47
|
- `done` — terminal event with an optional `finishReason`
|
|
47
48
|
|
|
48
49
|
## Related Types
|
|
@@ -56,11 +57,33 @@ type AIGatewayChatMessage =
|
|
|
56
57
|
| {
|
|
57
58
|
role: "assistant";
|
|
58
59
|
content?: string;
|
|
60
|
+
toolCalls?: AIGatewayToolCall[];
|
|
61
|
+
}
|
|
62
|
+
| {
|
|
63
|
+
role: "tool";
|
|
64
|
+
toolCallId: string;
|
|
65
|
+
content: string;
|
|
59
66
|
};
|
|
60
67
|
|
|
68
|
+
interface AIGatewayToolCall {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
argumentsText: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface AIGatewayFunctionTool {
|
|
75
|
+
type: "function";
|
|
76
|
+
function: {
|
|
77
|
+
name: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
parameters: Record<string, unknown>;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
61
83
|
interface AIGatewayChatRequest {
|
|
62
84
|
model: string;
|
|
63
85
|
messages: AIGatewayChatMessage[];
|
|
86
|
+
tools?: AIGatewayFunctionTool[];
|
|
64
87
|
signal?: AbortSignal;
|
|
65
88
|
}
|
|
66
89
|
|
|
@@ -69,6 +92,12 @@ type AIChatCompletionEvent =
|
|
|
69
92
|
type: "text-delta";
|
|
70
93
|
text: string;
|
|
71
94
|
}
|
|
95
|
+
| {
|
|
96
|
+
type: "tool-call";
|
|
97
|
+
toolCallId: string;
|
|
98
|
+
toolName: string;
|
|
99
|
+
argumentsText: string;
|
|
100
|
+
}
|
|
72
101
|
| {
|
|
73
102
|
type: "done";
|
|
74
103
|
finishReason?: string;
|
|
@@ -106,7 +135,8 @@ console.log(text);
|
|
|
106
135
|
## Notes
|
|
107
136
|
|
|
108
137
|
- AppShell chooses the appropriate AI Gateway transport automatically
|
|
109
|
-
-
|
|
138
|
+
- Local tools are sent as normalized `type: "function"` definitions; provider-native tools are not supported
|
|
139
|
+
- The low-level API stays event-based so hooks can layer streaming UI and tool loops on top
|
|
110
140
|
- `request.signal` is passed through so callers can abort in-flight work
|
|
111
141
|
|
|
112
142
|
## Related
|
|
@@ -100,11 +100,11 @@ A module object that can be passed to the `modules` prop of `AppShell`.
|
|
|
100
100
|
### Basic Module
|
|
101
101
|
|
|
102
102
|
```typescript
|
|
103
|
-
import { defineModule } from "@tailor-platform/app-shell";
|
|
103
|
+
import { defineModule, Text } from "@tailor-platform/app-shell";
|
|
104
104
|
|
|
105
105
|
const dashboardModule = defineModule({
|
|
106
106
|
path: "dashboard",
|
|
107
|
-
component: () => <h1>Dashboard</h1>,
|
|
107
|
+
component: () => <Text.h1>Dashboard</Text.h1>,
|
|
108
108
|
resources: [],
|
|
109
109
|
});
|
|
110
110
|
```
|
|
@@ -183,14 +183,14 @@ const adminModule = defineModule({
|
|
|
183
183
|
### Module with Error Boundary
|
|
184
184
|
|
|
185
185
|
```typescript
|
|
186
|
-
import { useRouteError } from "@tailor-platform/app-shell";
|
|
186
|
+
import { Text, useRouteError } from "@tailor-platform/app-shell";
|
|
187
187
|
|
|
188
188
|
const ErrorBoundary = () => {
|
|
189
189
|
const error = useRouteError() as Error;
|
|
190
190
|
return (
|
|
191
191
|
<div>
|
|
192
|
-
<h1>Module Error</h1>
|
|
193
|
-
<p>{error.message}</p>
|
|
192
|
+
<Text.h1>Module Error</Text.h1>
|
|
193
|
+
<Text.p>{error.message}</Text.p>
|
|
194
194
|
</div>
|
|
195
195
|
);
|
|
196
196
|
};
|