@astryxdesign/core 0.5.1 → 0.5.2-canary.1917581

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 (111) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  3. package/dist/BottomSheet/BottomSheet.js +1 -1
  4. package/dist/BottomSheet/BottomSheetEdgeTint.d.ts +2 -2
  5. package/dist/BottomSheet/BottomSheetEdgeTint.d.ts.map +1 -1
  6. package/dist/BottomSheet/BottomSheetEdgeTint.js +7 -10
  7. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  8. package/dist/BottomSheet/BottomSheetSwitcher.js +1 -1
  9. package/dist/Button/Button.d.ts +2 -1
  10. package/dist/Button/Button.d.ts.map +1 -1
  11. package/dist/Button/Button.js +11 -4
  12. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  13. package/dist/Chat/ChatToolCalls.js +34 -17
  14. package/dist/Popover/Popover.d.ts +10 -6
  15. package/dist/Popover/Popover.d.ts.map +1 -1
  16. package/dist/Popover/Popover.js +141 -16
  17. package/dist/Popover/usePopover.d.ts +4 -0
  18. package/dist/Popover/usePopover.d.ts.map +1 -1
  19. package/dist/Popover/usePopover.js +52 -5
  20. package/dist/Toast/useToastGesture.d.ts.map +1 -1
  21. package/dist/Toast/useToastGesture.js +46 -9
  22. package/dist/astryx.css +10 -0
  23. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  24. package/dist/hooks/useFocusTrap.js +12 -0
  25. package/dist/i18n/InternationalizationContext.d.ts +2 -0
  26. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  27. package/dist/i18n/InternationalizationContext.js +3 -1
  28. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  29. package/dist/i18n/InternationalizationProvider.js +3 -1
  30. package/dist/i18n/resolve.d.ts +1 -1
  31. package/dist/i18n/resolve.d.ts.map +1 -1
  32. package/dist/i18n/resolve.js +37 -38
  33. package/dist/i18n/useTranslator.d.ts.map +1 -1
  34. package/dist/i18n/useTranslator.js +2 -3
  35. package/locales/af-ZA.json +0 -4
  36. package/locales/ar-SA.json +0 -4
  37. package/locales/ca-ES.json +0 -4
  38. package/locales/cs-CZ.json +0 -4
  39. package/locales/da-DK.json +0 -4
  40. package/locales/de-DE.json +0 -4
  41. package/locales/el-GR.json +0 -4
  42. package/locales/en.json +16 -0
  43. package/locales/es-ES.json +0 -4
  44. package/locales/fi-FI.json +0 -4
  45. package/locales/fr-FR.json +0 -4
  46. package/locales/he-IL.json +0 -4
  47. package/locales/hu-HU.json +0 -4
  48. package/locales/it-IT.json +0 -4
  49. package/locales/ja-JP.json +0 -4
  50. package/locales/ko-KR.json +0 -4
  51. package/locales/nl-NL.json +0 -4
  52. package/locales/no-NO.json +0 -4
  53. package/locales/pl-PL.json +0 -4
  54. package/locales/pseudo.json +12 -0
  55. package/locales/pt-BR.json +0 -4
  56. package/locales/pt-PT.json +0 -4
  57. package/locales/ro-RO.json +0 -4
  58. package/locales/ru-RU.json +0 -4
  59. package/locales/sr-SP.json +0 -4
  60. package/locales/sv-SE.json +0 -4
  61. package/locales/tr-TR.json +0 -4
  62. package/locales/uk-UA.json +0 -4
  63. package/locales/vi-VN.json +0 -4
  64. package/locales/zh-CN.json +0 -4
  65. package/locales/zh-TW.json +0 -4
  66. package/package.json +3 -3
  67. package/src/BottomSheet/BottomSheet.tsx +1 -2
  68. package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +4 -6
  69. package/src/BottomSheet/BottomSheetEdgeTint.tsx +7 -10
  70. package/src/BottomSheet/BottomSheetSwitcher.tsx +1 -2
  71. package/src/Button/Button.test.tsx +10 -0
  72. package/src/Button/Button.tsx +13 -5
  73. package/src/Calendar/Calendar.doc.mjs +1 -1
  74. package/src/Chat/ChatToolCalls.test.tsx +44 -0
  75. package/src/Chat/ChatToolCalls.tsx +36 -15
  76. package/src/CheckboxInput/CheckboxInput.doc.mjs +1 -1
  77. package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
  78. package/src/ComplexSelector/ComplexSelector.doc.mjs +2 -2
  79. package/src/DateInput/DateInput.doc.mjs +1 -1
  80. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  81. package/src/DateTimeInput/DateTimeInput.doc.mjs +1 -1
  82. package/src/Field/Field.doc.mjs +1 -1
  83. package/src/FieldStatus/FieldStatus.doc.mjs +1 -1
  84. package/src/FileInput/FileInput.doc.mjs +1 -1
  85. package/src/Indicator/Indicator.doc.mjs +1 -1
  86. package/src/InputGroup/InputGroup.doc.mjs +1 -1
  87. package/src/MultiSelector/MultiSelector.doc.mjs +1 -1
  88. package/src/NumberInput/NumberInput.doc.mjs +1 -1
  89. package/src/Popover/Popover.doc.mjs +11 -11
  90. package/src/Popover/Popover.test.tsx +397 -2
  91. package/src/Popover/Popover.tsx +228 -21
  92. package/src/Popover/usePopover.tsx +92 -15
  93. package/src/PowerSearch/PowerSearch.doc.mjs +1 -1
  94. package/src/RadioList/RadioList.doc.mjs +1 -1
  95. package/src/Selector/Selector.doc.mjs +1 -1
  96. package/src/Slider/Slider.doc.mjs +2 -2
  97. package/src/Switch/Switch.doc.mjs +1 -1
  98. package/src/TextArea/TextArea.doc.mjs +1 -1
  99. package/src/TextInput/TextInput.doc.mjs +1 -1
  100. package/src/TimeInput/TimeInput.doc.mjs +1 -1
  101. package/src/Toast/ToastViewport.test.tsx +118 -4
  102. package/src/Toast/useToastGesture.ts +61 -8
  103. package/src/Tokenizer/Tokenizer.doc.mjs +1 -1
  104. package/src/Typeahead/Typeahead.doc.mjs +1 -1
  105. package/src/hooks/useFocusTrap.test.tsx +40 -0
  106. package/src/hooks/useFocusTrap.ts +13 -0
  107. package/src/i18n/InternationalizationContext.ts +3 -0
  108. package/src/i18n/InternationalizationProvider.tsx +8 -1
  109. package/src/i18n/__tests__/resolve.test.ts +23 -1
  110. package/src/i18n/resolve.ts +46 -49
  111. package/src/i18n/useTranslator.ts +2 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @xds/core
