@estiva-app/ui 0.35.2 → 0.37.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 (143) hide show
  1. package/dist/Panel.d.ts +44 -0
  2. package/dist/Panel.d.ts.map +1 -0
  3. package/dist/ScrollArea.d.ts +7 -2
  4. package/dist/ScrollArea.d.ts.map +1 -1
  5. package/dist/eslint/escape.d.ts +23 -6
  6. package/dist/eslint/escape.d.ts.map +1 -1
  7. package/dist/eslint/index.js +86 -12
  8. package/dist/eslint/index.js.map +3 -3
  9. package/dist/eslint/no-handmade-header.d.ts +5 -0
  10. package/dist/eslint/no-handmade-header.d.ts.map +1 -1
  11. package/dist/eslint/no-native-title.d.ts +1 -1
  12. package/dist/eslint/no-native-title.d.ts.map +1 -1
  13. package/dist/eslint/no-raw-element.d.ts +7 -0
  14. package/dist/eslint/no-raw-element.d.ts.map +1 -1
  15. package/dist/eslint/no-restyled-part.d.ts +8 -0
  16. package/dist/eslint/no-restyled-part.d.ts.map +1 -1
  17. package/dist/gates/app-checks.d.ts +1 -1
  18. package/dist/gates/app-checks.d.ts.map +1 -1
  19. package/dist/gates/{chunk-DRIHHXQK.js → chunk-CC6L4B5U.js} +23 -17
  20. package/dist/gates/chunk-CC6L4B5U.js.map +7 -0
  21. package/dist/gates/chunk-SYVKGOWM.js +1131 -0
  22. package/dist/gates/chunk-SYVKGOWM.js.map +7 -0
  23. package/dist/gates/ci.d.ts +18 -0
  24. package/dist/gates/ci.d.ts.map +1 -0
  25. package/dist/gates/cli.js +20 -3
  26. package/dist/gates/cli.js.map +2 -2
  27. package/dist/gates/create-app.d.ts.map +1 -1
  28. package/dist/gates/create-app.js +1 -1
  29. package/dist/gates/escapes.d.ts +23 -0
  30. package/dist/gates/escapes.d.ts.map +1 -0
  31. package/dist/gates/gate-config.d.ts.map +1 -1
  32. package/dist/gates/hook.d.ts +2 -0
  33. package/dist/gates/hook.d.ts.map +1 -1
  34. package/dist/gates/index.d.ts +5 -1
  35. package/dist/gates/index.d.ts.map +1 -1
  36. package/dist/gates/index.js +42 -185
  37. package/dist/gates/index.js.map +4 -4
  38. package/dist/gates/name-escapes.d.ts +14 -0
  39. package/dist/gates/name-escapes.d.ts.map +1 -0
  40. package/dist/gates/status.d.ts +3 -1
  41. package/dist/gates/status.d.ts.map +1 -1
  42. package/dist/gates/token-lint.d.ts.map +1 -1
  43. package/dist/gates/token-style.d.ts +21 -0
  44. package/dist/gates/token-style.d.ts.map +1 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +76 -49
  48. package/dist/index.js.map +4 -4
  49. package/dist/registry/{app-3ALZE6XO.js → app-YMABQII6.js} +3 -3
  50. package/dist/registry/app.d.ts.map +1 -1
  51. package/dist/registry/behaviours.d.ts +71 -0
  52. package/dist/registry/behaviours.d.ts.map +1 -0
  53. package/dist/registry/{build-NDXMVFQ5.js → build-3EANARLQ.js} +2 -2
  54. package/dist/registry/build.d.ts.map +1 -1
  55. package/dist/registry/{chunk-3WJ7ZZ7Z.js → chunk-EVJW26UR.js} +51 -4
  56. package/dist/registry/chunk-EVJW26UR.js.map +7 -0
  57. package/dist/registry/{chunk-XVII7P6G.js → chunk-SIB44CES.js} +276 -90
  58. package/dist/registry/chunk-SIB44CES.js.map +7 -0
  59. package/dist/registry/{chunk-5K2TRR4X.js → chunk-XK747STJ.js} +18 -3
  60. package/dist/registry/chunk-XK747STJ.js.map +7 -0
  61. package/dist/registry/cli.js +7 -6
  62. package/dist/registry/cli.js.map +2 -2
  63. package/dist/registry/contract.d.ts +13 -1
  64. package/dist/registry/contract.d.ts.map +1 -1
  65. package/dist/registry/index.d.ts +1 -1
  66. package/dist/registry/index.d.ts.map +1 -1
  67. package/dist/registry/index.js +11 -5
  68. package/package.json +4 -1
  69. package/registry.json +369 -19
  70. package/skill/estiva-ui.md +2 -1
  71. package/src/AppShell.mdx +2 -1
  72. package/src/AttachmentCard.tsx +7 -7
  73. package/src/Button.tsx +1 -1
  74. package/src/Card.tsx +2 -2
  75. package/src/ChipInput.mdx +2 -0
  76. package/src/ChipInput.tsx +1 -1
  77. package/src/CommandPalette.tsx +3 -3
  78. package/src/DialogShell.tsx +1 -1
  79. package/src/EmptyState.mdx +4 -3
  80. package/src/Lightbox.tsx +1 -1
  81. package/src/NavItem.tsx +1 -1
  82. package/src/Panel.mdx +78 -0
  83. package/src/Panel.stories.tsx +98 -0
  84. package/src/Panel.tsx +80 -0
  85. package/src/PersonTrigger.tsx +1 -1
  86. package/src/Reaction.tsx +1 -1
  87. package/src/ScrollArea.mdx +6 -2
  88. package/src/ScrollArea.stories.tsx +1 -1
  89. package/src/ScrollArea.tsx +9 -4
  90. package/src/Select.tsx +1 -1
  91. package/src/TopBar.mdx +1 -1
  92. package/src/eslint/escape.ts +43 -14
  93. package/src/eslint/has-a-page-and-a-story.test.ts +1 -1
  94. package/src/eslint/index.test.ts +2 -2
  95. package/src/eslint/no-copied-look.test.ts +1 -1
  96. package/src/eslint/no-hand-rolled-behaviour.test.ts +3 -3
  97. package/src/eslint/no-handmade-empty-state.test.ts +2 -2
  98. package/src/eslint/no-handmade-header.test.ts +11 -2
  99. package/src/eslint/no-handmade-header.ts +24 -2
  100. package/src/eslint/no-native-title.test.ts +2 -2
  101. package/src/eslint/no-native-title.ts +1 -1
  102. package/src/eslint/no-raw-element.test.ts +47 -15
  103. package/src/eslint/no-raw-element.ts +53 -3
  104. package/src/eslint/no-rebuilt-behaviour.test.ts +9 -9
  105. package/src/eslint/no-restyled-part.test.ts +21 -2
  106. package/src/eslint/no-restyled-part.ts +30 -0
  107. package/src/eslint/raw-element-outside-a-wrapper.test.ts +3 -3
  108. package/src/gates/app-checks.ts +9 -6
  109. package/src/gates/ci.ts +152 -0
  110. package/src/gates/cli.ts +19 -3
  111. package/src/gates/count.ts +1 -1
  112. package/src/gates/create-app.test.ts +2 -2
  113. package/src/gates/create-app.ts +22 -16
  114. package/src/gates/escapes.ts +111 -0
  115. package/src/gates/gate-config.ts +2 -0
  116. package/src/gates/gates.test.ts +86 -1
  117. package/src/gates/hook.ts +38 -4
  118. package/src/gates/index.ts +5 -1
  119. package/src/gates/name-escapes.ts +77 -0
  120. package/src/gates/status.ts +45 -2
  121. package/src/gates/token-lint.ts +11 -4
  122. package/src/gates/token-style.ts +79 -0
  123. package/src/how.test.ts +282 -0
  124. package/src/index.ts +1 -0
  125. package/src/pages.test.ts +6 -0
  126. package/src/registry/app.test.ts +37 -1
  127. package/src/registry/app.ts +52 -2
  128. package/src/registry/behaviours.ts +223 -0
  129. package/src/registry/build.ts +36 -0
  130. package/src/registry/cli.ts +5 -3
  131. package/src/registry/contract.test.ts +27 -2
  132. package/src/registry/contract.ts +28 -3
  133. package/src/registry/index.ts +1 -1
  134. package/src/registry/registry.test.ts +18 -4
  135. package/stories/Choosing.mdx +4 -3
  136. package/dist/gates/chunk-DBMUQAR6.js +0 -607
  137. package/dist/gates/chunk-DBMUQAR6.js.map +0 -7
  138. package/dist/gates/chunk-DRIHHXQK.js.map +0 -7
  139. package/dist/registry/chunk-3WJ7ZZ7Z.js.map +0 -7
  140. package/dist/registry/chunk-5K2TRR4X.js.map +0 -7
  141. package/dist/registry/chunk-XVII7P6G.js.map +0 -7
  142. /package/dist/registry/{app-3ALZE6XO.js.map → app-YMABQII6.js.map} +0 -0
  143. /package/dist/registry/{build-NDXMVFQ5.js.map → build-3EANARLQ.js.map} +0 -0
