@basic-ui/material 1.0.0-alpha.5 → 1.0.0-alpha.8

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 (65) hide show
  1. package/build/cjs/index.js +155 -13
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Alert/Alert.d.ts +1 -1
  4. package/build/esm/AppBar/AppBarButton.d.ts +1 -1
  5. package/build/esm/BottomSheet/BottomSheet.d.ts +1 -1
  6. package/build/esm/Button/Button.d.ts +1 -1
  7. package/build/esm/Button/ButtonGroup.d.ts +1 -1
  8. package/build/esm/Button/FilledButton.d.ts +1 -1
  9. package/build/esm/Button/FilledButton.js +6 -8
  10. package/build/esm/Button/FilledButton.js.map +1 -1
  11. package/build/esm/Button/OutlinedButton.d.ts +1 -1
  12. package/build/esm/Button/TransparentButton.d.ts +1 -1
  13. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  14. package/build/esm/Chip/ButtonChip.d.ts +1 -1
  15. package/build/esm/Chip/ChipBase.d.ts +1 -1
  16. package/build/esm/Chip/ChoiceChip.d.ts +1 -1
  17. package/build/esm/Combobox/Combobox.d.ts +7 -7
  18. package/build/esm/Dialog/Dialog.d.ts +1 -1
  19. package/build/esm/Dialog/Scrim.d.ts +1 -1
  20. package/build/esm/Divider/Divider.d.ts +1 -1
  21. package/build/esm/Link/Link.d.ts +1 -1
  22. package/build/esm/ListItem/ListItem.d.ts +1 -1
  23. package/build/esm/Menu/Menu.d.ts +4 -4
  24. package/build/esm/NavRail/NavRailItem.d.ts +15 -0
  25. package/build/esm/NavRail/NavRailItem.js +146 -0
  26. package/build/esm/NavRail/NavRailItem.js.map +1 -0
  27. package/build/esm/NavRail/index.d.ts +1 -0
  28. package/build/esm/NavRail/index.js +2 -0
  29. package/build/esm/NavRail/index.js.map +1 -0
  30. package/build/esm/Paper/Paper.d.ts +1 -1
  31. package/build/esm/Ripple/useRippleSurface.d.ts +2 -2
  32. package/build/esm/Ripple/useRippleSurface.js +61 -58
  33. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  34. package/build/esm/Select/Select.d.ts +1 -1
  35. package/build/esm/Select/SelectIcon.d.ts +1 -1
  36. package/build/esm/SelectItem/SelectItem.d.ts +1 -1
  37. package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
  38. package/build/esm/Skeleton/Skeleton.d.ts +1 -1
  39. package/build/esm/Switch/Switch.d.ts +1 -1
  40. package/build/esm/Tab/Tab.d.ts +1 -1
  41. package/build/esm/Table/TableHead.d.ts +1 -1
  42. package/build/esm/Table/TableRow.d.ts +1 -1
  43. package/build/esm/TextField/FilledContainer.d.ts +1 -1
  44. package/build/esm/TextField/HelperText.d.ts +1 -1
  45. package/build/esm/TextField/Input.d.ts +1 -1
  46. package/build/esm/TextField/TextField.d.ts +1 -1
  47. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  48. package/build/esm/color.d.ts +2 -0
  49. package/build/esm/color.js +8 -3
  50. package/build/esm/color.js.map +1 -1
  51. package/build/esm/index.d.ts +1 -0
  52. package/build/esm/index.js +1 -0
  53. package/build/esm/index.js.map +1 -1
  54. package/build/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +3 -3
  56. package/src/Button/Button.story.tsx +6 -1
  57. package/src/Button/FilledButton.tsx +4 -9
  58. package/src/NavRail/NavRail.story.tsx +189 -0
  59. package/src/NavRail/NavRailItem.tsx +174 -0
  60. package/src/NavRail/index.ts +1 -0
  61. package/src/Ripple/useRippleSurface.ts +70 -58
  62. package/src/ThemeExplorer/ThemeBuilder.story.tsx +27 -23
  63. package/src/color.ts +25 -4
  64. package/src/index.ts +1 -0
  65. package/src/ThemeExplorer/ThemeExplorer.story.tsx +0 -43