2
2
 
3
+ # 0.5.2
4
+
5
+ #### Fixes
6
+
7
+ - Rename the Data Input component category to Form Controls (#5686)
8
+
9
+ #### Performance
10
+
11
+ - Improve frequent translation lookups by pre-building locale maps (#4696)
12
+
13
+ #### Contributors
14
+
15
+ Thanks to everyone who contributed to this release:
16
+
17
+ - @ngolin
18
+ - @rubyycheung
19
+
20
+ ---
21
+
3
22
  # 0.5.1
4
23
 
5
24
  #### New Features
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAe7C,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAyEhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AA4XxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
1
+ {"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheet.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAe7C,YAAY,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,EAAC,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAyEhF,UAAU,sBAAuB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAChE,qDAAqD;IACrD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,CAAC;IAEpB,wGAAwG;IACxG,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;IAE7C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,0BAA2B,SAAQ,sBAAsB;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAC1B,0BAA0B,GAAG,wBAAwB,CAAC;AA2XxD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA6BlD;yBA7Be,WAAW"}
@@ -274,7 +274,7 @@ function StandaloneBottomSheet({
274
274
  onMotionComplete: handleMotionComplete,
275
275
  children: children
276
276
  })
277
- }), hasScrim ? null : /*#__PURE__*/_jsx(BottomSheetEdgeTint, {})]
277
+ }), /*#__PURE__*/_jsx(BottomSheetEdgeTint, {})]
278
278
  });
279
279
  }