package/registry.json CHANGED
@@ -4,9 +4,9 @@
4
4
  "kind": "package",
5
5
  "repo": "estiva-ui",
6
6
  "package": "@estiva-app/ui",
7
- "packageVersion": "0.35.2",
8
- "exports": 87,
9
- "typeExports": 96,
7
+ "packageVersion": "0.37.0",
8
+ "exports": 88,
9
+ "typeExports": 97,
10
10
  "files": null
11
11
  },
12
12
  "storybook": {
@@ -218,7 +218,20 @@
218
218
  ]
219
219
  }
220
220
  ],
221
- "ownsBehaviours": [],
221
+ "ownsBehaviours": [
222
+ {
223
+ "id": "base-ui",
224
+ "behaviour": "Is built on Base UI"
225
+ },
226
+ {
227
+ "id": "role",
228
+ "behaviour": "Says what it is to assistive technology"
229
+ },
230
+ {
231
+ "id": "tab-stop",
232
+ "behaviour": "Is reachable with Tab"
233
+ }
234
+ ],
222
235
  "status": "stable",
223
236
  "migrationStage": null,
224
237
  "docsId": "components-attachmentcard--docs",
@@ -728,6 +741,10 @@
728
741
  {
729
742
  "id": "role",
730
743
  "behaviour": "Says what it is to assistive technology"
744
+ },
745
+ {
746
+ "id": "tab-stop",
747
+ "behaviour": "Is reachable with Tab"
731
748
  }
