@crewlethq/ui 0.4.3 → 0.5.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 (237) hide show
  1. package/README.md +888 -24
  2. package/dist/Accordion/index.js +2 -2
  3. package/dist/AddPill/index.js +1 -1
  4. package/dist/{AddPill-DFWXYLIQ.css → AddPill-IJQYCY6C.css} +9 -0
  5. package/dist/AppShell/AppShell.d.ts +26 -5
  6. package/dist/AppShell/index.js +3 -3
  7. package/dist/{AppShell-NVE6LHNI.css → AppShell-XARELGIH.css} +178 -25
  8. package/dist/Avatar/Avatar.d.ts +85 -40
  9. package/dist/Avatar/AvatarStack.d.ts +76 -0
  10. package/dist/Avatar/index.d.ts +5 -2
  11. package/dist/Avatar/index.js +1 -1
  12. package/dist/Avatar-XID7Z74C.css +200 -0
  13. package/dist/AvatarStack-GEJBNV7E.css +72 -0
  14. package/dist/BrandLockup/index.js +1 -1
  15. package/dist/{BrandLockup-6ISDEHPJ.css → BrandLockup-JKGXFCZF.css} +25 -19
  16. package/dist/Button/Button.d.ts +7 -2
  17. package/dist/Button/index.js +1 -1
  18. package/dist/{Button-D4J6B4MA.css → Button-X4B2TJAQ.css} +50 -19
  19. package/dist/Callout/index.js +1 -1
  20. package/dist/Canvas/index.js +4 -4
  21. package/dist/Card/Card.d.ts +9 -5
  22. package/dist/Card/index.js +1 -1
  23. package/dist/{Card-RLR254LD.css → Card-GLP7SUV6.css} +25 -18
  24. package/dist/Charts/BarList.d.ts +18 -1
  25. package/dist/Charts/ChartTooltip.d.ts +68 -0
  26. package/dist/Charts/StackedBar.d.ts +25 -7
  27. package/dist/Charts/StackedColumns.d.ts +112 -0
  28. package/dist/Charts/TimeSeries.d.ts +33 -2
  29. package/dist/Charts/dataColor.d.ts +22 -14
  30. package/dist/Charts/index.d.ts +6 -0
  31. package/dist/Charts/index.js +1 -1
  32. package/dist/Charts/useChartHover.d.ts +56 -0
  33. package/dist/Charts-B3YEF7R4.css +742 -0
  34. package/dist/Checkbox/index.js +1 -1
  35. package/dist/{Checkbox-VGW26YLQ.css → Checkbox-BOXQ747I.css} +2 -2
  36. package/dist/CodeBlock/index.js +4 -4
  37. package/dist/Combobox/index.js +5 -5
  38. package/dist/CommandPalette/CommandPalette.d.ts +97 -6
  39. package/dist/CommandPalette/index.d.ts +1 -1
  40. package/dist/CommandPalette/index.js +9 -7
  41. package/dist/CommandPalette-C5AMKGN2.css +259 -0
  42. package/dist/Copyable/index.js +3 -3
  43. package/dist/DataTable/index.js +7 -7
  44. package/dist/{DataTable-ITNACQ2X.css → DataTable-OLHPF7D4.css} +44 -43
  45. package/dist/DataView/index.js +14 -14
  46. package/dist/{DataView-256YF32J.css → DataView-N6JX464S.css} +5 -4
  47. package/dist/DateTimePicker/index.js +5 -5
  48. package/dist/DiffList/index.js +1 -1
  49. package/dist/Disclosure/index.js +2 -2
  50. package/dist/EntityChip/EntityChip.d.ts +9 -12
  51. package/dist/EntityChip/index.d.ts +1 -1
  52. package/dist/EntityChip/index.js +2 -2
  53. package/dist/ErrorBoundary/index.js +2 -2
  54. package/dist/{ErrorBoundary-ME36CQTA.css → ErrorBoundary-U2PA3LY2.css} +4 -4
  55. package/dist/IconButton/index.js +1 -1
  56. package/dist/{IconButton-VQGNMJDI.css → IconButton-TVEUWK6L.css} +2 -2
  57. package/dist/ImageUpload/ImageUpload.d.ts +10 -7
  58. package/dist/ImageUpload/index.js +2 -2
  59. package/dist/{ImageUpload-HKFIZR6D.css → ImageUpload-YCHJMUGX.css} +24 -10
  60. package/dist/Input/index.js +2 -2
  61. package/dist/Kbd/Kbd.d.ts +14 -4
  62. package/dist/Kbd/index.js +1 -1
  63. package/dist/Kbd-JPLDVJIP.css +71 -0
  64. package/dist/Layer/index.js +1 -1
  65. package/dist/Link/index.js +1 -1
  66. package/dist/List/index.js +1 -1
  67. package/dist/{List-XTHESXLR.css → List-MYJIV6MP.css} +12 -2
  68. package/dist/ListInput/index.js +5 -5
  69. package/dist/Listbox/index.js +2 -2
  70. package/dist/Listbox/useListbox.d.ts +16 -0
  71. package/dist/Listbox/useOptionKeys.d.ts +12 -1
  72. package/dist/{Listbox-X2DOTSQA.css → Listbox-6WJNJQVQ.css} +60 -7
  73. package/dist/Menu/index.js +4 -4
  74. package/dist/{Menu-6DE7I66I.css → Menu-BT5PMFJI.css} +15 -0
  75. package/dist/Meter/Meter.d.ts +103 -16
  76. package/dist/Meter/index.d.ts +2 -2
  77. package/dist/Meter/index.js +1 -1
  78. package/dist/{Meter-SKOOXQBC.css → Meter-5VCSFMZW.css} +46 -7
  79. package/dist/Modal/index.js +4 -4
  80. package/dist/{Modal-XYQJ4BL6.css → Modal-JAYBS2KS.css} +13 -4
  81. package/dist/OrgLabel/OrgLabel.d.ts +60 -24
  82. package/dist/OrgLabel/index.d.ts +1 -1
  83. package/dist/OrgLabel/index.js +2 -1
  84. package/dist/{OrgLabel-D7U6QJZD.css → OrgLabel-CR233G34.css} +9 -18
  85. package/dist/OrgNode/index.js +3 -2
  86. package/dist/OrgTable/OrgTable.d.ts +2 -2
  87. package/dist/OrgTable/index.js +8 -7
  88. package/dist/Popover/index.js +2 -2
  89. package/dist/PricingCard/index.js +3 -3
  90. package/dist/{PricingCard-JFI7RYXP.css → PricingCard-7EFXRSD2.css} +4 -5
  91. package/dist/SearchTrigger/SearchTrigger.d.ts +23 -4
  92. package/dist/SearchTrigger/index.d.ts +1 -1
  93. package/dist/SearchTrigger/index.js +1 -1
  94. package/dist/SearchTrigger-Z5D4AAY7.css +112 -0
  95. package/dist/SegmentedControl/index.js +2 -2
  96. package/dist/SegmentedMeter/SegmentedMeter.d.ts +107 -0
  97. package/dist/SegmentedMeter/index.d.ts +3 -0
  98. package/dist/SegmentedMeter/index.js +2 -0
  99. package/dist/SegmentedMeter-KQNML2TW.css +109 -0
  100. package/dist/Select/index.js +3 -3
  101. package/dist/{Select-2X77FSWR.css → Select-E24U5LBC.css} +34 -0
  102. package/dist/Shortcut/index.js +2 -2
  103. package/dist/SidebarNav/SidebarNav.d.ts +85 -25
  104. package/dist/SidebarNav/index.d.ts +1 -1
  105. package/dist/SidebarNav/index.js +1 -1
  106. package/dist/SidebarNav-X5NLZNWA.css +424 -0
  107. package/dist/StatCard/StatCard.d.ts +59 -12
  108. package/dist/StatCard/index.d.ts +1 -1
  109. package/dist/StatCard/index.js +1 -1
  110. package/dist/StatCard-KPAFD4E2.css +204 -0
  111. package/dist/StatGroup/index.js +1 -1
  112. package/dist/{StatGroup-TGB6AEKM.css → StatGroup-HVG6O62W.css} +8 -9
  113. package/dist/StatusDot/StatusDot.d.ts +24 -6
  114. package/dist/StatusDot/index.js +1 -1
  115. package/dist/StatusDot-7OMCQCZF.css +186 -0
  116. package/dist/Stepper/Stepper.d.ts +78 -0
  117. package/dist/Stepper/index.d.ts +3 -0
  118. package/dist/Stepper/index.js +4 -0
  119. package/dist/Stepper-HW4JM3YH.css +176 -0
  120. package/dist/Table/index.js +1 -1
  121. package/dist/{Table-MDOLVUAW.css → Table-TGCS4C3F.css} +14 -4
  122. package/dist/Tabs/index.js +1 -1
  123. package/dist/{Tabs-VLICJFVB.css → Tabs-XCNPHA7B.css} +79 -27
  124. package/dist/Tag/Tag.d.ts +29 -22
  125. package/dist/Tag/index.js +2 -2
  126. package/dist/{Tag-VNZEYLB6.css → Tag-GBE7LQJP.css} +82 -83
  127. package/dist/TagsInput/index.js +6 -6
  128. package/dist/ThemeSwitcher/ThemeSwitcher.d.ts +53 -21
  129. package/dist/ThemeSwitcher/index.d.ts +3 -3
  130. package/dist/ThemeSwitcher/index.js +4 -3
  131. package/dist/ThemeSwitcher/preferences.d.ts +19 -5
  132. package/dist/ThemeToggle/ThemeToggle.d.ts +40 -0
  133. package/dist/ThemeToggle/index.d.ts +2 -0
  134. package/dist/ThemeToggle/index.js +5 -0
  135. package/dist/TimeWindowPicker/index.js +8 -8
  136. package/dist/Toaster/index.js +2 -2
  137. package/dist/Toolbar/index.js +2 -2
  138. package/dist/{Toolbar-IP6LXN45.css → Toolbar-HUOSMNTH.css} +3 -1
  139. package/dist/Tooltip/index.js +2 -2
  140. package/dist/Tree/index.d.ts +2 -2
  141. package/dist/Tree/index.js +1 -1
  142. package/dist/Tree/layout.d.ts +103 -28
  143. package/dist/TreeCanvas/TreeCanvas.d.ts +60 -14
  144. package/dist/TreeCanvas/index.d.ts +1 -1
  145. package/dist/TreeCanvas/index.js +6 -6
  146. package/dist/TreeCanvas/motion.d.ts +3 -2
  147. package/dist/{TreeCanvas-WBNQPHC7.css → TreeCanvas-HVOV4SQN.css} +154 -30
  148. package/dist/TreeGrid/index.js +4 -4
  149. package/dist/{chunk-F6OE5FH3.js → chunk-2FPENTCF.js} +1 -1
  150. package/dist/chunk-4AK52VHB.js +88 -0
  151. package/dist/{chunk-7EM5T4ME.js → chunk-4IQD3HUQ.js} +2 -2
  152. package/dist/{chunk-YODNNSZL.js → chunk-4PZ6FJKW.js} +43 -13
  153. package/dist/{chunk-F27EPQ7D.js → chunk-4UQ7SMPK.js} +1 -1
  154. package/dist/chunk-5QWIJSQM.js +73 -0
  155. package/dist/{chunk-GTOUGQQK.js → chunk-6MU7HNB4.js} +13 -10
  156. package/dist/{chunk-S2XHHEW4.js → chunk-74KMX7YH.js} +4 -4
  157. package/dist/{chunk-WNI2WSJF.js → chunk-7KBNFFM3.js} +1 -1
  158. package/dist/{chunk-DD5BBGBE.js → chunk-AUS5FNQE.js} +9 -5
  159. package/dist/{chunk-CMEE37QJ.js → chunk-BMYPGGPV.js} +4 -4
  160. package/dist/{chunk-H4FBTAYS.js → chunk-BNCCEER3.js} +8 -8
  161. package/dist/chunk-C5WJUZVR.js +56 -0
  162. package/dist/{chunk-5WS6L6FA.js → chunk-CAIHUYXV.js} +9 -9
  163. package/dist/{chunk-XV6WRMBC.js → chunk-CQY5NTRS.js} +4 -1
  164. package/dist/{chunk-UOGSZKLT.js → chunk-D6EVJUGU.js} +2 -2
  165. package/dist/{chunk-6ZFVFA56.js → chunk-DHPUMOTX.js} +2 -2
  166. package/dist/{chunk-HZ5XZNPS.js → chunk-DS2C73RJ.js} +3 -3
  167. package/dist/{chunk-O6232G37.js → chunk-DSUY5F4E.js} +17 -5
  168. package/dist/{chunk-Q4ZPPART.js → chunk-EFYPAJT3.js} +3 -3
  169. package/dist/{chunk-WQX73TWF.js → chunk-ERVO6OUF.js} +18 -17
  170. package/dist/{chunk-BZYDZBAN.js → chunk-ETYEBKR4.js} +3 -3
  171. package/dist/{chunk-34VGEDVV.js → chunk-FD5UEN6X.js} +30 -30
  172. package/dist/{chunk-5SDBMKUO.js → chunk-FIFNP6PL.js} +3 -3
  173. package/dist/{chunk-7HPRF5XN.js → chunk-FUF52K7E.js} +98 -16
  174. package/dist/{chunk-5KPQ6D7N.js → chunk-FZVJDJFN.js} +2 -2
  175. package/dist/chunk-IA232OTU.js +156 -0
  176. package/dist/{chunk-2EOKFKHX.js → chunk-IG27QX7Q.js} +7 -7
  177. package/dist/chunk-IKB6HFGK.js +55 -0
  178. package/dist/{chunk-FBZAKNSX.js → chunk-IPVQKAHO.js} +10 -7
  179. package/dist/{chunk-3EYF6HKB.js → chunk-IVFJD7WY.js} +28 -9
  180. package/dist/{chunk-WOYYD2YR.js → chunk-JGRNTBF2.js} +11 -11
  181. package/dist/chunk-K3OWD7BJ.js +121 -0
  182. package/dist/{chunk-BJSKPEZI.js → chunk-KD4H66L6.js} +7 -20
  183. package/dist/{chunk-SFZOKW2G.js → chunk-KJ34ZBBI.js} +8 -3
  184. package/dist/{chunk-HQNHV7D6.js → chunk-LFHCXZO5.js} +6 -6
  185. package/dist/{chunk-LWKJQTOM.js → chunk-MICH6QSJ.js} +1 -1
  186. package/dist/chunk-N3DPO6HG.js +226 -0
  187. package/dist/{chunk-S4GZWSKR.js → chunk-OM5E3TTK.js} +1 -1
  188. package/dist/{chunk-3QRYCPXQ.js → chunk-OPKIKM35.js} +6 -6
  189. package/dist/{chunk-5EKIWVOR.js → chunk-PGRPNDWM.js} +2 -2
  190. package/dist/{chunk-LFJ6UJTI.js → chunk-PQNILU27.js} +9 -9
  191. package/dist/{chunk-QNCVHRZL.js → chunk-QVAFL2LE.js} +1 -1
  192. package/dist/{chunk-QEUY3A5P.js → chunk-QY7UU5ZB.js} +3 -2
  193. package/dist/{chunk-ITHXJHBB.js → chunk-R25RGPUB.js} +1 -0
  194. package/dist/{chunk-KLJCCMF3.js → chunk-R6735B37.js} +2 -2
  195. package/dist/{chunk-3ZP55QZE.js → chunk-R6FBDTP3.js} +4 -4
  196. package/dist/{chunk-7FZ53WDJ.js → chunk-RIAZM6L3.js} +1 -1
  197. package/dist/chunk-RJM4QCGG.js +550 -0
  198. package/dist/{chunk-NTRZGNEX.js → chunk-S3BCVWTU.js} +215 -46
  199. package/dist/chunk-S7KW47IQ.js +121 -0
  200. package/dist/{chunk-OFHBK7RI.js → chunk-SJQ546ID.js} +34 -14
  201. package/dist/{chunk-D35VTV2Z.js → chunk-SV7QAONL.js} +1 -1
  202. package/dist/{chunk-IAJLHVUA.js → chunk-TIWAHZZ6.js} +1 -1
  203. package/dist/{chunk-2PRH365R.js → chunk-UA7O3KKJ.js} +1 -1
  204. package/dist/{chunk-NPZY6YYL.js → chunk-UG5ZMAXW.js} +6 -6
  205. package/dist/{chunk-FEFTGVMF.js → chunk-V2N3BMOT.js} +7 -2
  206. package/dist/{chunk-NDCATSW7.js → chunk-V34H2YCY.js} +1 -1
  207. package/dist/chunk-WIATRXEJ.js +22 -0
  208. package/dist/{chunk-5C5YMZQU.js → chunk-WOFOMTGB.js} +16 -10
  209. package/dist/{chunk-QYOFACSP.js → chunk-WSOFKOLP.js} +3 -3
  210. package/dist/{chunk-MNAXYY3R.js → chunk-WUVZDFHS.js} +31 -11
  211. package/dist/{chunk-UG46QBLT.js → chunk-YIMOT5OO.js} +10 -10
  212. package/dist/{chunk-2ZQMA2WB.js → chunk-ZPSOF6VL.js} +2 -2
  213. package/dist/generated/index.d.ts +3 -0
  214. package/dist/generated/index.js +66 -62
  215. package/dist/index.js +66 -62
  216. package/dist/styles.css +2719 -799
  217. package/dist/utils/index.d.ts +1 -1
  218. package/dist/utils/tone.d.ts +7 -12
  219. package/package.json +4 -4
  220. package/scripts/check-css-literals.mjs +159 -23
  221. package/scripts/check-css-variables.mjs +5 -3
  222. package/scripts/css-source.mjs +97 -5
  223. package/dist/Avatar-P2KRQM2B.css +0 -156
  224. package/dist/Charts-D7G2BSXH.css +0 -277
  225. package/dist/CommandPalette-CSJDUCQA.css +0 -115
  226. package/dist/Kbd-W66MXQI5.css +0 -61
  227. package/dist/SearchTrigger-QXOYAUUY.css +0 -79
  228. package/dist/SidebarNav-QGSFKZYA.css +0 -319
  229. package/dist/StatCard-KYPKZUWX.css +0 -111
  230. package/dist/StatusDot-HA2L2FSX.css +0 -84
  231. package/dist/chunk-22O7LAW2.js +0 -41
  232. package/dist/chunk-2HQR4U4D.js +0 -143
  233. package/dist/chunk-ESCO4XYW.js +0 -144
  234. package/dist/chunk-F4PJZ4ED.js +0 -245
  235. package/dist/chunk-PNFASD6F.js +0 -98
  236. package/dist/chunk-PZSWF74H.js +0 -15
  237. /package/dist/{chunk-ZCR6YGQ4.js → chunk-PKIN4IMB.js} +0 -0
