@basic-ui/material 1.0.0-alpha.15 → 1.0.0-alpha.18

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 (118) hide show
  1. package/build/cjs/index.js +296 -52
  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/BottomSheet/BottomSheetSurface.d.ts +1 -1
  7. package/build/esm/Button/BaseButton.d.ts +1 -1
  8. package/build/esm/Button/BaseButton.js +1 -0
  9. package/build/esm/Button/BaseButton.js.map +1 -1
  10. package/build/esm/Button/Button.d.ts +1 -1
  11. package/build/esm/Button/ButtonGroup.d.ts +1 -1
  12. package/build/esm/Button/FilledButton.d.ts +1 -1
  13. package/build/esm/Button/OutlinedButton.d.ts +1 -1
  14. package/build/esm/Button/TransparentButton.d.ts +1 -1
  15. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  16. package/build/esm/Chip/ButtonChip.d.ts +1 -1
  17. package/build/esm/Chip/ChipBase.d.ts +1 -1
  18. package/build/esm/Chip/ChoiceChip.d.ts +1 -1
  19. package/build/esm/Combobox/Combobox.d.ts +7 -7
  20. package/build/esm/Combobox/Combobox.js +4 -3
  21. package/build/esm/Combobox/Combobox.js.map +1 -1
  22. package/build/esm/Dialog/Dialog.d.ts +1 -1
  23. package/build/esm/Dialog/DialogBackdrop.d.ts +1 -1
  24. package/build/esm/Dialog/DialogSurface.d.ts +1 -1
  25. package/build/esm/Dialog/Scrim.d.ts +1 -1
  26. package/build/esm/Divider/Divider.d.ts +1 -1
  27. package/build/esm/Link/Link.d.ts +1 -1
  28. package/build/esm/Link/Link.js +12 -0
  29. package/build/esm/Link/Link.js.map +1 -1
  30. package/build/esm/ListItem/ListItem.d.ts +3 -1
  31. package/build/esm/ListItem/ListItem.js +46 -43
  32. package/build/esm/ListItem/ListItem.js.map +1 -1
  33. package/build/esm/Menu/Menu.d.ts +4 -4
  34. package/build/esm/NavRail/NavRailItem.d.ts +3 -3
  35. package/build/esm/Paper/Paper.d.ts +1 -1
  36. package/build/esm/RadioButton/RadioGroup.d.ts +1 -1
  37. package/build/esm/Ripple/useRippleSurface.d.ts +1 -0
  38. package/build/esm/Ripple/useRippleSurface.js +17 -16
  39. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  40. package/build/esm/Select/Select.d.ts +1 -1
  41. package/build/esm/Select/Select.js +4 -0
  42. package/build/esm/Select/Select.js.map +1 -1
  43. package/build/esm/Select/SelectIcon.d.ts +1 -1
  44. package/build/esm/SelectItem/SelectItem.d.ts +5 -2
  45. package/build/esm/SelectItem/SelectItem.js +17 -4
  46. package/build/esm/SelectItem/SelectItem.js.map +1 -1
  47. package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
  48. package/build/esm/Skeleton/Skeleton.d.ts +1 -1
  49. package/build/esm/Slider/Slider.d.ts +17 -0
  50. package/build/esm/Slider/Slider.js +224 -0
  51. package/build/esm/Slider/Slider.js.map +1 -0
  52. package/build/esm/Slider/index.d.ts +1 -0
  53. package/build/esm/Slider/index.js +2 -0
  54. package/build/esm/Slider/index.js.map +1 -0
  55. package/build/esm/Snackbar/Snackbar.d.ts +1 -1
  56. package/build/esm/Switch/Switch.d.ts +1 -1
  57. package/build/esm/Tab/Tab.d.ts +1 -1
  58. package/build/esm/Tab/TabList.d.ts +1 -1
  59. package/build/esm/Tab/TabPanel.d.ts +1 -1
  60. package/build/esm/TabIndicator/TabIndicator.d.ts +1 -1
  61. package/build/esm/Table/TableHead.d.ts +1 -1
  62. package/build/esm/Table/TableRow.d.ts +1 -1
  63. package/build/esm/TextField/FilledContainer.d.ts +1 -1
  64. package/build/esm/TextField/HelperText.d.ts +1 -1
  65. package/build/esm/TextField/Input.d.ts +1 -1
  66. package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
  67. package/build/esm/TextField/OutlinedContainer.js +13 -5
  68. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  69. package/build/esm/TextField/TextField.d.ts +1 -1
  70. package/build/esm/ThemeExplorer/BorderSlider.d.ts +7 -0
  71. package/build/esm/ThemeExplorer/BorderSlider.js +78 -0
  72. package/build/esm/ThemeExplorer/BorderSlider.js.map +1 -0
  73. package/build/esm/ThemeExplorer/ColorSchemePicker.d.ts +10 -0
  74. package/build/esm/ThemeExplorer/ColorSchemePicker.js +54 -0
  75. package/build/esm/ThemeExplorer/ColorSchemePicker.js.map +1 -0
  76. package/build/esm/ThemeExplorer/FontAutoComplete.d.ts +9 -0
  77. package/build/esm/ThemeExplorer/FontAutoComplete.js +128 -0
  78. package/build/esm/ThemeExplorer/FontAutoComplete.js.map +1 -0
  79. package/build/esm/ThemeExplorer/ThemeBuilder.d.ts +2 -0
  80. package/build/esm/ThemeExplorer/ThemeBuilder.js +231 -93
  81. package/build/esm/ThemeExplorer/ThemeBuilder.js.map +1 -1
  82. package/build/esm/ThemeExplorer/components.js +4 -4
  83. package/build/esm/ThemeExplorer/components.js.map +1 -1
  84. package/build/esm/ThemeExplorer/googleFonts.d.ts +1 -0
  85. package/build/esm/ThemeExplorer/googleFonts.js +7 -0
  86. package/build/esm/ThemeExplorer/googleFonts.js.map +1 -0
  87. package/build/esm/ThemeExplorer/updateGoogleFonts.js +70 -0
  88. package/build/esm/ThemeExplorer/updateGoogleFonts.js.map +1 -0
  89. package/build/esm/ThemeExplorer/useDeferredColor.js +3 -4
  90. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  91. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  92. package/build/esm/index.d.ts +1 -0
  93. package/build/esm/index.js +1 -0
  94. package/build/esm/index.js.map +1 -1
  95. package/build/tsconfig-build.tsbuildinfo +1 -1
  96. package/package.json +6 -6
  97. package/src/Button/BaseButton.tsx +1 -0
  98. package/src/Combobox/Combobox.tsx +5 -2
  99. package/src/Link/Link.tsx +12 -0
  100. package/src/ListItem/ListItem.tsx +48 -42
  101. package/src/Ripple/useRippleSurface.ts +8 -2
  102. package/src/Select/PaymentMethodSelect.story.tsx +17 -24
  103. package/src/Select/Select.tsx +6 -0
  104. package/src/SelectItem/SelectItem.tsx +13 -3
  105. package/src/Slider/Slider.story.tsx +36 -0
  106. package/src/Slider/Slider.tsx +275 -0
  107. package/src/Slider/index.ts +1 -0
  108. package/src/TextField/OutlinedContainer.tsx +8 -3
  109. package/src/ThemeExplorer/BorderSlider.tsx +73 -0
  110. package/src/ThemeExplorer/ColorSchemePicker.tsx +55 -0
  111. package/src/ThemeExplorer/FontAutoComplete.tsx +139 -0
  112. package/src/ThemeExplorer/ThemeBuilder.story.tsx +2 -1
  113. package/src/ThemeExplorer/ThemeBuilder.tsx +218 -82
  114. package/src/ThemeExplorer/components.tsx +4 -4
  115. package/src/ThemeExplorer/googleFonts.ts +1436 -0
  116. package/src/ThemeExplorer/updateGoogleFonts.js +33 -0
  117. package/src/ThemeExplorer/useDeferredColor.tsx +3 -6
  118. package/src/index.ts +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basic-ui/material",
