reshaped 3.2.0-canary.6 → 3.2.0-canary.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +2 -0
  4. package/dist/bundle.js +11 -12
  5. package/dist/cjs/constants/breakpoints.d.ts +6 -0
  6. package/dist/cjs/constants/breakpoints.js +7 -0
  7. package/dist/cjs/themes/_generator/definitions/reshaped.js +8 -4
  8. package/dist/cjs/themes/_generator/tokens/viewport/viewport.transforms.js +10 -1
  9. package/dist/cjs/themes/figma/theme.css +1 -1
  10. package/dist/cjs/themes/reshaped/theme.css +1 -1
  11. package/dist/cjs/themes/slate/theme.css +1 -1
  12. package/dist/components/Actionable/Actionable.d.ts +1 -1
  13. package/dist/components/Actionable/Actionable.module.css +1 -1
  14. package/dist/components/Autocomplete/Autocomplete.js +2 -2
  15. package/dist/components/Button/Button.js +1 -1
  16. package/dist/components/Button/Button.module.css +1 -1
  17. package/dist/components/Card/Card.d.ts +1 -1
  18. package/dist/components/Card/Card.module.css +1 -1
  19. package/dist/components/Card/tests/Card.stories.d.ts +1 -1
  20. package/dist/components/Checkbox/Checkbox.module.css +1 -1
  21. package/dist/components/Divider/Divider.js +4 -3
  22. package/dist/components/Divider/Divider.module.css +1 -1
  23. package/dist/components/Divider/Divider.types.d.ts +3 -0
  24. package/dist/components/Divider/tests/Divider.stories.d.ts +1 -0
  25. package/dist/components/Divider/tests/Divider.stories.js +21 -0
  26. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +1 -1
  27. package/dist/components/FormControl/FormControl.context.d.ts +2 -1
  28. package/dist/components/Grid/Grid.d.ts +6 -0
  29. package/dist/components/Grid/Grid.js +46 -0
  30. package/dist/components/Grid/Grid.module.css +1 -0
  31. package/dist/components/Grid/Grid.types.d.ts +31 -0
  32. package/dist/components/Grid/Grid.types.js +1 -0
  33. package/dist/components/Grid/index.d.ts +2 -0
  34. package/dist/components/Grid/index.js +1 -0
  35. package/dist/components/Grid/tests/Grid.stories.d.ts +18 -0
  36. package/dist/components/Grid/tests/Grid.stories.js +170 -0
  37. package/dist/components/Icon/Icon.module.css +1 -1
  38. package/dist/components/Link/Link.d.ts +1 -1
  39. package/dist/components/Link/tests/Link.stories.d.ts +1 -1
  40. package/dist/components/Loader/Loader.module.css +1 -1
  41. package/dist/components/Loader/Loader.types.d.ts +1 -1
  42. package/dist/components/Loader/tests/Loader.stories.js +5 -3
  43. package/dist/components/Modal/Modal.js +7 -4
  44. package/dist/components/Modal/Modal.module.css +1 -1
  45. package/dist/components/Modal/Modal.types.d.ts +1 -1
  46. package/dist/components/Modal/tests/Modal.stories.d.ts +1 -0
  47. package/dist/components/Modal/tests/Modal.stories.js +28 -1
  48. package/dist/components/Overlay/Overlay.js +45 -27
  49. package/dist/components/Overlay/Overlay.module.css +1 -1
  50. package/dist/components/Overlay/Overlay.types.d.ts +1 -0
  51. package/dist/components/Popover/Popover.js +2 -4
  52. package/dist/components/Popover/Popover.types.d.ts +1 -1
  53. package/dist/components/Radio/Radio.module.css +1 -1
  54. package/dist/components/Resizable/Resizable.module.css +1 -1
  55. package/dist/components/ScrollArea/ScrollArea.js +1 -1
  56. package/dist/components/Slider/Slider.module.css +1 -1
  57. package/dist/components/Slider/SliderControlled.js +2 -1
  58. package/dist/components/Switch/Switch.module.css +1 -1
  59. package/dist/components/Tabs/Tabs.d.ts +1 -1
  60. package/dist/components/Tabs/Tabs.module.css +1 -1
  61. package/dist/components/Tabs/TabsContext.d.ts +1 -1
  62. package/dist/components/Tabs/TabsItem.d.ts +1 -1
  63. package/dist/components/Tabs/TabsItem.js +2 -3
  64. package/dist/components/Tabs/TabsList.js +1 -1
  65. package/dist/components/Tabs/tests/Tabs.stories.d.ts +15 -13
  66. package/dist/components/Tabs/tests/Tabs.stories.js +71 -8
  67. package/dist/components/TextField/TextField.js +5 -1
  68. package/dist/components/TextField/TextField.module.css +1 -1
  69. package/dist/components/TextField/tests/TextField.stories.js +4 -0
  70. package/dist/components/Toast/ToastContainer.js +1 -2
  71. package/dist/components/Toast/ToastRegion.js +1 -1
  72. package/dist/components/View/View.js +7 -3
  73. package/dist/components/View/View.module.css +1 -1
  74. package/dist/components/View/View.types.d.ts +2 -2
  75. package/dist/components/_private/Flyout/Flyout.module.css +1 -1
  76. package/dist/components/_private/Flyout/Flyout.types.d.ts +11 -3
  77. package/dist/components/_private/Flyout/FlyoutContent.js +1 -1
  78. package/dist/components/_private/Flyout/FlyoutControlled.js +25 -15
  79. package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +3 -1
  80. package/dist/components/_private/Flyout/tests/Flyout.stories.js +54 -32
  81. package/dist/components/_private/Flyout/useFlyout.d.ts +2 -1
  82. package/dist/components/_private/Flyout/useFlyout.js +45 -55
  83. package/dist/components/_private/Flyout/utilities/calculatePosition.js +16 -11
  84. package/dist/components/_private/Flyout/utilities/getPositionFallbacks.d.ts +3 -0
  85. package/dist/components/_private/Flyout/utilities/getPositionFallbacks.js +39 -0
  86. package/dist/config/tailwind.d.ts +1 -1
  87. package/dist/constants/breakpoints.d.ts +6 -0
  88. package/dist/constants/breakpoints.js +5 -0
  89. package/dist/hooks/_private/useIsDismissible.js +7 -14
  90. package/dist/hooks/_private/useSingletonKeyboardMode.js +1 -1
  91. package/dist/hooks/tests/useResponsiveClientValue.stories.d.ts +1 -2
  92. package/dist/hooks/tests/useResponsiveClientValue.stories.js +1 -2
  93. package/dist/hooks/useDrag.js +2 -1
  94. package/dist/hooks/useResponsiveClientValue.js +22 -11
  95. package/dist/hooks/useScrollLock.d.ts +4 -1
  96. package/dist/hooks/useScrollLock.js +14 -40
  97. package/dist/index.d.ts +2 -0
  98. package/dist/index.js +1 -0
  99. package/dist/styles/align/align.module.css +1 -0
  100. package/dist/styles/align/index.d.ts +3 -0
  101. package/dist/styles/align/index.js +10 -0
  102. package/dist/styles/justify/index.d.ts +3 -0
  103. package/dist/styles/justify/index.js +10 -0
  104. package/dist/styles/justify/justify.module.css +1 -0
  105. package/dist/styles/types.d.ts +2 -0
  106. package/dist/themes/_generator/definitions/reshaped.js +5 -4
  107. package/dist/themes/_generator/tokens/viewport/viewport.transforms.js +10 -1
  108. package/dist/themes/figma/theme.css +1 -1
  109. package/dist/themes/reshaped/theme.css +1 -1
  110. package/dist/themes/slate/theme.css +1 -1
  111. package/dist/utilities/a11y/TrapFocus.d.ts +1 -1
  112. package/dist/utilities/a11y/TrapFocus.js +1 -1
  113. package/dist/utilities/a11y/focus.js +1 -1
  114. package/dist/utilities/a11y/index.d.ts +4 -0
  115. package/dist/utilities/a11y/index.js +3 -0
  116. package/dist/utilities/css.d.ts +7 -0
  117. package/dist/utilities/css.js +18 -0
  118. package/dist/utilities/dom/flyout.d.ts +1 -0
  119. package/dist/utilities/{dom.js → dom/flyout.js} +1 -19
  120. package/dist/utilities/dom/index.d.ts +3 -0
  121. package/dist/utilities/dom/index.js +3 -0
  122. package/dist/utilities/dom/shadowDom.d.ts +1 -0
  123. package/dist/utilities/dom/shadowDom.js +4 -0
  124. package/dist/utilities/dom/userSelect.d.ts +2 -0
  125. package/dist/utilities/dom/userSelect.js +6 -0
  126. package/dist/utilities/platform.d.ts +1 -0
  127. package/dist/utilities/platform.js +15 -0
  128. package/dist/utilities/scroll/disable.d.ts +7 -0
  129. package/dist/utilities/scroll/disable.js +13 -0
  130. package/dist/utilities/scroll/helpers.d.ts +1 -0
  131. package/dist/utilities/scroll/helpers.js +17 -0
  132. package/dist/utilities/scroll/index.d.ts +2 -0
  133. package/dist/utilities/scroll/index.js +2 -0
  134. package/dist/utilities/scroll/lock.d.ts +5 -0
  135. package/dist/utilities/scroll/lock.js +24 -0
  136. package/dist/utilities/scroll/lockSafari.d.ts +2 -0
  137. package/dist/utilities/scroll/lockSafari.js +21 -0
  138. package/dist/utilities/scroll/lockStandard.d.ts +2 -0
  139. package/dist/utilities/scroll/lockStandard.js +17 -0
  140. package/dist/utilities/storybook/Placeholder.d.ts +1 -0
  141. package/dist/utilities/storybook/Placeholder.js +2 -2
  142. package/package.json +45 -48
  143. package/dist/utilities/dom.d.ts +0 -6