@@ -1,25 +1,25 @@
1
- export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-34VGEDVV.js';
2
- import '../chunk-5EKIWVOR.js';
1
+ export { DATA_VIEW_TOOLBAR_LABELS, DataView, DataViewToolbar, FILTER_AXIS_LABELS, FilterAxisBar, FilterAxisChip, applyColumnFilters, applyFilters, blankFilterValue, defaultOperator, filterDefsFromColumns, filterHasValue, filterPredicate, formatFilterValue, operatorOf, tableColumns } from '../chunk-FD5UEN6X.js';
2
+ import '../chunk-PGRPNDWM.js';
3
3
  import '../chunk-HOXGBLEY.js';
4
4
  import '../chunk-3CZ7XAVY.js';
5
- import '../chunk-SFZOKW2G.js';
6
- import '../chunk-WQX73TWF.js';
7
- import '../chunk-FBZAKNSX.js';
5
+ import '../chunk-KJ34ZBBI.js';
6
+ import '../chunk-ERVO6OUF.js';
7
+ import '../chunk-IPVQKAHO.js';
8
8
  import '../chunk-EUCC37WY.js';
9
- import '../chunk-2EOKFKHX.js';
10
- import '../chunk-UG46QBLT.js';
11
- import '../chunk-DD5BBGBE.js';
9
+ import '../chunk-IG27QX7Q.js';
10
+ import '../chunk-YIMOT5OO.js';
11
+ import '../chunk-AUS5FNQE.js';
12
12
  import '../chunk-GXQ3B46I.js';