3
- "version": "1.0.0-alpha.15",
3
+ "version": "1.0.0-alpha.18",
4
4
  "description": "Accessible React Components used as building blocks for UI patterns",
5
5
  "author": "Lucas Terra <lucasterra7@gmail.com>",
6
6
  "license": "MIT",
@@ -27,8 +27,8 @@
27
27
  "test": "echo \"Error: no test specified\" && exit 1"
28
28
  },
29
29
  "dependencies": {
30
- "@basic-ui/core": "^0.0.43",
31
- "@basic-ui/dynamic-theme": "^0.0.5",
30
+ "@basic-ui/core": "^0.0.46",
31
+ "@basic-ui/dynamic-theme": "^0.0.7",
32
32
  "@styled-system/should-forward-prop": "5.1.5",
33
33
  "@types/styled-system": "^5.1.10",
34
34
  "@types/styled-system__css": "^5.0.14",
@@ -36,11 +36,11 @@
36
36
  "styled-system": "^5.1.5"
37
37
  },
38
38
  "devDependencies": {
39
- "@basic-ui/color-picker": "^0.0.10",
39
+ "@basic-ui/color-picker": "^0.0.11",
40
40
  "@emotion/react": "11.9.0",
41
41
  "@emotion/styled": "11.8.1",
42
42
  "@material/material-color-utilities": "0.1.1",
43
- "polished": "^4.1.1"
43
+ "polished": "^4.2.2"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@babel/runtime": "^7.0.0",
@@ -52,5 +52,5 @@
52
52
  "react": "^16.14.0 || ^17.0.0 || ^18.0.0",
53
53
  "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0"
54
54
  },
