@astryxdesign/lab 0.3.0-canary.fcbc342 → 0.4.0-canary.3112e99

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.
@@ -82,9 +82,10 @@ export interface BottomSheetProps extends BaseProps<HTMLDialogElement> {
82
82
  * - `true` (default) — `showModal()`: renders in the top layer with a focus
83
83
  * trap, a `::backdrop` scrim, body scroll lock, and tap-scrim-to-dismiss.
84
84
  * The background is inert. Use for focused tasks (filters, forms).
85
- * - `false` — `show()`: a non-modal sheet with **no scrim**. The page behind
85
+ * - `false`: `show()` renders a viewport-anchored overlay with **no scrim**. It is
86
+ * still layered above the page, not rendered inline, but the page behind
86
87
  * stays interactive and scrollable (like Material's *standard* bottom
87
- * sheet, or an iOS undimmed detent). Escape still closes while focus is
88
+ * sheet or an iOS undimmed detent). Escape still closes while focus is
88
89
  * inside the sheet, and drag/flick-to-dismiss still work. Use for a peek
89
90
  * surface that coexists with the page (e.g. a panel over a live map).
90
91
  * @default true
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AA2BlD;;;;;;GAMG;AACH,QAAA,MAAM,cAAc;;;;CAIV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAiL5D,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,MAAiB,EACjB,QAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA0LlB;yBApMe,WAAW"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AA2BlD;;;;;;GAMG;AACH,QAAA,MAAM,cAAc;;;;CAIV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,cAAc,CAAC;AAiL5D,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,MAAiB,EACjB,QAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA0LlB;yBApMe,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatEmojiPicker.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatEmojiPicker.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAYrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,eAAe,CAiB9D,CAAC;AAIF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA+DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAA4B,EAC5B,KAAuB,EACvB,WAA4B,EAC5B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BAoFtB;yBA/Fe,eAAe"}
1
+ {"version":3,"file":"ChatEmojiPicker.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatEmojiPicker.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAYrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAOlD,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,eAAe,CAiB9D,CAAC;AAIF,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;;OAGG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAExC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,MAA4B,EAC5B,KAAuB,EACvB,WAA4B,EAC5B,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GACJ,EAAE,oBAAoB,+BAuFtB;yBAlGe,eAAe"}
@@ -24,7 +24,7 @@ import { useState } from 'react';
24
24
  import * as stylex from '@stylexjs/stylex';
25
25
  import '@astryxdesign/core/theme/tokens.stylex';
26
26
  import { colorVars, spacingVars, radiusVars, durationVars, easeVars, typographyVars, typeScaleVars } from '@astryxdesign/core/theme/tokens.stylex';
27
- import { mergeProps } from '@astryxdesign/core/utils';
27
+ import { focusOutlineStyles, mergeProps } from '@astryxdesign/core/utils';
28
28
  import { themeProps } from '@astryxdesign/core/utils';
29
29
  import { Popover } from '@astryxdesign/core/Popover';
30
30
  import { TextInput } from '@astryxdesign/core/TextInput';
@@ -96,6 +96,25 @@ const styles = {
96
96
  kzqmXN: "x1dz1jew",
97
97
  kB7OPa: "x9f619",
98
98
  $$css: true
99
+ },
100
+ cell: {
101
+ k1xSpc: "x3nfvp2",
102
+ kGNEyG: "x6s0dn4",
103
+ kjj79g: "xl56j7k",
104
+ kzqmXN: "x1td3qas",
105
+ kZKoxP: "x10w6t97",
106
+ kaIpWk: "xx3sua9",
107
+ ksu8eU: "xng3xce",
108
+ kmVPX3: "x1717udv",
109
+ kWkggS: "xjbqb8w x1n5bzlp xe9uy6x",
110
+ kkrTdU: "x1ypdohk",
111
+ kGuDYH: "xosj86m",
112
+ kLWn49: "xw6l6zx",
113
+ kInvED: "x1wfwxd8 x1bqaal",
114
+ k1ekBW: "x15406qy",
115
+ kIyJzY: "xuedmi6 x12w9bfk",
116
+ kAMwcw: "xlr8y92",
117
+ $$css: true
99
118
  }
100
119
  };
101
120
 