13
13
  import '../chunk-AV2DXAEL.js';
14
- import '../chunk-2PRH365R.js';
14
+ import '../chunk-UA7O3KKJ.js';
15
15
  import '../chunk-5VNUYO76.js';
16
- import '../chunk-GTOUGQQK.js';
17
- import '../chunk-O6232G37.js';
16
+ import '../chunk-6MU7HNB4.js';
17
+ import '../chunk-DSUY5F4E.js';
18
18
  import '../chunk-BHHIIK3M.js';
19
19
  import '../chunk-PQADV6P6.js';
20
20
  import '../chunk-7RPGY3JE.js';
21
- import '../chunk-ITHXJHBB.js';
22
- import '../chunk-F27EPQ7D.js';
23
- import '../chunk-BZYDZBAN.js';
21
+ import '../chunk-R25RGPUB.js';
22
+ import '../chunk-4UQ7SMPK.js';
23
+ import '../chunk-ETYEBKR4.js';
24
24
  import '../chunk-BZFWDIV6.js';
25
25
  import '../chunk-ODEQTPFM.js';
@@ -182,10 +182,11 @@
182
182
  * and without the boundary a reader reads them as a row of the table's own.
183
183
  *
184
184
  * A SOLID HAIRLINE. The fence was dashed, and a dashed edge MEANS SOMETHING