55
- "gitHead": "1bf6a5a0f35cfa0ae1cfac346b0bb10d4d00931f"
55
+ "gitHead": "bf937e7d984c93ab477435f50a01c5653382bd13"
56
56
  }
@@ -38,6 +38,7 @@ export const BaseButton = forwardRef<HTMLButtonElement, BaseButtonProps>(
38
38
  touchAction: 'manipulation',
39
39
  userSelect: 'none',
40
40
  minWidth: 'auto',
41
+ whiteSpace: 'nowrap',
41
42
  '&::-moz-focus-inner': {
42
43
  border: 0,
43
44
  },
@@ -30,7 +30,7 @@ import { TextField } from '../TextField';
30
30
  import type { ListProps } from '../List';
31
31
  import { List } from '../List';
32
32
  import type { ListItemProps } from '../ListItem';
33
- import { ListItem } from '../ListItem';
33
+ import { listItemStyle } from '../ListItem';
34
34
  import type { TextProps } from '../Text';
35
35
  import { Text } from '../Text';
36
36
  import type { ButtonProps } from '../Button';
@@ -120,6 +120,9 @@ export const ComboboxList = forwardRef<HTMLUListElement, ComboboxListProps>(
120
120
  '[data-popper-placement="bottom"] &': {
121
121
  transformOrigin: 'top center',
122
122
  },
123
+ '& [data-reach-combobox-option=""]': {
124
+ ...listItemStyle('primary'),
125
+ },
123
126
  ...__css,
124
127
  }}
125
128
  {...otherProps}
