reshaped 3.2.6-rc.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +2 -0
  4. package/dist/bundle.js +11 -11
  5. package/dist/cjs/themes/_generator/definitions/figma.js +1 -0
  6. package/dist/cjs/themes/_generator/definitions/reshaped.js +5 -4
  7. package/dist/cjs/themes/_generator/tokens/duration/duration.types.d.ts +1 -1
  8. package/dist/cjs/themes/_generator/transform.js +17 -7
  9. package/dist/cjs/themes/_generator/utilities/generateColors.js +6 -6
  10. package/dist/cjs/themes/_generator/utilities/resolveTokenReference.js +1 -1
  11. package/dist/cjs/themes/figma/theme.css +1 -1
  12. package/dist/cjs/themes/reshaped/theme.css +1 -1
  13. package/dist/cjs/themes/slate/theme.css +1 -1
  14. package/dist/components/Alert/tests/Alert.stories.d.ts +5 -4
  15. package/dist/components/Alert/tests/Alert.stories.js +3 -2
  16. package/dist/components/Autocomplete/Autocomplete.js +3 -3
  17. package/dist/components/Autocomplete/Autocomplete.types.d.ts +8 -9
  18. package/dist/components/Badge/Badge.module.css +1 -1
  19. package/dist/components/Button/Button.module.css +1 -1
  20. package/dist/components/Card/Card.js +1 -1
  21. package/dist/components/ContextMenu/ContextMenu.d.ts +10 -0
  22. package/dist/components/ContextMenu/ContextMenu.js +37 -0
  23. package/dist/components/ContextMenu/ContextMenu.module.css +1 -0
  24. package/dist/components/ContextMenu/ContextMenu.types.d.ts +2 -0
  25. package/dist/components/ContextMenu/ContextMenu.types.js +1 -0
  26. package/dist/components/ContextMenu/index.d.ts +2 -0
  27. package/dist/components/ContextMenu/index.js +1 -0
  28. package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +18 -0
  29. package/dist/components/ContextMenu/tests/ContextMenu.stories.js +27 -0
  30. package/dist/components/DropdownMenu/DropdownMenu.d.ts +1 -2
  31. package/dist/components/DropdownMenu/DropdownMenu.js +2 -2
  32. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +4 -4
  33. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +1 -1
  34. package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +8 -0
  35. package/dist/components/FormControl/FormControl.context.d.ts +86 -86
  36. package/dist/components/Grid/Grid.js +5 -1
  37. package/dist/components/Hotkey/Hotkey.module.css +1 -1
  38. package/dist/components/Modal/Modal.js +3 -3
  39. package/dist/components/Modal/Modal.module.css +1 -1
  40. package/dist/components/Modal/Modal.types.d.ts +1 -1
  41. package/dist/components/Overlay/Overlay.js +5 -2
  42. package/dist/components/Overlay/Overlay.types.d.ts +2 -0
  43. package/dist/components/Popover/Popover.js +1 -1
  44. package/dist/components/Popover/Popover.types.d.ts +1 -1
  45. package/dist/components/Resizable/Resizable.js +2 -2
  46. package/dist/components/Resizable/Resizable.module.css +1 -1
  47. package/dist/components/Resizable/Resizable.types.d.ts +3 -1
  48. package/dist/components/Resizable/tests/Resizable.stories.js +34 -1
  49. package/dist/components/ScrollArea/ScrollArea.js +9 -9
  50. package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
  51. package/dist/components/ScrollArea/ScrollArea.types.d.ts +1 -4
  52. package/dist/components/ScrollArea/tests/ScrollArea.stories.d.ts +6 -4
  53. package/dist/components/ScrollArea/tests/ScrollArea.stories.js +28 -2
  54. package/dist/components/Table/Table.js +4 -3
  55. package/dist/components/Table/Table.module.css +1 -1
  56. package/dist/components/Table/Table.types.d.ts +2 -0
  57. package/dist/components/Table/tests/Table.stories.d.ts +1 -1
  58. package/dist/components/Table/tests/Table.stories.js +13 -1
  59. package/dist/components/Tabs/Tabs.module.css +1 -1
  60. package/dist/components/Tabs/Tabs.types.d.ts +2 -0
  61. package/dist/components/Tabs/TabsContext.d.ts +2 -2
  62. package/dist/components/Tabs/TabsItem.js +16 -10
  63. package/dist/components/Tabs/TabsList.js +12 -3
  64. package/dist/components/Tabs/TabsPanel.js +3 -3
  65. package/dist/components/Text/Text.js +2 -1
  66. package/dist/components/TextField/TextField.js +4 -4
  67. package/dist/components/TextField/TextField.module.css +1 -1
  68. package/dist/components/TextField/TextField.types.d.ts +1 -0
  69. package/dist/components/Toast/Toast.js +3 -2
  70. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  71. package/dist/components/Tooltip/Tooltip.js +4 -4
  72. package/dist/components/Tooltip/Tooltip.types.d.ts +1 -1
  73. package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +1 -1
  74. package/dist/components/View/View.js +8 -3
  75. package/dist/components/View/View.module.css +1 -1
  76. package/dist/components/View/View.types.d.ts +5 -5
  77. package/dist/components/View/tests/View.stories.js +6 -0
  78. package/dist/components/_private/Flyout/Flyout.module.css +1 -1
  79. package/dist/components/_private/Flyout/Flyout.types.d.ts +2 -1
  80. package/dist/components/_private/Flyout/FlyoutContent.js +6 -4
  81. package/dist/components/_private/Flyout/FlyoutControlled.js +12 -9
  82. package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +1 -0
  83. package/dist/components/_private/Flyout/tests/Flyout.stories.js +16 -1
  84. package/dist/components/_private/Flyout/useFlyout.d.ts +6 -11
  85. package/dist/components/_private/Flyout/useFlyout.js +19 -30
  86. package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +6 -0
  87. package/dist/components/_private/Flyout/utilities/isFullyVisible.js +16 -0
  88. package/dist/components/_private/Portal/Portal.js +5 -2
  89. package/dist/hooks/_private/useOnClickOutside.d.ts +1 -1
  90. package/dist/hooks/_private/useOnClickOutside.js +8 -5
  91. package/dist/hooks/_private/useSingletonKeyboardMode.js +4 -0
  92. package/dist/index.d.ts +2 -0
  93. package/dist/index.js +1 -0
  94. package/dist/styles/align/align.css +1 -0
  95. package/dist/styles/align/index.d.ts +2 -1
  96. package/dist/styles/align/index.js +3 -3
  97. package/dist/styles/aspectRatio/aspectRatio.css +1 -0
  98. package/dist/styles/aspectRatio/index.d.ts +2 -1
  99. package/dist/styles/aspectRatio/index.js +2 -2
  100. package/dist/styles/bleed/bleed.module.css +1 -1
  101. package/dist/styles/bleed/index.js +2 -5
  102. package/dist/styles/height/height.module.css +1 -1
  103. package/dist/styles/height/index.js +2 -2
  104. package/dist/styles/inset/index.d.ts +2 -1
  105. package/dist/styles/inset/index.js +4 -7
  106. package/dist/styles/inset/inset.css +1 -0
  107. package/dist/styles/justify/index.d.ts +2 -1
  108. package/dist/styles/justify/index.js +3 -3
  109. package/dist/styles/justify/justify.css +1 -0
  110. package/dist/styles/maxHeight/index.js +2 -2
  111. package/dist/styles/maxHeight/maxHeight.module.css +1 -1
  112. package/dist/styles/maxWidth/index.js +2 -2
  113. package/dist/styles/maxWidth/maxWidth.module.css +1 -1
  114. package/dist/styles/minHeight/index.js +2 -2
  115. package/dist/styles/minHeight/minHeight.module.css +1 -1
  116. package/dist/styles/minWidth/index.js +2 -2
  117. package/dist/styles/minWidth/minWidth.module.css +1 -1
  118. package/dist/styles/padding/index.d.ts +2 -1
  119. package/dist/styles/padding/index.js +2 -2
  120. package/dist/styles/padding/padding.css +1 -0
  121. package/dist/styles/position/index.d.ts +2 -1
  122. package/dist/styles/position/index.js +4 -4
  123. package/dist/styles/position/position.css +1 -0
  124. package/dist/styles/textAlign/index.d.ts +2 -1
  125. package/dist/styles/textAlign/index.js +3 -3
  126. package/dist/styles/textAlign/textAlign.css +1 -0
  127. package/dist/styles/types.d.ts +5 -0
  128. package/dist/styles/width/index.js +2 -2
  129. package/dist/styles/width/width.module.css +1 -1
  130. package/dist/themes/_generator/definitions/figma.js +1 -0
  131. package/dist/themes/_generator/definitions/reshaped.js +5 -4
  132. package/dist/themes/_generator/tests/themes.stories.d.ts +4 -3
  133. package/dist/themes/_generator/tests/themes.stories.js +3 -2
  134. package/dist/themes/_generator/tokens/duration/duration.types.d.ts +1 -1
  135. package/dist/themes/_generator/utilities/generateColors.js +6 -6
  136. package/dist/themes/_generator/utilities/resolveTokenReference.js +1 -1
  137. package/dist/themes/figma/theme.css +1 -1
  138. package/dist/themes/reshaped/theme.css +1 -1
  139. package/dist/themes/slate/theme.css +1 -1
  140. package/dist/types/global.d.ts +4 -0
  141. package/dist/utilities/a11y/TrapFocus.js +1 -0
  142. package/dist/utilities/a11y/focus.d.ts +1 -1
  143. package/dist/utilities/a11y/focus.js +4 -1
  144. package/dist/utilities/a11y/tests/TrapFocus.stories.d.ts +6 -0
  145. package/dist/utilities/a11y/tests/TrapFocus.stories.js +59 -0
  146. package/dist/utilities/dom/find.d.ts +10 -0
  147. package/dist/utilities/dom/find.js +35 -0
  148. package/dist/utilities/dom/flyout.d.ts +2 -1
  149. package/dist/utilities/dom/flyout.js +13 -18
  150. package/dist/utilities/dom/index.d.ts +2 -1
  151. package/dist/utilities/dom/index.js +2 -1
  152. package/dist/utilities/scroll/lock.js +6 -2
  153. package/package.json +32 -32
  154. package/dist/styles/align/align.module.css +0 -1
  155. package/dist/styles/aspectRatio/aspectRatio.module.css +0 -1
  156. package/dist/styles/inset/inset.module.css +0 -1
  157. package/dist/styles/justify/justify.module.css +0 -1
  158. package/dist/styles/padding/padding.module.css +0 -1
  159. package/dist/styles/position/position.module.css +0 -1
  160. package/dist/styles/textAlign/textAlign.module.css +0 -1