280
280
  function SwitcherBottomSheetItem({
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Colours the iOS Safari toolbar strip below a non-modal sheet. Renders
3
- * nothing visible; see the file header for why it exists.
2
+ * Colours the iOS Safari toolbar strip below a sheet. Renders nothing visible;
3
+ * see the file header for why it exists.
4
4
  */
5
5
  export declare function BottomSheetEdgeTint(): import("react").JSX.Element;
6
6
  //# sourceMappingURL=BottomSheetEdgeTint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetEdgeTint.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetEdgeTint.tsx"],"names":[],"mappings":"AAqEA;;;GAGG;AACH,wBAAgB,mBAAmB,gCAQlC"}
1
+ {"version":3,"file":"BottomSheetEdgeTint.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetEdgeTint.tsx"],"names":[],"mappings":"AAkEA;;;GAGG;AACH,wBAAgB,mBAAmB,gCAQlC"}
@@ -6,7 +6,7 @@
6
6
  * @file BottomSheetEdgeTint.tsx
7
7
  * @input Uses StyleX and core color tokens
8
8
  * @output Exports BottomSheetEdgeTint, an internal decorative element
9
- * @position Private helper rendered inside a non-modal BottomSheet dialog
9
+ * @position Private helper rendered inside every BottomSheet dialog
10
10
  *
11
11
  * iOS 26 Safari dropped `<meta name="theme-color">` and instead derives the
12
12
  * colour it paints behind its translucent toolbars by sampling the page: it
@@ -14,13 +14,10 @@
14
14
  * `fixed`/`sticky` ancestor, and extends that element's declared
15
15
  * `background-color` into the browser chrome.
16
16
  *
17
- * A modal sheet is served by that heuristic already — WebKit has a dedicated
18
- * branch for a dialog's `::backdrop`. A non-modal sheet is not: the nearest
19
- * fixed ancestor of the panel is the sheet's own full-viewport `<dialog>`,
20
- * which is transparent and viewport-sized, and WebKit answers a viewport-sized
21
- * candidate by *keeping the colour it already had* — the host page's. The page
22
- * then shows through behind the address bar while the sheet covers the screen
23
- * above it.
17
+ * WebKit may otherwise extend either the dialog backdrop or the host page into
18
+ * the browser chrome. Which one wins varies with dialog mode and the page's
19
+ * own fixed or sticky edge content, so relying on the backdrop makes otherwise
20
+ * identical BottomSheets produce different toolbar colours.
24
21
  *
25
22
  * This element gives the heuristic something unambiguous to sample: fixed,
26
23
  * full width, flush with the bottom edge, taller than WebKit's 10px minimum
@@ -48,8 +45,8 @@ import { colorVars } from "../theme/tokens.stylex.js";
48
45
  import { jsx as _jsx } from "react/jsx-runtime";
49
46
  const SAMPLE_HEIGHT_PX = 12;
50
47
  /**
51
- * Colours the iOS Safari toolbar strip below a non-modal sheet. Renders
52
- * nothing visible; see the file header for why it exists.
48
+ * Colours the iOS Safari toolbar strip below a sheet. Renders nothing visible;
49
+ * see the file header for why it exists.
53
50
  */
54
51
  export function BottomSheetEdgeTint() {
55
52
  return /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetSwitcher.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcher.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAQL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAqI5C,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5E,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE9D;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,iEAAiE;IACjE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,mBAAmB,EACnB,QAAe,EACf,QAAQ,EACR,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,+BA+Z1B;yBA5ae,mBAAmB"}
1
+ {"version":3,"file":"BottomSheetSwitcher.d.ts","sourceRoot":"","sources":["../../src/BottomSheet/BottomSheetSwitcher.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAQL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAqI5C,MAAM,WAAW,wBAAyB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC5E,iDAAiD;IACjD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEnC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE9D;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,iEAAiE;IACjE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0DAA0D;IAC1D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,mBAAmB,EACnB,QAAe,EACf,QAAQ,EACR,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,+BA8Z1B;yBA3ae,mBAAmB"}
@@ -410,7 +410,7 @@ export function BottomSheetSwitcher({
410
410
  ...(activeSheetPurpose === 'required' ? {
411
411
  role: 'alertdialog'
412
412
  } : undefined),
413
- children: [children, hasScrim ? null : /*#__PURE__*/_jsx(BottomSheetEdgeTint, {})]
413
+ children: [children, /*#__PURE__*/_jsx(BottomSheetEdgeTint, {})]
414
414
  })
415
415
  });
416
416
  }
@@ -78,7 +78,8 @@ export interface ButtonProps extends BaseProps<HTMLButtonElement> {
78
78
  */
79
79
  isDisabled?: boolean;
80
80
  /**
81
- * Whether the button is in a loading state.
81
+ * Whether the button is in a loading state. Loading prevents interaction
82
+ * without dimming the spinner; explicit disabled states remain dimmed.
82
83
  * @default false
83
84
  */
84
85
  isLoading?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAwB3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAKrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AA0G9C,QAAA,MAAM,UAAU;;;;;;;;;;EAUd,CAAC;AAsDH;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAEjD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuJD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAqB,EACrB,IAAI,EAAE,QAAQ,EACd,IAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,eAAuB,EACvB,WAAW,EACX,IAAI,EACJ,UAAkB,EAClB,KAAK,EACL,SAAkB,EAClB,QAAQ,EACR,UAAU,EACV,OAAO,EACP,IAAI,EACJ,EAAE,EACF,MAAM,EACN,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,SAAS,CAoPzB;yBA7Qe,MAAM"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -66,16 +66,19 @@ const styles = {
66
66
  $$css: true
67
67
  },
68
68
  pressable: {
69
- k3aq6I: "x3oybdh xk4oym4",
69
+ k3aq6I: "x3oybdh x8ppqj",
70
70
  $$css: true
71
71
  },