732
749
  ],
733
750
  "status": "stable",
@@ -902,6 +919,22 @@
902
919
  "id": "portal",
903
920
  "behaviour": "Floats on top of the page"
904
921
  },
922
+ {
923
+ "id": "press-outside",
924
+ "behaviour": "Closes on a press outside"
925
+ },
926
+ {
927
+ "id": "page-keys",
928
+ "behaviour": "Takes its keys by itself"
929
+ },
930
+ {
931
+ "id": "focus",
932
+ "behaviour": "Holds focus inside while open, and gives it back"
933
+ },
934
+ {
935
+ "id": "follow",
936
+ "behaviour": "Stays attached to its anchor on scroll and resize"
937
+ },
905
938
  {
906
939
  "id": "walking",
907
940
  "behaviour": "Moves through its items with the arrow keys"
@@ -1100,10 +1133,22 @@
1100
1133
  "id": "portal",
1101
1134
  "behaviour": "Floats on top of the page"
1102
1135
  },
1136
+ {
1137
+ "id": "press-outside",
1138
+ "behaviour": "Closes on a press outside"
1139
+ },
1140
+ {
1141
+ "id": "page-keys",
1142
+ "behaviour": "Takes its keys by itself"
1143
+ },
1103
1144
  {
1104
1145
  "id": "focus",
1105
1146
  "behaviour": "Holds focus inside while open, and gives it back"
1106
1147
  },
1148
+ {
1149
+ "id": "scroll-lock",
1150
+ "behaviour": "Stops the page behind it scrolling"
1151
+ },
1107
1152
  {
1108
1153
  "id": "walking",
1109
1154
  "behaviour": "Moves through its items with the arrow keys"
@@ -1316,7 +1361,20 @@
1316
1361
  }