185
- * ELSE here: it is the mark a card or a node wears when it stands for somebody
186
- * outside the system, on the canvas and in every chart. Two meanings for one
187
- * stroke is how a reader learns neither. Every boundary in this system is the
188
- * same hairline; what differs is where it is drawn.
185
+ * ELSE here: it marks a place nothing fills yet, an empty card slot, a unit
186
+ * with no lead, the ghost of a node being added. A fence round chips that are
187
+ * there is not one of those, and two meanings for one stroke is how a reader
188
+ * learns neither. Every boundary in this system is the same hairline; what
189
+ * differs is where it is drawn.
189
190
  */
190
191
  .crewlet-filter-axis-bar {
191
192
  display: flex;
@@ -1,9 +1,9 @@
1
- export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-UG46QBLT.js';
2
- import '../chunk-DD5BBGBE.js';
1
+ export { DEFAULT_DATE_TIME_PICKER_LABELS, DateTimePicker } from '../chunk-YIMOT5OO.js';
2
+ import '../chunk-AUS5FNQE.js';
3
3
  import '../chunk-GXQ3B46I.js';
4
4
  import '../chunk-7RPGY3JE.js';
5
- import '../chunk-ITHXJHBB.js';
6
- import '../chunk-F27EPQ7D.js';
7
- import '../chunk-BZYDZBAN.js';
5
+ import '../chunk-R25RGPUB.js';
6
+ import '../chunk-4UQ7SMPK.js';
7
+ import '../chunk-ETYEBKR4.js';
8
8
  import '../chunk-BZFWDIV6.js';
9
9
  import '../chunk-ODEQTPFM.js';
@@ -1,3 +1,3 @@
1
- export { DIFF_LIST_LABELS, DiffList } from '../chunk-HQNHV7D6.js';
1
+ export { DIFF_LIST_LABELS, DiffList } from '../chunk-LFHCXZO5.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -1,5 +1,5 @@
1
- export { Disclosure } from '../chunk-LWKJQTOM.js';
2
- export { DisclosureAnatomy } from '../chunk-5KPQ6D7N.js';
1
+ export { Disclosure } from '../chunk-MICH6QSJ.js';
2
+ export { DisclosureAnatomy } from '../chunk-FZVJDJFN.js';
3
3
  import '../chunk-BHHIIK3M.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-BZFWDIV6.js';
@@ -1,14 +1,5 @@
1
1
  import { type HTMLAttributes, type ReactNode } from 'react';
2
- import { type AvatarSizeStep } from '../Avatar/index.js';
3
- /**
4
- * Whether the engine runs this one.
5
- *
6
- * `human` draws the badge with a dashed edge, which is structure and not
7
- * status: a human seat is a real seat that no agent occupies. It is carried by
8
- * the edge rather than by a hue, so the status hues keep meaning only what
9
- * they mean.
10
- */
11
- export type EntityChipVariant = 'agent' | 'human';
2
+ import { type AvatarKind, type AvatarSizeStep } from '../Avatar/index.js';
12
3
  export interface EntityChipProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
13
4
  /** Who or what this is. Drawn as initials and read as the chip's own text. */
14
5
  name: string;
@@ -19,7 +10,13 @@ export interface EntityChipProps extends Omit<HTMLAttributes<HTMLElement>, 'chil
19
10
  * this look on a router's own Link while keeping its navigation.
20
11
  */
21
12
  asChild?: boolean | undefined;
22
- variant?: EntityChipVariant | undefined;
13
+ /**
14
+ * Whether the engine runs this one: an `agent` (the default) is drawn as a
15
+ * squircle, a `human` seat as a circle, which is `Avatar`'s own kind. That is
16
+ * structure rather than status, so it is carried by the outline rather than
17
+ * by a hue and the state hues keep meaning only what they mean.
18
+ */
19
+ kind?: AvatarKind | undefined;
23
20
  /** The badge's step. The name takes the surrounding text size either way. */
24
21
  size?: AvatarSizeStep | undefined;
25
22
  children?: ReactNode;
@@ -37,4 +34,4 @@ export interface EntityChipProps extends Omit<HTMLAttributes<HTMLElement>, 'chil
37
34
  * The badge is DECORATIVE here: the name is printed right beside it, and a
38
35
  * badge that was also read would make every row say the name twice.
39
36
  */
40
- export declare function EntityChip({ name, href, asChild, variant, size, className, children, ...rest }: EntityChipProps): import("react").JSX.Element;
37
+ export declare function EntityChip({ name, href, asChild, kind, size, className, children, ...rest }: EntityChipProps): import("react").JSX.Element;
@@ -1,3 +1,3 @@
1
1
  import './EntityChip.css';
2
2
  export { EntityChip } from './EntityChip.js';
3
- export type { EntityChipProps, EntityChipVariant } from './EntityChip.js';
3
+ export type { EntityChipProps } from './EntityChip.js';
@@ -1,3 +1,3 @@
1
- export { EntityChip } from '../chunk-QYOFACSP.js';
2
- import '../chunk-PNFASD6F.js';
1
+ export { EntityChip } from '../chunk-WSOFKOLP.js';
2
+ import '../chunk-IA232OTU.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -1,4 +1,4 @@
1
- export { ErrorBoundary } from '../chunk-7EM5T4ME.js';
2
- import '../chunk-BZYDZBAN.js';
1
+ export { ErrorBoundary } from '../chunk-4IQD3HUQ.js';
2
+ import '../chunk-ETYEBKR4.js';
3
3
  import '../chunk-BZFWDIV6.js';
4
4
  import '../chunk-ODEQTPFM.js';
@@ -10,14 +10,14 @@
10
10
  flex-direction: column;
11
11
  align-items: flex-start;
12
12
  gap: var(--spacing-3);
13
- /* The panel's own body inset and its lift: a fallback is still a panel of
14
- the product, and one drawn without the rim read as a block of unstyled
15
- text where the screen should have been. */
13
+ /* The card's own recipe and its body inset: a fallback is still a panel of
14
+ the product, and one drawn without the card's ground and hairline read as
15
+ a block of unstyled text where the screen should have been. Flat, as
16
+ every card is. */
16
17
  padding: var(--spacing-4);
17
18
  border: 1px solid var(--color-border-default);
18
19
  border-radius: var(--radius-lg);
19
20
  background: var(--color-surface-subtle);
20
- box-shadow: var(--shadow-xs), var(--shadow-hairline);
21
21
  max-width: var(--size-measure);
22
22
  }