@@ -18,6 +18,8 @@ import getInsetStyles from "../../styles/inset/index.js";
18
18
  import getAspectRatioStyles from "../../styles/aspectRatio/index.js";
19
19
  import getBorderStyles from "../../styles/border/index.js";
20
20
  import getTextAlignStyles from "../../styles/textAlign/index.js";
21
+ import getAlignStyles from "../../styles/align/index.js";
22
+ import getJustifyStyles from "../../styles/justify/index.js";
21
23
  const ViewItem = (props) => {
22
24
  const { columns, grow, gapBefore, as: TagName = "div", order, children, className, attributes, } = props;
23
25
  const itemClassNames = classNames(s.item, className, gapBefore === "auto" && s["item--gap-auto"], gapBefore !== undefined && s["item--gap-before"], columns && s["item--columns"], ...responsiveClassNames(s, "item--grow", grow), ...responsiveClassNames(s, "item--columns", columns));
@@ -65,6 +67,8 @@ const View = (props) => {
65
67
  const aspectRatioStyles = getAspectRatioStyles(aspectRatio);
66
68
  const borderStyles = getBorderStyles(borderColor);
67
69
  const textAlignStyles = getTextAlignStyles(textAlign);
70
+ const alignStyles = getAlignStyles(align);
71
+ const justifyStyles = getJustifyStyles(justify);
68
72
  let renderedItemIndex = 0;
69
73
  // If wrap is not defined, it can be set based on item grow and split usage
70
74
  let nowrap;
@@ -99,7 +103,7 @@ const View = (props) => {
99
103
  className: classNames(className, child.props.className),
100
104
  });
101
105
  }
