@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.
Files changed (46) hide show
  1. package/dist/app-shell-core.css +2 -2
  2. package/dist/app-shell.d.ts +807 -130
  3. package/dist/app-shell.js +12419 -10930
  4. package/dist/{appshell-DQTz-QwK.js → appshell-B4QkQvXF.js} +377 -360
  5. package/dist/fonts/inter.css +7 -7
  6. package/dist/fonts/noto-sans-jp.css +116 -116
  7. package/dist/testing.d.ts +119 -89
  8. package/dist/testing.js +1 -1
  9. package/dist/vite-plugin.d.ts +119 -89
  10. package/package.json +10 -8
  11. package/skills/app-shell-patterns/SKILL.md +4 -3
  12. package/skills/app-shell-patterns/references/api/create-ai-gateway-client.md +32 -2
  13. package/skills/app-shell-patterns/references/api/define-module.md +5 -5
  14. package/skills/app-shell-patterns/references/api/router/use-params.md +2 -2
  15. package/skills/app-shell-patterns/references/api/use-ai-chat.md +46 -8
  16. package/skills/app-shell-patterns/references/api/use-app-shell-config.md +4 -4
  17. package/skills/app-shell-patterns/references/api/use-app-shell-data.md +5 -5
  18. package/skills/app-shell-patterns/references/api/use-app-shell.md +2 -2
  19. package/skills/app-shell-patterns/references/api/use-auth.md +3 -3
  20. package/skills/app-shell-patterns/references/api/use-route-error.md +12 -12
  21. package/skills/app-shell-patterns/references/components/action-panel.md +4 -2
  22. package/skills/app-shell-patterns/references/components/activity-card.md +3 -3
  23. package/skills/app-shell-patterns/references/components/ai-chat.md +37 -3
  24. package/skills/app-shell-patterns/references/components/app-shell.md +6 -5
  25. package/skills/app-shell-patterns/references/components/card.md +2 -2
  26. package/skills/app-shell-patterns/references/components/data-table.md +87 -31
  27. package/skills/app-shell-patterns/references/components/date-picker.md +2 -2
  28. package/skills/app-shell-patterns/references/components/default-sidebar.md +2 -2
  29. package/skills/app-shell-patterns/references/components/dialog.md +8 -0
  30. package/skills/app-shell-patterns/references/components/filter-rail.md +10 -3
  31. package/skills/app-shell-patterns/references/components/form.md +5 -5
  32. package/skills/app-shell-patterns/references/components/global-header-layout.md +31 -8
  33. package/skills/app-shell-patterns/references/components/layout.md +24 -17
  34. package/skills/app-shell-patterns/references/components/select.md +8 -0
  35. package/skills/app-shell-patterns/references/components/sidebar-group.md +9 -7
  36. package/skills/app-shell-patterns/references/components/sidebar-layout.md +74 -11
  37. package/skills/app-shell-patterns/references/components/sidebar-section.md +8 -8
  38. package/skills/app-shell-patterns/references/components/tabs.md +32 -2
  39. package/skills/app-shell-patterns/references/components/tree.md +342 -0
  40. package/skills/app-shell-patterns/references/components/with-guard.md +5 -5
  41. package/skills/app-shell-patterns/references/concepts/authentication.md +1 -1
  42. package/skills/app-shell-patterns/references/concepts/routing-navigation.md +3 -3
  43. package/skills/app-shell-patterns/references/concepts/styling-theming.md +13 -13
  44. package/skills/app-shell-patterns/references/migrations.md +20 -0
  45. package/skills/app-shell-patterns/references/pages/document-detail.md +8 -12
  46. package/skills/app-shell-patterns/references/patterns/interaction-multi-select.md +1 -1
@@ -16,17 +16,17 @@ declare namespace Root {
16
16
  }
17
17
 
18
18
 