@@ -185,9 +204,7 @@ export function ChatEmojiPicker({
185
204
  "data-emoji": option.emoji,
186
205
  "aria-label": `React with ${option.name}`,
187
206
  onClick: () => handleSelect(option.emoji),
188
- ...{
189
- className: "x3nfvp2 x6s0dn4 xl56j7k x1td3qas x10w6t97 xx3sua9 xng3xce x1717udv xjbqb8w x1n5bzlp xe9uy6x x1ypdohk xosj86m xw6l6zx x1a2a7pz x17nn4n9 x2ssjo2 x15406qy xuedmi6 x12w9bfk xlr8y92"
190
- },
207
+ ...stylex.props(focusOutlineStyles.focusVisible, styles.cell),
191
208
  children: /*#__PURE__*/_jsx("span", {
192
209
  "aria-hidden": "true",
193
210
  children: option.emoji
@@ -1 +1 @@
1
- {"version":3,"file":"InfoTip.d.ts","sourceRoot":"","sources":["../../src/InfoTip/InfoTip.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAU5D;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAmCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,KAA0B,EAC1B,IAAW,GACZ,EAAE,YAAY,GAAG,SAAS,CA4C1B;yBAhDe,OAAO"}
1
+ {"version":3,"file":"InfoTip.d.ts","sourceRoot":"","sources":["../../src/InfoTip/InfoTip.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAgC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAW5D;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AA2BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,KAA0B,EAC1B,IAAW,GACZ,EAAE,YAAY,GAAG,SAAS,CA4C1B;yBAhDe,OAAO"}
@@ -19,12 +19,33 @@ import { Icon } from '@astryxdesign/core/Icon';
19
19
  import { Tooltip } from '@astryxdesign/core/Tooltip';
20
20
  import '@astryxdesign/core/theme/tokens.stylex';
21
21
  import { colorVars, durationVars, easeVars, radiusVars, spacingVars } from '@astryxdesign/core/theme/tokens.stylex';
22
+ import { focusOutlineStyles } from '@astryxdesign/core/utils';
22
23
 
23
24
  /**
24
25
  * Size of the info icon. Maps 1:1 to Icon sizes
25
26
  * (xsm: 12px, sm: 16px, md: 20px, lg: 24px).
26
27
  */
27
28
  import { jsx as _jsx } from "react/jsx-runtime";
29
+ const styles = {
30
+ trigger: {
31
+ k1xSpc: "x3nfvp2",
32
+ kGNEyG: "x6s0dn4",
33
+ kjj79g: "xl56j7k",
34
+ kXLuUW: "xxymvpz",
35
+ kmVPX3: "x12nba7r",
36
+ kogj98: "x1ghz6dp",
37
+ ksu8eU: "xng3xce",
38
+ kWkggS: "xjbqb8w",
39
+ kaIpWk: "xjspbzw",
40
+ kkrTdU: "x1ypdohk",
41
+ kMwMTN: "xv9yike xkxie9p",
42
+ k1ekBW: "xt3l3uh",
43
+ kIyJzY: "xuedmi6",
44
+ kAMwcw: "xlr8y92",
45
+ $$css: true
46
+ }
47
+ };
48
+
28
49
  /**
29
50
  * An inline info-icon help affordance: a small "i" button that reveals a
30
51
  * tooltip on hover and keyboard focus. Use it next to labels, values, and
@@ -78,9 +99,7 @@ export function InfoTip({
78
99
  onKeyDown: handleKeyDown,
79
100
  onBlur: handleReset,
80
101
  onMouseLeave: handleReset,
81
- ...{
82
- className: "x3nfvp2 x6s0dn4 xl56j7k xxymvpz x12nba7r x1ghz6dp xng3xce xjbqb8w xjspbzw x1ypdohk xv9yike xkxie9p x17nn4n9 x1wfwxd8 x7s97pk xt3l3uh xuedmi6 xlr8y92"
83
- },
102
+ ...stylex.props(focusOutlineStyles.focusVisible, styles.trigger),
84
103
  children: /*#__PURE__*/_jsx(Icon, {
85
104
  icon: "info",
86
105
  size: size
@@ -1 +1 @@
1
- {"version":3,"file":"LogStream.d.ts","sourceRoot":"","sources":["../../src/LogStream/LogStream.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAclD,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC;CAC9C;AA+ND;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAoB,EACpB,KAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAoNhB;yBAlOe,SAAS"}
1
+ {"version":3,"file":"LogStream.d.ts","sourceRoot":"","sources":["../../src/LogStream/LogStream.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAkBlD,iCAAiC;AACjC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,6DAA6D;IAC7D,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC;CAC9C;AA0ND;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAmB,EACnB,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAoB,EACpB,KAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAqNhB;yBAnOe,SAAS"}
@@ -25,7 +25,7 @@
25
25
 
26
26
  import { Fragment, useEffect, useMemo, useRef, useState } from 'react';
27
27
  import * as stylex from '@stylexjs/stylex';
28
- import { mergeProps, themeProps } from '@astryxdesign/core/utils';
28
+ import { focusOutlineStyles, mergeProps, themeProps } from '@astryxdesign/core/utils';
29
29
  import '@astryxdesign/core/theme/tokens.stylex';
30
30
  import { borderVars, colorVars, durationVars, fontWeightVars, radiusVars, shadowVars, spacingVars, textSizeVars, typographyVars } from '@astryxdesign/core/theme/tokens.stylex';
31
31
 
@@ -186,6 +186,31 @@ const styles = {
186
186
  levelErrorTerminal: {
187
187
  kMwMTN: "xbz8ry5",
188
188
  $$css: true
189
+ },
190
+ jumpToLatest: {
191
+ kVAEAm: "x10l6tqk",
192
+ krVfgx: "x1hmuevu",
193
+ kt4wiu: "x1mcfs9z",
194
+ k8WAf4: "xu0wf1k",
195
+ kg3NbH: "xrrkdod",
196
+ kaIpWk: "xjspbzw",
197
+ kMzoRj: "x1litavf",
198
+ ksu8eU: "x1y0btm7",
199
+ kVAM5u: "xvy26l8",
200
+ kWkggS: "x10xzikg x1rlsyly",
201
+ kMwMTN: "x1tgivj0",
202
+ kMv6JI: "x9m5x89",
203
+ kGuDYH: "x1eqnyfr",
204
+ k63SB2: "x1e4wzip",
205
+ kkrTdU: "x1ypdohk",
206
+ kGVxlE: "x14hfi27",
207
+ $$css: true
208
+ },
209
+ jumpToLatestTerminal: {
210
+ kVAM5u: "x70o2i5",
211
+ kWkggS: "x1my5jcs xj3zyw3",
212
+ kMwMTN: "x1tu4bv5",
213
+ $$css: true
189
214
  }
190
215
  };
191
216
  const LEVEL_STYLE = {
@@ -420,14 +445,7 @@ export function LogStream({
420
445
  }), !following && !isAtBottom && entries.length > 0 && /*#__PURE__*/_jsx("button", {
421
446
  type: "button",
422
447
  onClick: handleJumpToLatest,
423
- ...{
424
- 0: {
425
- className: "x10l6tqk x1hmuevu x1mcfs9z xu0wf1k xrrkdod xjspbzw x1litavf x1y0btm7 xvy26l8 x10xzikg x1rlsyly x1tgivj0 x9m5x89 x1eqnyfr x1e4wzip x1ypdohk x14hfi27 x1a2a7pz x17nn4n9 x1hl8ikr"
426
- },
427
- 1: {
428
- className: "x10l6tqk x1hmuevu x1mcfs9z xu0wf1k xrrkdod xjspbzw x1litavf x1y0btm7 x9m5x89 x1eqnyfr x1e4wzip x1ypdohk x14hfi27 x1a2a7pz x17nn4n9 x1hl8ikr x70o2i5 x1my5jcs xj3zyw3 x1tu4bv5"
429
- }
430
- }[!!isTerminal << 0],
448
+ ...stylex.props(focusOutlineStyles.focusVisible, styles.jumpToLatest, isTerminal && styles.jumpToLatestTerminal),
431
449
  children: "Jump to latest \u2193"
432
450
  })]
433
451
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../src/Stepper/Step.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAarC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAOlD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,aAAa,CAAC;IACzD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAsgBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,UAAkB,EAClB,UAAU,EACV,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,UAAU,EACzB,GAAG,IAAI,EACR,EAAE,SAAS,+BA0nBX;yBA5oBe,IAAI"}
1
+ {"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../src/Stepper/Step.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAarC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAOlD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,aAAa,CAAC;IACzD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AA2fD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,UAAkB,EAClB,UAAU,EACV,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,UAAU,EACzB,GAAG,IAAI,EACR,EAAE,SAAS,+BA0nBX;yBA5oBe,IAAI"}
@@ -18,7 +18,7 @@
18
18
  import * as stylex from '@stylexjs/stylex';
19
19
  import '@astryxdesign/core/theme/tokens.stylex';
20
20
  import { colorVars, spacingVars, radiusVars, fontWeightVars, typeScaleVars, durationVars, easeVars } from '@astryxdesign/core/theme/tokens.stylex';
21
- import { mergeProps } from '@astryxdesign/core/utils';
21
+ import { focusOutlineStyles, mergeProps } from '@astryxdesign/core/utils';
22
22
  import { Icon } from '@astryxdesign/core/Icon';
23
23
  import { VisuallyHidden } from '@astryxdesign/core/VisuallyHidden';
24
24
  import { useTranslator } from '@astryxdesign/core/i18n';
@@ -277,9 +277,33 @@ const styles = {
277
277
  kZCmMZ: "xchaq28",
278
278
  $$css: true
279
279
  },
280
- focusRing: {
281
- kI3sdo: "x1a2a7pz x17nn4n9",
282
- kInvED: "x1wfwxd8 x7s97pk",
280
+ densityCompact: {
281
+ k8WAf4: "xu0wf1k",
282
+ kg3NbH: "xf314gf",
283
+ $$css: true
284
+ },
285
+ densityBalanced: {
286
+ k8WAf4: "xce4md1",
287
+ kg3NbH: "xf314gf",
288
+ $$css: true
289
+ },
290
+ densitySpacious: {
291
+ k8WAf4: "x8o8v82",
292
+ kg3NbH: "xrrkdod",
293
+ $$css: true
294
+ },
295
+ buttonReset: {
296
+ k9WMMc: "x1yc453h",
297
+ kGNEyG: "x1qjc9v5",
298
+ k1xSpc: "x78zum5",
299
+ kXwgrk: "xdt5ytf",
300
+ kzqmXN: "xh8yej3",
301
+ kkrTdU: "x1ypdohk",
302
+ kaIpWk: "xh6dtrn",
303
+ k1ekBW: "x15406qy",
304
+ kIyJzY: "xkvfbh3 x12w9bfk",
305
+ kAMwcw: "xlr8y92",
306
+ kWkggS: "xjbqb8w xe9uy6x xyxi2l3",
283
307
  $$css: true
284
308
  },
285
309
  otVerticalRoot: {
@@ -703,7 +727,7 @@ export function Step({
703
727
  type: "button",
704
728
  onClick: handleClick,
705
729
  "aria-label": stepAriaLabel,
706
- ...stylex.props(styles.otInteractive, styles.otRowWrap, styles.otRowPadV(densitySpace), styles.focusRing),
730
+ ...stylex.props(styles.otInteractive, styles.otRowWrap, styles.otRowPadV(densitySpace), focusOutlineStyles.focusVisible),
707
731
  children: inner
708
732
  }) : /*#__PURE__*/_jsx("div", {
709
733
  ...stylex.props(styles.otRowWrap, styles.otRowPadV(densitySpace)),
@@ -740,7 +764,7 @@ export function Step({
740
764
  type: "button",
741
765
  onClick: handleClick,
742
766
  "aria-label": stepAriaLabel,
743
- ...stylex.props(styles.otInteractive, styles.otColWrap, styles.otPadBlock(densitySpace), styles.focusRing),
767
+ ...stylex.props(styles.otInteractive, styles.otColWrap, styles.otPadBlock(densitySpace), focusOutlineStyles.focusVisible),
744
768
  children: innerH
745
769
  }) : /*#__PURE__*/_jsx("div", {
746
770
  ...stylex.props(styles.otColWrap, styles.otPadBlock(densitySpace)),
@@ -775,32 +799,7 @@ export function Step({
775
799
  type: "button",
776
800
  onClick: handleClick,
777
801
  "aria-label": stepAriaLabel,
778
- ...{
779
- 0: {
780
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk"
781
- },
782
- 4: {
783
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xu0wf1k xf314gf"
784
- },
785
- 2: {
786
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xce4md1 xf314gf"
787
- },
788
- 6: {
789
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xce4md1 xf314gf"
790
- },
791
- 1: {
792
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
793
- },
794
- 5: {
795
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
796
- },
797
- 3: {
798
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
799
- },
800
- 7: {
801
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
802
- }
803
- }[!!(density === 'compact') << 2 | !!(density === 'balanced') << 1 | !!(density === 'spacious') << 0],
802
+ ...stylex.props(styles.buttonReset, focusOutlineStyles.focusVisible, density === 'compact' && styles.densityCompact, density === 'balanced' && styles.densityBalanced, density === 'spacious' && styles.densitySpacious),
804
803
  children: [iconLabelNode, descriptionNode]
805
804
  }) : /*#__PURE__*/_jsxs("div", {
806
805
  ...{
@@ -854,32 +853,7 @@ export function Step({
854
853
  type: "button",
855
854
  onClick: handleClick,
856
855
  "aria-label": stepAriaLabel,
857
- ...{
858
- 0: {
859
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk"
860
- },
861
- 4: {
862
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xu0wf1k xf314gf"
863
- },
864
- 2: {
865
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xce4md1 xf314gf"
866
- },
867
- 6: {
868
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xce4md1 xf314gf"
869
- },
870
- 1: {
871
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
872
- },
873
- 5: {
874
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
875
- },
876
- 3: {
877
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
878
- },
879
- 7: {
880
- className: "x1yc453h x1qjc9v5 x78zum5 xdt5ytf xh8yej3 x1ypdohk xh6dtrn x15406qy xkvfbh3 x12w9bfk xlr8y92 xjbqb8w xe9uy6x xyxi2l3 x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x8o8v82 xrrkdod"
881
- }
882
- }[!!(density === 'compact') << 2 | !!(density === 'balanced') << 1 | !!(density === 'spacious') << 0],
856
+ ...stylex.props(styles.buttonReset, focusOutlineStyles.focusVisible, density === 'compact' && styles.densityCompact, density === 'balanced' && styles.densityBalanced, density === 'spacious' && styles.densitySpacious),
883
857
  children: [iconLabelNode, descriptionNode]
884
858
  }) : /*#__PURE__*/_jsxs("div", {
885
859
  ...{
@@ -1 +1 @@
1
- {"version":3,"file":"TransferList.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransferList.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferList.tsx"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ import { VisuallyHidden } from '@astryxdesign/core/VisuallyHidden';
27
27
  import { useAnnounce } from '@astryxdesign/core/hooks';
28
28
  import '@astryxdesign/core/theme/tokens.stylex';
29
29
  import { borderVars, colorVars, spacingVars, typeScaleVars } from '@astryxdesign/core/theme/tokens.stylex';
30
- import { mergeProps, mergeRefs, themeProps } from '@astryxdesign/core/utils';
30
+ import { focusOutlineStyles, mergeProps, mergeRefs, themeProps } from '@astryxdesign/core/utils';
31
31
  import { reorderStyles } from "../reorderStyles.js";
32
32
  import "./tokens.stylex.js";
33
33
  import { transferListVars } from "./tokens.stylex.js";
@@ -123,6 +123,23 @@ const styles = {
123
123
  k7Eaqz: "xeuugli",
124
124
  $$css: true
125
125
  },
126
+ panel: {
127
+ k1xSpc: "x78zum5",
128
+ kXwgrk: "xdt5ytf",
129
+ k7Eaqz: "xeuugli",
130
+ kVQacm: "xb3r6kr",
131
+ kInvED: "x1wfwxd8 x1bqaal",
132
+ $$css: true
133
+ },
134
+ panelDivider: {
135
+ k2ei4v: "xgbv0en x12eanku",
136
+ kVhnKS: "x1t7ytsu",
137
+ kGJrpR: "x1j92z86",
138
+ kEafiO: "x972fbf x165mbd2",
139
+ kPef9Z: "x13fuv20",
140
+ kLZC3w: "x1pc3f07",
141
+ $$css: true
142
+ },
126
143
  headerAction: {
127
144
  kZKoxP: "xt7dq6l",
128
145
  k8WAf4: "xt970qd",
@@ -775,9 +792,7 @@ export function TransferList({
775
792
  tabIndex: -1,
776
793
  ...mergeProps(themeProps('transfer-list-panel', {
777
794
  side: 'selected'
778
- }), {
779
- className: "x78zum5 xdt5ytf xeuugli xb3r6kr x1a2a7pz x17nn4n9 x2ssjo2"
780
- }),
795
+ }), stylex.props(focusOutlineStyles.focusVisible, styles.panel)),
781
796
  children: [/*#__PURE__*/_jsxs("div", {
782
797
  ...{
783
798
  className: "x78zum5 x6s0dn4 x1qughib x1txdalj xjbqb8w x101j7pr xce4md1 xrrkdod x92x3c3 x1q0q8m5 xw8gpjh"
@@ -826,9 +841,7 @@ export function TransferList({
826
841
  tabIndex: -1,
827
842
  ...mergeProps(themeProps('transfer-list-panel', {
828
843
  side: 'available'
829
- }), {
830
- className: "x78zum5 xdt5ytf xeuugli xb3r6kr x1a2a7pz x17nn4n9 x2ssjo2 xgbv0en x12eanku x1t7ytsu x1j92z86 x972fbf x165mbd2 x13fuv20 x1pc3f07"
831
- }),
844
+ }), stylex.props(focusOutlineStyles.focusVisible, styles.panel, styles.panelDivider)),
832
845
  children: [/*#__PURE__*/_jsxs("div", {
833
846
  ...{
834
847
  className: "x78zum5 x6s0dn4 x1qughib x1txdalj xjbqb8w x101j7pr xce4md1 xrrkdod x92x3c3 x1q0q8m5 xw8gpjh"
@@ -12,7 +12,7 @@
12
12
  import { type ReactNode } from 'react';
13
13
  import { type ComplexSelectorProps } from '@astryxdesign/core/ComplexSelector';
14
14
  import { type TransferListProps } from './TransferList';
15
- type TransferListSelectorShellProp = 'label' | 'triggerLabel' | 'isLabelHidden' | 'description' | 'isOptional' | 'isRequired' | 'isDisabled' | 'isLoading' | 'status' | 'statusVariant' | 'labelTooltip' | 'size' | 'width' | 'placement' | 'contentXstyle' | 'xstyle' | 'className' | 'style' | 'data-testid';
15
+ type TransferListSelectorShellProp = 'label' | 'triggerLabel' | 'isLabelHidden' | 'description' | 'isOptional' | 'isRequired' | 'isDisabled' | 'isLoading' | 'status' | 'statusVariant' | 'labelTooltip' | 'size' | 'width' | 'placement' | 'xstyle' | 'className' | 'style' | 'data-testid';
16
16
  type TransferListContentProp = 'options' | 'selectedLabel' | 'availableLabel' | 'hasSearch' | 'searchLabel' | 'searchPlaceholder' | 'isReorderable' | 'hasSelectAll' | 'hasClear' | 'renderOption' | 'selectedEmptyText' | 'availableEmptyText' | 'noResultsText';
17
17
  export type TransferListSelectorCommitBehavior = 'immediate' | 'staged';
18
18
  export type TransferListSelectorProps<T extends string = string> = Pick<ComplexSelectorProps<readonly T[]>, TransferListSelectorShellProp> & Pick<TransferListProps<T>, TransferListContentProp> & {
@@ -49,7 +49,7 @@ export type TransferListSelectorProps<T extends string = string> = Pick<ComplexS
49
49
  * />
50
50
  * ```
51
51
  */
52
- export declare function TransferListSelector<T extends string = string>({ label, description, options, value, onChange, changeAction, commitBehavior, triggerLabel, isDisabled, isLoading, width, contentXstyle, applyLabel, cancelLabel, selectedLabel, availableLabel, hasSearch, searchLabel, searchPlaceholder, isReorderable, hasSelectAll, hasClear, renderOption, selectedEmptyText, availableEmptyText, noResultsText, ...selectorProps }: TransferListSelectorProps<T>): ReactNode;
52
+ export declare function TransferListSelector<T extends string = string>({ label, description, options, value, onChange, changeAction, commitBehavior, triggerLabel, isDisabled, isLoading, width, applyLabel, cancelLabel, selectedLabel, availableLabel, hasSearch, searchLabel, searchPlaceholder, isReorderable, hasSelectAll, hasClear, renderOption, selectedEmptyText, availableEmptyText, noResultsText, ...selectorProps }: TransferListSelectorProps<T>): ReactNode;
53
53
  export declare namespace TransferListSelector {
54
54
  var displayName: string;
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TransferListSelector.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferListSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAe,KAAK,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AA0CpE,KAAK,6BAA6B,GAC9B,OAAO,GACP,cAAc,GACd,eAAe,GACf,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,eAAe,GACf,cAAc,GACd,MAAM,GACN,OAAO,GACP,WAAW,GACX,eAAe,GACf,QAAQ,GACR,WAAW,GACX,OAAO,GACP,aAAa,CAAC;AAElB,KAAK,uBAAuB,GACxB,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,aAAa,GACb,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,UAAU,GACV,cAAc,GACd,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,MAAM,kCAAkC,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CACrE,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,EAClC,6BAA6B,CAC9B,GACC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,GAAG;IACpD,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC;IACxC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,cAAc,CAAC,EAAE,kCAAkC,CAAC;IACpD,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA+BJ;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC9D,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,cAA4B,EAC5B,YAAY,EACZ,UAAU,EACV,SAAS,EACT,KAAK,EACL,aAAa,EACb,UAAoB,EACpB,WAAsB,EACtB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,GAAG,aAAa,EACjB,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,SAAS,CA+G1C;yBA3Ie,oBAAoB"}
1
+ {"version":3,"file":"TransferListSelector.d.ts","sourceRoot":"","sources":["../../src/TransferList/TransferListSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAe,KAAK,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AA4CpE,KAAK,6BAA6B,GAC9B,OAAO,GACP,cAAc,GACd,eAAe,GACf,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,eAAe,GACf,cAAc,GACd,MAAM,GACN,OAAO,GACP,WAAW,GACX,QAAQ,GACR,WAAW,GACX,OAAO,GACP,aAAa,CAAC;AAElB,KAAK,uBAAuB,GACxB,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,WAAW,GACX,aAAa,GACb,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,UAAU,GACV,cAAc,GACd,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,MAAM,kCAAkC,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CACrE,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,EAClC,6BAA6B,CAC9B,GACC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,GAAG;IACpD,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC;IACxC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,cAAc,CAAC,EAAE,kCAAkC,CAAC;IACpD,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA+BJ;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC9D,KAAK,EACL,WAAW,EACX,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,cAA4B,EAC5B,YAAY,EACZ,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAoB,EACpB,WAAsB,EACtB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,GAAG,aAAa,EACjB,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,SAAS,CAoH1C;yBA/Ie,oBAAoB"}
@@ -23,16 +23,22 @@ import { borderVars, colorVars } from '@astryxdesign/core/theme/tokens.stylex';
23
23
  import { TransferList } from "./TransferList.js";
24
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
25
  const DEFAULT_SELECTOR_WIDTH = 'min(41rem, calc(100vw - 32px))';
26
+ const _temp = {
27
+ kskxy: "x12ajvvl",
28
+ kmVPX3: "x1717udv",
29
+ kVQacm: "xb3r6kr",
30
+ kaIpWk: "x1pjcqnp",
31
+ "$$css": true
32
+ };
26
33
  const styles = {
27
- content: {
28
- kzqmXN: "x1nalo9x",
29
- ks0D6T: "x1rk9ocf",
30
- kskxy: "x12ajvvl",
31
- kmVPX3: "x1717udv",
32
- kVQacm: "xb3r6kr",
33
- kaIpWk: "x1pjcqnp",
34
+ content: width => [_temp, {
35
+ kzqmXN: width != null ? "x5lhr3w" : width,
36
+ ks0D6T: width != null ? "xf68679" : width,
34
37
  $$css: true
35
- },
38
+ }, {
39
+ "--x-width": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(width),
40
+ "--x-maxWidth": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(width)
41
+ }],
36
42
  footer: {
37
43
  kmuXW: "x2lah0s",
38
44
  kEafiO: "x11xkdxz",
@@ -88,7 +94,6 @@ export function TransferListSelector({
88
94
  isDisabled,
89
95
  isLoading,
90
96
  width,
91
- contentXstyle,
92
97
  applyLabel = 'Apply',
93
98
  cancelLabel = 'Cancel',
94
99
  selectedLabel,
@@ -124,6 +129,7 @@ export function TransferListSelector({
124
129
  }
125
130
  previousCommitBehaviorRef.current = commitBehavior;
126
131
  }, [commitBehavior, resetDraft]);
132
+ const resolvedWidth = typeof width === 'number' ? `${width}px` : width ?? DEFAULT_SELECTOR_WIDTH;
127
133
  return /*#__PURE__*/_jsx(ComplexSelector, {
128
134
  ...selectorProps,
129
135
  label: label,
@@ -134,8 +140,8 @@ export function TransferListSelector({
134
140
  triggerLabel: triggerLabel ?? `${value.length} selected`,
135
141
  isDisabled: isDisabled,
136
142
  isLoading: isLoading,
137
- width: width ?? DEFAULT_SELECTOR_WIDTH,
138
- contentXstyle: [styles.content, contentXstyle],
143
+ width: resolvedWidth,
144
+ contentXstyle: styles.content(resolvedWidth),
139
145
  children: (appliedValue, commit, close, state) => {
140
146
  const isStaged = commitBehavior === 'staged';
141
147
  const transferListValue = isStaged ? draftValue : appliedValue;
package/dist/lab.css CHANGED
@@ -154,7 +154,6 @@
154
154
  .x1bvjpef:not(#\#):not(#\#){text-decoration:underline}
155
155
  .xb0j27v:not(#\#):not(#\#){transition:grid-template-rows var(--duration-medium) var(--ease-standard)}
156
156
  .x1ob6yzd:not(#\#):not(#\#){transition:transform var(--duration-fast) var(--ease-standard)}
157
- .x17nn4n9:focus-visible:not(#\#):not(#\#){outline:2px solid var(--color-accent)}
158
157
  .x1xfd4ba:hover:not(#\#):not(#\#){border-color:transparent}
159
158
  .xn21ew4:hover:not(#\#):not(#\#){border-color:var(--color-accent)}
160
159
  .xt0b8zv:hover:not(#\#):not(#\#){text-decoration:underline}
@@ -437,9 +436,7 @@
437
436
  .x1us6l5c:not(#\#):not(#\#):not(#\#){opacity:.8}
438
437
  .xg01cxk:not(#\#):not(#\#):not(#\#){opacity:0}
439
438
  .x1hc1fzr:not(#\#):not(#\#):not(#\#){opacity:1}
440
- .x2ssjo2:not(#\#):not(#\#):not(#\#){outline-offset:-2px}
441
439
  .x1wfwxd8:not(#\#):not(#\#):not(#\#){outline-offset:0}
442
- .x1hl8ikr:not(#\#):not(#\#):not(#\#){outline-offset:2px}
443
440
  .x1xzczws:not(#\#):not(#\#):not(#\#){overflow-anchor:none}
444
441
  .xj0a0fe:not(#\#):not(#\#):not(#\#){overflow-wrap:anywhere}
445
442
  .x1h4wwuj:not(#\#):not(#\#):not(#\#){overflow-wrap:normal}
@@ -524,7 +521,7 @@
524
521
  .xr3buco:not(#\#):not(#\#):not(#\#){z-index:var(--x-zIndex)}
525
522
  .x1rmeqbc.x1rmeqbc:where(.x1fcdk97:first-child *):not(#\#):not(#\#):not(#\#){visibility:hidden}
526
523
  .xehs70j.xehs70j:where(.x1fcdk97:last-child *):not(#\#):not(#\#):not(#\#){visibility:hidden}
527
- .x7s97pk:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:2px}
524
+ .x1bqaal:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:-2px}
528
525
  .x1df3fe5:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(-100%)}
529
526
  .xttggg:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(100%)}
530
527
  .x1n5bzlp:hover:not(#\#):not(#\#):not(#\#){background-color:transparent}
@@ -604,7 +601,6 @@
604
601
  .x1va8c73:not(#\#):not(#\#):not(#\#):not(#\#){max-width:320px}
605
602
  .x1k2d6hx:not(#\#):not(#\#):not(#\#):not(#\#){max-width:44px}
606
603
  .x11gisft:not(#\#):not(#\#):not(#\#):not(#\#){max-width:640px}
607
- .x1rk9ocf:not(#\#):not(#\#):not(#\#):not(#\#){max-width:min(41rem,calc(100vw - 32px))}
608
604
  .x1x1rfll:not(#\#):not(#\#):not(#\#):not(#\#){max-width:none}
609
605
  .xf68679:not(#\#):not(#\#):not(#\#):not(#\#){max-width:var(--x-maxWidth)}
610
606
  .x2lwn1j:not(#\#):not(#\#):not(#\#):not(#\#){min-height:0}
@@ -648,7 +644,6 @@
648
644
  .x1849jeq:not(#\#):not(#\#):not(#\#):not(#\#){width:30px}
649
645
  .x1td3qas:not(#\#):not(#\#):not(#\#):not(#\#){width:32px}
650
646
  .x1ftt334:not(#\#):not(#\#):not(#\#):not(#\#){width:5px}
651
- .x1nalo9x:not(#\#):not(#\#):not(#\#):not(#\#){width:min(41rem,calc(100vw - 32px))}
652
647
  .x1oai4fc:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--icon-size)}
653
648
  .x1m747yf:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--size-element-lg)}
654
649
  .xx9zwd3:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-1)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astryxdesign/lab",
3
- "version": "0.3.0-canary.fcbc342",
3
+ "version": "0.4.0-canary.3112e99",
4
4
  "description": "Experimental Astryx components — published to npm only under the @canary dist-tag for early testing; never released as a stable (latest) version.",
5
5
  "author": "Meta Open Source",
6
6
  "license": "MIT",
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@stylexjs/stylex": ">=0.10.0",
48
- "@astryxdesign/core": "0.3.0-canary.fcbc342",
48
+ "@astryxdesign/core": "0.4.0-canary.3112e99",
49
49
  "react": ">=19.0.0",
50
50
  "react-dom": ">=19.0.0",
51
51
  "lexical": "^0.46.0",
@@ -66,7 +66,7 @@
66
66
  "d3-shape": "^3.2.0"
67
67
  },
68
68
  "devDependencies": {
69
- "@astryxdesign/cli": "0.3.0-canary.fcbc342",
69
+ "@astryxdesign/cli": "0.4.0-canary.3112e99",
70
70
  "@lexical/code": "^0.46.0",
71
71
  "@lexical/headless": "^0.46.0",
72
72
  "@lexical/html": "^0.46.0",
@@ -47,7 +47,7 @@ export const docs = {
47
47
  {
48
48
  name: 'hasScrim',
49
49
  type: 'boolean',
50
- description: "Whether to render a modal scrim behind the sheet. true (default) uses showModal(): top layer, focus trap, ::backdrop scrim, body scroll lock, and tap-scrim-to-dismiss, with the background inert. false uses show(): a non-modal sheet with no scrim, leaving the page behind interactive and scrollable (like Material's standard bottom sheet or an iOS undimmed detent). Escape still closes while focus is inside, and drag/flick-to-dismiss still work.",
50
+ description: "Whether to render a scrim, the semi-transparent overlay that covers and blocks the background, behind the sheet. true (default) uses showModal(): top layer, focus trap, ::backdrop scrim, body scroll lock, and tap-scrim-to-dismiss, with the background inert. false still renders a viewport-anchored overlay above the page, not inline content, but uses show() with no scrim, leaving the page behind interactive and scrollable. Escape still closes while focus is inside, and drag/flick-to-dismiss still work.",
51
51
  default: 'true',
52
52
  },
53
53
  ],
@@ -57,7 +57,7 @@ export const docs = {
57
57
  { guidance: true, description: 'Use for mobile-first surfaces (filters, share sheets, quick actions) where the content should rise from the bottom edge.' },
58
58
  { guidance: true, description: 'Keep the caller as the source of truth: derive isOpen from state and clear it in onOpenChange.' },
59
59
  { guidance: true, description: "Pick the starting height that fits the content: 'hug' for short bounded content, 'capped' for lists, 'tall' for streaming/resizing content; the user can then drag between snap points." },
60
- { guidance: true, description: "Use hasScrim={false} (non-modal, no scrim) for a peek surface that must coexist with a live page behind it (e.g. a panel over a map); keep the default (hasScrim) for focused tasks where the background should be inert." },
60
+ { guidance: true, description: "Use hasScrim={false} for a floating, no-scrim overlay that must coexist with a live page behind it (e.g. a panel over a map). It remains viewport-anchored rather than rendering inline. Keep the default for focused tasks where the background should be inert." },
61
61
  { guidance: false, description: 'Use a BottomSheet for desktop inspectors or master-detail; use Drawer (side="end", hasScrim={false}) instead.' },
62
62
  ],
63
63
  },
@@ -95,7 +95,7 @@ export const docs = {
95
95
  </BottomSheet>`,
96
96
  },
97
97
  {
98
- label: 'Non-modal sheet (no scrim): page stays interactive',
98
+ label: 'No scrim',
99
99
  code: `const [isOpen, setIsOpen] = useState(true);
100
100
  <BottomSheet
101
101
  isOpen={isOpen}
@@ -117,7 +117,7 @@ export const docsDense = {
117
117
  { guidance: true, description: 'Use for mobile-first bottom surfaces (filters, share sheets, quick actions).' },
118
118
  { guidance: true, description: 'Derive isOpen from state; clear it in onOpenChange.' },
119
119
  { guidance: true, description: "Pick a height that fits: 'hug' for short content, 'capped' for lists, 'tall' for streaming content." },
120
- { guidance: true, description: "hasScrim={false} for a non-modal peek over a live page; default (hasScrim) for focused tasks (inert background)." },
120
+ { guidance: true, description: "hasScrim={false} for a floating no-scrim overlay over a live page; it is not inline. Keep the default for focused tasks (inert background)." },
121
121
  { guidance: false, description: 'Use for desktop inspectors or master-detail; use Drawer instead.' },
122
122
  ],
123
123
  },
@@ -297,9 +297,10 @@ export interface BottomSheetProps extends BaseProps<HTMLDialogElement> {
297
297
  * - `true` (default) — `showModal()`: renders in the top layer with a focus
298
298
  * trap, a `::backdrop` scrim, body scroll lock, and tap-scrim-to-dismiss.
299
299
  * The background is inert. Use for focused tasks (filters, forms).
300
- * - `false` — `show()`: a non-modal sheet with **no scrim**. The page behind
300
+ * - `false`: `show()` renders a viewport-anchored overlay with **no scrim**. It is
301
+ * still layered above the page, not rendered inline, but the page behind
301
302
  * stays interactive and scrollable (like Material's *standard* bottom
302
- * sheet, or an iOS undimmed detent). Escape still closes while focus is
303
+ * sheet or an iOS undimmed detent). Escape still closes while focus is
303
304
  * inside the sheet, and drag/flick-to-dismiss still work. Use for a peek
304
305
  * surface that coexists with the page (e.g. a panel over a live map).
305
306
  * @default true
@@ -34,7 +34,7 @@ import {
34
34
  typeScaleVars,
35
35
  } from '@astryxdesign/core/theme/tokens.stylex';
36
36
  import type {BaseProps} from '@astryxdesign/core';
37
- import {mergeProps} from '@astryxdesign/core/utils';
37
+ import {focusOutlineStyles, mergeProps} from '@astryxdesign/core/utils';
38
38
  import {themeProps} from '@astryxdesign/core/utils';
39
39
  import {Popover} from '@astryxdesign/core/Popover';
40
40
  import {TextInput} from '@astryxdesign/core/TextInput';
@@ -148,11 +148,9 @@ const styles = stylex.create({
148
148
  cursor: 'pointer',
149
149
  fontSize: 18,
150
150
  lineHeight: typeScaleVars['--text-body-leading'],
151
- outline: {
152
- default: 'none',
153
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
154
- },
155
- outlineOffset: -2,
151
+ // Inset, not the shared offset: the cells sit in a tight 8-across grid, so
152
+ // an outset ring would overlap its neighbors.
153
+ outlineOffset: {default: '0', ':focus-visible': -2},
156
154
  transitionProperty: 'background-color',
157
155
  transitionDuration: {
158
156
  default: durationVars['--duration-fast'],
@@ -271,7 +269,10 @@ export function ChatEmojiPicker({
271
269
  data-emoji={option.emoji}
272
270
  aria-label={`React with ${option.name}`}
273
271
  onClick={() => handleSelect(option.emoji)}
274
- {...stylex.props(styles.cell)}>
272
+ {...stylex.props(
273
+ focusOutlineStyles.focusVisible,
274
+ styles.cell,
275
+ )}>
275
276
  <span aria-hidden="true">{option.emoji}</span>
276
277
  </button>
277
278
  ))}
@@ -26,6 +26,7 @@ import {
26
26
  radiusVars,
27
27
  spacingVars,
28
28
  } from '@astryxdesign/core/theme/tokens.stylex';
29
+ import {focusOutlineStyles} from '@astryxdesign/core/utils';
29
30
 
30
31
  /**
31
32
  * Size of the info icon. Maps 1:1 to Icon sizes
@@ -70,14 +71,6 @@ const styles = stylex.create({
70
71
  '@media (hover: hover)': colorVars['--color-icon-primary'],
71
72
  },
72
73
  },
73
- outline: {
74
- default: null,
75
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
76
- },
77
- outlineOffset: {
78
- default: '0',
79
- ':focus-visible': '2px',
80
- },
81
74
  transitionProperty: 'color',
82
75
  transitionDuration: durationVars['--duration-fast'],
83
76
  transitionTimingFunction: easeVars['--ease-standard'],
@@ -145,7 +138,7 @@ export function InfoTip({
145
138
  onKeyDown={handleKeyDown}
146
139
  onBlur={handleReset}
147
140
  onMouseLeave={handleReset}
148
- {...stylex.props(styles.trigger)}>
141
+ {...stylex.props(focusOutlineStyles.focusVisible, styles.trigger)}>
149
142
  <Icon icon="info" size={size} />
150
143
  </button>
151
144
  </Tooltip>
@@ -34,7 +34,11 @@ import {
34
34
  import * as stylex from '@stylexjs/stylex';
35
35
 
36
36
  import type {BaseProps} from '@astryxdesign/core';
37
- import {mergeProps, themeProps} from '@astryxdesign/core/utils';
37
+ import {
38
+ focusOutlineStyles,
39
+ mergeProps,
40
+ themeProps,
41
+ } from '@astryxdesign/core/utils';
38
42
  import {
39
43
  borderVars,
40
44
  colorVars,
@@ -288,11 +292,6 @@ const styles = stylex.create({
288
292
  fontWeight: fontWeightVars['--font-weight-medium'],
289
293
  cursor: 'pointer',
290
294
  boxShadow: shadowVars['--shadow-med'],
291
- outline: {
292
- default: 'none',
293
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
294
- },
295
- outlineOffset: 2,
296
295
  },
297
296
  jumpToLatestTerminal: {
298
297
  borderColor: TERM.border,
@@ -561,6 +560,7 @@ export function LogStream({
561
560
  type="button"
562
561
  onClick={handleJumpToLatest}
563
562
  {...stylex.props(
563
+ focusOutlineStyles.focusVisible,
564
564
  styles.jumpToLatest,
565
565
  isTerminal && styles.jumpToLatestTerminal,
566
566
  )}>
@@ -28,7 +28,7 @@ import {
28
28
  durationVars,
29
29
  easeVars,
30
30
  } from '@astryxdesign/core/theme/tokens.stylex';
31
- import {mergeProps} from '@astryxdesign/core/utils';
31
+ import {focusOutlineStyles, mergeProps} from '@astryxdesign/core/utils';
32
32
  import type {BaseProps} from '@astryxdesign/core';
33
33
  import {Icon} from '@astryxdesign/core/Icon';
34
34
  import {VisuallyHidden} from '@astryxdesign/core/VisuallyHidden';
@@ -440,17 +440,6 @@ const styles = stylex.create({
440
440
  },
441
441
  },
442
442
 
443
- focusRing: {
444
- outline: {
445
- default: 'none',
446
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
447
- },
448
- outlineOffset: {
449
- default: '0',
450
- ':focus-visible': '2px',
451
- },
452
- },
453
-
454
443
  // ===================== ON-TRACK LAYOUT =====================
455
444
  // Indicator is slotted into the connector line as a node on the track.
456
445
  // Each step draws the connector segments that flank its own indicator; the
@@ -1109,7 +1098,7 @@ export function Step({
1109
1098
  styles.otInteractive,
1110
1099
  styles.otRowWrap,
1111
1100
  styles.otRowPadV(densitySpace),
1112
- styles.focusRing,
1101
+ focusOutlineStyles.focusVisible,
1113
1102
  )}>
1114
1103
  {inner}
1115
1104
  </button>
@@ -1187,7 +1176,7 @@ export function Step({
1187
1176
  styles.otInteractive,
1188
1177
  styles.otColWrap,
1189
1178
  styles.otPadBlock(densitySpace),
1190
- styles.focusRing,
1179
+ focusOutlineStyles.focusVisible,
1191
1180
  )}>
1192
1181
  {innerH}
1193
1182
  </button>
@@ -1239,7 +1228,7 @@ export function Step({
1239
1228
  aria-label={stepAriaLabel}
1240
1229
  {...stylex.props(
1241
1230
  styles.buttonReset,
1242
- styles.focusRing,
1231
+ focusOutlineStyles.focusVisible,
1243
1232
  density === 'compact' && styles.densityCompact,
1244
1233
  density === 'balanced' && styles.densityBalanced,
1245
1234
  density === 'spacious' && styles.densitySpacious,
@@ -1295,7 +1284,7 @@ export function Step({
1295
1284
  aria-label={stepAriaLabel}
1296
1285
  {...stylex.props(
1297
1286
  styles.buttonReset,
1298
- styles.focusRing,
1287
+ focusOutlineStyles.focusVisible,
1299
1288
  density === 'compact' && styles.densityCompact,
1300
1289
  density === 'balanced' && styles.densityBalanced,
1301
1290
  density === 'spacious' && styles.densitySpacious,
@@ -187,7 +187,7 @@ export const docs = {
187
187
  name: 'width',
188
188
  type: 'SizeValue',
189
189
  description:
190
- 'Width of the external field. Its default matches the responsive popup width; use contentXstyle to override the popup.',
190
+ 'Width of the field and its popup — both track this one value.',
191
191
  default: "'min(41rem, calc(100vw - 32px))'",
192
192
  },
193
193
  {
@@ -238,12 +238,6 @@ export const docs = {
238
238
  description:
239
239
  'Optional async action run after each immediate commit or a changed staged Apply; drives optimistic and busy state.',
240
240
  },
241
- {
242
- name: 'contentXstyle',
243
- type: 'StyleXStyles',
244
- description:
245
- 'StyleX styles composed after the default zero-padding, clipped popover content style.',
246
- },
247
241
  {
248
242
  name: 'xstyle',
249
243
  type: 'StyleXStyles',
@@ -710,7 +704,6 @@ export const docsDense = {
710
704
  labelTooltip: 'Field-label tooltip.',
711
705
  changeAction:
712
706
  'Async action after each immediate commit or changed staged Apply.',
713
- contentXstyle: 'Popover-content StyleX override.',
714
707
  xstyle: 'External field StyleX override.',
715
708
  className: 'External field class name.',
716
709
  style: 'External field inline styles.',
@@ -44,7 +44,12 @@ import {
44
44
  spacingVars,
45
45
  typeScaleVars,
46
46
  } from '@astryxdesign/core/theme/tokens.stylex';
47
- import {mergeProps, mergeRefs, themeProps} from '@astryxdesign/core/utils';
47
+ import {
48
+ focusOutlineStyles,
49
+ mergeProps,
50
+ mergeRefs,
51
+ themeProps,
52
+ } from '@astryxdesign/core/utils';
48
53
  import {reorderStyles} from '../reorderStyles';
49
54
  import {transferListVars} from './tokens.stylex';
50
55
 
@@ -234,11 +239,9 @@ const styles = stylex.create({
234
239
  flexDirection: 'column',
235
240
  minWidth: 0,
236
241
  overflow: 'hidden',
237
- outline: {
238
- default: 'none',
239
- ':focus-visible': `2px solid ${colorVars['--color-accent']}`,
240
- },
241
- outlineOffset: -2,
242
+ // Inset, not the shared offset: the panel's own edge is the container
243
+ // boundary, so an outset ring would fall outside the component.
244
+ outlineOffset: {default: '0', ':focus-visible': -2},
242
245
  },
243
246
  panelDivider: {
244
247
  borderInlineStartWidth: {
@@ -1180,7 +1183,7 @@ export function TransferList<T extends string = string>({
1180
1183
  tabIndex={-1}
1181
1184
  {...mergeProps(
1182
1185
  themeProps('transfer-list-panel', {side: 'selected'}),
1183
- stylex.props(styles.panel),
1186
+ stylex.props(focusOutlineStyles.focusVisible, styles.panel),
1184
1187
  )}>
1185
1188
  <div {...stylex.props(styles.panelHeader)}>
1186
1189
  <Text id={selectedHeadingId} type="label" color="secondary">
@@ -1233,7 +1236,11 @@ export function TransferList<T extends string = string>({
1233
1236
  tabIndex={-1}
1234
1237
  {...mergeProps(
1235
1238
  themeProps('transfer-list-panel', {side: 'available'}),
1236
- stylex.props(styles.panel, styles.panelDivider),
1239
+ stylex.props(
1240
+ focusOutlineStyles.focusVisible,
1241
+ styles.panel,
1242
+ styles.panelDivider,
1243
+ ),
1237
1244
  )}>
1238
1245
  <div {...stylex.props(styles.panelHeader)}>
1239
1246
  <Text id={availableHeadingId} type="label" color="secondary">
@@ -28,14 +28,16 @@ import {TransferList, type TransferListProps} from './TransferList';
28
28
  const DEFAULT_SELECTOR_WIDTH = 'min(41rem, calc(100vw - 32px))';
29
29
 
30
30
  const styles = stylex.create({
31
- content: {
32
- width: DEFAULT_SELECTOR_WIDTH,
33
- maxWidth: DEFAULT_SELECTOR_WIDTH,
31
+ // Width tracks the `width` prop, so the field and its popup are one
32
+ // measurement rather than two that can disagree.
33
+ content: (width: string) => ({
34
+ width,
35
+ maxWidth: width,
34
36
  maxHeight: 'calc(100vh - 32px)',
35
37
  padding: 0,
36
38
  overflow: 'hidden',
37
39
  borderRadius: 'inherit',
38
- },
40
+ }),
39
41
  surface: {
40
42
  display: 'flex',
41
43
  flexDirection: 'column',
@@ -80,7 +82,6 @@ type TransferListSelectorShellProp =
80
82
  | 'size'
81
83
  | 'width'
82
84
  | 'placement'
83
- | 'contentXstyle'
84
85
  | 'xstyle'
85
86
  | 'className'
86
87
  | 'style'
@@ -183,7 +184,6 @@ export function TransferListSelector<T extends string = string>({
183
184
  isDisabled,
184
185
  isLoading,
185
186
  width,
186
- contentXstyle,
187
187
  applyLabel = 'Apply',
188
188
  cancelLabel = 'Cancel',
189
189
  selectedLabel,
@@ -223,6 +223,11 @@ export function TransferListSelector<T extends string = string>({
223
223
  previousCommitBehaviorRef.current = commitBehavior;
224
224
  }, [commitBehavior, resetDraft]);
225
225
 
226
+ const resolvedWidth =
227
+ typeof width === 'number'
228
+ ? `${width}px`
229
+ : (width ?? DEFAULT_SELECTOR_WIDTH);
230
+
226
231
  return (
227
232
  <ComplexSelector
228
233
  {...selectorProps}
@@ -234,8 +239,8 @@ export function TransferListSelector<T extends string = string>({
234
239
  triggerLabel={triggerLabel ?? `${value.length} selected`}
235
240
  isDisabled={isDisabled}
236
241
  isLoading={isLoading}
237
- width={width ?? DEFAULT_SELECTOR_WIDTH}
238
- contentXstyle={[styles.content, contentXstyle]}>
242
+ width={resolvedWidth}
243
+ contentXstyle={styles.content(resolvedWidth)}>
239
244
  {(appliedValue, commit, close, state) => {
240
245
  const isStaged = commitBehavior === 'staged';
241
246
  const transferListValue = isStaged ? draftValue : appliedValue;