102
- else if (className || !React.isValidElement(child)) {
106
+ else if (className || (!React.isValidElement(child) && React.Children.count(children) > 1)) {
103
107
  itemElement = (_jsx("div", { className: className, children: child }, key));
104
108
  }
105
109
  else {
@@ -137,8 +141,8 @@ const View = (props) => {
137
141
  return renderItem({ child, index: renderedIndex });
138
142
  });
139
143
  // Classnames and attributes are written here so we can assign nowrap to the root element based on the children
140
- const rootClassNames = classNames(s.root, className, radiusStyles?.classNames, positionStyles?.classNames, bleedStyles?.classNames, widthStyles?.classNames, heightStyles?.classNames, aspectRatioStyles?.classNames, maxWidthStyles?.classNames, maxHeightStyles?.classNames, minWidthStyles?.classNames, minHeightStyles?.classNames, insetStyles?.classNames, insetTopStyles?.classNames, insetBottomStyles?.classNames, insetStartStyles?.classNames, insetEndStyles?.classNames, borderStyles?.classNames, textAlignStyles?.classNames, backgroundColor && s[`--bg-${backgroundColor}`], shadow && s[`--shadow-${shadow}`], overflow && s[`--overflow-${overflow}`], animated && s["--animated"], divided && s["--divided"], (padding !== undefined || paddingInline !== undefined || paddingBlock !== undefined) &&
141
- s["--padding"], paddingBottom !== undefined && s["--padding-bottom"], paddingEnd !== undefined && s["--padding-end"], paddingStart !== undefined && s["--padding-start"], paddingTop !== undefined && s["--padding-top"], (isFlex || nowrap) && s["--flex"], ...responsiveClassNames(s, "--direction", direction), ...responsiveClassNames(s, "--align", align), ...responsiveClassNames(s, "--justify", justify),
144
+ const rootClassNames = classNames(s.root, className, radiusStyles?.classNames, positionStyles?.classNames, bleedStyles?.classNames, widthStyles?.classNames, heightStyles?.classNames, aspectRatioStyles?.classNames, maxWidthStyles?.classNames, maxHeightStyles?.classNames, minWidthStyles?.classNames, minHeightStyles?.classNames, insetStyles?.classNames, insetTopStyles?.classNames, insetBottomStyles?.classNames, insetStartStyles?.classNames, insetEndStyles?.classNames, borderStyles?.classNames, textAlignStyles?.classNames, justifyStyles?.classNames, alignStyles?.classNames, backgroundColor && s[`--bg-${backgroundColor}`], shadow && s[`--shadow-${shadow}`], overflow && s[`--overflow-${overflow}`], animated && s["--animated"], divided && s["--divided"], (padding !== undefined || paddingInline !== undefined || paddingBlock !== undefined) &&
145
+ s["--padding"], paddingBottom !== undefined && s["--padding-bottom"], paddingEnd !== undefined && s["--padding-end"], paddingStart !== undefined && s["--padding-start"], paddingTop !== undefined && s["--padding-top"], (isFlex || nowrap) && s["--flex"], ...responsiveClassNames(s, "--direction", direction),
142
146
  // Wrap and nowrap are separate here because inverting any of them could result into a false value which will be ignored by classNames
143
147
  ...responsiveClassNames(s, "--nowrap", nowrap || wrap === false), ...responsiveClassNames(s, "--wrap", wrap),
144
148
  // Item classnames
@@ -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}}.--align-start{align-items:flex-start!important}.--align-end{align-items:flex-end!important}.--align-center{align-items:center!important}.--align-stretch{align-items:stretch!important}.--align-baseline{align-items:baseline!important}.--justify-start{justify-content:flex-start}.--justify-end{justify-content:flex-end}.--justify-center{justify-content:center}.--justify-space-between{justify-content:space-between}.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}.--align-start--m{align-items:flex-start!important}.--align-end--m{align-items:flex-end!important}.--align-center--m{align-items:center!important}.--align-stretch--m{align-items:stretch!important}.--align-baseline--m{align-items:baseline!important}.--justify-start--m{justify-content:flex-start}.--justify-end--m{justify-content:flex-end}.--justify-center--m{justify-content:center}.--justify-space-between--m{justify-content:space-between}.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}.--align-start--l{align-items:flex-start!important}.--align-end--l{align-items:flex-end!important}.--align-center--l{align-items:center!important}.--align-stretch--l{align-items:stretch!important}.--align-baseline--l{align-items:baseline!important}.--justify-start--l{justify-content:flex-start}.--justify-end--l{justify-content:flex-end}.--justify-center--l{justify-content:center}.--justify-space-between--l{justify-content:space-between}.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}.--align-start--xl{align-items:flex-start!important}.--align-end--xl{align-items:flex-end!important}.--align-center--xl{align-items:center!important}.--align-stretch--xl{align-items:stretch!important}.--align-baseline--xl{align-items:baseline!important}.--justify-start--xl{justify-content:flex-start}.--justify-end--xl{justify-content:flex-end}.--justify-center--xl{justify-content:center}.--justify-space-between--xl{justify-content:space-between}.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);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)}}
@@ -10,8 +10,8 @@ export type Props<TagName extends keyof JSX.IntrinsicElements = "div"> = {
10
10
  direction?: G.Responsive<Direction>;
11
11
  gap?: G.Responsive<number>;
12
12
  wrap?: G.Responsive<boolean>;
13
- align?: G.Responsive<"center" | "start" | "end" | "stretch" | "baseline">;
14
- justify?: G.Responsive<"center" | "start" | "end" | "space-between">;
13
+ align?: G.Responsive<TStyles.Align>;
14
+ justify?: G.Responsive<TStyles.Justify>;
15
15
  height?: G.Responsive<string | number>;
16
16
  width?: G.Responsive<string | number>;
17
17
  aspectRatio?: G.Responsive<number>;
@@ -1 +1 @@
1
- .content{--rs-flyout-gap:2;--rs-flyout-origin-x:50%;--rs-flyout-origin-y:50%;position:absolute}.inner{opacity:0;transform:scale(.8) 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%;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,17 +1,23 @@
1
1
  import React from "react";
2
2
  import type * as G from "../../../types/global";
3
- import type { TrapMode } from "../../../utilities/a11y/types";
3
+ import type { TrapMode } from "../../../utilities/a11y";
4
4
  /**
5
5
  * Utility
6
6
  */
7
- export type Position = "bottom" | "bottom-start" | "bottom-end" | "top" | "top-start" | "top-end" | "start" | "start-top" | "start-bottom" | "end" | "end-top" | "end-bottom";
7
+ type XSide = "start" | "end";
8
+ type YSide = "top" | "bottom";
9
+ export type Side = XSide | YSide;
10
+ export type Position = `${YSide}` | `${YSide}-${XSide}` | `${XSide}` | `${XSide}-${YSide}`;
8
11
  export type Width = "trigger" | string;
9
12
  export type Options = {
10
13
  width?: Width;
11
14
  position: Position;
12
15
  container?: HTMLElement | null;
13
16
  rtl: boolean;
14
- forcePosition?: boolean;
17
+ fallbackPositions?: Position[];
18
+ lastUsedFallback: Position;
19
+ onFallback: (position: Position) => void;
20
+ contentGap?: number;
15
21
  };
16
22
  export type Styles = React.CSSProperties;
17
23
  export type State = {
@@ -67,6 +73,7 @@ type BaseProps = {
67
73
  groupTimeouts?: boolean;
68
74
  position?: Position;
69
75
  forcePosition?: boolean;
76
+ fallbackPositions?: Position[] | false;
70
77
  trapFocusMode?: TrapMode;
71
78
  disabled?: boolean;
72
79
  disableHideAnimation?: boolean;
@@ -81,6 +88,7 @@ type BaseProps = {
81
88
  contentAttributes?: G.Attributes<"div">;
82
89
  instanceRef?: React.Ref<Instance>;
83
90
  containerRef?: React.RefObject<HTMLElement>;
91
+ initialFocusRef?: React.RefObject<HTMLElement>;
84
92
  };
85
93
  export type DefaultProps = Required<{
86
94
  position: BaseProps["position"];
@@ -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.js";
7
+ import { getClosestFlyoutTarget } 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";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
- import TrapFocus from "../../../utilities/a11y/TrapFocus.js";
4
+ import { TrapFocus, checkKeyboardMode } from "../../../utilities/a11y/index.js";
5
5
  import useIsDismissible from "../../../hooks/_private/useIsDismissible.js";
6
6
  import useElementId from "../../../hooks/useElementId.js";
7
7
  import useIsomorphicLayoutEffect from "../../../hooks/useIsomorphicLayoutEffect.js";
@@ -9,14 +9,14 @@ import useHotkeys from "../../../hooks/useHotkeys.js";
9
9
  import useOnClickOutside from "../../../hooks/_private/useOnClickOutside.js";
10
10
  import useRTL from "../../../hooks/useRTL.js";
11
11
  import { checkTransitions, onNextFrame } from "../../../utilities/animation.js";
12
- import { checkKeyboardMode } from "../../../utilities/a11y/keyboardMode.js";
13
12
  import useFlyout from "./useFlyout.js";
14
13
  import * as timeouts from "./Flyout.constants.js";
15
14
  import cooldown from "./utilities/cooldown.js";
16
15
  import { Provider, useFlyoutTriggerContext, useFlyoutContext, useFlyoutContentContext, } from "./Flyout.context.js";
17
16
  import useHandlerRef from "../../../hooks/useHandlerRef.js";
18
17
  const FlyoutRoot = (props) => {
19
- const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, contentGap, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, } = props;
18
+ const { triggerType = "click", groupTimeouts, onOpen, onClose, children, disabled, forcePosition, trapFocusMode, width, disableHideAnimation, disableContentHover, disableCloseOnOutsideClick, contentGap = 2, contentClassName, contentAttributes, position: passedPosition, active: passedActive, id: passedId, instanceRef, containerRef, initialFocusRef, } = props;
19
+ const fallbackPositions = props.fallbackPositions === false || forcePosition ? [] : props.fallbackPositions;
20
20
  const onOpenRef = useHandlerRef(onOpen);
21
21
  const onCloseRef = useHandlerRef(onClose);
22
22
  const resolvedActive = disabled === true ? false : passedActive;
@@ -33,7 +33,7 @@ const FlyoutRoot = (props) => {
33
33
  */
34
34
  const triggerElRef = (!parentFlyoutContentContext && parentFlyoutTriggerContext?.triggerElRef) ||
35
35
  internalTriggerElRef;
36
- const triggerBoundsRef = React.useRef();
36
+ const triggerBoundsRef = React.useRef(null);
37
37
  const flyoutElRef = React.useRef(null);
38
38
  const id = useElementId(passedId);
39
39
  const timerRef = React.useRef();
@@ -57,11 +57,13 @@ const FlyoutRoot = (props) => {
57
57
  position: passedPosition,
58
58
  defaultActive: resolvedActive,
59
59
  container: containerRef?.current,
60
- forcePosition,
60
+ fallbackPositions,
61
+ contentGap,
61
62
  });
62
63
  const { status, updatePosition, render, hide, remove, show } = flyout;
64
+ const isRendered = status !== "idle";
63
65
  // Don't create dismissible queue for hover flyout because they close all together on mouseout
64
- const isDismissible = useIsDismissible(triggerType !== "hover" && status !== "idle", flyoutElRef, triggerElRef);
66
+ const isDismissible = useIsDismissible(isRendered && triggerType !== "hover", flyoutElRef, triggerElRef);
65
67
  const clearTimer = React.useCallback(() => {
66
68
  if (timerRef.current)
67
69
  clearTimeout(timerRef.current);
@@ -71,20 +73,20 @@ const FlyoutRoot = (props) => {
71
73
  * Called from the internal actions
72
74
  */
73
75
  const handleOpen = React.useCallback(() => {
74
- const canOpen = !lockedRef.current && status === "idle";
76
+ const canOpen = !lockedRef.current && !isRendered;
75
77
  if (!canOpen)
76
78
  return;
77
79
  onOpenRef.current?.();
78
- }, [status, onOpenRef]);
80
+ }, [isRendered, onOpenRef]);
79
81
  const handleClose = React.useCallback((options) => {
80
82
  const isLocked = triggerType === "click" && !isDismissible();
81
- const canClose = !isLocked && (status !== "idle" || disabled);
83
+ const canClose = !isLocked && (isRendered || disabled);
82
84
  if (!canClose)
83
85
  return;
84
86
  onCloseRef.current?.();
85
87
  if (options?.closeParents)
86
88
  parentFlyoutContext?.handleClose?.();
87
- }, [status, isDismissible, triggerType, onCloseRef, disabled, parentFlyoutContext]);
89
+ }, [isRendered, isDismissible, triggerType, onCloseRef, disabled, parentFlyoutContext]);
88
90
  /**
89
91
  * Trigger event handlers
90
92
  */
@@ -133,13 +135,13 @@ const FlyoutRoot = (props) => {
133
135
  timerRef.current = setTimeout(() => handleClose(), timeouts.mouseLeave);
134
136
  }, [clearTimer, timerRef, handleClose]);
135
137
  const handleTriggerClick = React.useCallback(() => {
136
- if (status === "idle") {
138
+ if (!isRendered) {
137
139
  handleOpen();
138
140
  }
139
141
  else {
140
142
  handleClose();
141
143
  }
142
- }, [status, handleOpen, handleClose]);
144
+ }, [isRendered, handleOpen, handleClose]);
143
145
  const handleTriggerMouseDown = React.useCallback(() => {
144
146
  const rect = triggerElRef.current?.getBoundingClientRect();
145
147
  triggerBoundsRef.current = rect;
@@ -157,6 +159,11 @@ const FlyoutRoot = (props) => {
157
159
  if (flyoutElRef.current !== e.currentTarget || e.propertyName !== "transform")
158
160
  return;
159
161
  transitionStartedRef.current = true;
162
+ /**
163
+ * After animation has started, we're sure about the correct bounds
164
+ * so drop the cache to make flyout work when trigger moves around
165
+ */
166
+ triggerBoundsRef.current = null;
160
167
  }, [resolvedActive]);
161
168
  const handleTransitionEnd = React.useCallback((e) => {
162
169
  if (flyoutElRef.current !== e.currentTarget || e.propertyName !== "transform")
@@ -214,6 +221,7 @@ const FlyoutRoot = (props) => {
214
221
  trapFocusRef.current = new TrapFocus(flyoutElRef.current);
215
222
  trapFocusRef.current.trap({
216
223
  mode: trapFocusMode,
224
+ initialFocusEl: initialFocusRef?.current,
217
225
  includeTrigger: triggerType === "hover" && trapFocusMode !== "dialog" && !isSubmenu,
218
226
  onNavigateOutside: () => {
219
227
  handleClose();
@@ -223,7 +231,7 @@ const FlyoutRoot = (props) => {
223
231
  React.useEffect(() => {
224
232
  if (!disableHideAnimation && status !== "hidden")
225
233
  return;
226
- if (disableHideAnimation && status !== "idle")
234
+ if (disableHideAnimation && isRendered)
227
235
  return;
228
236
  if (trapFocusRef.current?.trapped) {
229
237
  /* Locking the popover to not open it again on trigger focus */
@@ -236,7 +244,7 @@ const FlyoutRoot = (props) => {
236
244
  trapFocusRef.current.release({ withoutFocusReturn: !shouldReturnFocusRef.current });
237
245
  shouldReturnFocusRef.current = true;
238
246
  }
239
- }, [status, triggerType, disableHideAnimation]);
247
+ }, [status, isRendered, triggerType, disableHideAnimation]);
240
248
  /**
241
249
  * Release focus trapping on unmount
242
250
  */
@@ -247,12 +255,14 @@ const FlyoutRoot = (props) => {
247
255
  * Update position on resize or RTL
248
256
  */
249
257
  React.useEffect(() => {
258
+ if (!isRendered)
259
+ return;
250
260
  const resizeObserver = new ResizeObserver(() => updatePosition({ sync: true }));
251
261
  resizeObserver.observe(document.body);
252
262
  if (triggerElRef.current)
253
263
  resizeObserver.observe(triggerElRef.current);
254
264
  return () => resizeObserver.disconnect();
255
- }, [updatePosition, triggerElRef]);
265
+ }, [updatePosition, triggerElRef, isRendered]);
256
266
  React.useEffect(() => {
257
267
  updatePosition();
258
268
  }, [isRTL, updatePosition]);
@@ -6,10 +6,12 @@ export default _default;
6
6
  export declare const positions: () => React.JSX.Element;
7
7
  export declare const dynamicPosition: () => React.JSX.Element;
8
8
  export declare const modes: () => React.JSX.Element;
9
+ export declare const widthTrigger: () => React.JSX.Element;
9
10
  export declare const disableFlags: () => React.JSX.Element;
11
+ export declare const initialFocus: () => React.JSX.Element;
10
12
  export declare const customPortalTarget: () => React.JSX.Element;
11
13
  export declare const testWidthOverflowOnMobile: () => React.JSX.Element;
12
14
  export declare const testInsideFixed: () => React.JSX.Element;
13
15
  export declare const testDynamicBounds: () => React.JSX.Element;
14
- export declare const widthTrigger: () => React.JSX.Element;
16
+ export declare const testDisableOutsideClick: () => React.JSX.Element;
15
17
  export declare const scopedTheming: () => React.JSX.Element;
@@ -6,6 +6,8 @@ import View from "../../../View/index.js";
6
6
  import Theme from "../../../Theme/index.js";
7
7
  import Button from "../../../Button/index.js";
8
8
  import Flyout from "../index.js";
9
+ import TextField from "../../../TextField/index.js";
10
+ import useToggle from "../../../../hooks/useToggle.js";
9
11
  export default { title: "Utilities/Internal/Flyout" };
10
12
  const Demo = (props) => {
11
13
  const { position = "bottom-start", children, ...rest } = props;
@@ -17,7 +19,7 @@ const Demo = (props) => {
17
19
  <div style={{
18
20
  background: "var(--rs-color-background-elevation-overlay)",
19
21
  padding: "var(--rs-unit-x4)",
20
- height: 100,
22
+ height: 150,
21
23
  width: 160,
22
24
  borderRadius: "var(--rs-radius-medium)",
23
25
  border: "1px solid var(--rs-color-border-neutral-faded)",
@@ -105,6 +107,20 @@ export const modes = () => (<Example>
105
107
  </Demo>
106
108
  </Example.Item>
107
109
  </Example>);
110
+ export const widthTrigger = () => (<Flyout triggerType="click" width="trigger" position="bottom">
111
+ <Flyout.Trigger>
112
+ {(attributes) => <button {...attributes}>Trigger with long text</button>}
113
+ </Flyout.Trigger>
114
+ <Flyout.Content>
115
+ <div style={{
116
+ background: "var(--rs-color-background-elevation-overlay)",
117
+ padding: "var(--rs-unit-x4)",
118
+ borderRadius: "var(--rs-radius-medium)",
119
+ border: "1px solid var(--rs-color-border-neutral-faded)",
120
+ boxSizing: "border-box",
121
+ }}></div>
122
+ </Flyout.Content>
123
+ </Flyout>);
108
124
  export const disableFlags = () => (<Example>
109
125
  <Example.Item title="disableContentHover">
110
126
  <Demo triggerType="hover" disableContentHover>
@@ -120,6 +136,19 @@ export const disableFlags = () => (<Example>
120
136
  <Demo disableHideAnimation>Content</Demo>
121
137
  </Example.Item>
122
138
  </Example>);
139
+ export const initialFocus = () => {
140
+ const initialFocusRef = React.useRef(null);
141
+ return (<Example>
142
+ <Example.Item title="focuses input on open">
143
+ <Demo initialFocusRef={initialFocusRef}>
144
+ <View gap={4}>
145
+ <Button onClick={() => { }}>Click me</Button>
146
+ <TextField name="foo" inputAttributes={{ ref: initialFocusRef }}/>
147
+ </View>
148
+ </Demo>
149
+ </Example.Item>
150
+ </Example>);
151
+ };
123
152
  class CustomElement extends window.HTMLElement {
124
153
  constructor() {
125
154
  super();
@@ -199,36 +228,32 @@ export const testInsideFixed = () => (<Example>
199
228
  </Example.Item>
200
229
  </Example>);
201
230
  export const testDynamicBounds = () => {
202
- const [left, setLeft] = React.useState("50%");
231
+ const [left, setLeft] = React.useState(50);
232
+ const [top, setTop] = React.useState(50);
203
233
  const [size, setSize] = React.useState("medium");
204
234
  const flyoutRef = React.useRef();
205
235
  React.useEffect(() => {
206
236
  flyoutRef.current?.updatePosition();
207
- }, [left]);
237
+ }, [left, top]);
208
238
  return (<View gap={4}>
209
239
  <View direction="row" gap={2}>
240
+ <Button onClick={() => setLeft((prev) => prev - 10)}>Left</Button>
241
+ <Button onClick={() => setLeft((prev) => prev + 10)}>Right</Button>
242
+ <Button onClick={() => setTop((prev) => prev - 10)}>Up</Button>
243
+ <Button onClick={() => setTop((prev) => prev + 10)}>Down</Button>
210
244
  <Button onClick={() => {
211
- setLeft("20%");
212
- }}>
213
- Left
214
- </Button>
215
- <Button onClick={() => {
216
- setLeft("50%");
245
+ setLeft(50);
246
+ setTop(50);
217
247
  }}>
218
248
  Center
219
249
  </Button>
220
- <Button onClick={() => {
221
- setLeft("70%");
222
- }}>
223
- Right
224
- </Button>
225
250
  <Button onClick={() => setSize("large")}>Large button</Button>
226
251
  <Button onClick={() => setSize("medium")}>Small button</Button>
227
252
  </View>
228
253
  <View height={100}>
229
- <Flyout position="bottom" active instanceRef={flyoutRef}>
254
+ <Flyout position="bottom" instanceRef={flyoutRef} disableCloseOnOutsideClick fallbackPositions={["top", "bottom"]}>
230
255
  <Flyout.Trigger>
231
- {(attributes) => (<div style={{ position: "absolute", left, top: "50%" }}>
256
+ {(attributes) => (<div style={{ position: "absolute", left: `${left}%`, top: `${top}%` }}>
232
257
  <Button color="primary" attributes={attributes} size={size}>
233
258
  Open
234
259
  </Button>
@@ -239,32 +264,29 @@ export const testDynamicBounds = () => {
239
264
  background: "var(--rs-color-background-elevation-overlay)",
240
265
  padding: "var(--rs-unit-x4)",
241
266
  height: 100,
242
- width: 160,
267
+ minWidth: 160,
243
268
  borderRadius: "var(--rs-radius-medium)",
244
269
  border: "1px solid var(--rs-color-border-neutral-faded)",
245
270
  boxSizing: "border-box",
246
271
  }}>
247
- {"Content"}
272
+ Content
248
273
  </div>
249
274
  </Flyout.Content>
250
275
  </Flyout>
251
276
  </View>
252
277
  </View>);
253
278
  };
254
- export const widthTrigger = () => (<Flyout triggerType="click" width="trigger" position="bottom">
255
- <Flyout.Trigger>
256
- {(attributes) => <button {...attributes}>Trigger with long text</button>}
257
- </Flyout.Trigger>
258
- <Flyout.Content>
259
- <div style={{
260
- background: "var(--rs-color-background-elevation-overlay)",
261
- padding: "var(--rs-unit-x4)",
262
- borderRadius: "var(--rs-radius-medium)",
263
- border: "1px solid var(--rs-color-border-neutral-faded)",
264
- boxSizing: "border-box",
265
- }}></div>
266
- </Flyout.Content>
267
- </Flyout>);
279
+ export const testDisableOutsideClick = () => {
280
+ const toggle = useToggle();
281
+ return (<Example>
282
+ <Example.Item title="opening second flyout shouldn't block the first one from closing">
283
+ <View direction="row" gap={4}>
284
+ <Demo disableCloseOnOutsideClick/>
285
+ <Demo />
286
+ </View>
287
+ </Example.Item>
288
+ </Example>);
289
+ };
268
290
  export const scopedTheming = () => (<View gap={3} align="start">
269
291
  <Button color="primary">Reshaped button</Button>
270
292
  <Theme name="twitter">
@@ -8,13 +8,14 @@ type PassedFlyoutOptions = {
8
8
  width?: T.Width;
9
9
  position?: T.Position;
10
10
  defaultActive?: boolean;
11
- forcePosition?: boolean;
11
+ fallbackPositions?: T.Position[];
12
12
  container?: HTMLElement | null;
13
13
  };
14
14
  type UseFlyout = (args: PassedFlyoutOptions & {
15
15
  triggerElRef: ElementRef;
16
16
  flyoutElRef: ElementRef;
17
17
  triggerBoundsRef: React.RefObject<DOMRect | undefined>;
18
+ contentGap?: number;
18
19
  }) => Pick<T.State, "styles" | "position" | "status"> & {
19
20
  updatePosition: (options?: {
20
21
  sync?: boolean;