@@ -689,11 +689,16 @@ const alpha = (colorString, alphaValue) => theme => {
689
689
  const rgb = polished.parseToRgb(color);
690
690
  return `rgba(${rgb.red},${rgb.green},${rgb.blue},${alphaValue})`;
691
691
  };
692
+ function mixColor(baseColor, overlayColor, overlayOpacity) {
693
+ return theme => {
694
+ baseColor = css.get(theme, `colors.${baseColor}`, baseColor);
695
+ overlayColor = overlayOpacity ? alpha(overlayColor, overlayOpacity)(theme) : css.get(theme, `colors.${overlayColor}`, overlayColor);
696
+ return `linear-gradient(${overlayColor}, ${overlayColor}), ${baseColor}`;
697
+ };
698
+ }
692
699
  function getColorOverlay(theme, baseColor, overlayColor, overlayOpacity) {
693
- baseColor = css.get(theme, `colors.${baseColor}`) || baseColor;
694
- overlayColor = alpha(overlayColor, overlayOpacity)(theme);
695
700
  return {
696
- background: `linear-gradient(${overlayColor}, ${overlayColor}), ${baseColor}`
701
+ background: mixColor(baseColor, overlayColor, overlayOpacity)(theme)
697
702
  };
698
703
  }
699
704
  function getBackgroundOverlay(theme, backgroundOverlay, overlayColor = 'on.surface') {
@@ -931,10 +936,10 @@ const FilledButton = /*#__PURE__*/_styled__default['default'](BaseButton, proces
931
936
  outlineOffset: '2px'
932
937
  }
933
938
  }), ({
934
- color = 'primary',
935
- elevation = 'none',
936
- theme
937
- }) => color === 'surface' && _extends__default['default']({}, getBackgroundOverlay(theme, css.get(theme, `buttons.elevations.${elevation}.boxShadow`, 0), 'primary')), ({
939
+ color = 'primary'
940
+ }) => color === 'surface' && css.css({
941
+ background: mixColor('surface', 'primary', 0.05)
942
+ }), ({
938
943
  color = 'primary',
939
944
  theme,
940
945
  isGroupedButton = false
@@ -960,7 +965,7 @@ const FilledButton = /*#__PURE__*/_styled__default['default'](BaseButton, proces
960
965
  borderLeftWidth: 0
961
966
  }
962
967
  }
963
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbGxlZEJ1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUTRCIiwiZmlsZSI6IkZpbGxlZEJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyByZWFkYWJsZUNvbG9yLCByZW0gfSBmcm9tICdwb2xpc2hlZCc7XG5pbXBvcnQgeyBnZXQsIGNzcyB9IGZyb20gJ0BzdHlsZWQtc3lzdGVtL2Nzcyc7XG5cbmltcG9ydCB7IEJhc2VCdXR0b24gfSBmcm9tICcuL0Jhc2VCdXR0b24nO1xuaW1wb3J0IHR5cGUgeyBUaGVtZSB9IGZyb20gJy4uL3RoZW1lJztcbmltcG9ydCB7IGFscGhhLCBnZXRCYWNrZ3JvdW5kT3ZlcmxheSB9IGZyb20gJy4uL2NvbG9yJztcblxuZXhwb3J0IGNvbnN0IEZpbGxlZEJ1dHRvbiA9IHN0eWxlZChCYXNlQnV0dG9uKShcbiAgKHsgY29sb3IgPSAncHJpbWFyeScsIHRoZW1lIH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogZ2V0KHRoZW1lLCBgY29sb3JzLiR7U3RyaW5nKGNvbG9yKX1gKSB8fCBjb2xvcixcbiAgICAgIGNvbG9yOlxuICAgICAgICBnZXQodGhlbWUsIGBjb2xvcnMub24uJHtTdHJpbmcoY29sb3IpfWApIHx8XG4gICAgICAgICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnID8gcmVhZGFibGVDb2xvcihjb2xvcikgOiB1bmRlZmluZWQpLFxuICAgICAgJyY6ZGlzYWJsZWQnOiB7XG4gICAgICAgIGNvbG9yOiBhbHBoYSgnb24uc3VyZmFjZScsIDAuMzgpLFxuICAgICAgICBiYWNrZ3JvdW5kOiBgbGluZWFyLWdyYWRpZW50KCR7Z2V0KHRoZW1lLCAnY29sb3JzLnN1cmZhY2UnKX0sICR7Z2V0KFxuICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICdjb2xvcnMuc3VyZmFjZSdcbiAgICAgICAgKX0pLCAke2FscGhhKCdvbi5zdXJmYWNlJywgMC4xMikodGhlbWUpfWAsXG4gICAgICAgIGJhY2tncm91bmRCbGVuZE1vZGU6ICdvdmVybGF5JyxcbiAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgICAgJyY6Zm9jdXMtdmlzaWJsZSc6IHtcbiAgICAgICAgb3V0bGluZUNvbG9yOiBnZXQodGhlbWUsIGBjb2xvcnMuJHtTdHJpbmcoY29sb3IpfWApIHx8IGNvbG9yLFxuICAgICAgICBvdXRsaW5lV2lkdGg6IDIsXG4gICAgICAgIG91dGxpbmVTdHlsZTogJ2F1dG8nLFxuICAgICAgICBvdXRsaW5lT2Zmc2V0OiAnMnB4JyxcbiAgICAgIH0sXG4gICAgfSksXG4gICh7IGNvbG9yID0gJ3ByaW1hcnknLCBlbGV2YXRpb24gPSAnbm9uZScsIHRoZW1lIH0pID0+XG4gICAgY29sb3IgPT09ICdzdXJmYWNlJyAmJiB7XG4gICAgICAuLi5nZXRCYWNrZ3JvdW5kT3ZlcmxheShcbiAgICAgICAgdGhlbWUsXG4gICAgICAgIGdldCh0aGVtZSwgYGJ1dHRvbnMuZWxldmF0aW9ucy4ke2VsZXZhdGlvbn0uYm94U2hhZG93YCwgMCksXG4gICAgICAgICdwcmltYXJ5J1xuICAgICAgKSxcbiAgICB9LFxuICAoeyBjb2xvciA9ICdwcmltYXJ5JywgdGhlbWUsIGlzR3JvdXBlZEJ1dHRvbiA9IGZhbHNlIH0pID0+XG4gICAgaXNHcm91cGVkQnV0dG9uICYmIHtcbiAgICAgICdbZGF0YS1idXR0b24tZ3JvdXA9XCJcIl0gJic6IHtcbiAgICAgICAgYm9yZGVyQ29sb3I6XG4gICAgICAgICAgZ2V0KHRoZW1lLCBgY29sb3JzLm9uLiR7U3RyaW5nKGNvbG9yKX1gKSB8fFxuICAgICAgICAgICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnID8gcmVhZGFibGVDb2xvcihjb2xvcikgOiB1bmRlZmluZWQpLFxuICAgICAgICAnOmZpcnN0LW9mLXR5cGUnOiB7XG4gICAgICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDAsXG4gICAgICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDAsXG4gICAgICAgICAgYm9yZGVyUmlnaHRTdHlsZTogJ3NvbGlkJyxcbiAgICAgICAgICBib3JkZXJSaWdodFdpZHRoOiByZW0oMSksXG4gICAgICAgIH0sXG4gICAgICAgICc6bm90KDpmaXJzdC1vZi10eXBlKTpub3QoOmxhc3Qtb2YtdHlwZSknOiB7XG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICB9LFxuICAgICAgICAnOmxhc3Qtb2YtdHlwZSc6IHtcbiAgICAgICAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAwLFxuICAgICAgICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDAsXG4gICAgICAgICAgYm9yZGVyTGVmdFN0eWxlOiAnc29saWQnLFxuICAgICAgICAgIGJvcmRlckxlZnRXaWR0aDogcmVtKDEpLFxuICAgICAgICB9LFxuICAgICAgICAnOmxhc3Qtb2YtdHlwZTpudGgtb2YtdHlwZSgyKSc6IHtcbiAgICAgICAgICBib3JkZXJMZWZ0V2lkdGg6IDAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSaXBwbGVQcm9wZXJ0aWVzKHRoZW1lOiBUaGVtZSkge1xuICByZXR1cm4ge1xuICAgIGhvdmVyT3BhY2l0eTogZ2V0KHRoZW1lLCBgYnV0dG9ucy5vdmVybGF5cy5maWxsZWQuaG92ZXIub3BhY2l0eWApLFxuICAgIGZvY3VzT3BhY2l0eTogZ2V0KHRoZW1lLCBgYnV0dG9ucy5vdmVybGF5cy5maWxsZWQuZm9jdXMub3BhY2l0eWApLFxuICAgIHByZXNzZWRPcGFjaXR5OiBnZXQodGhlbWUsIGBidXR0b25zLm92ZXJsYXlzLmZpbGxlZC5wcmVzc2VkLm9wYWNpdHlgKSxcbiAgICByaXBwbGVFbmFibGVkOiBmYWxzZSxcbiAgfTtcbn1cbiJdfQ== */");
968
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbGxlZEJ1dHRvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUTRCIiwiZmlsZSI6IkZpbGxlZEJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyByZWFkYWJsZUNvbG9yLCByZW0gfSBmcm9tICdwb2xpc2hlZCc7XG5pbXBvcnQgeyBnZXQsIGNzcyB9IGZyb20gJ0BzdHlsZWQtc3lzdGVtL2Nzcyc7XG5cbmltcG9ydCB7IEJhc2VCdXR0b24gfSBmcm9tICcuL0Jhc2VCdXR0b24nO1xuaW1wb3J0IHR5cGUgeyBUaGVtZSB9IGZyb20gJy4uL3RoZW1lJztcbmltcG9ydCB7IGFscGhhLCBtaXhDb2xvciB9IGZyb20gJy4uL2NvbG9yJztcblxuZXhwb3J0IGNvbnN0IEZpbGxlZEJ1dHRvbiA9IHN0eWxlZChCYXNlQnV0dG9uKShcbiAgKHsgY29sb3IgPSAncHJpbWFyeScsIHRoZW1lIH0pID0+XG4gICAgY3NzKHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogZ2V0KHRoZW1lLCBgY29sb3JzLiR7U3RyaW5nKGNvbG9yKX1gKSB8fCBjb2xvcixcbiAgICAgIGNvbG9yOlxuICAgICAgICBnZXQodGhlbWUsIGBjb2xvcnMub24uJHtTdHJpbmcoY29sb3IpfWApIHx8XG4gICAgICAgICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnID8gcmVhZGFibGVDb2xvcihjb2xvcikgOiB1bmRlZmluZWQpLFxuICAgICAgJyY6ZGlzYWJsZWQnOiB7XG4gICAgICAgIGNvbG9yOiBhbHBoYSgnb24uc3VyZmFjZScsIDAuMzgpLFxuICAgICAgICBiYWNrZ3JvdW5kOiBgbGluZWFyLWdyYWRpZW50KCR7Z2V0KHRoZW1lLCAnY29sb3JzLnN1cmZhY2UnKX0sICR7Z2V0KFxuICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICdjb2xvcnMuc3VyZmFjZSdcbiAgICAgICAgKX0pLCAke2FscGhhKCdvbi5zdXJmYWNlJywgMC4xMikodGhlbWUpfWAsXG4gICAgICAgIGJhY2tncm91bmRCbGVuZE1vZGU6ICdvdmVybGF5JyxcbiAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICB9LFxuICAgICAgJyY6Zm9jdXMtdmlzaWJsZSc6IHtcbiAgICAgICAgb3V0bGluZUNvbG9yOiBnZXQodGhlbWUsIGBjb2xvcnMuJHtTdHJpbmcoY29sb3IpfWApIHx8IGNvbG9yLFxuICAgICAgICBvdXRsaW5lV2lkdGg6IDIsXG4gICAgICAgIG91dGxpbmVTdHlsZTogJ2F1dG8nLFxuICAgICAgICBvdXRsaW5lT2Zmc2V0OiAnMnB4JyxcbiAgICAgIH0sXG4gICAgfSksXG4gICh7IGNvbG9yID0gJ3ByaW1hcnknIH0pID0+XG4gICAgY29sb3IgPT09ICdzdXJmYWNlJyAmJlxuICAgIGNzcyh7IGJhY2tncm91bmQ6IG1peENvbG9yKCdzdXJmYWNlJywgJ3ByaW1hcnknLCAwLjA1KSB9KSxcbiAgKHsgY29sb3IgPSAncHJpbWFyeScsIHRoZW1lLCBpc0dyb3VwZWRCdXR0b24gPSBmYWxzZSB9KSA9PlxuICAgIGlzR3JvdXBlZEJ1dHRvbiAmJiB7XG4gICAgICAnW2RhdGEtYnV0dG9uLWdyb3VwPVwiXCJdICYnOiB7XG4gICAgICAgIGJvcmRlckNvbG9yOlxuICAgICAgICAgIGdldCh0aGVtZSwgYGNvbG9ycy5vbi4ke1N0cmluZyhjb2xvcil9YCkgfHxcbiAgICAgICAgICAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJyA/IHJlYWRhYmxlQ29sb3IoY29sb3IpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgJzpmaXJzdC1vZi10eXBlJzoge1xuICAgICAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAwLFxuICAgICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAwLFxuICAgICAgICAgIGJvcmRlclJpZ2h0U3R5bGU6ICdzb2xpZCcsXG4gICAgICAgICAgYm9yZGVyUmlnaHRXaWR0aDogcmVtKDEpLFxuICAgICAgICB9LFxuICAgICAgICAnOm5vdCg6Zmlyc3Qtb2YtdHlwZSk6bm90KDpsYXN0LW9mLXR5cGUpJzoge1xuICAgICAgICAgIGJvcmRlclJhZGl1czogMCxcbiAgICAgICAgfSxcbiAgICAgICAgJzpsYXN0LW9mLXR5cGUnOiB7XG4gICAgICAgICAgYm9yZGVyVG9wTGVmdFJhZGl1czogMCxcbiAgICAgICAgICBib3JkZXJCb3R0b21MZWZ0UmFkaXVzOiAwLFxuICAgICAgICAgIGJvcmRlckxlZnRTdHlsZTogJ3NvbGlkJyxcbiAgICAgICAgICBib3JkZXJMZWZ0V2lkdGg6IHJlbSgxKSxcbiAgICAgICAgfSxcbiAgICAgICAgJzpsYXN0LW9mLXR5cGU6bnRoLW9mLXR5cGUoMiknOiB7XG4gICAgICAgICAgYm9yZGVyTGVmdFdpZHRoOiAwLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmlwcGxlUHJvcGVydGllcyh0aGVtZTogVGhlbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBob3Zlck9wYWNpdHk6IGdldCh0aGVtZSwgYGJ1dHRvbnMub3ZlcmxheXMuZmlsbGVkLmhvdmVyLm9wYWNpdHlgKSxcbiAgICBmb2N1c09wYWNpdHk6IGdldCh0aGVtZSwgYGJ1dHRvbnMub3ZlcmxheXMuZmlsbGVkLmZvY3VzLm9wYWNpdHlgKSxcbiAgICBwcmVzc2VkT3BhY2l0eTogZ2V0KHRoZW1lLCBgYnV0dG9ucy5vdmVybGF5cy5maWxsZWQucHJlc3NlZC5vcGFjaXR5YCksXG4gICAgcmlwcGxlRW5hYmxlZDogZmFsc2UsXG4gIH07XG59XG4iXX0= */");
964
969
  function getRippleProperties$2(theme) {
965
970
  return {
966
971
  hoverOpacity: css.get(theme, `buttons.overlays.filled.hover.opacity`),
@@ -1298,7 +1303,7 @@ function useRippleHandlers(opts) {
1298
1303
  }, rest);
1299
1304
  }
1300
1305
 
1301
- function useRippleSurface(opts) {
1306
+ function useRippleSurface(opts = {}) {
1302
1307
  let {
1303
1308
  // eslint-disable-next-line prefer-const
1304
1309
  baseOpacity = 0,
@@ -1336,8 +1341,7 @@ function useRippleSurface(opts) {
1336
1341
  backgroundColor: rippleColor,
1337
1342
  disabled
1338
1343
  }, rippleProps));
1339
-
1340
- const css$1 = _extends__default['default']({
1344
+ const css$1 = react$1.useMemo(() => _extends__default['default']({
1341
1345
  overflow: 'hidden',
1342
1346
  position: 'relative',
1343
1347
  cursor: 'pointer',
@@ -1394,8 +1398,7 @@ function useRippleSurface(opts) {
1394
1398
  '&::after': _extends__default['default']({}, rippleStyle({
1395
1399
  animation
1396
1400
  }))
1397
- });
1398
-
1401
+ }), [animation, baseOpacity, focusOpacity, hoverOpacity, pressedOpacity, rippleColor, rippleEnabled]);
1399
1402
  return {
1400
1403
  style: _extends__default['default']({}, animationStyle, style),
1401
1404
  onKeyDown: core.wrapEvent(onKeyDown, handleKeyDown),
@@ -3753,6 +3756,141 @@ const MenuPopover = /*#__PURE__*/react$1.forwardRef((_ref4, ref) => {
3753
3756
  }, props));
3754
3757
  });
3755
3758
 
3759
+ const NavRailIndicator = /*#__PURE__*/react$1.forwardRef(function NavRailIndicator(props, forwardedRef) {
3760
+ const {
3761
+ as = 'div',
3762
+ children,
3763
+ __css
3764
+ } = props,
3765
+ otherProps = _objectWithoutPropertiesLoose__default['default'](props, ["as", "children", "__css"]);
3766
+
3767
+ return /*#__PURE__*/jsxRuntime.jsx(Box, _extends__default['default']({
3768
+ color: "currentColor",
3769
+ ref: forwardedRef,
3770
+ as: as,
3771
+ "data-nav-rail-item-indicator": ""
3772
+ }, otherProps, {
3773
+ __css: _extends__default['default']({
3774
+ width: '100%',
3775
+ height: '100%',
3776
+ maxWidth: "3.5rem",
3777
+ maxHeight: "3.5rem",
3778
+ borderRadius: 'full',
3779
+ bg: 'var(--indicator-background-color)',
3780
+ display: 'flex',
3781
+ alignItems: 'center',
3782
+ justifyContent: 'center',
3783
+ minHeight: "2rem",
3784
+ transition: 'background-color .2s cubic-bezier(.4,0,.2,1)',
3785
+ pointerEvents: 'none'
3786
+ }, __css),
3787
+ children: children
3788
+ }));
3789
+ });
3790
+ const NavRailLabel = /*#__PURE__*/react$1.forwardRef(function NavRailLabel(props, forwardedRef) {
3791
+ const {
3792
+ as = 'div',
3793
+ children,
3794
+ __css
3795
+ } = props,
3796
+ otherProps = _objectWithoutPropertiesLoose__default['default'](props, ["as", "children", "__css"]);
3797
+
3798
+ return /*#__PURE__*/jsxRuntime.jsx(Text, _extends__default['default']({
3799
+ ref: forwardedRef,
3800
+ as: as,
3801
+ variant: "caption",
3802
+ lineHeight: 1
3803
+ }, otherProps, {
3804
+ __css: _extends__default['default']({
3805
+ pt: "0.25rem",
3806
+ pb: "0.75rem",
3807
+ color: 'inherit',
3808
+ pointerEvents: 'none'
3809
+ }, __css),
3810
+ children: children
3811
+ }));
3812
+ });
3813
+ const NavRailItem = /*#__PURE__*/react$1.forwardRef(function NavRailItem(props, forwardedRef) {
3814
+ const {
3815
+ as = 'button',
3816
+ children,
3817
+ color = 'primary-container',
3818
+ selected = false,
3819
+ disabled = false,
3820
+ style,
3821
+ onKeyDown,
3822
+ onPointerDown,
3823
+ __css
3824
+ } = props,
3825
+ otherProps = _objectWithoutPropertiesLoose__default['default'](props, ["as", "children", "color", "selected", "disabled", "style", "onKeyDown", "onPointerDown", "__css"]);
3826
+
3827
+ const theme = useTheme();
3828
+ const baseOpacity = 0,
3829
+ hoverOpacity = 0.04,
3830
+ focusOpacity = 0.12,
3831
+ pressedOpacity = 0.12;
3832
+ const ripple = useRippleSurface({
3833
+ rippleColor: 'currentColor',
3834
+ onKeyDown,
3835
+ onPointerDown,
3836
+ baseOpacity,
3837
+ hoverOpacity,
3838
+ focusOpacity,
3839
+ pressedOpacity
3840
+ }); // Apply ripple from nav item to nav indicator
3841
+
3842
+ const rippleCss = react$1.useMemo(() => {
3843
+ const ret = {};
3844
+ const keys = Object.keys(ripple.__css);
3845
+
3846
+ for (const key of keys) {
3847
+ if (!key.startsWith('&')) {
3848
+ ret['& [data-nav-rail-item-indicator]'] = ret['& [data-nav-rail-item-indicator]'] || {};
3849
+ ret['& [data-nav-rail-item-indicator]'][key] = ripple.__css[key];
3850
+ continue;
3851
+ }
3852
+
3853
+ const newKey = key.replace(/(.+?)::(before|after)/g, '$1 [data-nav-rail-item-indicator]::$2');
3854
+ ret[newKey] = ripple.__css[key];
3855
+ }
3856
+
3857
+ return ret;
3858
+ }, [ripple.__css]);
3859
+ return /*#__PURE__*/jsxRuntime.jsx(Box, _extends__default['default']({
3860
+ ref: forwardedRef,
3861
+ as: as
3862
+ }, otherProps, {
3863
+ onPointerDown: ripple.onPointerDown,
3864
+ onKeyDown: ripple.onKeyDown,
3865
+ "aria-pressed": selected,
3866
+ type: "button",
3867
+ style: _extends__default['default']({}, ripple.style, style),
3868
+ disabled: disabled,
3869
+ __css: _extends__default['default']({
3870
+ display: 'flex',
3871
+ flexDirection: 'column',
3872
+ alignItems: 'center',
3873
+ transition: 'color .2s cubic-bezier(.4,0,.2,1)',
3874
+ color: selected ? `on.${color}` : 'on.surface-variant',
3875
+ '--indicator-background-color': selected ? styledSystem.get(theme, `colors.${color}`) : 'transparent',
3876
+ border: 'none',
3877
+ ':focus': {
3878
+ outline: 'none'
3879
+ },
3880
+ backgroundColor: 'transparent',
3881
+ margin: 0,
3882
+ padding: 0,
3883
+ px: "0.75rem",
3884
+ minHeight: "3.75rem",
3885
+ height: "3.75rem",
3886
+ cursor: 'pointer',
3887
+ textDecoration: 'none',
3888
+ WebkitTapHighlightColor: 'transparent'
3889
+ }, rippleCss, __css),
3890
+ children: children
3891
+ }));
3892
+ });
3893
+
3756
3894
  const innerDivRotate = react.keyframes({
3757
3895
  '0%': {
3758
3896
  transformOrigin: '50% 50%'
@@ -5368,6 +5506,9 @@ exports.MenuButton = MenuButton;
5368
5506
  exports.MenuItem = MenuItem;
5369
5507
  exports.MenuList = MenuList;
5370
5508
  exports.MenuPopover = MenuPopover;
5509
+ exports.NavRailIndicator = NavRailIndicator;
5510
+ exports.NavRailItem = NavRailItem;
5511
+ exports.NavRailLabel = NavRailLabel;
5371
5512
  exports.NotchedOutline = NotchedOutline;
5372
5513
  exports.OutlinedContainer = OutlinedContainer;
5373
5514
  exports.Paper = Paper;
@@ -5403,6 +5544,7 @@ exports.getBackgroundOverlay = getBackgroundOverlay;
5403
5544
  exports.getColorOverlay = getColorOverlay;
5404
5545
  exports.getDarkThemeBackgroundOverlay = getDarkThemeBackgroundOverlay;
5405
5546
  exports.getTheme = getTheme;
5547
+ exports.mixColor = mixColor;
5406
5548
  exports.rippleStyle = rippleStyle;
5407
5549
  exports.sx = sx;
5408
5550
  exports.theme = theme;