23
23
 
@@ -1,3 +1,3 @@
1
- export { IconButton } from '../chunk-F27EPQ7D.js';
1
+ export { IconButton } from '../chunk-4UQ7SMPK.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -88,13 +88,13 @@
88
88
  */
89
89
  .crewlet-icon-btn--secondary {
90
90
  background: var(--color-surface-subtle);
91
- border-color: var(--color-border-default);
91
+ border-color: var(--color-border-strong);
92
92
  color: var(--color-text-primary);
93
93
  }
94
94
 
95
95
  .crewlet-icon-btn--secondary:hover:not(:disabled):not([aria-disabled='true']) {
96
96
  background: var(--color-surface-elevated);
97
- border-color: var(--color-border-hover);
97
+ border-color: var(--color-border-strong-hover);
98
98
  }
99
99
 
100
100
  .crewlet-icon-btn--secondary:active:not(:disabled):not([aria-disabled='true']) {
@@ -1,5 +1,5 @@
1
1
  import { type HTMLAttributes } from 'react';
2
- import { type AvatarShape } from '../Avatar/index.js';
2
+ import { type AvatarKind } from '../Avatar/index.js';
3
3
  export interface ImageUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
4
4
  /** Current image source. When set, the control shows the image and the overlay label reads "Change". */
5
5
  src?: string | undefined;
@@ -8,11 +8,14 @@ export interface ImageUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, '
8
8
  /** Rendered width and height in pixels. */
9
9
  size?: number | undefined;
10
10
  /**
11
- * Outline shape passed through to the preview and fallback. Defaults to
12
- * "square", as Avatar does: what this control takes is normally a company
13
- * logo, and a wide mark cropped into a circle loses its ends.
11
+ * The picture is an Avatar, so it takes the Avatar's kind, and with it the
12
+ * outline the preview, the fallback, the trigger and the overlay are all
13
+ * drawn in. `agent`, the default as it is Avatar's, is the squircle, which
14
+ * is also the outline for a mark that is not a person, a company's logo
15
+ * among them: a wide mark cropped into a circle loses its ends. `human` is
16
+ * a person's round picture.
14
17
  */
15
- shape?: AvatarShape | undefined;
18
+ kind?: AvatarKind | undefined;
16
19
  /** When true, the control is display only: no overlay, no remove button, no file picker. */
17
20
  readOnly?: boolean | undefined;
18
21
  /** When true, the control shows a spinner and ignores interaction while an upload is in flight. */
@@ -29,9 +32,9 @@ export interface ImageUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, '
29
32
  * current image (or an initials fallback), an overlay with a camera icon and
30
33
  * an "Upload" or "Change" label (shown on hover, or always while no image is
31
34
  * set), a hidden file input, a remove button, and an uploading state. One
32
- * primitive covers both square logos and round profile pictures.
35
+ * primitive covers both a logo in the squircle and a person's round picture.
33
36
  *
34
37
  * The selection callback hands back the raw File rather than a data URL because
35
38
  * the upload now happens over the network.
36
39
  */
37
- export declare const ImageUpload: ({ src, name, size, shape, readOnly, uploading, accept, onSelect, onRemove, className, style, ...rest }: ImageUploadProps) => import("react").JSX.Element;
40
+ export declare const ImageUpload: ({ src, name, size, kind, readOnly, uploading, accept, onSelect, onRemove, className, style, ...rest }: ImageUploadProps) => import("react").JSX.Element;
@@ -1,3 +1,3 @@
1
- export { ImageUpload } from '../chunk-5WS6L6FA.js';
2
- import '../chunk-PNFASD6F.js';
1
+ export { ImageUpload } from '../chunk-CAIHUYXV.js';
2
+ import '../chunk-IA232OTU.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -17,10 +17,11 @@
17
17
  of the six places that read it: a fallback repeated six times is six
18
18
  places for the default to drift apart. */
19
19
  --crewlet-image-upload-size: 64px;
20
- /* The corner that box takes, set per instance beside the size. Declared here
21
- for the same reason the size is: a default repeated as a var() fallback at
22
- each place that reads it is several places for one default to drift. */
23
- --crewlet-image-upload-corner: var(--radius-lg);
20
+ /* The corner that box takes, set per instance beside the size from Avatar's
21
+ own `avatarCorner`, which is the one statement of the ladder a script can
22
+ read. There is deliberately NO default here: the only right value is a
23
+ proportion of the size, and a stylesheet can only restate that proportion,
24
+ which is how the trigger and the picture under it came apart before. */
24
25
  position: relative;
25
26
  display: inline-flex;
26
27
  flex-shrink: 0;
@@ -40,21 +41,34 @@
40
41
  cursor: pointer;
41
42
  }