1317
1362
  ],
1318
1363
  "variants": [],
1319
- "ownsBehaviours": [],
1364
+ "ownsBehaviours": [
1365
+ {
1366
+ "id": "base-ui",
1367
+ "behaviour": "Is built on Base UI"
1368
+ },
1369
+ {
1370
+ "id": "portal",
1371
+ "behaviour": "Floats on top of the page"
1372
+ },
1373
+ {
1374
+ "id": "walking",
1375
+ "behaviour": "Moves through its items with the arrow keys"
1376
+ }
1377
+ ],
1320
1378
  "status": "stable",
1321
1379
  "migrationStage": null,
1322
1380
  "docsId": "overlays-commandpalette--docs",
@@ -1415,6 +1473,22 @@
1415
1473
  "id": "portal",
1416
1474
  "behaviour": "Floats on top of the page"
1417
1475
  },
1476
+ {
1477
+ "id": "press-outside",
1478
+ "behaviour": "Closes on a press outside"
1479
+ },
1480
+ {
1481
+ "id": "page-keys",
1482
+ "behaviour": "Takes its keys by itself"
1483
+ },
1484
+ {
1485
+ "id": "focus",
1486
+ "behaviour": "Holds focus inside while open, and gives it back"
1487
+ },
1488
+ {
1489
+ "id": "scroll-lock",
1490
+ "behaviour": "Stops the page behind it scrolling"
1491
+ },
1418
1492
  {
1419
1493
  "id": "role",
1420
1494
  "behaviour": "Says what it is to assistive technology"
@@ -1710,7 +1784,12 @@
1710
1784
  }
1711
1785
  ],
1712
1786
  "variants": [],
1713
- "ownsBehaviours": [],
1787
+ "ownsBehaviours": [
1788
+ {
1789
+ "id": "base-ui",
1790
+ "behaviour": "Is built on Base UI"
1791
+ }
1792
+ ],
1714
1793
  "status": "stable",
1715
1794
  "migrationStage": null,
1716
1795
  "docsId": "inputs-editabletext--docs",
@@ -2483,7 +2562,20 @@
2483
2562
  }
2484
2563
  ],
2485
2564
  "variants": [],
2486
- "ownsBehaviours": [],
2565
+ "ownsBehaviours": [
2566
+ {
2567
+ "id": "base-ui",
2568
+ "behaviour": "Is built on Base UI"
2569
+ },
2570
+ {
2571
+ "id": "role",
2572
+ "behaviour": "Says what it is to assistive technology"
2573
+ },
2574
+ {
2575
+ "id": "tab-stop",
2576
+ "behaviour": "Is reachable with Tab"
2577
+ }
2578
+ ],
2487
2579
  "status": "stable",
2488
2580
  "migrationStage": null,
2489
2581
  "docsId": "inputs-chipinput--docs",
@@ -2568,10 +2660,18 @@
2568
2660
  ],
2569
2661
  "variants": [],
2570
2662
  "ownsBehaviours": [
2663
+ {
2664
+ "id": "base-ui",
2665
+ "behaviour": "Is built on Base UI"
2666
+ },
2571
2667
  {
2572
2668
  "id": "portal",
2573
2669
  "behaviour": "Floats on top of the page"
2574
2670
  },
2671
+ {
2672
+ "id": "press-outside",
2673
+ "behaviour": "Closes on a press outside"
2674
+ },
2575
2675
  {
2576
2676
  "id": "page-keys",
2577
2677
  "behaviour": "Takes its keys by itself"
@@ -2583,6 +2683,10 @@
2583
2683
  {
2584
2684
  "id": "scroll-lock",
2585
2685
  "behaviour": "Stops the page behind it scrolling"
2686
+ },
2687
+ {
2688
+ "id": "role",
2689
+ "behaviour": "Says what it is to assistive technology"
2586
2690
  }
2587
2691
  ],
2588
2692
  "status": "stable",
@@ -2820,6 +2924,10 @@
2820
2924
  "id": "page-keys",
2821
2925
  "behaviour": "Takes its keys by itself"
2822
2926
  },