@@ -189,7 +192,7 @@ export const ComboboxOption = forwardRef<HTMLLIElement, ComboboxOptionProps>(
189
192
  const { as = 'li', ...otherProps } = props;
190
193
  return (
191
194
  <ComboboxOptionCore
192
- as={ListItem}
195
+ as={Box}
193
196
  ref={forwardedRef}
194
197
  innerAs={as}
195
198
  {...otherProps}
package/src/Link/Link.tsx CHANGED
@@ -33,6 +33,12 @@ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(
33
33
  letterSpacing: 'inherit',
34
34
  color,
35
35
  textDecoration: 'underline',
36
+ background: 'none',
37
+ border: 'none',
38
+ borderRadius: 'extra-small',
39
+ 'button&': {
40
+ cursor: 'pointer',
41
+ },
36
42
  '&:hover,&:focus': {
37
43
  textDecoration: 'none',
38
44
  },
@@ -44,6 +50,12 @@ export const Link = forwardRef<HTMLAnchorElement, LinkProps>(function Link(
44
50
  '&:active': {
45
51
  bg: alpha(color, 0.16),
46
52
  },
53
+ '&[aria-disabled="true"],&:disabled': {
54
+ color: 'on.surface',
55
+ opacity: 0.38,
56
+ cursor: 'default',
57
+ pointerEvents: 'none',
58
+ },
47
59
  WebkitTapHighlightColor: 'transparent',
48
60
  ...__css,
49
61
  }}
@@ -1,6 +1,7 @@
1
1
  import type { ElementType, ReactNode } from 'react';
2
2
  import { forwardRef } from 'react';
3
3
  import { rem } from 'polished';
4
+ import type { SystemStyleObject } from '@styled-system/css';
4
5
 
5
6
  import type { BoxProps } from '../Box';
6
7
  import { Box } from '../Box';
@@ -17,6 +18,52 @@ export interface ListItemProps extends BoxProps {
17
18
  rippleColor?: string;
18
19
  }
19
20
 
21
+ export const listItemStyle = (
22
+ color: string,
23
+ hoverOpacity = 0.16,
24
+ focusOpacity = 0.24
25
+ ): SystemStyleObject => ({
26
+ variant: 'text.label-large',
27
+ px: 3,
28
+ py: rem(12),
29
+ transition: 'background-color 75ms linear',
30
+ backgroundColor: 'transparent',
31
+ color: alpha('on.surface', 0.87),
32
+ cursor: 'pointer',
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ textDecoration: 'none',
36
+ ':hover': {
37
+ backgroundColor: alpha('on.surface', hoverOpacity),
38
+ },
39
+ ':focus': {
40
+ outline: 'none',
41
+ backgroundColor: alpha('on.surface', focusOpacity),
42
+ },
43
+ ':active': {
44
+ backgroundColor: alpha('on.surface', focusOpacity),
45
+ },
46
+ '&[aria-selected="true"]': {
47
+ backgroundColor: alpha(color, 0.08),
48
+ color,
49
+ ':hover': {
50
+ backgroundColor: alpha(color, hoverOpacity),
51
+ },
52
+ ':focus': {
53
+ outline: 'none',
54
+ backgroundColor: alpha(color, focusOpacity),
55
+ },
56
+ ':active': {
57
+ backgroundColor: alpha(color, focusOpacity),
58
+ },
59
+ },
60
+ '&[data-disabled]': {
61
+ color: alpha('on.surface', 0.6),
62
+ backgroundColor: 'transparent',
63
+ cursor: 'default',
64
+ },
65
+ });
66
+
20
67
  export const ListItem = forwardRef<HTMLDivElement, ListItemProps>(
21
68
  function ListItem(props, forwardedRef) {
22
69
  const {
@@ -35,10 +82,6 @@ export const ListItem = forwardRef<HTMLDivElement, ListItemProps>(
35
82
  const color = rippleColor || colorProp || 'primary';
36
83
  const theme = useTheme();
37
84
 
38
- const baseOpacity = 0.12;
39
- const hoverOpacity = 0.16;
40
- const focusOpacity = 0.24;
41
-
42
85
  return (
43
86
  <Box
44
87
  ref={forwardedRef}
@@ -50,44 +93,7 @@ export const ListItem = forwardRef<HTMLDivElement, ListItemProps>(
50
93
  disabled={disabled}
51
94
  {...otherProps}
52
95
  __css={{
53
- variant: 'text.label-large',
54
- px: 3,
55
- py: rem(12),
56
- transition: 'background-color 75ms linear',
57
- backgroundColor: 'transparent',
58
- color: alpha('on.surface', 0.87),
59
- cursor: 'pointer',
60
- ':hover': {
61
- backgroundColor: alpha('on.surface', hoverOpacity),
62
- },
63
- ':focus': {
64
- outline: 'none',
65
- backgroundColor: alpha('on.surface', focusOpacity),
66
- },
67
- ':active': {
68
- backgroundColor: alpha('on.surface', baseOpacity + 0.12),
69
- },
70
- '&[aria-selected="true"]': {
71
- backgroundColor: alpha(color, baseOpacity + 0.12),
72
- color,
73
- ':hover': {
74
- backgroundColor: alpha(color, hoverOpacity + 0.12),
75
- },
76
- ':focus': {
77
- outline: 'none',
78
- backgroundColor: alpha(color, focusOpacity + 0.12),
79
- },
80
- ':active': {
81
- backgroundColor: alpha(color, baseOpacity + 0.24),
82
- },
83
- },
84
- '&[data-disabled]': {
85
- color: alpha('on.surface', 0.6),
86
- backgroundColor: 'transparent',
87
- cursor: 'default',
88
- },
89
- textDecoration: 'none',
90
- WebkitTapHighlightColor: 'transparent',
96
+ ...listItemStyle(color),
91
97
  ...__css,
92
98
  }}
93
99
  >
@@ -20,6 +20,7 @@ export interface UseRippleSurfaceOptions<T extends HTMLElement> {
20
20
  rippleColor?: string;
21
21
  rippleEnabled?: boolean;
22
22
  center?: boolean;
23
+ mouseFocus?: boolean;
23
24
  disabled?: boolean;
24
25
  style?: CSSProperties;
25
26
  onPointerDown?: PointerEventHandler<T>;
@@ -36,6 +37,8 @@ export function useRippleSurface<T extends HTMLElement>(
36
37
  focusOpacity = 0.12,
37
38
  pressedOpacity = 0.12,
38
39
  rippleColor = 'on.surface',
40
+ // eslint-disable-next-line prefer-const
41
+ mouseFocus = false,
39
42
  } = opts;
40
43
  const {
41
44
  onKeyDown,
@@ -67,6 +70,8 @@ export function useRippleSurface<T extends HTMLElement>(
67
70
  ...rippleProps,
68
71
  });
69
72
 
73
+ const focusPseudoClass = mouseFocus ? 'focus' : 'focus-visible';
74
+
70
75
  const css: SxStyleProp = useMemo(
71
76
  () => ({
72
77
  overflow: 'hidden',
@@ -93,7 +98,7 @@ export function useRippleSurface<T extends HTMLElement>(
93
98
  '&:hover::before': {
94
99
  opacity: hoverOpacity,
95
100
  },
96
- '&:focus-visible::before': {
101
+ [`&:${focusPseudoClass}::before`]: {
97
102
  opacity: focusOpacity,
98
103
  },
99
104
  ...(!rippleEnabled && {
@@ -107,7 +112,7 @@ export function useRippleSurface<T extends HTMLElement>(
107
112
  '&[aria-pressed="true"]:hover::before': {
108
113
  opacity: pressedOpacity + hoverOpacity,
109
114
  },
110
- '&[aria-pressed="true"]:focus-visible::before': {
115
+ [`&[aria-pressed="true"]:${focusPseudoClass}::before`]: {
111
116
  opacity: pressedOpacity + focusOpacity,
112
117
  },
113
118
  ...(!rippleEnabled && {
@@ -133,6 +138,7 @@ export function useRippleSurface<T extends HTMLElement>(
133
138
  animation,
134
139
  baseOpacity,
135
140
  focusOpacity,
141
+ focusPseudoClass,
136
142
  hoverOpacity,
137
143
  pressedOpacity,
138
144
  rippleColor,
@@ -1,8 +1,9 @@
1
1
  import { forwardRef, useState } from 'react';
2
2
  import type { ReactElement, ComponentType } from 'react';
3
+ import styled from '@emotion/styled';
3
4
 
4
5
  import type { SelectProps } from '../';
5
- import { Box, Select, SelectItem } from '../';
6
+ import { Select, SelectItem } from '../';
6
7
 
7
8
  export default {
8
9
  title: 'components/Select/Complex',
@@ -176,25 +177,19 @@ export interface PaymentMethodSelectProps {
176
177
 
177
178
  const logoWidth = 32;
178
179
  const logoHeight = 24;
179
- const LogoWrapper = ({ children }: { children: ReactElement }) => (
180
- <Box
181
- sx={{
182
- mr: 2,
183
- borderRadius: '2px',
184
- overflow: 'hidden',
185
- width: logoWidth,
186
- height: logoHeight,
187
- minWidth: logoWidth,
188
- minHeight: logoHeight,
189
- '& > svg': { width: logoWidth, height: logoWidth },
190
- display: 'inline-flex',
191
- alignItems: 'center',
192
- justifyContent: 'center',
193
- }}
194
- >
195
- {children}
196
- </Box>
197
- );
180
+ const LogoWrapper = styled.div({
181
+ marginInlineEnd: '8px',
182
+ borderRadius: '2px',
183
+ overflow: 'hidden',
184
+ width: logoWidth,
185
+ height: logoHeight,
186
+ minWidth: logoWidth,
187
+ minHeight: logoHeight,
188
+ '& > svg': { width: logoWidth, height: logoWidth },
189
+ display: 'inline-flex',
190
+ alignItems: 'center',
191
+ justifyContent: 'center',
192
+ });
198
193
 
199
194
  function SelectItemContent(props: PaymentMethod): ReactElement {
200
195
  if (props.type === 'card') {
@@ -269,9 +264,7 @@ const PaymentMethodSelect = forwardRef<
269
264
  >
270
265
  {paymentMethods.map((m) => (
271
266
  <SelectItem value={m.id} key={m.id}>
272
- <Box display="inline-flex" alignItems="center">
273
- <SelectItemContent {...m} />
274
- </Box>
267
+ <SelectItemContent {...m} />
275
268
  </SelectItem>
276
269
  ))}
277
270
  </Select>
@@ -300,7 +293,7 @@ export const PaymentMethodSelectControlled = () => {
300
293
  'visa',
301
294
  'unknown',
302
295
  ]) {
303
- for (let i = 0; i < 10; i++) {
296
+ for (let i = 0; i < 50; i++) {
304
297
  paymentMethods.push({
305
298
  type: 'card',
306
299
  id: testCard + `_${i}`,
@@ -24,6 +24,7 @@ import { makeDefaultRender } from './defaultRender';
24
24
  import type { BoxProps } from '../Box';
25
25
  import { Box } from '../Box';
26
26
  import { IconContainer } from '../TextField/IconContainer';
27
+ import { listItemStyle } from '../ListItem';
27
28
 
28
29
  const componentMap = {
29
30
  outlined: OutlinedContainer,
@@ -181,6 +182,11 @@ export const Select = forwardRef<
181
182
  minWidth: buttonRef?.current?.offsetWidth,
182
183
  }}
183
184
  role="listbox"
185
+ __css={{
186
+ '& [data-menu-item=""]': {
187
+ ...listItemStyle('primary'),
188
+ },
189
+ }}
184
190
  >
185
191
  {children}
186
192
  </MenuList>
@@ -1,9 +1,18 @@
1
1
  import { forwardRef } from 'react';
2
- import { wrapEvent } from '@basic-ui/core';
2
+ import { wrapEvent, MenuItem as MenuItemCore } from '@basic-ui/core';
3
+ import type { MenuItemProps as MenuItemPropsCore } from '@basic-ui/core';
3
4
 
4
- import type { MenuItemProps } from '../Menu';
5
- import { MenuItem } from '../Menu';
6
5
  import { useSelectContext } from '../Select/context';
6
+ import type { BoxProps } from '../Box';
7
+ import { Box } from '../Box';
8
+
9
+ type MenuItemProps = MenuItemPropsCore & BoxProps;
10
+
11
+ const MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(
12
+ ({ as = 'li', ...props }, ref) => (
13
+ <MenuItemCore as={Box} innerAs={as} ref={ref} {...props} />
14
+ )
15
+ );
7
16
 
8
17
  export type SelectItemProps = MenuItemProps;
9
18
 
@@ -50,6 +59,7 @@ export const SelectItem = forwardRef<HTMLLIElement, MenuItemProps>(
50
59
  disabled={disabled}
51
60
  ref={forwardedRef}
52
61
  role="option"
62
+ aria-selected={selected ? 'true' : undefined}
53
63
  selected={selected}
54
64
  {...otherProps}
55
65
  >
@@ -0,0 +1,36 @@
1
+ import { Slider, SliderMarker } from './';
2
+ // import './styles.css';
3
+
4
+ export default { title: 'components/Slider' };
5
+
6
+ export const Uncontrolled = () => <Slider />;
7
+
8
+ export const UncontrolledWithSteps = () => <Slider step={10} />;
9
+
10
+ export const UncontrolledWithMarks = () => (
11
+ <Slider>
12
+ <SliderMarker value={10} />
13
+ <SliderMarker value={20} />
14
+ <SliderMarker value={30} />
15
+ <SliderMarker value={40} />
16
+ <SliderMarker value={50} />
17
+ <SliderMarker value={60} />
18
+ <SliderMarker value={70} />
19
+ <SliderMarker value={80} />
20
+ <SliderMarker value={90} />
21
+ </Slider>
22
+ );
23
+
24
+ export const UncontrolledWithMarksAndSteps = () => (
25
+ <Slider step={10}>
26
+ <SliderMarker value={10} />
27
+ <SliderMarker value={20} />
28
+ <SliderMarker value={30} />
29
+ <SliderMarker value={40} />
30
+ <SliderMarker value={50} />
31
+ <SliderMarker value={60} />
32
+ <SliderMarker value={70} />
33
+ <SliderMarker value={80} />
34
+ <SliderMarker value={90} />
35
+ </Slider>
36
+ );