42
43
 
43
- /* Shape modifiers keep the trigger, the overlay and the Avatar corners in step. */
44
- .crewlet-image-upload--circle .crewlet-image-upload__trigger,
45
- .crewlet-image-upload--circle .crewlet-image-upload__overlay {
44
+ /* The kind modifiers keep the trigger, the overlay and the Avatar outlines in
45
+ step. A person's picture is a circle. */
46
+ .crewlet-image-upload--human .crewlet-image-upload__trigger,
47
+ .crewlet-image-upload--human .crewlet-image-upload__overlay {
46
48
  border-radius: var(--radius-circle);
47
49
  }
48
50
 
49
51
  /* THE SAME CORNER THE PICTURE INSIDE TAKES, which is why it is a variable
50
- rather than a step: Avatar moves a square badge's radius with its box, so a
52
+ rather than a step: Avatar moves an agent badge's corner with its box, so a
51
53
  trigger pinned to one step is rounder or squarer than the badge under it at
52
54
  every size but one, and the badge's corners show through the overlay. */
53
- .crewlet-image-upload--square .crewlet-image-upload__trigger,
54
- .crewlet-image-upload--square .crewlet-image-upload__overlay {
55
+ .crewlet-image-upload--agent .crewlet-image-upload__trigger,
56
+ .crewlet-image-upload--agent .crewlet-image-upload__overlay {
55
57
  border-radius: var(--crewlet-image-upload-corner);
56
58
  }
57
59
 
60
+ /* AND THE SAME SQUIRCLE, where the browser draws one, for the same reason:
61
+ Avatar.css states why its squircle is a whole one at the circle token, and
62
+ this is that rule for the two frames over the picture. The suite holds the
63
+ two blocks to one declaration list. */
64
+ @supports (corner-shape: squircle) {
65
+ .crewlet-image-upload--agent .crewlet-image-upload__trigger,
66
+ .crewlet-image-upload--agent .crewlet-image-upload__overlay {
67
+ corner-shape: squircle;
68
+ border-radius: var(--radius-circle);
69
+ }
70
+ }
71
+
58
72
  .crewlet-image-upload__trigger:disabled {
59
73
  cursor: default;
60
74
  }
@@ -1,5 +1,5 @@
1
- export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-O6232G37.js';
1
+ export { FormField, FormRow, FormSection, Input, InputAffix, Label, ReadOnlyField, Textarea } from '../chunk-DSUY5F4E.js';
2
2
  import '../chunk-PQADV6P6.js';
3
- import '../chunk-F27EPQ7D.js';
3
+ import '../chunk-4UQ7SMPK.js';
4
4
  import '../chunk-BZFWDIV6.js';
5
5
  import '../chunk-ODEQTPFM.js';
package/dist/Kbd/Kbd.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { HTMLAttributes, ReactNode } from 'react';
1
+ import { type HTMLAttributes, type ReactNode } from 'react';
2
2
  /**
3
3
  * Whether the reader is on an Apple platform, where Command is the command key.
4
4
  *
@@ -19,9 +19,12 @@ export interface KbdProps extends HTMLAttributes<HTMLElement> {
19
19
  * A shortcut as the keys it is pressed with, in order: `['Mod', 'Shift',
20
20
  * 'z']`. `Mod` is the platform's command key, so one hint is right on both.
21
21
  *
22
- * With `keys`, the caps are drawn hidden and ONE SENTENCE is read instead:
23
- * "Command plus Shift plus Z". A screen reader given the glyphs reads
24
- * "place of interest sign Z", which names nothing anybody presses.
22
+ * The chord is drawn as ONE cap, in the platform's own notation: `⌘⇧Z` on
23
+ * an Apple platform, where the menus print a chord's symbols run together,
24
+ * and `Ctrl+Shift+Z` everywhere else, where they print them joined by a
25
+ * plus. The cap is drawn hidden and ONE SENTENCE is read instead: "Command
26
+ * plus Shift plus Z". A screen reader given the glyphs reads "place of
27
+ * interest sign Z", which names nothing anybody presses.
25
28
  */
26
29
  keys?: readonly string[] | undefined;
27
30
  /** Overrides platform detection, for a suite or a screenshot. */
@@ -36,5 +39,12 @@ export interface KbdProps extends HTMLAttributes<HTMLElement> {
36
39
  * `keys` is a whole shortcut, which needs the platform mapping and the spoken
37
40
  * sentence. A hint that says Ctrl+Z to somebody on a Mac names a key they do
38
41
  * not press.
42
+ *
43
+ * A CHORD IS ONE CAP. The keys of a shortcut are pressed together, so they
44
+ * are printed together, `⌘K` as the approved design draws every shortcut it
45
+ * shows; a cap per key read as a sequence to press one after another. Each
46
+ * key is still its own `kbd` inside the cap, which is how a key combination
47
+ * is marked up. Two shortcuts are two `Kbd`s: `↑` and `↓` beside "to move" are
48
+ * two keys that each do it, not a chord.
39
49
  */
40
50
  export declare const Kbd: ({ subtle, keys, apple, className, children, ...rest }: KbdProps) => import("react").JSX.Element;
package/dist/Kbd/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Kbd, isApplePlatform, keyGlyph } from '../chunk-SFZOKW2G.js';
1
+ export { Kbd, isApplePlatform, keyGlyph } from '../chunk-KJ34ZBBI.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -0,0 +1,71 @@
1
+ /*
2
+ * A keycap: the key's name on a small raised tile.
3
+ *
4
+ * THE APPROVED DESIGN'S CAP: the raised rung inside the strong hairline, at
5
+ * the smallest radius, in the mono face at the micro step and the tertiary
6
+ * ink. The raised fill is what makes it a KEY rather than a word in a box, so
7
+ * the cap is flat on every side: the heavier bottom edge it used to carry was
8
+ * a second way of saying "raised" that the fill now says, and it stood the
9
+ * cap a pixel taller than the line it sits in.
10
+ */
11
+ .crewlet-kbd {
12
+ display: inline-flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ min-width: 18px;
16
+ padding: 0 var(--spacing-1);
17
+ border-radius: var(--radius-xs);
18
+ border: 1px solid var(--color-border-strong);
19
+ background: var(--color-surface-elevated);
20
+ /*
21
+ * The MONO face, not the surrounding one. A keycap is a literal: the reader
22
+ * is being told which character is printed on a key, and a proportional face
23
+ * draws `l`, `I` and `1` as three widths of the same mark.
24
+ */
25
+ font-family: var(--font-family-mono);
26
+ font-variant-ligatures: none;
27
+ font-size: var(--font-size-2xs);
28
+ /* THE DOCUMENT'S OWN LEADING, because a cap is drawn INSIDE a line of text
29
+ and not beside it: a hint at the end of a search field, a key named in a
30
+ sentence, a shortcut in a menu row. Tightened it stood a pixel under the
31
+ line it sits in and the row it was in wobbled by that pixel wherever a
32
+ cap appeared and wherever one did not. */
33
+ line-height: var(--font-line-height-body);
34
+ color: var(--color-text-tertiary);
35
+ white-space: nowrap;
36
+ vertical-align: middle;
37
+ }
38
+
39
+ /*
40
+ * A key inside a CHORD's cap. The whole chord is one cap, so each key in it
41
+ * is text on that cap and nothing more, run together with the next as the
42
+ * platform prints a chord. It is a `kbd` of its own because that is what a key
43
+ * inside a key combination is, and a user agent's `kbd` rule would otherwise
44
+ * set its own face and size on it.
45
+ */
46
+ .crewlet-kbd__key {
47
+ font: inherit;
48
+ }
49
+
50
+ /*
51
+ * A quieter cap: FLATTER, not fainter. The opacity this replaces multiplied
52
+ * the ink as well as the frame, and 0.7 of a text step measures 3.43:1 on the
53
+ * panel, so a hint printing the key a reader is told to press was the one
54
+ * thing on the row they could not read. The cap gives up its raised fill and
55
+ * takes the plain hairline instead, and keeps the tertiary ink, which is
56
+ * measured at 4.5:1 on every surface the package paints on.
57
+ */
58
+ .crewlet-kbd--subtle {
59
+ border-color: var(--color-border-default);
60
+ background: none;
61
+ }
62
+
63
+ /*
64
+ * A whole shortcut: the cap drawn, and one sentence read instead of it. The
65
+ * cap is hidden from assistive technology by the component; this only lays
66
+ * it out.
67
+ */
68
+ .crewlet-kbd-combo {
69
+ display: inline-flex;
70
+ align-items: center;
71
+ }
@@ -1,3 +1,3 @@
1
1
  export { LAYER_GAP, LAYER_REPOSITION_EVENT, LayerHost, outsideBounds, placePopup, useLayerContainer, viewportBounds } from '../chunk-7RPGY3JE.js';
2
- export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer } from '../chunk-ITHXJHBB.js';
2
+ export { focusables, isComposing, isModalLayerOpen, layerCount, useBodyScrollLock, useModalLayer, usePopupLayer } from '../chunk-R25RGPUB.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -1,3 +1,3 @@
1
- export { Link } from '../chunk-2ZQMA2WB.js';
1
+ export { Link } from '../chunk-ZPSOF6VL.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -1,3 +1,3 @@
1
- export { List, ListItem } from '../chunk-HZ5XZNPS.js';
1
+ export { List, ListItem } from '../chunk-DS2C73RJ.js';
2
2
  import '../chunk-BZFWDIV6.js';
3
3
  import '../chunk-ODEQTPFM.js';
@@ -144,14 +144,24 @@
144
144
  * A row that failed. The rail is the scannable half and the glyph beside it is
145
145
  * the honest one: a reader who cannot tell the rail's hue from the row above
146
146
  * still meets a mark and a word.
147
+ *
148
+ * Both take the danger INK step, not the fill, because both are drawn on the
149
+ * row, and the row is sometimes the accent tint: a failed row can also be the
150
+ * one the reader is on. The fill is measured to 3:1 on the opaque surfaces and
151
+ * no further, so a fill rail on a selected or hovered row clears it only by
152
+ * the luck of the current palette (the red this list drew measured 3.00:1 on
153
+ * a hovered row inside a raised surface in dark); the ink clears 4.5:1 on
154
+ * every row ground, the accent tint included, which is where the palette
155
+ * suite holds a row's state rail (DATA_MARKS) and where the DataTable suite's
156
+ * sheet scan now holds this one.
147
157
  */
148
158
  .crewlet-list__item--danger > .crewlet-list__row {
149
- box-shadow: inset 2px 0 0 var(--color-feedback-danger);
159
+ box-shadow: inset 2px 0 0 var(--color-feedback-danger-ink);
150
160
  }
151
161
 
152
162
  .crewlet-list__danger-mark {
153
163
  flex: none;
154
- color: var(--color-feedback-danger);
164
+ color: var(--color-feedback-danger-ink);
155
165
  }
156
166
 
157
167
  @media (prefers-reduced-motion: reduce) {
@@ -1,10 +1,10 @@
1
- export { ListInput } from '../chunk-LFJ6UJTI.js';
2
- import '../chunk-SFZOKW2G.js';
3
- import '../chunk-O6232G37.js';
1
+ export { ListInput } from '../chunk-PQNILU27.js';
2
+ import '../chunk-KJ34ZBBI.js';
3
+ import '../chunk-DSUY5F4E.js';
4
4
  import '../chunk-PQADV6P6.js';
5
5
  import '../chunk-RSAQOKH3.js';
6
6
  import '../chunk-7RPGY3JE.js';
7
- import '../chunk-ITHXJHBB.js';
8
- import '../chunk-F27EPQ7D.js';
7
+ import '../chunk-R25RGPUB.js';
8
+ import '../chunk-4UQ7SMPK.js';
9
9
  import '../chunk-BZFWDIV6.js';
10
10
  import '../chunk-ODEQTPFM.js';
@@ -1,2 +1,2 @@
1
- export { TYPE_AHEAD_WINDOW, useListbox, useOptionKeys } from '../chunk-GTOUGQQK.js';
2
- import '../chunk-ITHXJHBB.js';
1
+ export { TYPE_AHEAD_WINDOW, useListbox, useOptionKeys } from '../chunk-6MU7HNB4.js';
2
+ import '../chunk-R25RGPUB.js';
@@ -17,6 +17,8 @@
17
17
  * so the highlight stays on a row that exists instead of jumping to the top.
18
18
  * - ENTER TAKES THE HIGHLIGHTED OPTION and is prevented, because the field is
19
19
  * usually inside a form that submits on Enter, and choosing is not saving.
20
+ * Enter held with Command, Control or Option is not Enter: it is left to
21
+ * whatever owns that chord.
20
22
  * Tab takes it too where the list is a completion (`tabCommits`); a
21
23
  * multi-select leaves Tab to move focus, as every form control does.
22
24
  * - ESCAPE CLOSES THE LIST AND NOTHING ELSE. It stops there, so the dialog or
@@ -82,6 +84,20 @@ export interface Listbox {
82
84
  listId: string;
83
85
  /** The list on screen: what a press outside is measured against, and what scrolls. */
84
86
  listRef: (el: HTMLElement | null) => void;
87
+ /**
88
+ * THE SURFACE, where it is bigger than the list — and a consumer uses this
89
+ * OR `listRef`, never both.
90
+ *
91
+ * `listRef` does two jobs because for most consumers one element does both:
92
+ * the list is what scrolls AND what a press outside is measured against. A
93
+ * popup that carries anything beside its list breaks that: a Select with
94
+ * `searchable` puts a search box in the panel as a SIBLING of the list, so a
95
+ * press on it was measured against the list, came out `outside`, and
96
+ * dismissed the popup the reader was trying to type into — the control could
97
+ * not be used with a pointer at all. Naming the surface separately is what
98
+ * keeps the two questions apart.
99
+ */
100
+ panelRef: (el: HTMLElement | null) => void;
85
101
  /** The element around the field: a press on it is not outside the list. */
86
102
  anchorRef: (el: HTMLElement | null) => void;
87
103
  /** The id of the option element at `index`. */
@@ -44,6 +44,17 @@ export interface OptionKeysOptions {
44
44
  * letters belong to a search box: that list has no type-ahead, on purpose.
45
45
  */
46
46
  textOf?: ((index: number) => string) | undefined;
47
+ /**
48
+ * Whether Home and End move the HIGHLIGHT. True by default, and false for a
49
+ * list whose field is editable, where they belong to the caret.
50
+ *
51
+ * The same split `textOf` makes, for the same reason. WAI-ARIA states it
52
+ * outright for a combobox with a listbox popup: Home and End move visual
53
+ * focus in the list only when the combobox is NOT editable; when it is, they
54
+ * are the text's. This hook cannot tell — its whole input is a count, a
55
+ * disabled predicate and some strings — so the component that knows says so.
56
+ */
57
+ ends?: boolean | undefined;
47
58
  }
48
59
  export interface OptionKeys {
49
60
  /**
@@ -61,4 +72,4 @@ export interface OptionKeys {
61
72
  */
62
73
  opening: (chosen: number) => number;
63
74
  }
64
- export declare function useOptionKeys({ listbox, count, disabled, textOf }: OptionKeysOptions): OptionKeys;
75
+ export declare function useOptionKeys({ listbox, count, disabled, textOf, ends }: OptionKeysOptions): OptionKeys;