@@ -1 +1 @@
1
- .root{--rs-view-gaps-count-multiplier:1;--rs-view-z:auto;--rs-view-gap-value:calc(var(--rs-view-gap) * var(--rs-unit-x1));--rs-view-border-width:0px;gap:var(--rs-view-gap-value);z-index:var(--rs-view-z)}.item{--rs-view-item-gap:calc(var(--rs-unit-x1) * var(--rs-view-item-gap-before) - var(--rs-view-gap-value));order:var(--rs-view-item-order)}.--padding{padding:calc(var(--rs-unit-x1) * var(--rs-view-p-vertical, var(--rs-view-p-top)) - var(--rs-view-border-width)) calc(var(--rs-unit-x1) * var(--rs-view-p-horizontal, var(--rs-view-p-start)) - var(--rs-view-border-width))}.--padding-top{padding-top:calc(var(--rs-unit-x1) * var(--rs-view-p-top))}.--padding-bottom{padding-bottom:calc(var(--rs-unit-x1) * var(--rs-view-p-bottom))}.--padding-start{padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-view-p-start))}.--padding-end{padding-inline-end:calc(var(--rs-unit-x1) * var(--rs-view-p-end))}.--animated{transition:var(--rs-duration-medium) var(--rs-easing-standard);transition-property:background-color,color,border-color,box-shadow}.--align-text-start{text-align:start}.--align-text-center{text-align:center}.--align-text-end{text-align:end}.--bg-neutral{background-color:var(--rs-color-background-neutral);color:var(--rs-color-on-background-neutral)}.--bg-positive{background-color:var(--rs-color-background-positive);color:var(--rs-color-on-background-positive)}.--bg-warning{background-color:var(--rs-color-background-warning);color:var(--rs-color-on-background-warning)}.--bg-critical{background-color:var(--rs-color-background-critical);color:var(--rs-color-on-background-critical)}.--bg-primary{background-color:var(--rs-color-background-primary);color:var(--rs-color-on-background-primary)}.--bg-neutral-faded{background-color:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-neutral)}.--bg-positive-faded{background-color:var(--rs-color-background-positive-faded);color:var(--rs-color-foreground-neutral)}.--bg-warning-faded{background-color:var(--rs-color-background-warning-faded);color:var(--rs-color-foreground-neutral)}.--bg-critical-faded{background-color:var(--rs-color-background-critical-faded);color:var(--rs-color-foreground-neutral)}.--bg-primary-faded{background-color:var(--rs-color-background-primary-faded)}.--bg-page,.--bg-primary-faded{color:var(--rs-color-foreground-neutral)}.--bg-page{background-color:var(--rs-color-background-page)}.--bg-page-faded{background-color:var(--rs-color-background-page-faded)}.--bg-disabled,.--bg-page-faded{color:var(--rs-color-foreground-neutral)}.--bg-disabled{background-color:var(--rs-color-background-disabled)}.--bg-disabled-faded{background-color:var(--rs-color-background-disabled-faded);color:var(--rs-color-foreground-neutral)}.--bg-elevation-base{background-color:var(--rs-color-background-elevation-base);color:var(--rs-color-foreground-neutral)}.--bg-elevation-raised{background-color:var(--rs-color-background-elevation-raised);color:var(--rs-color-foreground-neutral)}.--bg-elevation-overlay{background-color:var(--rs-color-background-elevation-overlay);color:var(--rs-color-foreground-neutral)}.--bg-brand{background-color:var(--rs-color-brand);color:var(--rs-color-on-brand)}.--bg-white{background-color:var(--rs-color-white);color:var(--rs-color-black)}.--bg-black{background-color:var(--rs-color-black);color:var(--rs-color-white)}.--shadow-raised{box-shadow:var(--rs-shadow-raised)}.--shadow-overlay{box-shadow:var(--rs-shadow-overlay)}.--overflow-hidden{overflow:hidden}.--overflow-auto{overflow:auto}.--divided{--rs-view-gaps-count-multiplier:2}.--flex{display:flex;flex-direction:column;justify-content:flex-start}.--direction-column{flex-direction:column;flex-wrap:nowrap}.--direction-column>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column>.item--gap-auto{margin-top:auto}.--direction-column-reverse{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse>.item--gap-auto{margin-top:auto}.--direction-row{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row>.item--gap-auto{margin-inline-start:auto}.--direction-row>button{width:auto!important}.--direction-row-reverse{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse>button{width:auto!important}.--nowrap{flex-wrap:nowrap}.--nowrap>*{flex-shrink:0}.--wrap{flex-wrap:wrap}@media (--rs-viewport-m ){.--nowrap-false--m,.--wrap-true--m{flex-wrap:wrap}.--nowrap-true--m,.--wrap-false--m{flex-wrap:nowrap}}@media (--rs-viewport-l ){.--nowrap-false--l,.--wrap-true--l{flex-wrap:wrap}.--nowrap-true--l,.--wrap-false--l{flex-wrap:nowrap}}@media (--rs-viewport-xl ){.--nowrap-false--xl,.--wrap-true--xl{flex-wrap:wrap}.--nowrap-true--xl,.--wrap-false--xl{flex-wrap:nowrap}}.divider{align-self:stretch}.item--grow{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--columns{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-1{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-1,.item--columns-2{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-2{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3,.item--columns-4{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-4{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5,.item--columns-6{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-6{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7,.item--columns-8{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-8{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10,.item--columns-9{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-10{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11,.item--columns-12{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-12{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto{width:auto}@media (--rs-viewport-m ){.item--columns-1--m{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--m{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--m{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--m{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--m{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--m{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--m{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--m{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--m{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--m{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--m{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--m{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--m{width:auto}}@media (--rs-viewport-l ){.item--columns-1--l{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--l{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--l{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--l{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--l{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--l{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--l{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--l{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--l{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--l{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--l{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--l{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--l{width:auto}}@media (--rs-viewport-xl ){.item--columns-1--xl{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--xl{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--xl{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--xl{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--xl{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--xl{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--xl{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--xl{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--xl{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--xl{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--xl{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--xl{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--xl{width:auto}}.--padding{--rs-view-p-vertical-s:0;--rs-view-p-vertical-m:var(--rs-view-p-vertical-s);--rs-view-p-vertical-l:var(--rs-view-p-vertical-m);--rs-view-p-vertical-xl:var(--rs-view-p-vertical-l);--rs-view-p-vertical:var(--rs-view-p-vertical-s);--rs-view-p-horizontal-s:0;--rs-view-p-horizontal-m:var(--rs-view-p-horizontal-s);--rs-view-p-horizontal-l:var(--rs-view-p-horizontal-m);--rs-view-p-horizontal-xl:var(--rs-view-p-horizontal-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-s)}.--padding-top{--rs-view-p-top-s:0;--rs-view-p-top-m:var(--rs-view-p-top-s);--rs-view-p-top-l:var(--rs-view-p-top-m);--rs-view-p-top-xl:var(--rs-view-p-top-l);--rs-view-p-top:var(--rs-view-p-top-s)}.--padding-bottom{--rs-view-p-bottom-s:0;--rs-view-p-bottom-m:var(--rs-view-p-bottom-s);--rs-view-p-bottom-l:var(--rs-view-p-bottom-m);--rs-view-p-bottom-xl:var(--rs-view-p-bottom-l);--rs-view-p-bottom:var(--rs-view-p-bottom-s)}.--padding-start{--rs-view-p-start-s:0;--rs-view-p-start-m:var(--rs-view-p-start-s);--rs-view-p-start-l:var(--rs-view-p-start-m);--rs-view-p-start-xl:var(--rs-view-p-start-l);--rs-view-p-start:var(--rs-view-p-start-s)}.--padding-end{--rs-view-p-end-s:0;--rs-view-p-end-m:var(--rs-view-p-end-s);--rs-view-p-end-l:var(--rs-view-p-end-m);--rs-view-p-end-xl:var(--rs-view-p-end-l);--rs-view-p-end:var(--rs-view-p-end-s)}.root{--rs-view-gap-s:0;--rs-view-gap-m:var(--rs-view-gap-s);--rs-view-gap-l:var(--rs-view-gap-m);--rs-view-gap-xl:var(--rs-view-gap-l);--rs-view-gap:var(--rs-view-gap-s)}.root>.item{--rs-view-item-order-s:0;--rs-view-item-order-m:var(--rs-view-item-order-s);--rs-view-item-order-l:var(--rs-view-item-order-m);--rs-view-item-order-xl:var(--rs-view-item-order-l);--rs-view-item-order:var(--rs-view-item-order-s);--rs-view-item-gap-before-s:initial;--rs-view-item-gap-before-m:var(--rs-view-item-gap-before-s);--rs-view-item-gap-before-l:var(--rs-view-item-gap-before-m);--rs-view-item-gap-before-xl:var(--rs-view-item-gap-before-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-s)}@media (--rs-viewport-m ){.--direction-column--m{flex-direction:column;flex-wrap:nowrap}.--direction-column--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--m>.item--gap-auto{margin-top:auto}.--direction-column-reverse--m{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--m>.item--gap-auto{margin-top:auto}.--direction-row--m{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--m>.item--gap-auto{margin-inline-start:auto}.--direction-row--m>button{width:auto!important}.--direction-row-reverse--m{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--m>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--m>button{width:auto!important}.item--grow-true--m{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--m{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-m);--rs-view-p-horizontal:var(--rs-view-p-horizontal-m)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-m)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-m)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-m)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-m)}.root{--rs-view-gap:var(--rs-view-gap-m)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-m);--rs-view-item-gap-before:var(--rs-view-item-gap-before-m)}}@media (--rs-viewport-l ){.--direction-column--l{flex-direction:column;flex-wrap:nowrap}.--direction-column--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--l>.item--gap-auto{margin-top:auto}.--direction-column-reverse--l{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--l>.item--gap-auto{margin-top:auto}.--direction-row--l{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--l>.item--gap-auto{margin-inline-start:auto}.--direction-row--l>button{width:auto!important}.--direction-row-reverse--l{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--l>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--l>button{width:auto!important}.item--grow-true--l{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--l{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-l)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-l)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-l)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-l)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-l)}.root{--rs-view-gap:var(--rs-view-gap-l)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-l)}}@media (--rs-viewport-xl ){.--direction-column--xl{flex-direction:column;flex-wrap:nowrap}.--direction-column--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--xl>.item--gap-auto{margin-top:auto}.--direction-column-reverse--xl{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--xl>.item--gap-auto{margin-top:auto}.--direction-row--xl{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row--xl>button{width:auto!important}.--direction-row-reverse--xl{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--xl>button{width:auto!important}.item--grow-true--xl{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--xl{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-xl);--rs-view-p-horizontal:var(--rs-view-p-horizontal-xl)}.--padding-top{--rs-view-p-top:var(--rs-view-p-top-xl)}.--padding-bottom{--rs-view-p-bottom:var(--rs-view-p-bottom-xl)}.--padding-start{--rs-view-p-start:var(--rs-view-p-start-xl)}.--padding-end{--rs-view-p-end:var(--rs-view-p-end-xl)}.root{--rs-view-gap:var(--rs-view-gap-xl)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-xl);--rs-view-item-gap-before:var(--rs-view-item-gap-before-xl)}}
1
+ .root{--rs-view-gaps-count-multiplier:1;--rs-view-z:auto;--rs-view-gap-value:calc(var(--rs-view-gap) * var(--rs-unit-x1));--rs-view-border-width:0px;gap:var(--rs-view-gap-value);position:relative;z-index:var(--rs-view-z)}.item{--rs-view-item-gap:calc(var(--rs-unit-x1) * var(--rs-view-item-gap-before) - var(--rs-view-gap-value));order:var(--rs-view-item-order)}.--padding{padding:calc(var(--rs-unit-x1) * var(--rs-view-p-vertical, var(--rs-view-p-top)) - var(--rs-view-border-width)) calc(var(--rs-unit-x1) * var(--rs-view-p-horizontal, var(--rs-view-p-start)) - var(--rs-view-border-width));--rs-view-p-vertical-s:0;--rs-view-p-vertical-m:var(--rs-view-p-vertical-s);--rs-view-p-vertical-l:var(--rs-view-p-vertical-m);--rs-view-p-vertical-xl:var(--rs-view-p-vertical-l);--rs-view-p-vertical:var(--rs-view-p-vertical-s);--rs-view-p-horizontal-s:0;--rs-view-p-horizontal-m:var(--rs-view-p-horizontal-s);--rs-view-p-horizontal-l:var(--rs-view-p-horizontal-m);--rs-view-p-horizontal-xl:var(--rs-view-p-horizontal-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-s)}.root[style*="--rs-view-p-top"]{padding-top:calc(var(--rs-unit-x1) * var(--rs-view-p-top));--rs-view-p-top-s:0;--rs-view-p-top-m:var(--rs-view-p-top-s);--rs-view-p-top-l:var(--rs-view-p-top-m);--rs-view-p-top-xl:var(--rs-view-p-top-l);--rs-view-p-top:var(--rs-view-p-top-s)}.root[style*="--rs-view-p-bottom"]{padding-bottom:calc(var(--rs-unit-x1) * var(--rs-view-p-bottom));--rs-view-p-bottom-s:0;--rs-view-p-bottom-m:var(--rs-view-p-bottom-s);--rs-view-p-bottom-l:var(--rs-view-p-bottom-m);--rs-view-p-bottom-xl:var(--rs-view-p-bottom-l);--rs-view-p-bottom:var(--rs-view-p-bottom-s)}.root[style*="--rs-view-p-start"]{padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-view-p-start));--rs-view-p-start-s:0;--rs-view-p-start-m:var(--rs-view-p-start-s);--rs-view-p-start-l:var(--rs-view-p-start-m);--rs-view-p-start-xl:var(--rs-view-p-start-l);--rs-view-p-start:var(--rs-view-p-start-s)}.root[style*="--rs-view-p-end"]{padding-inline-end:calc(var(--rs-unit-x1) * var(--rs-view-p-end));--rs-view-p-end-s:0;--rs-view-p-end-m:var(--rs-view-p-end-s);--rs-view-p-end-l:var(--rs-view-p-end-m);--rs-view-p-end-xl:var(--rs-view-p-end-l);--rs-view-p-end:var(--rs-view-p-end-s)}.--animated{transition:var(--rs-duration-medium) var(--rs-easing-standard);transition-property:background-color,color,border-color,box-shadow}.--align-text-start{text-align:start}.--align-text-center{text-align:center}.--align-text-end{text-align:end}.--bg-neutral{background-color:var(--rs-color-background-neutral);color:var(--rs-color-on-background-neutral)}.--bg-positive{background-color:var(--rs-color-background-positive);color:var(--rs-color-on-background-positive)}.--bg-warning{background-color:var(--rs-color-background-warning);color:var(--rs-color-on-background-warning)}.--bg-critical{background-color:var(--rs-color-background-critical);color:var(--rs-color-on-background-critical)}.--bg-primary{background-color:var(--rs-color-background-primary);color:var(--rs-color-on-background-primary)}.--bg-neutral-faded{background-color:var(--rs-color-background-neutral-faded);color:var(--rs-color-foreground-neutral)}.--bg-positive-faded{background-color:var(--rs-color-background-positive-faded);color:var(--rs-color-foreground-neutral)}.--bg-warning-faded{background-color:var(--rs-color-background-warning-faded);color:var(--rs-color-foreground-neutral)}.--bg-critical-faded{background-color:var(--rs-color-background-critical-faded);color:var(--rs-color-foreground-neutral)}.--bg-primary-faded{background-color:var(--rs-color-background-primary-faded)}.--bg-page,.--bg-primary-faded{color:var(--rs-color-foreground-neutral)}.--bg-page{background-color:var(--rs-color-background-page)}.--bg-page-faded{background-color:var(--rs-color-background-page-faded)}.--bg-disabled,.--bg-page-faded{color:var(--rs-color-foreground-neutral)}.--bg-disabled{background-color:var(--rs-color-background-disabled)}.--bg-disabled-faded{background-color:var(--rs-color-background-disabled-faded);color:var(--rs-color-foreground-neutral)}.--bg-elevation-base{background-color:var(--rs-color-background-elevation-base);color:var(--rs-color-foreground-neutral)}.--bg-elevation-raised{background-color:var(--rs-color-background-elevation-raised);color:var(--rs-color-foreground-neutral)}.--bg-elevation-overlay{background-color:var(--rs-color-background-elevation-overlay);color:var(--rs-color-foreground-neutral)}.--bg-brand{background-color:var(--rs-color-brand);color:var(--rs-color-on-brand)}.--bg-white{background-color:var(--rs-color-white);color:var(--rs-color-black)}.--bg-black{background-color:var(--rs-color-black);color:var(--rs-color-white)}.--shadow-raised{box-shadow:var(--rs-shadow-raised)}.--shadow-overlay{box-shadow:var(--rs-shadow-overlay)}.--overflow-hidden{overflow:hidden}.--overflow-auto{overflow:auto}.--divided{--rs-view-gaps-count-multiplier:2}.--flex{display:flex;flex-direction:column;justify-content:flex-start}.--direction-column{flex-direction:column;flex-wrap:nowrap}.--direction-column>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column>.item--gap-auto{margin-top:auto}.--direction-column-reverse{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse>.item--gap-auto{margin-top:auto}.--direction-row{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row>.item--gap-auto{margin-inline-start:auto}.--direction-row>button{width:auto!important}.--direction-row-reverse{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse>button{width:auto!important}.--nowrap{flex-wrap:nowrap}.--nowrap>*{flex-shrink:0}.--wrap{flex-wrap:wrap}@media (--rs-viewport-m ){.--nowrap-false--m,.--wrap-true--m{flex-wrap:wrap}.--nowrap-true--m,.--wrap-false--m{flex-wrap:nowrap}}@media (--rs-viewport-l ){.--nowrap-false--l,.--wrap-true--l{flex-wrap:wrap}.--nowrap-true--l,.--wrap-false--l{flex-wrap:nowrap}}@media (--rs-viewport-xl ){.--nowrap-false--xl,.--wrap-true--xl{flex-wrap:wrap}.--nowrap-true--xl,.--wrap-false--xl{flex-wrap:nowrap}}.divider{align-self:stretch}.item--grow{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--columns{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-1{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-1,.item--columns-2{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-2{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3,.item--columns-4{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-4{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5,.item--columns-6{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-6{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7,.item--columns-8{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-8{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10,.item--columns-9{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-10{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11,.item--columns-12{width:calc((100% - var(--rs-view-gap-value) * var(--rs-view-gaps-count)) / var(--rs-view-columns-count) - var(--rs-view-item-gap, 0px))}.item--columns-12{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto{width:auto}@media (--rs-viewport-m ){.item--columns-1--m{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--m{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--m{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--m{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--m{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--m{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--m{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--m{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--m{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--m{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--m{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--m{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--m{width:auto}}@media (--rs-viewport-l ){.item--columns-1--l{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--l{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--l{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--l{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--l{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--l{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--l{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--l{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--l{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--l{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--l{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--l{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--l{width:auto}}@media (--rs-viewport-xl ){.item--columns-1--xl{--rs-view-columns-count:calc(12 / 1);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-2--xl{--rs-view-columns-count:calc(12 / 2);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-3--xl{--rs-view-columns-count:calc(12 / 3);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-4--xl{--rs-view-columns-count:calc(12 / 4);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-5--xl{--rs-view-columns-count:calc(12 / 5);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-6--xl{--rs-view-columns-count:calc(12 / 6);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-7--xl{--rs-view-columns-count:calc(12 / 7);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-8--xl{--rs-view-columns-count:calc(12 / 8);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-9--xl{--rs-view-columns-count:calc(12 / 9);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-10--xl{--rs-view-columns-count:calc(12 / 10);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-11--xl{--rs-view-columns-count:calc(12 / 11);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-12--xl{--rs-view-columns-count:calc(12 / 12);--rs-view-gaps-count:calc((var(--rs-view-columns-count) - 1) * var(--rs-view-gaps-count-multiplier))}.item--columns-auto--xl{width:auto}}.root{--rs-view-gap-s:0;--rs-view-gap-m:var(--rs-view-gap-s);--rs-view-gap-l:var(--rs-view-gap-m);--rs-view-gap-xl:var(--rs-view-gap-l);--rs-view-gap:var(--rs-view-gap-s)}.root>.item{--rs-view-item-order-s:0;--rs-view-item-order-m:var(--rs-view-item-order-s);--rs-view-item-order-l:var(--rs-view-item-order-m);--rs-view-item-order-xl:var(--rs-view-item-order-l);--rs-view-item-order:var(--rs-view-item-order-s);--rs-view-item-gap-before-s:initial;--rs-view-item-gap-before-m:var(--rs-view-item-gap-before-s);--rs-view-item-gap-before-l:var(--rs-view-item-gap-before-m);--rs-view-item-gap-before-xl:var(--rs-view-item-gap-before-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-s)}@media (--rs-viewport-m ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-m);--rs-view-p-horizontal:var(--rs-view-p-horizontal-m)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-m)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-m)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-m)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-m)}.--direction-column--m{flex-direction:column;flex-wrap:nowrap}.--direction-column--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--m>.item--gap-auto{margin-top:auto}.--direction-column-reverse--m{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--m>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--m>.item--gap-auto{margin-top:auto}.--direction-row--m{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--m>.item--gap-auto{margin-inline-start:auto}.--direction-row--m>button{width:auto!important}.--direction-row-reverse--m{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--m>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--m>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--m>button{width:auto!important}.item--grow-true--m{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--m{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-m)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-m);--rs-view-item-gap-before:var(--rs-view-item-gap-before-m)}}@media (--rs-viewport-l ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-l);--rs-view-p-horizontal:var(--rs-view-p-horizontal-l)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-l)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-l)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-l)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-l)}.--direction-column--l{flex-direction:column;flex-wrap:nowrap}.--direction-column--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--l>.item--gap-auto{margin-top:auto}.--direction-column-reverse--l{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--l>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--l>.item--gap-auto{margin-top:auto}.--direction-row--l{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--l>.item--gap-auto{margin-inline-start:auto}.--direction-row--l>button{width:auto!important}.--direction-row-reverse--l{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--l>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--l>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--l>button{width:auto!important}.item--grow-true--l{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--l{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-l)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-l);--rs-view-item-gap-before:var(--rs-view-item-gap-before-l)}}@media (--rs-viewport-xl ){.--padding{--rs-view-p-vertical:var(--rs-view-p-vertical-xl);--rs-view-p-horizontal:var(--rs-view-p-horizontal-xl)}.root[style*="--rs-view-p-top"]{--rs-view-p-top:var(--rs-view-p-top-xl)}.root[style*="--rs-view-p-bottom"]{--rs-view-p-bottom:var(--rs-view-p-bottom-xl)}.root[style*="--rs-view-p-start"]{--rs-view-p-start:var(--rs-view-p-start-xl)}.root[style*="--rs-view-p-end"]{--rs-view-p-end:var(--rs-view-p-end-xl)}.--direction-column--xl{flex-direction:column;flex-wrap:nowrap}.--direction-column--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column--xl>.item--gap-auto{margin-top:auto}.--direction-column-reverse--xl{flex-direction:column-reverse;flex-wrap:nowrap}.--direction-column-reverse--xl>.item--gap-before{margin-top:var(--rs-view-item-gap)}.--direction-column-reverse--xl>.item--gap-auto{margin-top:auto}.--direction-row--xl{align-items:flex-start;flex-direction:row;flex-wrap:wrap}.--direction-row--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row--xl>button{width:auto!important}.--direction-row-reverse--xl{align-items:flex-start;flex-direction:row-reverse;flex-wrap:wrap}.--direction-row-reverse--xl>.item--gap-before{margin-inline-start:var(--rs-view-item-gap)}.--direction-row-reverse--xl>.item--gap-auto{margin-inline-start:auto}.--direction-row-reverse--xl>button{width:auto!important}.item--grow-true--xl{flex-basis:0;flex-grow:1;flex-shrink:1;min-width:0}.item--grow-false--xl{flex-basis:auto;flex-grow:0;flex-shrink:0;min-width:auto}.root{--rs-view-gap:var(--rs-view-gap-xl)}.root>.item{--rs-view-item-order:var(--rs-view-item-order-xl);--rs-view-item-gap-before:var(--rs-view-item-gap-before-xl)}}
@@ -32,11 +32,11 @@ export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
32
32
  borderColor?: G.Responsive<TStyles.BorderColor>;
33
33
  borderRadius?: G.Responsive<TStyles.Radius>;
34
34
  position?: G.Responsive<TStyles.Position>;
35
- inset?: G.Responsive<number>;
36
- insetStart?: G.Responsive<number>;
37
- insetEnd?: G.Responsive<number>;
38
- insetTop?: G.Responsive<number>;
39
- insetBottom?: G.Responsive<number>;
35
+ inset?: G.Responsive<TStyles.Inset>;
36
+ insetStart?: G.Responsive<TStyles.Inset>;
37
+ insetEnd?: G.Responsive<TStyles.Inset>;
38
+ insetTop?: G.Responsive<TStyles.Inset>;
39
+ insetBottom?: G.Responsive<TStyles.Inset>;
40
40
  zIndex?: number;
41
41
  shadow?: "raised" | "overlay";
42
42
  overflow?: "hidden" | "auto";
@@ -678,6 +678,12 @@ export const inset = () => (<Example>
678
678
  <View backgroundColor="neutral" position="absolute" insetBottom={4} height={10} width={10}/>
679
679
  </View>
680
680
  </Example.Item>
681
+
682
+ <Example.Item title="responsive, [s] insetBottom: 4 [m+] insetEnd: 4">
683
+ <View backgroundColor="neutral-faded" width={25} height={25}>
684
+ <View backgroundColor="neutral" position="absolute" insetBottom={{ s: 4, m: "auto" }} insetEnd={{ s: "auto", m: 4 }} height={10} width={10}/>
685
+ </View>
686
+ </Example.Item>
681
687
  </Example>);
682
688
  const Animated = () => {
683
689
  const [background, setBackground] = React.useState("neutral");
@@ -1 +1 @@
1
- .content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;position:absolute}.inner{opacity:0;transform:scale(.86) translateY(0);transform-origin:var(--rs-flyout-origin-x) var(--rs-flyout-origin-y);transition:1ms var(--rs-easing-accelerate)}.content.--width-trigger .inner{transform:scale(1) translateY(var(--rs-unit-x2))}.content.--position-top,.content.--position-top-end,.content.--position-top-start{--rs-flyout-origin-y:100%;padding-bottom:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom,.content.--position-bottom-end,.content.--position-bottom-start{--rs-flyout-origin-y:0%;padding-top:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom-start,.content.--position-top-start{--rs-flyout-origin-x:0%}.content.--position-bottom-end,.content.--position-top-end{--rs-flyout-origin-x:100%}.content.--position-start,.content.--position-start-bottom,.content.--position-start-top{--rs-flyout-origin-x:100%;padding-right:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end,.content.--position-end-bottom,.content.--position-end-top{--rs-flyout-origin-x:0%;padding-left:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end-top,.content.--position-start-top{--rs-flyout-origin-y:0%}.content.--position-end-bottom,.content.--position-start-bottom{--rs-flyout-origin-y:100%}.content.--visible .inner{opacity:1;transform:scale(1) translateY(0)}.content.--animated .inner{transition-duration:var(--rs-duration-fast);transition-property:opacity,transform}.content.--animated.--visible .inner{transition-timing-function:var(--rs-easing-decelerate)}.content.--hover-disabled{pointer-events:none}
1
+ .content{--rs-flyout-gap:0;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;pointer-events:none;position:absolute}.content.--hover,.inner{pointer-events:all}.inner{opacity:0;transform:scale(.9) translateY(0);transform-origin:var(--rs-flyout-origin-x) var(--rs-flyout-origin-y);transition:1ms var(--rs-easing-accelerate)}.content.--width-trigger .inner{transform:scale(1) translateY(var(--rs-unit-x2))}.content.--position-top,.content.--position-top-end,.content.--position-top-start{--rs-flyout-origin-y:100%;padding-bottom:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom,.content.--position-bottom-end,.content.--position-bottom-start{--rs-flyout-origin-y:0%;padding-top:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-bottom-start,.content.--position-top-start{--rs-flyout-origin-x:0%}.content.--position-bottom-end,.content.--position-top-end{--rs-flyout-origin-x:100%}.content.--position-start,.content.--position-start-bottom,.content.--position-start-top{--rs-flyout-origin-x:100%;padding-right:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end,.content.--position-end-bottom,.content.--position-end-top{--rs-flyout-origin-x:0%;padding-left:calc(var(--rs-unit-x1) * var(--rs-flyout-gap))}.content.--position-end-top,.content.--position-start-top{--rs-flyout-origin-y:0%}.content.--position-end-bottom,.content.--position-start-bottom{--rs-flyout-origin-y:100%}.content.--visible .inner{opacity:1;transform:scale(1) translateY(0)}.content.--animated .inner{transition-duration:var(--rs-duration-rapid);transition-property:opacity,transform}.content.--animated.--visible .inner{transition-duration:var(--rs-duration-fast);transition-timing-function:var(--rs-easing-decelerate)}.content.--hover-disabled{pointer-events:none}
@@ -83,6 +83,7 @@ type BaseProps = {
83
83
  disableHideAnimation?: boolean;
84
84
  disableContentHover?: boolean;
85
85
  disableCloseOnOutsideClick?: boolean;
86
+ originCoordinates?: G.Coordinates;
86
87
  children?: React.ReactNode;
87
88
  onOpen?: () => void;
88
89
  onClose?: () => void;
@@ -114,7 +115,7 @@ export type ContextProps = {
114
115
  id: string;
115
116
  flyout: UseFlyoutData;
116
117
  width?: Width;
117
- triggerElRef: React.RefObject<HTMLButtonElement>;
118
+ triggerElRef?: React.RefObject<HTMLButtonElement>;
118
119
  flyoutElRef: React.RefObject<HTMLDivElement>;
119
120
  handleClose: (options?: {
120
121
  closeParents?: boolean;
@@ -4,7 +4,7 @@ import React from "react";
4
4
  import { classNames } from "../../../utilities/helpers.js";
5
5
  import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
6
6
  import Portal from "../Portal/index.js";
7
- import { getClosestFlyoutTarget } from "../../../utilities/dom/index.js";
7
+ import { findClosestRenderContainer } from "../../../utilities/dom/index.js";
8
8
  import cooldown from "./utilities/cooldown.js";
9
9
  import { useFlyoutContext, ContentProvider } from "./Flyout.context.js";
10
10
  import s from "./Flyout.module.css";
@@ -28,7 +28,7 @@ const FlyoutContent = (props) => {
28
28
  }, [handleTransitionStart, flyoutElRef, status]);
29
29
  if (status === "idle" || !mounted)
30
30
  return null;
31
- const contentClassNames = classNames(s.content, status === "visible" && s["--visible"],
31
+ const contentClassNames = classNames(s.content, triggerType === "hover" && s["--hover"], status === "visible" && s["--visible"],
32
32
  // animating only when we're opening the first flyout or closing the last flyout within the same cooldown
33
33
  // content is rendered only once flyout is already warm so checking for timer instead
34
34
  (cooldown.status === "cooling" || !cooldown.timer || isSubmenu || triggerType !== "hover") &&
@@ -52,8 +52,10 @@ const FlyoutContent = (props) => {
52
52
  ...styles,
53
53
  "--rs-flyout-gap": contentGap,
54
54
  }, ref: flyoutElRef, onTransitionEnd: handleTransitionEnd, onMouseEnter: triggerType === "hover" ? handleMouseEnter : undefined, onMouseLeave: triggerType === "hover" ? handleMouseLeave : undefined, onMouseDown: handleContentMouseDown, onTouchStart: handleContentMouseDown, onMouseUp: handleContentMouseUp, onTouchEnd: handleContentMouseUp, children: _jsx("div", { role: role, ...attributes, id: id, "aria-modal": triggerType === "click", style: contentAttributes?.style, className: innerClassNames, children: children }) }) }));
55
- const closestScrollable = getClosestFlyoutTarget(triggerElRef.current);
56
- const scrollableRef = closestScrollable === document.body ? undefined : { current: closestScrollable };
55
+ const closestScrollable = triggerElRef && findClosestRenderContainer({ el: triggerElRef.current });
56
+ const scrollableRef = closestScrollable === document.body || !closestScrollable
57
+ ? undefined
58
+ : { current: closestScrollable };
57
59
  return _jsx(Portal, { targetRef: containerRef || scrollableRef, children: content });
58
60
  };
59
61
  export default FlyoutContent;
@@ -15,7 +15,7 @@ import cooldown from "./utilities/cooldown.js";
15
15
  import { Provider, useFlyoutTriggerContext, useFlyoutContext, useFlyoutContentContext, } from "./Flyout.context.js";
16
16
  import useHandlerRef from "../../../hooks/useHandlerRef.js";
17
17
  const FlyoutRoot = (props) => {
18
- const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
18
+ const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, originCoordinates, contentGap = 2, contentShift, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
19
19
  const fallbackPositions = props.fallbackPositions === false || forcePosition ? [] : props.fallbackPositions;
20
20
  const onOpenRef = useHandlerRef(onOpen);
21
21
  const onCloseRef = useHandlerRef(onClose);
@@ -33,7 +33,7 @@ const FlyoutRoot = (props) => {
33
33
  */
34
34
  const triggerElRef = (!parentFlyoutContentContext && parentFlyoutTriggerContext?.triggerElRef) ||
35
35
  internalTriggerElRef;
36
- const triggerBoundsRef = React.useRef(null);
36
+ const triggerBoundsRef = React.useRef();
37
37
  const flyoutElRef = React.useRef(null);
38
38
  const id = useElementId(passedId);
39
39
  const timerRef = React.useRef();
@@ -44,7 +44,7 @@ const FlyoutRoot = (props) => {
44
44
  const transitionStartedRef = React.useRef(false);
45
45
  // Lock blur event while pressing anywhere inside the flyout content
46
46
  const lockedBlurEffects = React.useRef(false);
47
- // Focus shouldn't retrun back to the trigger when user intentionally clicks outside the flyout
47
+ // Focus shouldn't return back to the trigger when user intentionally clicks outside the flyout
48
48
  const shouldReturnFocusRef = React.useRef(true);
49
49
  // Touch devices trigger onMouseEnter but we don't need to apply regular hover timeouts
50
50
  // So we're saving a flag on touch start and then change the mouse enter behavior
@@ -52,7 +52,7 @@ const FlyoutRoot = (props) => {
52
52
  const flyout = useFlyout({
53
53
  triggerElRef,
54
54
  flyoutElRef,
55
- triggerBoundsRef,
55
+ triggerBounds: originCoordinates ?? triggerBoundsRef.current,
56
56
  width,
57
57
  position: passedPosition,
58
58
  defaultActive: resolvedActive,
@@ -74,11 +74,12 @@ const FlyoutRoot = (props) => {
74
74
  * Called from the internal actions
75
75
  */
76
76
  const handleOpen = React.useCallback(() => {
77
- const canOpen = !lockedRef.current && !isRendered;
78
- if (!canOpen)
77
+ if (lockedRef.current)
78
+ return;
79
+ if (isRendered && triggerType !== "hover")
79
80
  return;
80
81
  onOpenRef.current?.();
81
- }, [isRendered, onOpenRef]);
82
+ }, [onOpenRef, isRendered, triggerType]);
82
83
  const handleClose = React.useCallback((options) => {
83
84
  const isLocked = triggerType === "click" && !isDismissible();
84
85
  const canClose = !isLocked && (isRendered || disabled);
@@ -164,7 +165,7 @@ const FlyoutRoot = (props) => {
164
165
  * After animation has started, we're sure about the correct bounds
165
166
  * so drop the cache to make flyout work when trigger moves around
166
167
  */
167
- triggerBoundsRef.current = null;
168
+ triggerBoundsRef.current = undefined;
168
169
  }, [resolvedActive]);
169
170
  const handleTransitionEnd = React.useCallback((e) => {
170
171
  if (flyoutElRef.current !== e.currentTarget || e.propertyName !== "transform")
@@ -277,12 +278,14 @@ const FlyoutRoot = (props) => {
277
278
  }), [handleOpen, handleClose, updatePosition]);
278
279
  useHotkeys({ Escape: () => handleClose() }, [handleClose]);
279
280
  useOnClickOutside([flyoutElRef, triggerElRef], () => {
281
+ if (!isRendered)
282
+ return;
280
283
  if (disableCloseOnOutsideClick)
281
284
  return;
282
285
  // Clicking outside changes focused element so we don't need to set it back ourselves
283
286
  shouldReturnFocusRef.current = false;
284
287
  handleClose();
285
- });
288
+ }, [isRendered]);
286
289
  return (_jsx(Provider, { value: {
287
290
  id,
288
291
  flyout,
@@ -5,6 +5,7 @@ declare const _default: {
5
5
  export default _default;
6
6
  export declare const position: () => React.JSX.Element;
7
7
  export declare const dynamicPosition: () => React.JSX.Element;
8
+ export declare const originCoordinates: () => React.JSX.Element;
8
9
  export declare const modes: () => React.JSX.Element;
9
10
  export declare const width: () => React.JSX.Element;
10
11
  export declare const offset: () => React.JSX.Element;
@@ -51,6 +51,21 @@ export const position = () => (<div style={{ paddingTop: 200 }}>
51
51
  export const dynamicPosition = () => (<div style={{ position: "absolute", top: 0, left: "50%" }}>
52
52
  <Demo position="top"/>
53
53
  </div>);
54
+ export const originCoordinates = () => {
55
+ const [coordinates, setCoordinates] = React.useState(null);
56
+ return (<Example>
57
+ <Example.Item>
58
+ <View height={25} width={25} attributes={{
59
+ onContextMenu: (e) => {
60
+ e.preventDefault();
61
+ setCoordinates({ x: e.clientX, y: e.clientY });
62
+ },
63
+ }} backgroundColor="neutral-faded" borderRadius="medium"/>
64
+ <br /> <br />
65
+ <Demo position="top" originCoordinates={coordinates} active={!!coordinates} onClose={() => setCoordinates(null)}/>
66
+ </Example.Item>
67
+ </Example>);
68
+ };
54
69
  export const modes = () => (<Example>
55
70
  <Example.Item title="dialog click">
56
71
  <Demo position="bottom-start" trapFocusMode="dialog">
@@ -187,7 +202,7 @@ export const customPortalTarget = () => {
187
202
  return (<Example>
188
203
  <Example.Item title="Custom containerRef">
189
204
  <View padding={4} paddingInline={40} height={50} overflow="auto" backgroundColor="neutral-faded" borderRadius="small" attributes={{ ref: portalRef }}>
190
- <Flyout position="bottom-end" containerRef={portalRef} active>
205
+ <Flyout position="bottom-end" active>
191
206
  <Flyout.Trigger>{(attributes) => <button {...attributes}>Open</button>}</Flyout.Trigger>
192
207
  <Flyout.Content>
193
208
  <div style={{
@@ -1,22 +1,17 @@
1
1
  import React from "react";
2
+ import type * as G from "../../../types/global";
2
3
  import type * as T from "./Flyout.types";
3
- /**
4
- * Typings
5
- */
6
- type ElementRef = React.RefObject<HTMLElement>;
7
- type PassedFlyoutOptions = {
4
+ type UseFlyout = (args: {
8
5
  width?: T.Width;
9
6
  position?: T.Position;
10
7
  defaultActive?: boolean;
11
8
  fallbackPositions?: T.Position[];
12
- container?: HTMLElement | null;
13
- };
14
- type UseFlyout = (args: PassedFlyoutOptions & {
15
- triggerElRef: ElementRef;
16
- flyoutElRef: ElementRef;
17
- triggerBoundsRef: React.RefObject<DOMRect | undefined>;
18
9
  contentGap?: number;
19
10
  contentShift?: number;
11
+ container?: HTMLElement | null;
12
+ triggerElRef: React.RefObject<HTMLElement>;
13
+ flyoutElRef: React.RefObject<HTMLElement>;
14
+ triggerBounds?: DOMRect | G.Coordinates;
20
15
  }) => Pick<T.State, "styles" | "position" | "status"> & {
21
16
  updatePosition: (options?: {
22
17
  sync?: boolean;
@@ -1,23 +1,9 @@
1
1
  import React from "react";
2
2
  import useRTL from "../../../hooks/useRTL.js";
3
- import { getClosestFlyoutTarget, getShadowRoot } from "../../../utilities/dom/index.js";
3
+ import { findClosestRenderContainer, getShadowRoot, getRectFromCoordinates } from "../../../utilities/dom/index.js";
4
4
  import calculatePosition from "./utilities/calculatePosition.js";
5
5
  import getPositionFallbacks from "./utilities/getPositionFallbacks.js";
6
- /**
7
- * Check if element visually fits on the screen
8
- */
9
- const fullyVisible = (args) => {
10
- const { styles, scopeOffset } = args;
11
- const htmlEl = document.documentElement;
12
- const pageLeft = htmlEl.scrollLeft;
13
- const pageRight = pageLeft + htmlEl.clientWidth;
14
- const pageTop = htmlEl.scrollTop;
15
- const pageBottom = pageTop + htmlEl.clientHeight;
16
- return (styles.left + scopeOffset.left >= pageLeft &&
17
- styles.left + styles.width + scopeOffset.left <= pageRight &&
18
- styles.top + scopeOffset.top >= pageTop &&
19
- styles.top + styles.height + scopeOffset.top <= pageBottom);
20
- };
6
+ import isFullyVisible from "./utilities/isFullyVisible.js";
21
7
  /**
22
8
  * Order of keys here is responsible for the order of styles applied
23
9
  */
@@ -33,7 +19,6 @@ const resetStyles = {
33
19
  left: 0,
34
20
  top: 0,
35
21
  position: "fixed",
36
- // opacity: 0,
37
22
  visibility: "hidden",
38
23
  animation: "none",
39
24
  transition: "none",
@@ -46,9 +31,12 @@ const flyout = (args) => {
46
31
  const { triggerEl, flyoutEl, triggerBounds: passedTriggerBounds, contentShift = 0, contentGap = 0, ...options } = args;
47
32
  const { position, fallbackPositions, width, container, lastUsedFallback, onFallback } = options;
48
33
  const targetClone = flyoutEl.cloneNode(true);
49
- const triggerBounds = passedTriggerBounds || triggerEl.getBoundingClientRect();
50
34
  const baseUnit = getComputedStyle(flyoutEl).getPropertyValue("--rs-unit-x1");
51
35
  const unitModifier = baseUnit ? parseInt(baseUnit) : 0;
36
+ const triggerBounds = passedTriggerBounds || triggerEl?.getBoundingClientRect();
37
+ if (!triggerBounds)
38
+ return;
39
+ const resolvedTriggerBounds = getRectFromCoordinates(triggerBounds);
52
40
  // Reset all styles applied on the previous hook execution
53
41
  targetClone.style.cssText = "";
54
42
  Object.keys(resetStyles).forEach((key) => {
@@ -58,17 +46,17 @@ const flyout = (args) => {
58
46
  });
59
47
  if (width) {
60
48
  if (width === "trigger") {
61
- targetClone.style.width = `${triggerBounds.width}px`;
49
+ targetClone.style.width = `${resolvedTriggerBounds.width}px`;
62
50
  }
63
51
  else if (width !== "full") {
64
52
  targetClone.style.width = width;
65
53
  }
66
54
  }
67
- const shadowRoot = getShadowRoot(triggerEl);
55
+ const shadowRoot = triggerEl && getShadowRoot(triggerEl);
68
56
  // Insert inside shadow root if possible to make sure styles are applied correctly
69
57
  (shadowRoot || document.body).appendChild(targetClone);
70
58
  const flyoutBounds = targetClone.getBoundingClientRect();
71
- const containerParent = container || getClosestFlyoutTarget(triggerEl);
59
+ const containerParent = container || (triggerEl ? findClosestRenderContainer({ el: triggerEl }) : document.body);
72
60
  const containerBounds = containerParent.getBoundingClientRect();
73
61
  const scopeOffset = {
74
62
  top: containerBounds.top + document.documentElement.scrollTop - containerParent.scrollTop,
@@ -79,14 +67,14 @@ const flyout = (args) => {
79
67
  testOrder.some((currentPosition) => {
80
68
  const tested = calculatePosition({
81
69
  ...options,
82
- triggerBounds,
70
+ triggerBounds: resolvedTriggerBounds,
83
71
  flyoutBounds,
84
72
  scopeOffset,
85
73
  position: currentPosition,
86
74
  contentGap: contentGap * unitModifier,
87
75
  contentShift: contentShift * unitModifier,
88
76
  });
89
- const visible = fullyVisible(tested);
77
+ const visible = isFullyVisible(tested);
90
78
  const validPosition = visible || fallbackPositions?.length === 0;
91
79
  // Saving first try in case non of the options work
92
80
  if (validPosition || lastUsedFallback === currentPosition) {
@@ -96,7 +84,7 @@ const flyout = (args) => {
96
84
  return validPosition;
97
85
  });
98
86
  if (!calculated) {
99
- throw new Error(`Reshaped: Can't calculate styles for the ${position} position`);
87
+ throw new Error(`[Reshaped] Can't calculate styles for the ${position} position`);
100
88
  }
101
89
  targetClone.parentNode?.removeChild(targetClone);
102
90
  return calculated;
@@ -132,11 +120,11 @@ const flyoutReducer = (state, action) => {
132
120
  return state;
133
121
  return { ...state, status: "idle", styles: resetStyles };
134
122
  default:
135
- throw new Error("Invalid reducer type");
123
+ throw new Error("[Reshaped] Invalid flyout reducer type");
136
124
  }
137
125
  };
138
126
  const useFlyout = (args) => {
139
- const { triggerElRef, flyoutElRef, triggerBoundsRef, contentGap, contentShift, ...options } = args;
127
+ const { triggerElRef, flyoutElRef, triggerBounds, contentGap, contentShift, ...options } = args;
140
128
  const { position: defaultPosition = "bottom", fallbackPositions, width, container } = options;
141
129
  const lastUsedFallbackRef = React.useRef(defaultPosition);
142
130
  // Memo the array internally to avoid new arrays triggering useCallback
@@ -165,12 +153,12 @@ const useFlyout = (args) => {
165
153
  lastUsedFallbackRef.current = position;
166
154
  }, []);
167
155
  const updatePosition = React.useCallback((options) => {
168
- if (!triggerElRef.current || !flyoutElRef.current)
156
+ if (!flyoutElRef.current)
169
157
  return;
170
158
  const nextFlyoutData = flyout({
171
159
  triggerEl: triggerElRef.current,
172
160
  flyoutEl: flyoutElRef.current,
173
- triggerBounds: triggerBoundsRef.current,
161
+ triggerBounds,
174
162
  width,
175
163
  position: defaultPosition,
176
164
  fallbackPositions: cachedFallbackPositions,
@@ -181,8 +169,9 @@ const useFlyout = (args) => {
181
169
  contentGap,
182
170
  contentShift,
183
171
  });
184
- if (nextFlyoutData)
172
+ if (nextFlyoutData) {
185
173
  dispatch({ type: "position", payload: { ...nextFlyoutData, sync: options?.sync } });
174
+ }
186
175
  }, [
187
176
  container,
188
177
  defaultPosition,
@@ -190,7 +179,7 @@ const useFlyout = (args) => {
190
179
  isRTL,
191
180
  flyoutElRef,
192
181
  triggerElRef,
193
- triggerBoundsRef,
182
+ triggerBounds,
194
183
  width,
195
184
  contentGap,
196
185
  contentShift,
@@ -0,0 +1,6 @@
1
+ import calculatePosition from "./calculatePosition";
2
+ /**
3
+ * Check if element visually fits on the screen
4
+ */
5
+ declare const isFullyVisible: (args: ReturnType<typeof calculatePosition>) => boolean;
6
+ export default isFullyVisible;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Check if element visually fits on the screen
3
+ */
4
+ const isFullyVisible = (args) => {
5
+ const { styles, scopeOffset } = args;
6
+ const htmlEl = document.documentElement;
7
+ const pageLeft = htmlEl.scrollLeft;
8
+ const pageRight = pageLeft + htmlEl.clientWidth;
9
+ const pageTop = htmlEl.scrollTop;
10
+ const pageBottom = pageTop + htmlEl.clientHeight;
11
+ return (styles.left + scopeOffset.left >= pageLeft &&
12
+ styles.left + styles.width + scopeOffset.left <= pageRight &&
13
+ styles.top + scopeOffset.top >= pageTop &&
14
+ styles.top + styles.height + scopeOffset.top <= pageBottom);
15
+ };
16
+ export default isFullyVisible;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import ReactDOM from "react-dom";
5
5
  import Theme from "../../Theme/index.js";
@@ -29,7 +29,10 @@ const Portal = (props) => {
29
29
  const nextScopeRef = targetRef || portal.scopeRef;
30
30
  const targetEl = nextScopeRef?.current || defaultTargetEl;
31
31
  /* Preserve the current theme when rendered in body */
32
- return (_jsxs(_Fragment, { children: [ReactDOM.createPortal(_jsx(Theme, { children: children }), targetEl), _jsx("div", { ref: rootRef, className: s.root })] }));
32
+ return [
33
+ ReactDOM.createPortal(_jsx(Theme, { children: children }), targetEl),
34
+ _jsx("div", { ref: rootRef, className: s.root }, "root"),
35
+ ];
33
36
  };
34
37
  function PortalScope(props) {
35
38
  const { children } = props;
@@ -1,3 +1,3 @@
1
1
  import React from "react";
2
- declare const useOnClickOutside: (refs: React.RefObject<HTMLElement>[], handler: (event: Event) => void) => void;
2
+ declare const useOnClickOutside: (refs: React.RefObject<HTMLElement>[], handler: (event: Event) => void, deps: any[]) => void;
3
3
  export default useOnClickOutside;
@@ -1,17 +1,20 @@
1
1
  import useHandlerRef from "../useHandlerRef.js";
2
2
  import React from "react";
3
- const useOnClickOutside = (refs, handler) => {
3
+ const useOnClickOutside = (refs, handler, deps) => {
4
4
  const handlerRef = useHandlerRef(handler);
5
5
  React.useEffect(() => {
6
6
  if (!handlerRef.current)
7
7
  return;
8
8
  const handleClick = (event) => {
9
+ if (event instanceof MouseEvent && event.button === 2) {
10
+ return;
11
+ }
9
12
  let isInside = false;
10
13
  const clickedEl = event.composedPath()[0];
11
14
  refs.forEach((elRef) => {
12
- if (!elRef.current ||
13
- elRef.current === clickedEl ||
14
- elRef.current.contains(clickedEl)) {
15
+ if (!elRef.current)
16
+ return;
17
+ if (elRef.current === clickedEl || elRef.current.contains(clickedEl)) {
15
18
  isInside = true;
16
19
  }
17
20
  });
@@ -27,6 +30,6 @@ const useOnClickOutside = (refs, handler) => {
27
30
  document.removeEventListener("touchstart", handleClick);
28
31
  };
29
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
30
- }, [handlerRef, ...refs]);
33
+ }, [handlerRef, ...refs, ...deps]);
31
34
  };
32
35
  export default useOnClickOutside;
@@ -1,10 +1,14 @@
1
1
  import React from "react";
2
+ import * as keys from "../../constants/keys.js";
2
3
  import { enableKeyboardMode, disableKeyboardMode } from "../../utilities/a11y/index.js";
3
4
  const useSingletonKeyboardMode = () => {
4
5
  React.useEffect(() => {
5
6
  const handleKeyDown = (e) => {
6
7
  if (e.metaKey || e.altKey || e.ctrlKey)
7
8
  return;
9
+ // Prevent focus ring from appearing when using mouse but closing with esc
10
+ if (e.key === keys.ESC)
11
+ return;
8
12
  enableKeyboardMode();
9
13
  };
10
14
  const handleClick = () => {
package/dist/index.d.ts CHANGED
@@ -31,6 +31,8 @@ export { default as CheckboxGroup } from "./components/CheckboxGroup";
31
31
  export type { CheckboxGroupProps } from "./components/CheckboxGroup";
32
32
  export { default as Container } from "./components/Container";
33
33
  export type { ContainerProps } from "./components/Container";
34
+ export { default as ContextMenu } from "./components/ContextMenu";
35
+ export type { ContextMenuProps } from "./components/ContextMenu";
34
36
  export { default as Dismissible } from "./components/Dismissible";
35
37
  export type { DismissibleProps } from "./components/Dismissible";
36
38
  export { default as Divider } from "./components/Divider";
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ export { default as Carousel } from "./components/Carousel/index.js";
16
16
  export { default as Checkbox } from "./components/Checkbox/index.js";
17
17
  export { default as CheckboxGroup } from "./components/CheckboxGroup/index.js";
18
18
  export { default as Container } from "./components/Container/index.js";
19
+ export { default as ContextMenu } from "./components/ContextMenu/index.js";
19
20
  export { default as Dismissible } from "./components/Dismissible/index.js";
20
21
  export { default as Divider } from "./components/Divider/index.js";
21
22
  export { default as DropdownMenu } from "./components/DropdownMenu/index.js";
@@ -0,0 +1 @@
1
+ [style*="--rs-align-"]{align-items:var(--rs-align)!important;--rs-align-s: ;--rs-align-m:var(--rs-align-s);--rs-align-l:var(--rs-align-m);--rs-align-xl:var(--rs-align-l);--rs-align:var(--rs-align-s)}@media (--rs-viewport-m ){[style*="--rs-align-"]{--rs-align:var(--rs-align-m)}}@media (--rs-viewport-l ){[style*="--rs-align-"]{--rs-align:var(--rs-align-l)}}@media (--rs-viewport-xl ){[style*="--rs-align-"]{--rs-align:var(--rs-align-xl)}}
@@ -1,3 +1,4 @@
1
1
  import * as T from "../types";
2
- declare const getAlignStyles: T.StaticStyleUtility<T.Align>;
2
+ import "./align.css";
3
+ declare const getAlignStyles: T.VariableStyleUtility<T.Align>;
3
4
  export default getAlignStyles;
@@ -1,10 +1,10 @@
1
- import { responsiveClassNames } from "../../utilities/helpers.js";
2
- import s from "./align.module.css";
1
+ import { responsiveVariables } from "../../utilities/helpers.js";
2
+ import "./align.css";
3
3
  const getAlignStyles = (value) => {
4
4
  if (!value)
5
5
  return null;
6
6
  return {
7
- classNames: responsiveClassNames(s, "--align", value),
7
+ variables: responsiveVariables("--rs-align", value),
8
8
  };
9
9
  };
10
10
  export default getAlignStyles;