xref: /expo/docs/ui/components/CommandMenu/styles.ts (revision 0a4db0c7)
189d2c67fSBartosz Kaszubowskiimport { css } from '@emotion/react';
2f4b1168bSBartosz Kaszubowskiimport { theme, shadows, typography } from '@expo/styleguide';
3f4b1168bSBartosz Kaszubowskiimport { borderRadius, spacing, breakpoints } from '@expo/styleguide-base';
489d2c67fSBartosz Kaszubowski
589d2c67fSBartosz Kaszubowskiexport const commandMenuStyles = css`
689d2c67fSBartosz Kaszubowski  #__next[aria-hidden] {
789d2c67fSBartosz Kaszubowski    filter: blur(3.33px);
889d2c67fSBartosz Kaszubowski  }
989d2c67fSBartosz Kaszubowski
1089d2c67fSBartosz Kaszubowski  [cmdk-overlay] {
1189d2c67fSBartosz Kaszubowski    background-color: rgba(0, 0, 0, 0.33);
1289d2c67fSBartosz Kaszubowski    height: 100vh;
1389d2c67fSBartosz Kaszubowski    left: 0;
1489d2c67fSBartosz Kaszubowski    position: fixed;
1589d2c67fSBartosz Kaszubowski    top: 0;
1689d2c67fSBartosz Kaszubowski    width: 100vw;
1789d2c67fSBartosz Kaszubowski    z-index: 200;
1889d2c67fSBartosz Kaszubowski
1989d2c67fSBartosz Kaszubowski    @media screen and (max-width: ${breakpoints.medium}px) {
2089d2c67fSBartosz Kaszubowski      display: none;
2189d2c67fSBartosz Kaszubowski    }
2289d2c67fSBartosz Kaszubowski  }
2389d2c67fSBartosz Kaszubowski
2489d2c67fSBartosz Kaszubowski  [cmdk-root] {
2589d2c67fSBartosz Kaszubowski    position: fixed;
2689d2c67fSBartosz Kaszubowski    top: 45%;
2789d2c67fSBartosz Kaszubowski    left: 50%;
2889d2c67fSBartosz Kaszubowski    transform: translate(-50%, -50%);
2989d2c67fSBartosz Kaszubowski    min-height: 75vh;
3089d2c67fSBartosz Kaszubowski    max-height: 75vh;
3189d2c67fSBartosz Kaszubowski    background: ${theme.background.default};
3214c78e61SJon Samp    border-radius: ${borderRadius.lg}px;
3314c78e61SJon Samp    box-shadow: ${shadows.sm};
3489d2c67fSBartosz Kaszubowski    width: 40vw;
3589d2c67fSBartosz Kaszubowski    min-width: 680px;
3689d2c67fSBartosz Kaszubowski    border: 1px solid ${theme.border.default};
3789d2c67fSBartosz Kaszubowski    z-index: 1001;
3889d2c67fSBartosz Kaszubowski
3989d2c67fSBartosz Kaszubowski    @media screen and (max-width: ${breakpoints.medium}px) {
4089d2c67fSBartosz Kaszubowski      width: 100vw;
4189d2c67fSBartosz Kaszubowski      min-width: 100vw;
42dd3ad45dSBartosz Kaszubowski      position: absolute;
43dd3ad45dSBartosz Kaszubowski      min-height: 84vh;
44dd3ad45dSBartosz Kaszubowski      max-height: 84vh;
45dd3ad45dSBartosz Kaszubowski      margin-top: -16px;
4689d2c67fSBartosz Kaszubowski    }
4789d2c67fSBartosz Kaszubowski  }
4889d2c67fSBartosz Kaszubowski
4989d2c67fSBartosz Kaszubowski  [cmdk-input] {
5089d2c67fSBartosz Kaszubowski    appearance: none;
5189d2c67fSBartosz Kaszubowski    background: transparent;
5289d2c67fSBartosz Kaszubowski    color: ${theme.text.default};
5389d2c67fSBartosz Kaszubowski    flex: 1;
5489d2c67fSBartosz Kaszubowski    font: inherit;
5589d2c67fSBartosz Kaszubowski    height: 100%;
5689d2c67fSBartosz Kaszubowski    outline: none;
5789d2c67fSBartosz Kaszubowski    padding: ${spacing[3]}px ${spacing[11]}px;
5889d2c67fSBartosz Kaszubowski    margin: ${spacing[4]}px ${spacing[4]}px 0;
5989d2c67fSBartosz Kaszubowski    border: 1px solid ${theme.border.default};
6014c78e61SJon Samp    border-radius: ${borderRadius.md}px;
6189d2c67fSBartosz Kaszubowski    width: calc(100% - ${spacing[8]}px);
6289d2c67fSBartosz Kaszubowski    box-sizing: border-box;
6314c78e61SJon Samp    box-shadow: ${shadows.xs};
6489d2c67fSBartosz Kaszubowski
6589d2c67fSBartosz Kaszubowski    &::placeholder {
6689d2c67fSBartosz Kaszubowski      color: ${theme.icon.secondary};
6789d2c67fSBartosz Kaszubowski    }
6889d2c67fSBartosz Kaszubowski  }
6989d2c67fSBartosz Kaszubowski
7089d2c67fSBartosz Kaszubowski  [cmdk-item] {
7189d2c67fSBartosz Kaszubowski    content-visibility: auto;
7289d2c67fSBartosz Kaszubowski    cursor: pointer;
7389d2c67fSBartosz Kaszubowski    min-height: 52px;
7414c78e61SJon Samp    border-radius: ${borderRadius.md}px;
7589d2c67fSBartosz Kaszubowski    display: flex;
7689d2c67fSBartosz Kaszubowski    flex-direction: column;
7789d2c67fSBartosz Kaszubowski    justify-content: center;
7889d2c67fSBartosz Kaszubowski    padding: ${spacing[1]}px ${spacing[3]}px;
7989d2c67fSBartosz Kaszubowski    color: ${theme.text.default};
8089d2c67fSBartosz Kaszubowski    user-select: none;
8189d2c67fSBartosz Kaszubowski    will-change: background, color;
8289d2c67fSBartosz Kaszubowski    transition: all 150ms ease;
8389d2c67fSBartosz Kaszubowski    transition-property: none;
8489d2c67fSBartosz Kaszubowski
8589d2c67fSBartosz Kaszubowski    &[aria-selected='true'],
8689d2c67fSBartosz Kaszubowski    &:active {
8714c78e61SJon Samp      background: ${theme.background.element};
8889d2c67fSBartosz Kaszubowski      color: ${theme.text.default};
8989d2c67fSBartosz Kaszubowski
9089d2c67fSBartosz Kaszubowski      mark {
9114c78e61SJon Samp        background: ${theme.palette.blue5};
9289d2c67fSBartosz Kaszubowski      }
9389d2c67fSBartosz Kaszubowski    }
9489d2c67fSBartosz Kaszubowski
9589d2c67fSBartosz Kaszubowski    &[aria-disabled='true'] {
9689d2c67fSBartosz Kaszubowski      color: ${theme.icon.secondary};
9789d2c67fSBartosz Kaszubowski      cursor: not-allowed;
9889d2c67fSBartosz Kaszubowski    }
9989d2c67fSBartosz Kaszubowski
10089d2c67fSBartosz Kaszubowski    & + [cmdk-item] {
101*0a4db0c7SBartosz Kaszubowski      margin-top: ${spacing[1]}px;
102*0a4db0c7SBartosz Kaszubowski    }
103*0a4db0c7SBartosz Kaszubowski
104*0a4db0c7SBartosz Kaszubowski    &[data-nested] + [cmdk-item] {
105*0a4db0c7SBartosz Kaszubowski      margin-top: ${spacing[2]}px;
10689d2c67fSBartosz Kaszubowski    }
10789d2c67fSBartosz Kaszubowski
10889d2c67fSBartosz Kaszubowski    mark {
10914c78e61SJon Samp      color: ${theme.palette.blue12};
11014c78e61SJon Samp      background: ${theme.palette.blue4};
11189d2c67fSBartosz Kaszubowski      border-radius: 2px;
112*0a4db0c7SBartosz Kaszubowski      opacity: 0.85;
11389d2c67fSBartosz Kaszubowski    }
11489d2c67fSBartosz Kaszubowski  }
11589d2c67fSBartosz Kaszubowski
11689d2c67fSBartosz Kaszubowski  [cmdk-list] {
11789d2c67fSBartosz Kaszubowski    height: calc(75vh - 50px - 50px - 20px);
11889d2c67fSBartosz Kaszubowski    max-height: calc(75vh - 50px - 50px - 20px);
11989d2c67fSBartosz Kaszubowski    overflow: auto;
12089d2c67fSBartosz Kaszubowski    overscroll-behavior: contain;
12189d2c67fSBartosz Kaszubowski    border-top: 1px solid ${theme.border.default};
12289d2c67fSBartosz Kaszubowski    border-bottom: 1px solid ${theme.border.default};
12389d2c67fSBartosz Kaszubowski    padding: 0 ${spacing[4]}px;
12489d2c67fSBartosz Kaszubowski    margin: ${spacing[3]}px 0 0;
12589d2c67fSBartosz Kaszubowski
12689d2c67fSBartosz Kaszubowski    @media screen and (max-width: ${breakpoints.medium}px) {
127dd3ad45dSBartosz Kaszubowski      height: calc(84vh - 50px - 50px - 20px);
128dd3ad45dSBartosz Kaszubowski      max-height: calc(84vh - 50px - 50px - 20px);
12989d2c67fSBartosz Kaszubowski    }
13089d2c67fSBartosz Kaszubowski  }
13189d2c67fSBartosz Kaszubowski
13289d2c67fSBartosz Kaszubowski  [cmdk-separator] {
13389d2c67fSBartosz Kaszubowski    height: 1px;
13489d2c67fSBartosz Kaszubowski    width: 100%;
13589d2c67fSBartosz Kaszubowski    background: ${theme.border.default};
13689d2c67fSBartosz Kaszubowski    margin: ${spacing[1]} 0;
13789d2c67fSBartosz Kaszubowski  }
13889d2c67fSBartosz Kaszubowski
13989d2c67fSBartosz Kaszubowski  [cmdk-group-heading] {
14089d2c67fSBartosz Kaszubowski    ${typography.fontSizes[12]};
14189d2c67fSBartosz Kaszubowski    user-select: none;
14289d2c67fSBartosz Kaszubowski    color: ${theme.text.secondary};
14389d2c67fSBartosz Kaszubowski    padding: ${spacing[4]}px ${spacing[2]}px ${spacing[2]}px;
14489d2c67fSBartosz Kaszubowski    display: flex;
14589d2c67fSBartosz Kaszubowski    align-items: center;
14689d2c67fSBartosz Kaszubowski    gap: ${spacing[1]}px;
14789d2c67fSBartosz Kaszubowski    margin: 0 2px;
14889d2c67fSBartosz Kaszubowski  }
14989d2c67fSBartosz Kaszubowski
15089d2c67fSBartosz Kaszubowski  [cmdk-empty] {
15189d2c67fSBartosz Kaszubowski    display: flex;
15289d2c67fSBartosz Kaszubowski    align-items: center;
15389d2c67fSBartosz Kaszubowski    justify-content: center;
15489d2c67fSBartosz Kaszubowski    white-space: pre-wrap;
15589d2c67fSBartosz Kaszubowski    padding: ${spacing[8]}px 0;
15689d2c67fSBartosz Kaszubowski  }
15789d2c67fSBartosz Kaszubowski
158be43ea08SBartosz Kaszubowski  html.dark-theme {
159*0a4db0c7SBartosz Kaszubowski    [cmdk-item] {
160*0a4db0c7SBartosz Kaszubowski      mark {
161*0a4db0c7SBartosz Kaszubowski        background: ${theme.palette.blue6};
162*0a4db0c7SBartosz Kaszubowski      }
16389d2c67fSBartosz Kaszubowski
164*0a4db0c7SBartosz Kaszubowski      &[data-selected='true'] mark {
16514c78e61SJon Samp        background: ${theme.palette.blue7};
16689d2c67fSBartosz Kaszubowski      }
16789d2c67fSBartosz Kaszubowski    }
16889d2c67fSBartosz Kaszubowski  }
16989d2c67fSBartosz Kaszubowski`;
17089d2c67fSBartosz Kaszubowski
17189d2c67fSBartosz Kaszubowskiexport const searchIconStyle = css({
17289d2c67fSBartosz Kaszubowski  position: 'absolute',
17389d2c67fSBartosz Kaszubowski  top: 29,
17489d2c67fSBartosz Kaszubowski  left: 29,
17589d2c67fSBartosz Kaszubowski  transition: 'opacity 0.2s ease-in-out',
17689d2c67fSBartosz Kaszubowski});
17789d2c67fSBartosz Kaszubowski
17889d2c67fSBartosz Kaszubowskiexport const closeIconStyle = css({
17989d2c67fSBartosz Kaszubowski  position: 'absolute',
18089d2c67fSBartosz Kaszubowski  top: 25,
18189d2c67fSBartosz Kaszubowski  right: 25,
18289d2c67fSBartosz Kaszubowski  cursor: 'pointer',
18389d2c67fSBartosz Kaszubowski  padding: spacing[1],
18414c78e61SJon Samp  borderRadius: borderRadius.sm,
18589d2c67fSBartosz Kaszubowski
18689d2c67fSBartosz Kaszubowski  '&:hover': {
18714c78e61SJon Samp    background: theme.background.element,
18889d2c67fSBartosz Kaszubowski  },
18989d2c67fSBartosz Kaszubowski});
190