19
- declare namespace Header {
19
+ declare namespace Title {
20
20
  var displayName: string;
21
21
  }
22
22
 
23
23
 
24
- declare namespace Body {
24
+ declare namespace Description {
25
25
  var displayName: string;
26
26
  }
27
27
 
28
28
 
29
- declare namespace Footer {
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 Head {
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 Description {
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 SelectRoot {
69
+ declare namespace Root {
90
70
  var displayName: string;
91
71
  }
92
72
 
93
73
 
94
- declare namespace SelectTrigger {
74
+ declare namespace Header {
95
75
  var displayName: string;
96
76
  }
97
77
 
98
78
 
99
- declare namespace SelectValue {
79
+ declare namespace Body {
100
80
  var displayName: string;
101
81
  }
102
82
 
103
83
 
104
- declare namespace SelectContent {
84
+ declare namespace Footer {
105
85
  var displayName: string;
106
86
  }
107
87
 
108
88
 
109
- declare namespace SelectItem {
89
+ declare namespace Row {
110
90
  var displayName: string;
111
91
  }
112
92
 
113
93
 
114
- declare namespace SelectGroup {
94
+ declare namespace Head {
115
95
  var displayName: string;
116
96
  }
117
97
 
118
98
 
119
- declare namespace SelectGroupLabel {
99
+ declare namespace Cell {
120
100
  var displayName: string;
121
101
  }
122
102
 
123
103
 
124
- declare namespace SelectSeparator {
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 Header {
114
+ declare namespace Trigger {
135
115
  var displayName: string;
136
116
  }
137
117
 
138
118
 
139
- declare namespace Content {
119
+ declare namespace Close {
140
120
  var displayName: string;
141
121
  }
142
122
 
143
123
 
144
- declare namespace Root {
124
+ declare namespace Content {
145
125
  var displayName: string;
146
126
  }
147
127
 
148
128
 
149
- declare namespace Trigger {
129
+ declare namespace Header {
150
130
  var displayName: string;
151
131
  }
152
132
 
153
133
 
154
- declare namespace Close {
134
+ declare namespace Footer {
155
135
  var displayName: string;
156
136
  }
157
137
 
158
138
 
159
- declare namespace Content {
139
+ declare namespace Title {
160
140
  var displayName: string;
161
141
  }
162
142
 
163
143
 
164
- declare namespace Header {
144
+ declare namespace Description {
165
145
  var displayName: string;
166
146
  }
167
147
 
168
148
 
169
- declare namespace Footer {
149
+ declare namespace Root {
170
150
  var displayName: string;
171
151
  }
172
152
 
173
153
 
174
- declare namespace Title {
154
+ declare namespace Header {
175
155
  var displayName: string;
176
156
  }
177
157
 
178
158
 
179
- declare namespace Description {
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 Row {
354
+ declare namespace Header {
365
355
  var displayName: string;
366
356
  }
367
357
 
368
358
 
369
- declare namespace Group {
359
+ declare namespace ClearAll {
370
360
  var displayName: string;
371
361
  }
372
362
 
373
363
 
374
- declare namespace Separator {
364
+ declare namespace Sections {
375
365
  var displayName: string;
376
366
  }
377
367
 
378
368
 
379
- declare namespace Provider {
369
+ declare namespace Settings {
380
370
  var displayName: string;
381
371
  }
382
372
 
383
373
 
384
- declare namespace Root {
374
+ declare namespace ComboboxRoot {
385
375
  var displayName: string;
386
376
  }
387
377
 
388
378
 
389
- declare namespace Header {
379
+ declare namespace ComboboxInput {
390
380
  var displayName: string;
391
381
  }
392
382
 
393
383
 
394
- declare namespace ClearAll {
384
+ declare namespace ComboboxTrigger {
395
385
  var displayName: string;
396
386
  }
397
387
 
398
388
 
399
- declare namespace Sections {
389
+ declare namespace ComboboxInputGroup {
400
390
  var displayName: string;
401
391
  }
402
392
 
403
393
 
404
- declare namespace Provider {
394
+ declare namespace ComboboxContent {
405
395
  var displayName: string;
406
396
  }
407
397
 
408
398
 
409
- declare namespace Root {
399
+ declare namespace ComboboxList {
410
400
  var displayName: string;
411
401
  }
412
402
 
413
403
 
414
- declare namespace Trigger {
404
+ declare namespace ComboboxItem {
415
405
  var displayName: string;
416
406
  }
417
407
 
418
408
 
419
- declare namespace Content {
409
+ declare namespace ComboboxEmpty {
420
410
  var displayName: string;
421
411
  }
422
412
 
423
413
 
424
- declare namespace Trigger {
414
+ declare namespace ComboboxGroup {
425
415
  var displayName: string;
426
416
  }
427
417
 
428
418
 
429
- declare namespace Settings {
419
+ declare namespace ComboboxGroupLabel {
430
420
  var displayName: string;
431
421
  }
432
422
 
433
423
 
434
- declare namespace ComboboxRoot {
424
+ declare namespace ComboboxClear {
435
425
  var displayName: string;
436
426
  }
437
427
 
438
428
 
439
- declare namespace ComboboxInput {
429
+ declare namespace ComboboxChips {
440
430
  var displayName: string;
441
431
  }
442
432
 
443
433
 
444
- declare namespace ComboboxTrigger {
434
+ declare namespace ComboboxChip {
445
435
  var displayName: string;
446
436
  }
447
437
 
448
438
 
449
- declare namespace ComboboxInputGroup {
439
+ declare namespace ComboboxChipRemove {
450
440
  var displayName: string;
451
441
  }
452
442
 
453
443
 
454
- declare namespace ComboboxContent {
444
+ declare namespace ComboboxValue {
455
445
  var displayName: string;
456
446
  }
457
447
 
458
448
 
459
- declare namespace ComboboxList {
449
+ declare namespace ComboboxStatus {
460
450
  var displayName: string;
461
451
  }
462
452
 
463
453
 
464
- declare namespace ComboboxItem {
454
+ declare namespace ComboboxCollection {
465
455
  var displayName: string;
466
456
  }
467
457
 
468
458
 
469
- declare namespace ComboboxEmpty {
459
+ declare namespace Provider {
470
460
  var displayName: string;
471
461
  }
472
462
 
473
463
 
474
- declare namespace ComboboxGroup {
464
+ declare namespace Root {
475
465
  var displayName: string;
476
466
  }
477
467
 
478
468
 
479
- declare namespace ComboboxGroupLabel {
469
+ declare namespace Trigger {
480
470
  var displayName: string;
481
471
  }
482
472
 
483
473
 
484
- declare namespace ComboboxClear {
474
+ declare namespace Content {
485
475
  var displayName: string;
486
476
  }
487
477
 
488
478
 
489
- declare namespace ComboboxChips {
479
+ declare namespace SelectRoot {
490
480
  var displayName: string;
491
481
  }
492
482
 
493
483
 
494
- declare namespace ComboboxChip {
484
+ declare namespace SelectTrigger {
495
485
  var displayName: string;
496
486
  }
497
487
 
498
488
 
499
- declare namespace ComboboxChipRemove {
489
+ declare namespace SelectValue {
500
490
  var displayName: string;
501
491
  }
502
492
 
503
493
 
504
- declare namespace ComboboxValue {
494
+ declare namespace SelectContent {
505
495
  var displayName: string;
506
496
  }
507
497
 
508
498
 
509
- declare namespace ComboboxStatus {
499
+ declare namespace SelectItem {
510
500
  var displayName: string;
511
501
  }
512
502
 
513
503
 
514
- declare namespace ComboboxCollection {
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 DataTableRoot {
624
+ declare namespace TreeRow {
600
625
  var displayName: string;
601
626
  }
602
627
 
603
628
 
604
- declare namespace DataTableTable {
629
+ declare namespace Root {
605
630
  var displayName: string;
606
631
  }
607
632
 
608
633
 
609
- declare namespace DataTableFooter {
634
+ declare namespace Items {
610
635
  var displayName: string;
611
636
  }
612
637
 
613
638
 
614
- declare namespace Root {
639
+ declare namespace Item {
615
640
  var displayName: string;
616
641
  }
617
642
 
618
643
 
619
- declare namespace Viewport {
644
+ declare namespace DataTableRoot {
620
645
  var displayName: string;
621
646
  }
622
647
 
623
648
 
624
- declare namespace Row {
649
+ declare namespace DataTableTable {
625
650
  var displayName: string;
626
651
  }
627
652
 
628
653
 
629
- declare namespace Interval {
654
+ declare namespace DataTableToolbar {
630
655
  var displayName: string;
631
656
  }
632
657
 
633
658
 
634
- declare namespace TimelineLink {
659
+ declare namespace DataTableColumnSettings {
635
660
  var displayName: string;
636
661
  }
637
662
 
638
663
 
639
- declare namespace Root {
664
+ declare namespace DataTableFooter {
640
665
  var displayName: string;
641
666
  }
642
667
 
643
668
 
644
- declare namespace Items {
669
+ declare namespace DataTableFilters {
645
670
  var displayName: string;
646
671
  }
647
672
 
648
673
 
649
- declare namespace Item {
674
+ declare namespace DataTableBody {
650
675
  var displayName: string;
651
676
  }
652
677
 
653
678
 
654
- declare namespace DataTableColumnSettings {
679
+ declare namespace DataTableHeaders {
655
680
  var displayName: string;
656
681
  }
657
682
 
658
683
 
659
- declare namespace DataTableToolbar {
684
+ declare namespace AddFilterPanel {
660
685
  var displayName: string;
661
686
  }
662
687
 
663
688
 
664
- declare namespace DataTableFilters {
689
+ declare namespace AsyncErrorState {
665
690
  var displayName: string;
666
691
  }
667
692
 
668
693
 
669
- declare namespace AsyncErrorState {
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.19.0",
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.58.12",
69
- "@tailwindcss/postcss": "^4.3.3",
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.11",
79
- "@vitest/coverage-v8": "4.1.11",
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.31",
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.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.11"
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.19.0"
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.19.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.
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) | Simple text-only chat hook for AI Gateway |
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 text-only chat completions.
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
- - The low-level API is intentionally narrow: text deltas plus completion metadata
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
  };