2927
+ {
2928
+ "id": "focus",
2929
+ "behaviour": "Holds focus inside while open, and gives it back"
2930
+ },
2823
2931
  {
2824
2932
  "id": "follow",
2825
2933
  "behaviour": "Stays attached to its anchor on scroll and resize"
@@ -2926,7 +3034,16 @@
2926
3034
  ]
2927
3035
  }
2928
3036
  ],
2929
- "ownsBehaviours": [],
3037
+ "ownsBehaviours": [
3038
+ {
3039
+ "id": "base-ui",
3040
+ "behaviour": "Is built on Base UI"
3041
+ },
3042
+ {
3043
+ "id": "role",
3044
+ "behaviour": "Says what it is to assistive technology"
3045
+ }
3046
+ ],
2930
3047
  "status": "stable",
2931
3048
  "migrationStage": null,
2932
3049
  "docsId": "overlays-menuitem--docs",
@@ -3024,7 +3141,16 @@
3024
3141
  }
3025
3142
  ],
3026
3143
  "variants": [],
3027
- "ownsBehaviours": [],
3144
+ "ownsBehaviours": [
3145
+ {
3146
+ "id": "base-ui",
3147
+ "behaviour": "Is built on Base UI"
3148
+ },
3149
+ {
3150
+ "id": "role",
3151
+ "behaviour": "Says what it is to assistive technology"
3152
+ }
3153
+ ],
3028
3154
  "status": "stable",
3029
3155
  "migrationStage": null,
3030
3156
  "docsId": "overlays-menu--docs",
@@ -3093,7 +3219,16 @@
3093
3219
  }
3094
3220
  ],
3095
3221
  "variants": [],
3096
- "ownsBehaviours": [],
3222
+ "ownsBehaviours": [
3223
+ {
3224
+ "id": "base-ui",
3225
+ "behaviour": "Is built on Base UI"
3226
+ },
3227
+ {
3228
+ "id": "role",
3229
+ "behaviour": "Says what it is to assistive technology"
3230
+ }
3231
+ ],
3097
3232
  "status": "stable",
3098
3233
  "migrationStage": null,
3099
3234
  "docsId": "overlays-menu--docs",
@@ -3168,6 +3303,80 @@
3168
3303
  "text-center font-mono text-caption tabular-nums text-text-muted"
3169
3304
  ]
3170
3305
  },
3306
+ {
3307
+ "name": "Panel",
3308
+ "repo": "estiva-ui",
3309
+ "kind": "component",
3310
+ "importPath": "@estiva-app/ui",
3311
+ "sourceFile": "src/Panel.tsx",
3312
+ "purpose": "A panel of a page: its name in a header, a body that scrolls whenever it is taller than the room it has, and a row fixed at the bottom when there is one.",
3313
+ "purposeFrom": "page",
3314
+ "props": [
3315
+ {
3316
+ "name": "title",
3317
+ "takes": "anything",
3318
+ "required": true,
3319
+ "note": "The panel's name, in its header. A node for a title that is more than words."
3320
+ },
3321
+ {
3322
+ "name": "chevron",
3323
+ "takes": "true/false",
3324
+ "required": false,
3325
+ "note": "A chevron after the title, as `ContainerHeader` draws it."
3326
+ },
3327
+ {
3328
+ "name": "actions",
3329
+ "takes": "anything",
3330
+ "required": false,
3331
+ "note": "The panel's own actions, at the header's right — a `Toolbar` of `ToolbarButton`s, or one `IconButton`."
3332
+ },
3333
+ {
3334
+ "name": "children",
3335
+ "takes": "anything",
3336
+ "required": true,
3337
+ "note": "The body. It scrolls when it is taller than the panel."
3338
+ },
3339
+ {
3340
+ "name": "footer",
3341
+ "takes": "anything",
3342
+ "required": false,
3343
+ "note": "A row fixed under the body that never scrolls — a reply box."
3344
+ },
3345
+ {
3346
+ "name": "bodyClassName",
3347
+ "takes": "text",
3348
+ "required": false,
3349
+ "note": "The body's own box: its padding, gap and layout — `px-4 pt-3 pb-4`, `flex flex-col gap-2`."
3350
+ },
3351
+ {
3352
+ "name": "bodyRef",
3353
+ "takes": "Ref<HTMLDivElement>",
3354
+ "required": false,
3355
+ "note": "The body's scrolling box, for a panel that reads or drives its scroll: a thread that opens at its newest reply."
3356
+ },
3357
+ {
3358
+ "name": "onBodyScroll",
3359
+ "takes": "UIEventHandler<HTMLDivElement>",
3360
+ "required": false,
3361
+ "note": "Fires as the body scrolls."
3362
+ },
3363
+ {
3364
+ "name": "className",
3365
+ "takes": "text",
3366
+ "required": false,
3367
+ "note": "Placement only: a cap such as `max-h-[60%]` when it shares a column."
3368
+ }
3369
+ ],
3370
+ "variants": [],
3371
+ "ownsBehaviours": [],
3372
+ "status": "stable",
3373
+ "migrationStage": null,
3374
+ "docsId": "layout-panel--docs",
3375
+ "storyId": "layout-panel--default",
3376
+ "docPage": "src/Panel.mdx",
3377
+ "app": null,
3378
+ "looks": []
3379
+ },
3171
3380
  {
3172
3381
  "name": "Person",
3173
3382
  "repo": "estiva-ui",
@@ -3265,7 +3474,20 @@
3265
3474
  }