72
- disabled: {
72
+ inactive: {
73
73
  kkrTdU: "xt0e3qv",
74
- kSiTet: "xbyyjgo",
75
74
  kKwaWg: "x18o3ruo",
76
75
  k3aq6I: "x1c071of x1pdlv7q",
77
76
  $$css: true
78
77
  },
78
+ disabled: {
79
+ kSiTet: "xbyyjgo",
80
+ $$css: true
81
+ },
79
82
  ariaDisabled: {
80
83
  kKwaWg: "x18o3ruo xuqm82a",
81
84
  $$css: true
@@ -374,6 +377,10 @@ export function Button({
374
377
  // When interruptible, the loading state drives the spinner and aria-busy but
375
378
  // not disabled, so clicks keep landing and can interrupt the in-flight action.
376
379
  const buttonDisabled = isDisabled || groupDisabled || isLoadingState && !isInterruptible;
380
+ // A loading button remains non-interactive, but its spinner communicates an
381
+ // active state and must retain contrast. Only explicitly disabled controls
382
+ // receive the visually dimmed treatment.
383
+ const visuallyDisabled = isDisabled || groupDisabled;
377
384
  // isIconOnly prop is the source of truth for icon-only rendering.
378
385
  // When false (default), label is always rendered as visible text.
379
386
 
@@ -434,7 +441,7 @@ export function Button({
434
441
  } : null;
435
442
 
436
443
  // Shared StyleX props for both button and link rendering
437
- const sharedStylexProps = focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isIconOnly && styles.iconOnly, interactionOverlayStyles.backgroundImage, buttonDisabled && styles.disabled, useAriaDisabled && styles.ariaDisabled, renderAsLink && styles.link, !buttonGroup && styles.pressable, buttonGroup && (buttonGroup.orientation === 'horizontal' ? groupStyles.horizontal : groupStyles.vertical), buttonGroup && (variant === 'primary' || variant === 'destructive') && (buttonGroup.orientation === 'horizontal' ? groupStyles.onSolidHorizontal : groupStyles.onSolidVertical),
444
+ const sharedStylexProps = focusOutlineProps.focusVisible(styles.base, sizeStyles[size], isIconOnly && styles.iconOnly, interactionOverlayStyles.backgroundImage, buttonDisabled && styles.inactive, visuallyDisabled && styles.disabled, useAriaDisabled && styles.ariaDisabled, renderAsLink && styles.link, !buttonGroup && styles.pressable, buttonGroup && (buttonGroup.orientation === 'horizontal' ? groupStyles.horizontal : groupStyles.vertical), buttonGroup && (variant === 'primary' || variant === 'destructive') && (buttonGroup.orientation === 'horizontal' ? groupStyles.onSolidHorizontal : groupStyles.onSolidVertical),
438
445
  // Standalone floating buttons only — a grouped button's elevation is owned
439
446
  // by the ButtonGroup so the shared surface lifts as one unit.
440
447
  !buttonGroup && elevationStyles[elevation], width != null && dynamicStyles.width(width),
@@ -1 +1 @@
1
- {"version":3,"file":"ChatToolCalls.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatToolCalls.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAA+B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwB5C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6FAA6F;IAC7F,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+BAA+B;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAmaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,4BA0JtD;yBA1Je,aAAa"}
1
+ {"version":3,"file":"ChatToolCalls.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatToolCalls.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,EAA+B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAwB5C,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6FAA6F;IAC7F,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,+BAA+B;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAkbD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,4BAgKtD;yBAhKe,aAAa"}
@@ -102,6 +102,23 @@ const STATUS_STYLES = {
102
102
  complete: styles.colorComplete,
103
103
  error: styles.colorError
104
104
  };
105
+ function getStatusAnnouncement(t, status, errorMessage) {
106
+ if (status === 'error' && errorMessage != null) {
107
+ return t('@astryx.chatToolCalls.error', {
108
+ message: errorMessage
109
+ });
110
+ }
111
+ switch (status) {
112
+ case 'pending':
113
+ return t('@astryx.chatToolCalls.status.pending');
114
+ case 'running':
115
+ return t('@astryx.chatToolCalls.status.running');
116
+ case 'complete':
117
+ return t('@astryx.chatToolCalls.status.complete');
118
+ case 'error':
119
+ return t('@astryx.chatToolCalls.status.error');
120
+ }
121
+ }
105
122
  function getToolCallKey(call) {
106
123
  return getKey(call.key, () => [call.name, call.status ?? 'complete', call.target ?? '', call.node ?? '', call.duration ?? '', call.additions?.toString() ?? '', call.deletions?.toString() ?? '', call.errorMessage ?? ''].join('\u001F'));
107
124
  }
@@ -118,6 +135,7 @@ function CallRow({
118
135
  const hasDetail = call.resultDetail != null;
119
136
  const [isDetailOpen, setIsDetailOpen] = useState(false);
120
137
  const detailId = useId();
138
+ const statusAnnouncement = getStatusAnnouncement(t, status, call.errorMessage);
121
139
  const toggleDetail = hasDetail ? () => setIsDetailOpen(prev => !prev) : undefined;
122
140
  const row = /*#__PURE__*/_jsxs("div", {
123
141
  role: hasDetail ? 'button' : undefined,
@@ -144,10 +162,12 @@ function CallRow({
144
162
  ...stylex.props(styles.statusIcon, STATUS_STYLES[status]),
145
163
  children: [status === 'running' ? /*#__PURE__*/_jsx(Spinner, {
146
164
  size: "sm",
147
- shade: "subtle"
165
+ shade: "subtle",
166
+ "aria-hidden": "true"
148
167
  }) : status === 'pending' ? /*#__PURE__*/_jsx(Spinner, {
149
168
  size: "sm",
150
- shade: "subtle"
169
+ shade: "subtle",
170
+ "aria-hidden": "true"
151
171
  }) : /*#__PURE__*/_jsxs(_Fragment, {
152
172
  children: [/*#__PURE__*/_jsx("span", {
153
173
  ...{
@@ -163,16 +183,8 @@ function CallRow({
163
183
  color: "inherit"
164
184
  })
165
185
  })]
166
- }), status === 'error' && call.errorMessage != null &&
167
- /*#__PURE__*/
168
- // The title attribute above is hover-only; expose the error detail
169
- // as real text so it reaches screen readers, keyboard, and touch
170
- // users. Rendering it inside the row also folds it into the
171
- // accessible name of expandable (role="button") rows.
172
- _jsx(VisuallyHidden, {
173
- children: t('@astryx.chatToolCalls.error', {
174
- message: call.errorMessage ?? ''
175
- })
186
+ }), /*#__PURE__*/_jsx(VisuallyHidden, {
187
+ children: statusAnnouncement
176
188
  })]
177
189
  }), /*#__PURE__*/_jsx("span", {
178
190
  ...{
@@ -304,6 +316,7 @@ export function ChatToolCalls(props) {
304
316
  // Multiple calls: latest call at surface with chevron to expand all
305
317
  const latestCall = calls[calls.length - 1];
306
318
  const latestStatus = latestCall.status ?? 'complete';
319
+ const latestStatusAnnouncement = getStatusAnnouncement(t, latestStatus, latestCall.errorMessage);
307
320
  return /*#__PURE__*/_jsxs("div", {
308
321
  ref: ref,
309
322
  ...mergeProps(themeProps('chat-tool-calls'), stylex.props(styles.root, xstyle), className, style),
@@ -342,14 +355,16 @@ export function ChatToolCalls(props) {
342
355
  })
343
356
  })]
344
357
  }) : /*#__PURE__*/_jsxs(_Fragment, {
345
- children: [/*#__PURE__*/_jsx("span", {
358
+ children: [/*#__PURE__*/_jsxs("span", {
346
359
  ...stylex.props(styles.statusIcon, STATUS_STYLES[latestStatus]),
347
- children: latestStatus === 'running' ? /*#__PURE__*/_jsx(Spinner, {
360
+ children: [latestStatus === 'running' ? /*#__PURE__*/_jsx(Spinner, {
348
361
  size: "sm",
349
- shade: "subtle"
362
+ shade: "subtle",
363
+ "aria-hidden": "true"
350
364
  }) : latestStatus === 'pending' ? /*#__PURE__*/_jsx(Spinner, {
351
365
  size: "sm",
352
- shade: "subtle"
366
+ shade: "subtle",
367
+ "aria-hidden": "true"
353
368
  }) : /*#__PURE__*/_jsxs(_Fragment, {
354
369
  children: [/*#__PURE__*/_jsx("span", {
355
370
  ...{
@@ -365,7 +380,9 @@ export function ChatToolCalls(props) {
365
380
  color: "inherit"
366
381
  })
367
382
  })]
368
- })
383
+ }), /*#__PURE__*/_jsx(VisuallyHidden, {
384
+ children: latestStatusAnnouncement
385
+ })]
369
386
  }), /*#__PURE__*/_jsx("span", {
370
387
  ...{
371
388
  className: "x141an7d x1ltkj2j x9m5x89 x1e4wzip xv1l7n4 xuxw1ft xb3r6kr xlyipyv xs83m0k x13n9wmd"
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file Popover.tsx
3
- * @input Uses React, usePopover hook
4
- * @output Exports Popover component for click-triggered popovers
3
+ * @input Uses React layout measurement and the usePopover hook
4
+ * @output Exports Popover with viewport fitting and conditional overflow
5
5
  * @position Layer component; declarative wrapper around usePopover hook
6
6
  *
7
7
  * For hover-triggered overlays, use HoverCard instead.
@@ -21,9 +21,11 @@ import type { LayerAlignment, LayerPlacement } from '../Layer/useLayer';
21
21
  export interface PopoverTriggerRenderProps {
22
22
  /** Ref callback — attach to the trigger element for anchor positioning. */
23
23
  ref: (el: HTMLElement | null) => void;
24
- /** Toggle the popover open/closed. */
25
- onClick: () => void;
26
- /** ARIA attribute: indicates the element triggers a dialog. */
24
+ /** Toggle the popover open/closed. Pass the click event through so pointer and keyboard focus behavior can differ. */
25
+ onClick: (event?: {
26
+ detail: number;
27
+ }) => void;
28
+ /** ARIA attribute: indicates the trigger opens a dialog-style popover. */
27
29
  'aria-haspopup': 'dialog';
28
30
  /** ARIA attribute: whether the popover is currently open. */
29
31
  'aria-expanded': boolean;
@@ -140,7 +142,9 @@ export interface PopoverProps extends Pick<BaseProps, 'xstyle' | 'className' | '
140
142
  */
141
143
  closeButtonLabel?: string;
142
144
  /**
143
- * Whether to auto-focus the first focusable element when the popover opens.
145
+ * Whether to move focus into the popover when it opens. Keyboard activation
146
+ * focuses the first content control; pointer activation focuses the labeled
147
+ * dialog container so an action does not appear preselected.
144
148
  * Set to `false` for inline showcases or documentation previews.
145
149
  * @default true
146
150
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/Popover/Popover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAGZ,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AA2BtE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,sCAAsC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,eAAe,EAAE,QAAQ,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC,CAAC;IAEzE;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAmB,EACnB,SAAmB,EACnB,MAAM,EACN,YAAY,EACZ,SAAgB,EAChB,KAAK,EACL,KAAK,EACL,IAAe,EACf,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAsB,EACtB,gBAAuB,EACvB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,YAAY,GAAG,YAAY,CAkP7B;yBAxQe,OAAO"}
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/Popover/Popover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAIZ,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAmCtE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,sHAAsH;IACtH,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,KAAK,IAAI,CAAC;IAC5C,0EAA0E;IAC1E,eAAe,EAAE,QAAQ,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAC,CAAC;IAEzE;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEzC;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAsGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,SAAmB,EACnB,SAAmB,EACnB,MAAM,EACN,YAAY,EACZ,SAAgB,EAChB,KAAK,EACL,KAAK,EACL,IAAe,EACf,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,eAAsB,EACtB,gBAAuB,EACvB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,GACtB,EAAE,YAAY,GAAG,YAAY,CAmX7B;yBAzYe,OAAO"}
@@ -4,8 +4,8 @@
4
4
 
5
5
  /**
6
6
  * @file Popover.tsx
7
- * @input Uses React, usePopover hook
8
- * @output Exports Popover component for click-triggered popovers
7
+ * @input Uses React layout measurement and the usePopover hook
8
+ * @output Exports Popover with viewport fitting and conditional overflow
9
9
  * @position Layer component; declarative wrapper around usePopover hook
10
10
  *
11
11
  * For hover-triggered overlays, use HoverCard instead.
@@ -16,11 +16,11 @@
16
16
  * - /apps/storybook/stories/Popover.stories.tsx
17
17
  * - /packages/cli/assets/templates/blocks/components/Popover/ (showcase blocks)
18
18
  */
19
- import React, { useCallback, useRef } from 'react';
19
+ import React, { useCallback, useRef, useState } from 'react';
20
20
  import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
21
21
  import * as stylex from '@stylexjs/stylex';
22
22
  import { devWarn } from "../utils/devWarning.js";
23
- import { usePopover } from "./usePopover.js";
23
+ import { usePopoverInternal } from "./usePopover.js";
24
24
  import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
25
25
  import "../theme/tokens.stylex.js";
26
26
  import { spacingVars } from "../theme/tokens.stylex.js";
@@ -31,6 +31,14 @@ import { InteractiveRoleContext } from "../InteractiveRoleContext/InteractiveRol
31
31
  // =============================================================================
32
32
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
33
33
  const BUTTON_SELECTOR = 'button, [role="button"]';
34
+ const POPOVER_VIEWPORT_GUTTER = spacingVars['--spacing-4'];
35
+ const POPOVER_MAX_INLINE_SIZE = `calc(100vi - max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-left, 0px)) - max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-right, 0px)))`;
36
+ const POPOVER_MAX_INLINE_SIZE_FALLBACK = `calc(100vw - ${POPOVER_VIEWPORT_GUTTER} - ${POPOVER_VIEWPORT_GUTTER})`;
37
+ const POPOVER_MAX_BLOCK_SIZE = `calc(100dvb - max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-top, 0px)) - max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-bottom, 0px)))`;
38
+ const POPOVER_MAX_BLOCK_SIZE_FALLBACK = `calc(100vh - ${POPOVER_VIEWPORT_GUTTER} - ${POPOVER_VIEWPORT_GUTTER})`;
39
+ const POPOVER_POSITION_AREA_MAX_INLINE_SIZE = `calc(100% - max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px)))`;
40
+ const POPOVER_POSITION_AREA_MAX_INLINE_SIZE_FALLBACK = `calc(100% - ${POPOVER_VIEWPORT_GUTTER})`;
41
+ const POPOVER_INLINE_EDGE_GUTTER = `max(${POPOVER_VIEWPORT_GUTTER}, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))`;
34
42
 
35
43
  /**
36
44
  * Find the trigger button inside a container element.
@@ -57,6 +65,54 @@ function findTriggerButton(el) {
57
65
  // =============================================================================
58
66
 
59
67
  const styles = {
68
+ viewportFit: {
69
+ kB7OPa: "x9f619",
70
+ kskxy: "xtm2925",
71
+ $$css: true
72
+ },
73
+ viewportAligned: {
74
+ ks0D6T: "xbd96yr",
75
+ $$css: true
76
+ },
77
+ viewportStart: {
78
+ k71WvV: "xxeicf8",
79
+ $$css: true
80
+ },
81
+ viewportEnd: {
82
+ keTefX: "x47fqr9",
83
+ $$css: true
84
+ },
85
+ viewportBlockStart: {
86
+ k1K539: "x1kps3mo",
87
+ $$css: true
88
+ },
89
+ viewportBlockEnd: {
90
+ keoZOQ: "xsoubt3",
91
+ $$css: true
92
+ },
93
+ viewportCentered: {
94
+ keTefX: "x47fqr9",
95
+ k71WvV: "xxeicf8",
96
+ ks0D6T: "xs2v1xk",
97
+ $$css: true
98
+ },
99
+ viewportBlockCentered: {
100
+ keoZOQ: "xsoubt3",
101
+ k1K539: "x1kps3mo",
102
+ ks0D6T: "xs2v1xk",
103
+ $$css: true
104
+ },
105
+ surfaceViewportFit: {
106
+ kB7OPa: "x9f619",
107
+ ks0D6T: "xs2v1xk",
108
+ kskxy: "xtm2925",
109
+ $$css: true
110
+ },
111
+ surfaceScrollable: {
112
+ kVQacm: "xysyzu8",
113
+ kZeWKH: "xish69e",
114
+ $$css: true
115
+ },
60
116
  contentPadding: {
61
117
  kLKAdn: "x1vlblms",
62
118
  kGO01o: "xvmdzux",
@@ -70,8 +126,12 @@ const styles = {
70
126
  }, {
71
127
  "--x-width": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(typeof width === 'number' ? `${width}px` : width)
72
128
  }],
73
- matchTrigger: {
74
- k7Eaqz: "xrzjruh",
129
+ matchTriggerAligned: {
130
+ k7Eaqz: "x1ks9poc",
131
+ $$css: true
132
+ },
133
+ matchTriggerCentered: {
134
+ k7Eaqz: "xagy28z",
75
135
  $$css: true
76
136
  }
77
137
  };
@@ -139,6 +199,8 @@ export function Popover({
139
199
  'data-testid': testId
140
200
  }) {
141
201
  const wrapperRef = useRef(null);
202
+ const measurementFrameRef = useRef(null);
203
+ const [hasOverflow, setHasOverflow] = useState(false);
142
204
  const isControlled = isOpen !== undefined;
143
205
  const handlePopoverShow = useCallback(() => {
144
206
  onOpenChange?.(true);
@@ -146,7 +208,7 @@ export function Popover({
146
208
  const handlePopoverHide = useCallback(() => {
147
209
  onOpenChange?.(false);
148
210
  }, [onOpenChange]);
149
- const popover = usePopover({
211
+ const popover = usePopoverInternal({
150
212
  dialogLabel: label,
151
213
  role,
152
214
  isModal,
@@ -159,21 +221,82 @@ export function Popover({
159
221
  // it is the element the `popover` theme target has to sit on — a target on
160
222
  // the content div inside it styles a box that paints nothing.
161
223
  surfaceTarget: 'popover',
162
- xstyle: [styles.contentPadding, xstyle],
224
+ xstyle: [styles.contentPadding, styles.surfaceViewportFit, hasOverflow && styles.surfaceScrollable, xstyle],
163
225
  className,
164
226
  style,
165
227
  onShow: handlePopoverShow,
166
228
  onHide: handlePopoverHide
167
229
  });
230
+ const measureOverflow = useCallback(() => {
231
+ const surface = popover.contentRef.current;
232
+ if (!surface) {
233
+ return;
234
+ }
235
+ const nextHasOverflow = surface.scrollHeight > surface.clientHeight + 1 || surface.scrollWidth > surface.clientWidth + 1;
236
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- DOM overflow measurement controls whether this surface becomes a scroll container
237
+ setHasOverflow(current => current === nextHasOverflow ? current : nextHasOverflow);
238
+ }, [popover.contentRef]);
239
+ const scheduleOverflowMeasurement = useCallback(() => {
240
+ if (measurementFrameRef.current != null) {
241
+ return;
242
+ }
243
+ measurementFrameRef.current = window.requestAnimationFrame(() => {
244
+ measurementFrameRef.current = null;
245
+ measureOverflow();
246
+ });
247
+ }, [measureOverflow]);
248
+ useIsomorphicLayoutEffect(() => {
249
+ if (!popover.isOpen) {
250
+ return;
251
+ }
252
+ const surface = popover.contentRef.current;
253
+ if (!surface) {
254
+ return;
255
+ }
256
+ measureOverflow();
257
+ const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleOverflowMeasurement);
258
+ const mutationObserver = typeof MutationObserver === 'undefined' ? null : new MutationObserver(scheduleOverflowMeasurement);
259
+ resizeObserver?.observe(surface);
260
+ mutationObserver?.observe(surface, {
261
+ childList: true,
262
+ characterData: true,
263
+ subtree: true
264
+ });
265
+ surface.addEventListener('load', scheduleOverflowMeasurement, true);
266
+ window.addEventListener('resize', scheduleOverflowMeasurement);
267
+ window.visualViewport?.addEventListener('resize', scheduleOverflowMeasurement);
268
+ return () => {
269
+ resizeObserver?.disconnect();
270
+ mutationObserver?.disconnect();
271
+ surface.removeEventListener('load', scheduleOverflowMeasurement, true);
272
+ window.removeEventListener('resize', scheduleOverflowMeasurement);
273
+ window.visualViewport?.removeEventListener('resize', scheduleOverflowMeasurement);
274
+ if (measurementFrameRef.current != null) {
275
+ window.cancelAnimationFrame(measurementFrameRef.current);
276
+ measurementFrameRef.current = null;
277
+ }
278
+ };
279
+ }, [measureOverflow, popover.isOpen, scheduleOverflowMeasurement]);
280
+ useIsomorphicLayoutEffect(() => {
281
+ if (!popover.isOpen) {
282
+ return;
283
+ }
284
+ scheduleOverflowMeasurement();
285
+ }, [content, popover.isOpen, scheduleOverflowMeasurement]);
168
286
 
169
287
  // Shared handler for click events on the trigger button.
170
- const handleTriggerClick = useCallback(() => {
288
+ const handleTriggerClick = useCallback(event => {
171
289
  if (!isEnabled) {
172
290
  return;
173
291
  }
174
- // `toggle` absorbs a click that belongs to its own light dismiss.
175
- popover.toggle();
176
- }, [isEnabled, popover]);
292
+ // Pointer/touch activation should not make the first action look
293
+ // preselected. Keep focus inside the modal dialog by focusing its
294
+ // labeled container; keyboard and AT activation still focus the first
295
+ // content control and expose the expected focus ring.
296
+ popover.toggleWithOptions({
297
+ focusTarget: role === 'dialog' && event != null && event.detail > 0 ? 'container' : 'first'
298
+ });
299
+ }, [isEnabled, popover, role]);
177
300
 
178
301
  // Shared handler for keydown events on role="button" elements.
179
302
  // Native <button> synthesizes click on Enter/Space, but role="button"
@@ -289,7 +412,9 @@ export function Popover({
289
412
  }, [isOpen, isControlled, popover]);
290
413
 
291
414
  // Determine popover xstyle
292
- const popoverXstyle = width ? styles.customWidth(width) : styles.matchTrigger;
415
+ const popoverSizeXstyle = width ? styles.customWidth(width) : alignment === 'center' ? styles.matchTriggerCentered : styles.matchTriggerAligned;
416
+ const isSidePlacement = placement === 'start' || placement === 'end';
417
+ const popoverViewportXstyle = alignment === 'center' ? isSidePlacement ? styles.viewportBlockCentered : styles.viewportCentered : [styles.viewportAligned, isSidePlacement ? alignment === 'start' ? styles.viewportBlockStart : styles.viewportBlockEnd : alignment === 'start' ? styles.viewportStart : styles.viewportEnd];
293
418
 
294
419
  // Sibling mode: render only the popover (no wrapper needed)
295
420
  if (anchorRef && children == null) {
@@ -301,7 +426,7 @@ export function Popover({
301
426
  placement,
302
427
  alignment,
303
428
  offset: spacingVars['--spacing-1'],
304
- xstyle: [popoverXstyle, layerAnimations[placement]]
429
+ xstyle: [styles.viewportFit, popoverViewportXstyle, popoverSizeXstyle, layerAnimations[placement]]
305
430
  })
306
431
  });
307
432
  }
@@ -324,7 +449,7 @@ export function Popover({
324
449
  placement,
325
450
  alignment,
326
451
  offset: spacingVars['--spacing-1'],
327
- xstyle: [popoverXstyle, layerAnimations[placement]]
452
+ xstyle: [styles.viewportFit, popoverViewportXstyle, popoverSizeXstyle, layerAnimations[placement]]
328
453
  })]
329
454
  });
330
455
  }
@@ -347,7 +472,7 @@ export function Popover({
347
472
  placement,
348
473
  alignment,
349
474
  offset: spacingVars['--spacing-1'],
350
- xstyle: [popoverXstyle, layerAnimations[placement]]
475
+ xstyle: [styles.viewportFit, popoverViewportXstyle, popoverSizeXstyle, layerAnimations[placement]]
351
476
  })]
352
477
  });
353
478
  }
@@ -201,6 +201,10 @@ export interface UsePopoverReturn {
201
201
  }
202
202
  interface InternalUsePopoverReturn extends UsePopoverReturn {
203
203
  wasJustDismissed: () => boolean;
204
+ toggleWithOptions: (options?: {
205
+ skipAutoFocus?: boolean;
206
+ focusTarget?: 'first' | 'container';
207
+ }) => void;
204
208
  }
205
209
  export declare function usePopover(options?: UsePopoverOptions): UsePopoverReturn;
206
210
  /** @internal Used by trigger components; not exported from package barrels. */
@@ -1 +1 @@
1
- {"version":3,"file":"usePopover.d.ts","sourceRoot":"","sources":["../../src/Popover/usePopover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAmB,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAiEnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;IAEvE;;OAEG;IACH,YAAY,EAAE;QACZ,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,gBAAgB,EAAE,MAAM,OAAO,CAAC;CACjC;AAqOD,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAG5E;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,iBAAsB,GAC9B,wBAAwB,CAE1B"}
1
+ {"version":3,"file":"usePopover.d.ts","sourceRoot":"","sources":["../../src/Popover/usePopover.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAiC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAmB,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAG5E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AA8FnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAE5B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAC,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;IAEvE;;OAEG;IACH,YAAY,EAAE;QACZ,eAAe,EAAE,QAAQ,GAAG,MAAM,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE;QAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;KACrC,KAAK,IAAI,CAAC;CACZ;AA6QD,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAO5E;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,iBAAsB,GAC9B,wBAAwB,CAE1B"}