@tailor-platform/app-shell 1.13.0 → 1.14.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.
@@ -1,156 +1,177 @@
1
- import { appShellRoutes } from '@tailor-platform/app-shell-vite-plugin';
1
+ import { appShellRoutes } from '@tailor-platform/vite-plugin-app-shell';
2
+ import { AppShellRoutesPluginOptions } from '@tailor-platform/vite-plugin-app-shell';
3
+ import { TypedRoutesOptions } from '@tailor-platform/vite-plugin-app-shell';
2
4
 
3
5
  export { appShellRoutes }
4
6
 
7
+ export { AppShellRoutesPluginOptions }
8
+
9
+ export { TypedRoutesOptions }
10
+
5
11
  export { }
6
12
 
7
13
 
8
- declare namespace Root {
14
+ declare namespace AutocompleteStandalone {
9
15
  var displayName: string;
10
16
  }
11
17
 
12
18
 
13
- declare namespace Title {
19
+ declare namespace AutocompleteAsyncStandalone {
14
20
  var displayName: string;
15
21
  }
16
22
 
17
23
 
18
- declare namespace Description {
24
+ declare namespace AutocompleteRoot {
19
25
  var displayName: string;
20
26
  }
21
27
 
22
28
 
23
- declare namespace Root {
29
+ declare namespace AutocompleteValue {
24
30
  var displayName: string;
25
31
  }
26
32
 
27
33
 
28
- declare namespace Image {
34
+ declare namespace AutocompleteInput {
29
35
  var displayName: string;
30
36
  }
31
37
 
32
38
 
33
- declare namespace Fallback {
39
+ declare namespace AutocompleteTrigger {
34
40
  var displayName: string;
35
41
  }
36
42
 
37
43
 
38
- declare namespace Root {
44
+ declare namespace AutocompleteInputGroup {
39
45
  var displayName: string;
40
46
  }
41
47
 
42
48
 
43
- declare namespace Viewport {
49
+ declare namespace AutocompleteContent {
44
50
  var displayName: string;
45
51
  }
46
52
 
47
53
 
48
- declare namespace Row {
54
+ declare namespace AutocompleteList {
49
55
  var displayName: string;
50
56
  }
51
57
 
52
58
 
53
- declare namespace Interval {
59
+ declare namespace AutocompleteItem {
54
60
  var displayName: string;
55
61
  }
56
62
 
57
63
 
58
- declare namespace TimelineLink {
64
+ declare namespace AutocompleteEmpty {
59
65
  var displayName: string;
60
66
  }
61
67
 
62
68
 
63
- declare namespace Root {
69
+ declare namespace AutocompleteClear {
64
70
  var displayName: string;
65
71
  }
66
72
 
67
73
 
68
- declare namespace Trigger {
74
+ declare namespace AutocompleteGroup {
69
75
  var displayName: string;
70
76
  }
71
77
 
72
78
 
73
- declare namespace Content {
79
+ declare namespace AutocompleteGroupLabel {
74
80
  var displayName: string;
75
81
  }
76
82
 
77
83
 
78
- declare namespace Item {
84
+ declare namespace AutocompleteCollection {
79
85
  var displayName: string;
80
86
  }
81
87
 
82
88
 
83
- declare namespace LinkItem {
89
+ declare namespace AutocompleteStatus {
84
90
  var displayName: string;
85
91
  }
86
92
 
87
93
 
88
- declare namespace CheckboxItem {
94
+ declare namespace Root {
89
95
  var displayName: string;
90
96
  }
91
97
 
92
98
 
93
- declare namespace CheckboxItemIndicator {
99
+ declare namespace Viewport {
94
100
  var displayName: string;
95
101
  }
96
102
 
97
103
 
98
- declare namespace RadioItem {
104
+ declare namespace Row {
99
105
  var displayName: string;
100
106
  }
101
107
 
102
108
 
103
- declare namespace RadioItemIndicator {
109
+ declare namespace Interval {
104
110
  var displayName: string;
105
111
  }
106
112
 
107
113
 
108
- declare namespace RadioGroup {
114
+ declare namespace TimelineLink {
109
115
  var displayName: string;
110
116
  }
111
117
 
112
118
 
113
- declare namespace Group {
119
+ declare namespace Provider {
114
120
  var displayName: string;
115
121
  }
116
122
 
117
123
 
118
- declare namespace GroupLabel {
124
+ declare namespace Root {
119
125
  var displayName: string;
120
126
  }
121
127
 
122
128
 
123
- declare namespace MenuSeparator {
129
+ declare namespace Trigger {
124
130
  var displayName: string;
125
131
  }
126
132
 
127
133
 
128
- declare namespace SubmenuRoot {
134
+ declare namespace Content {
129
135
  var displayName: string;
130
136
  }
131
137
 
132
138
 
133
- declare namespace SubmenuTrigger {
139
+ declare namespace SelectRoot {
134
140
  var displayName: string;
135
141
  }
136
142
 
137
143
 
138
- declare namespace Root {
144
+ declare namespace SelectTrigger {
139
145
  var displayName: string;
140
146
  }
141
147
 
142
148
 
143
- declare namespace List {
149
+ declare namespace SelectValue {
144
150
  var displayName: string;
145
151
  }
146
152
 
147
153
 
148
- declare namespace Tab {
154
+ declare namespace SelectContent {
149
155
  var displayName: string;
150
156
  }
151
157
 
152
158
 
153
- declare namespace Panel {
159
+ declare namespace SelectItem {
160
+ var displayName: string;
161
+ }
162
+
163
+
164
+ declare namespace SelectGroup {
165
+ var displayName: string;
166
+ }
167
+
168
+
169
+ declare namespace SelectGroupLabel {
170
+ var displayName: string;
171
+ }
172
+
173
+
174
+ declare namespace SelectSeparator {
154
175
  var displayName: string;
155
176
  }
156
177
 
@@ -165,77 +186,82 @@ declare namespace Trigger {
165
186
  }
166
187
 
167
188
 
168
- declare namespace Close {
189
+ declare namespace Content {
169
190
  var displayName: string;
170
191
  }
171
192
 
172
193
 
173
- declare namespace Content {
194
+ declare namespace Item {
174
195
  var displayName: string;
175
196
  }
176
197
 
177
198
 
178
- declare namespace Header {
199
+ declare namespace LinkItem {
179
200
  var displayName: string;
180
201
  }
181
202
 
182
203
 
183
- declare namespace Footer {
204
+ declare namespace CheckboxItem {
184
205
  var displayName: string;
185
206
  }
186
207
 
187
208
 
188
- declare namespace Title {
209
+ declare namespace CheckboxItemIndicator {
189
210
  var displayName: string;
190
211
  }
191
212
 
192
213
 
193
- declare namespace Description {
214
+ declare namespace RadioItem {
194
215
  var displayName: string;
195
216
  }
196
217
 
197
218
 
198
- declare namespace Root {
219
+ declare namespace RadioItemIndicator {
199
220
  var displayName: string;
200
221
  }
201
222
 
202
223
 
203
- declare namespace Header {
224
+ declare namespace RadioGroup {
204
225
  var displayName: string;
205
226
  }
206
227
 
207
228
 
208
- declare namespace Body {
229
+ declare namespace Group {
209
230
  var displayName: string;
210
231
  }
211
232
 
212
233
 
213
- declare namespace Footer {
234
+ declare namespace GroupLabel {
214
235
  var displayName: string;
215
236
  }
216
237
 
217
238
 
218
- declare namespace Row {
239
+ declare namespace MenuSeparator {
219
240
  var displayName: string;
220
241
  }
221
242
 
222
243
 
223
- declare namespace Head {
244
+ declare namespace SubmenuRoot {
224
245
  var displayName: string;
225
246
  }
226
247
 
227
248
 
228
- declare namespace Cell {
249
+ declare namespace SubmenuTrigger {
229
250
  var displayName: string;
230
251
  }
231
252
 
232
253
 
233
- declare namespace Caption {
254
+ declare namespace Root {
234
255
  var displayName: string;
235
256
  }
236
257
 
237
258
 
238
- declare namespace Provider {
259
+ declare namespace Image {
260
+ var displayName: string;
261
+ }
262
+
263
+
264
+ declare namespace Fallback {
239
265
  var displayName: string;
240
266
  }
241
267
 
@@ -245,12 +271,12 @@ declare namespace Root {
245
271
  }
246
272
 
247
273
 
248
- declare namespace Trigger {
274
+ declare namespace Title {
249
275
  var displayName: string;
250
276
  }
251
277
 
252
278
 
253
- declare namespace Content {
279
+ declare namespace Description {
254
280
  var displayName: string;
255
281
  }
256
282
 
@@ -260,7 +286,12 @@ declare namespace Root {
260
286
  }
261
287
 
262
288
 
263
- declare namespace Header {
289
+ declare namespace Trigger {
290
+ var displayName: string;
291
+ }
292
+
293
+
294
+ declare namespace Close {
264
295
  var displayName: string;
265
296
  }
266
297
 
@@ -270,82 +301,82 @@ declare namespace Content {
270
301
  }
271
302
 
272
303
 
273
- declare namespace SelectRoot {
304
+ declare namespace Header {
274
305
  var displayName: string;
275
306
  }
276
307
 
277
308
 
278
- declare namespace SelectTrigger {
309
+ declare namespace Footer {
279
310
  var displayName: string;
280
311
  }
281
312
 
282
313
 
283
- declare namespace SelectValue {
314
+ declare namespace Title {
284
315
  var displayName: string;
285
316
  }
286
317
 
287
318
 
288
- declare namespace SelectContent {
319
+ declare namespace Description {
289
320
  var displayName: string;
290
321
  }
291
322
 
292
323
 
293
- declare namespace SelectItem {
324
+ declare namespace Root {
294
325
  var displayName: string;
295
326
  }
296
327
 
297
328
 
298
- declare namespace SelectGroup {
329
+ declare namespace Header {
299
330
  var displayName: string;
300
331
  }
301
332
 
302
333
 
303
- declare namespace SelectGroupLabel {
334
+ declare namespace Body {
304
335
  var displayName: string;
305
336
  }
306
337
 
307
338
 
308
- declare namespace SelectSeparator {
339
+ declare namespace Footer {
309
340
  var displayName: string;
310
341
  }
311
342
 
312
343
 
313
- declare namespace Root {
344
+ declare namespace Row {
314
345
  var displayName: string;
315
346
  }
316
347
 
317
348
 
318
- declare namespace Trigger {
349
+ declare namespace Head {
319
350
  var displayName: string;
320
351
  }
321
352
 
322
353
 
323
- declare namespace Close {
354
+ declare namespace Cell {
324
355
  var displayName: string;
325
356
  }
326
357
 
327
358
 
328
- declare namespace Content {
359
+ declare namespace Caption {
329
360
  var displayName: string;
330
361
  }
331
362
 
332
363
 
333
- declare namespace Header {
364
+ declare namespace Root {
334
365
  var displayName: string;
335
366
  }
336
367
 
337
368
 
338
- declare namespace Footer {
369
+ declare namespace List {
339
370
  var displayName: string;
340
371
  }
341
372
 
342
373
 
343
- declare namespace Title {
374
+ declare namespace Tab {
344
375
  var displayName: string;
345
376
  }
346
377
 
347
378
 
348
- declare namespace Description {
379
+ declare namespace Panel {
349
380
  var displayName: string;
350
381
  }
351
382
 
@@ -435,112 +466,97 @@ declare namespace ComboboxCollection {
435
466
  }
436
467
 
437
468
 
438
- declare namespace Root {
439
- var displayName: string;
440
- }
441
-
442
-
443
- declare namespace Label {
444
- var displayName: string;
445
- }
446
-
447
-
448
- declare namespace Control {
449
- var displayName: string;
450
- }
451
-
452
-
453
- declare namespace Description {
469
+ declare namespace DataTableRoot {
454
470
  var displayName: string;
455
471
  }
456
472
 
457
473
 
458
- declare namespace Error {
474
+ declare namespace DataTableTable {
459
475
  var displayName: string;
460
476
  }
461
477
 
462
478
 
463
- declare namespace Validity {
479
+ declare namespace DataTableFooter {
464
480
  var displayName: string;
465
481
  }
466
482
 
467
483
 
468
- declare namespace AutocompleteRoot {
484
+ declare namespace Root {
469
485
  var displayName: string;
470
486
  }
471
487
 
472
488
 
473
- declare namespace AutocompleteValue {
489
+ declare namespace Label {
474
490
  var displayName: string;
475
491
  }
476
492
 
477
493
 
478
- declare namespace AutocompleteInput {
494
+ declare namespace Control {
479
495
  var displayName: string;
480
496
  }
481
497
 
482
498
 
483
- declare namespace AutocompleteTrigger {
499
+ declare namespace Description {
484
500
  var displayName: string;
485
501
  }
486
502
 
487
503
 
488
- declare namespace AutocompleteInputGroup {
504
+ declare namespace Error {
489
505
  var displayName: string;
490
506
  }
491
507
 
492
508
 
493
- declare namespace AutocompleteContent {
509
+ declare namespace Validity {
494
510
  var displayName: string;
495
511
  }
496
512
 
497
513
 
498
- declare namespace AutocompleteList {
514
+ declare namespace Root {
499
515
  var displayName: string;
500
516
  }
501
517
 
502
518
 
503
- declare namespace AutocompleteItem {
519
+ declare namespace Legend {
504
520
  var displayName: string;
505
521
  }
506
522
 
507
523
 
508
- declare namespace AutocompleteEmpty {
524
+ declare namespace Root {
509
525
  var displayName: string;
510
526
  }
511
527
 
512
528
 
513
- declare namespace AutocompleteClear {
529
+ declare namespace Trigger {
514
530
  var displayName: string;
515
531
  }
516
532
 
517
533
 
518
- declare namespace AutocompleteGroup {
534
+ declare namespace Close {
519
535
  var displayName: string;
520
536
  }
521
537
 
522
538
 
523
- declare namespace AutocompleteGroupLabel {
539
+ declare namespace Content {
524
540
  var displayName: string;
525
541
  }
526
542
 
527
543
 
528
- declare namespace AutocompleteCollection {
544
+ declare namespace Header {
529
545
  var displayName: string;
530
546
  }
531
547
 
532
548
 
533
- declare namespace AutocompleteStatus {
549
+ declare namespace Footer {
534
550
  var displayName: string;
535
551
  }
536
552
 
537
553
 
538
- declare namespace AutocompleteStandalone {
554
+ declare namespace Title {
539
555
  var displayName: string;
540
556
  }
541
557
 
542
558
 
543
- declare namespace AutocompleteAsyncStandalone {
559
+ declare namespace Description {
544
560
  var displayName: string;
545
561
  }
546
562
 
@@ -550,22 +566,12 @@ declare namespace Root {
550
566
  }
551
567
 
552
568
 
553
- declare namespace Legend {
554
- var displayName: string;
555
- }
556
-
557
-
558
- declare namespace DataTableRoot {
559
- var displayName: string;
560
- }
561
-
562
-
563
- declare namespace DataTableTable {
569
+ declare namespace Header {
564
570
  var displayName: string;
565
571
  }
566
572
 
567
573
 
568
- declare namespace DataTableFooter {
574
+ declare namespace Content {
569
575
  var displayName: string;
570
576
  }
571
577
 
@@ -1,2 +1,2 @@
1
- import { appShellRoutes as e } from "@tailor-platform/app-shell-vite-plugin";
1
+ import { appShellRoutes as e } from "@tailor-platform/vite-plugin-app-shell";
2
2
  export { e as appShellRoutes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/app-shell",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "An opinionated React application framework for building ERP applications on Tailor Platform",
5
5
  "keywords": [
6
6
  "app-shell",
@@ -61,14 +61,14 @@
61
61
  "react-router": "^8.3.0",
62
62
  "sonner": "^2.0.7",
63
63
  "tailwind-merge": "^3.6.0",
64
- "@tailor-platform/app-shell-vite-plugin": "0.2.3"
64
+ "@tailor-platform/vite-plugin-app-shell": "0.3.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@fontsource-variable/noto-sans-jp": "5.3.0",
68
68
  "@microsoft/api-extractor": "7.58.12",
69
69
  "@tailwindcss/postcss": "^4.3.3",
70
70
  "@testing-library/react": "16.3.3",
71
- "@testing-library/user-event": "14.6.6",
71
+ "@testing-library/user-event": "14.6.7",
72
72
  "@types/encoding-japanese": "2.2.1",
73
73
  "@types/node": "^25.9.5",
74
74
  "@types/papaparse": "5.5.2",
@@ -25,6 +25,12 @@ These are the foundational rules that underpin all patterns. All patterns build
25
25
 
26
26
  Read it when upgrading `@tailor-platform/app-shell`, and whenever styling, theming, or dark mode looks wrong after a version bump. These breakages are silent: the build succeeds and nothing warns, so the cause is not discoverable from the error output. The package ships no CHANGELOG, so this file is the only migration record available locally.
27
27
 
28
+ ## Available Pages
29
+
30
+ A page is the shape of a whole screen — the outer choice, made before picking patterns for the parts inside it. Where a pattern is one recipe, a page compares the layouts a screen could take and says when each applies. Match the screen first, then use the patterns the entry cites for the pieces within it.
31
+
32
+
33
+
28
34
  ## Available Patterns
29
35
 
30
36
  ### detail
@@ -83,4 +89,5 @@ Full rationale in [`design-system.md`](references/fundamental/design-system.md)
83
89
  - **Action placement:** primary CTA + status in `Layout.Header`; workflow actions in `ActionPanel`; back/navigation in the breadcrumb — never in `ActionPanel`.
84
90
  - **Metric tiles always go in a `Grid`** (`columns={{ initial: 1, md: 2, xl: 4 }}`) — never one-per-row.
85
91
  - **Forms default to `form/modal`** — only build a routed full-page form when the design explicitly calls for one.
92
+ - **Forms use AppShell `Form` + `Field`**, submitting via `onFormSubmit` — never a bare `<form onSubmit>` with `FormData`. `onFormSubmit` reads registered `Field.Root`s, so every control (dropdowns included) just needs a wrapping `Field.Root name="…"` — no `name` on the control, no `useState`. React Hook Form is optional, consumer-installed, and only warranted for cross-field validation, field arrays, or a Zod resolver. Details in [`components.md`](references/fundamental/components.md) → Forms.
86
93
  - **Handle every state:** loading (skeleton), empty (labelled empty state), and error (inline + retry) — never ship only the happy path.