3266
3475
  ],
3267
3476
  "variants": [],
3268
- "ownsBehaviours": [],
3477
+ "ownsBehaviours": [
3478
+ {
3479
+ "id": "base-ui",
3480
+ "behaviour": "Is built on Base UI"
3481
+ },
3482
+ {
3483
+ "id": "role",
3484
+ "behaviour": "Says what it is to assistive technology"
3485
+ },
3486
+ {
3487
+ "id": "tab-stop",
3488
+ "behaviour": "Is reachable with Tab"
3489
+ }
3490
+ ],
3269
3491
  "status": "stable",
3270
3492
  "migrationStage": null,
3271
3493
  "docsId": "components-persontrigger--docs",
@@ -3399,6 +3621,10 @@
3399
3621
  "id": "page-keys",
3400
3622
  "behaviour": "Takes its keys by itself"
3401
3623
  },
3624
+ {
3625
+ "id": "focus",
3626
+ "behaviour": "Holds focus inside while open, and gives it back"
3627
+ },
3402
3628
  {
3403
3629
  "id": "follow",
3404
3630
  "behaviour": "Stays attached to its anchor on scroll and resize"
@@ -3494,6 +3720,10 @@
3494
3720
  "id": "press-outside",
3495
3721
  "behaviour": "Closes on a press outside"
3496
3722
  },
3723
+ {
3724
+ "id": "page-keys",
3725
+ "behaviour": "Takes its keys by itself"
3726
+ },
3497
3727
  {
3498
3728
  "id": "follow",
3499
3729
  "behaviour": "Stays attached to its anchor on scroll and resize"
@@ -3757,6 +3987,10 @@
3757
3987
  {
3758
3988
  "id": "base-ui",
3759
3989
  "behaviour": "Is built on Base UI"
3990
+ },
3991
+ {
3992
+ "id": "tab-stop",
3993
+ "behaviour": "Is reachable with Tab"
3760
3994
  }
3761
3995
  ],
3762
3996
  "status": "stable",
@@ -3814,7 +4048,12 @@
3814
4048
  }
3815
4049
  ],
3816
4050
  "variants": [],
3817
- "ownsBehaviours": [],
4051
+ "ownsBehaviours": [
4052
+ {
4053
+ "id": "page-keys",
4054
+ "behaviour": "Takes its keys by itself"
4055
+ }
4056
+ ],
3818
4057
  "status": "stable",
3819
4058
  "migrationStage": null,
3820
4059
  "docsId": "components-reactionpicker--docs",
@@ -3890,6 +4129,10 @@
3890
4129
  "id": "base-ui",
3891
4130
  "behaviour": "Is built on Base UI"
3892
4131
  },
4132
+ {
4133
+ "id": "tab-stop",
4134
+ "behaviour": "Is reachable with Tab"
4135
+ },
3893
4136
  {
3894
4137
  "id": "scroll",
3895
4138
  "behaviour": "Scrolls with our scrollbar"
@@ -4201,6 +4444,10 @@
4201
4444
  "id": "page-keys",
4202
4445
  "behaviour": "Takes its keys by itself"
4203
4446
  },
4447
+ {
4448
+ "id": "focus",
4449
+ "behaviour": "Holds focus inside while open, and gives it back"
4450
+ },
4204
4451
  {
4205
4452
  "id": "follow",
4206
4453
  "behaviour": "Stays attached to its anchor on scroll and resize"
@@ -4437,6 +4684,10 @@
4437
4684
  {
4438
4685
  "id": "role",
4439
4686
  "behaviour": "Says what it is to assistive technology"
4687
+ },
4688
+ {
4689
+ "id": "tab-stop",
4690
+ "behaviour": "Is reachable with Tab"
4440
4691
  }
4441
4692
  ],
4442
4693
  "status": "stable",
@@ -4459,7 +4710,12 @@
4459
4710
  "purposeFrom": "page",
4460
4711
  "props": [],
4461
4712
  "variants": [],
4462
- "ownsBehaviours": [],
4713
+ "ownsBehaviours": [
4714
+ {
4715
+ "id": "base-ui",
4716
+ "behaviour": "Is built on Base UI"
4717
+ }
4718
+ ],
4463
4719
  "status": "stable",
4464
4720
  "migrationStage": null,
4465
4721
  "docsId": "inputs-textarea--docs",
@@ -4615,7 +4871,24 @@
4615
4871
  }
4616
4872
  ],
4617
4873
  "variants": [],
4618
- "ownsBehaviours": [],
4874
+ "ownsBehaviours": [
4875
+ {
4876
+ "id": "base-ui",
4877
+ "behaviour": "Is built on Base UI"
4878
+ },
4879
+ {
4880
+ "id": "portal",
4881
+ "behaviour": "Floats on top of the page"
4882
+ },
4883
+ {
4884
+ "id": "page-keys",
4885
+ "behaviour": "Takes its keys by itself"
4886
+ },
4887
+ {
4888
+ "id": "follow",
4889
+ "behaviour": "Stays attached to its anchor on scroll and resize"
4890
+ }
4891
+ ],
4619
4892
  "status": "stable",
4620
4893
  "migrationStage": null,
4621
4894
  "docsId": "feedback-toast--docs",
@@ -4701,6 +4974,10 @@
4701
4974
  {
4702
4975
  "id": "role",
4703
4976
  "behaviour": "Says what it is to assistive technology"
4977
+ },
4978
+ {
4979
+ "id": "tab-stop",
4980
+ "behaviour": "Is reachable with Tab"
4704
4981
  }
4705
4982
  ],
4706
4983
  "status": "stable",
@@ -4800,7 +5077,16 @@
4800
5077
  ]
4801
5078
  }
4802
5079
  ],
4803
- "ownsBehaviours": [],
5080
+ "ownsBehaviours": [
5081
+ {
5082
+ "id": "base-ui",
5083
+ "behaviour": "Is built on Base UI"
5084
+ },
5085
+ {
5086
+ "id": "role",
5087
+ "behaviour": "Says what it is to assistive technology"
5088
+ }
5089
+ ],
4804
5090
  "status": "stable",
4805
5091
  "migrationStage": null,
4806
5092
  "docsId": "primitives-toolbar--docs",
@@ -4834,7 +5120,16 @@
4834
5120
  ]
4835
5121
  }
4836
5122
  ],
4837
- "ownsBehaviours": [],
5123
+ "ownsBehaviours": [
5124
+ {
5125
+ "id": "base-ui",
5126
+ "behaviour": "Is built on Base UI"
5127
+ },
5128
+ {
5129
+ "id": "role",
5130
+ "behaviour": "Says what it is to assistive technology"
5131
+ }
5132
+ ],
4838
5133
  "status": "stable",
4839
5134
  "migrationStage": null,
4840
5135
  "docsId": "primitives-toolbar--docs",
@@ -4920,7 +5215,16 @@
4920
5215
  ]
4921
5216
  }
4922
5217
  ],
4923
- "ownsBehaviours": [],
5218
+ "ownsBehaviours": [
5219
+ {
5220
+ "id": "base-ui",
5221
+ "behaviour": "Is built on Base UI"
5222
+ },
5223
+ {
5224
+ "id": "role",
5225
+ "behaviour": "Says what it is to assistive technology"
5226
+ }
5227
+ ],
4924
5228
  "status": "stable",
4925
5229
  "migrationStage": null,
4926
5230
  "docsId": "primitives-toolbar--docs",
@@ -4946,7 +5250,16 @@
4946
5250
  }
4947
5251
  ],
4948
5252
  "variants": [],
4949
- "ownsBehaviours": [],
5253
+ "ownsBehaviours": [
5254
+ {
5255
+ "id": "base-ui",
5256
+ "behaviour": "Is built on Base UI"
5257
+ },
5258
+ {
5259
+ "id": "role",
5260
+ "behaviour": "Says what it is to assistive technology"
5261
+ }
5262
+ ],
4950
5263
  "status": "stable",
4951
5264
  "migrationStage": null,
4952
5265
  "docsId": "primitives-toolbar--docs",
@@ -5041,7 +5354,28 @@
5041
5354
  }
5042
5355
  ],
5043
5356
  "variants": [],
5044
- "ownsBehaviours": [],
5357
+ "ownsBehaviours": [
5358
+ {
5359
+ "id": "base-ui",
5360
+ "behaviour": "Is built on Base UI"
5361
+ },
5362
+ {
5363
+ "id": "portal",
5364
+ "behaviour": "Floats on top of the page"
5365
+ },
5366
+ {
5367
+ "id": "press-outside",
5368
+ "behaviour": "Closes on a press outside"
5369
+ },
5370
+ {
5371
+ "id": "page-keys",
5372
+ "behaviour": "Takes its keys by itself"
5373
+ },
5374
+ {
5375
+ "id": "follow",
5376
+ "behaviour": "Stays attached to its anchor on scroll and resize"
5377
+ }
5378
+ ],
5045
5379
  "status": "stable",
5046
5380
  "migrationStage": null,
5047
5381
  "docsId": "primitives-tooltip--docs",
@@ -5193,6 +5527,22 @@
5193
5527
  "id": "base-ui",
5194
5528
  "behaviour": "Is built on Base UI"
5195
5529
  },
5530
+ {
5531
+ "id": "portal",
5532
+ "behaviour": "Floats on top of the page"
5533
+ },
5534
+ {
5535
+ "id": "press-outside",
5536
+ "behaviour": "Closes on a press outside"
5537
+ },
5538
+ {
5539
+ "id": "page-keys",
5540
+ "behaviour": "Takes its keys by itself"
5541
+ },
5542
+ {
5543
+ "id": "follow",
5544
+ "behaviour": "Stays attached to its anchor on scroll and resize"
5545
+ },
5196
5546
  {
5197
5547
  "id": "role",
5198
5548
  "behaviour": "Says what it is to assistive technology"
@@ -32,7 +32,8 @@ and when not to. Most of what gets asked for already exists somewhere.
32
32
  refuses a raw element, a rebuilt behaviour or a restyled part, and its error
33
33
  names the part to use.
34
34
  5. **An exception** carries its reason on the line above it. For the gate:
35
- `// @estiva-escape: <reason>`, never `eslint-disable`. For the token lint:
35
+ `// @estiva-escape(<rule>): <reason>`, naming the one rule it keeps off,
36
+ never `eslint-disable`. For the token lint:
36
37
  `// eslint-disable-next-line <rule> -- @estiva-escape: <reason>`.
37
38
 
38
39
  ## Gotchas
package/src/AppShell.mdx CHANGED
@@ -32,7 +32,8 @@ Layout only: no data, no routes.
32
32
  ## When not
33
33
 
34
34
  - Panels *inside* the content — lists beside conversations, side rails —
35
- are layout components, not the shell's business.
35
+ are layout components, not the shell's business. A list beside the
36
+ content is **ListColumn**.
36
37
  - Mixing the pairs (a rail in the solid frame, a sidebar in the floating
37
38
  one) is possible but is a new design, not a port — take it to the
38
39
  designer first.