|
9 | 9 | Tooltip, |
10 | 10 | Text, |
11 | 11 | Link, |
12 | | - Box, |
13 | 12 | Menu, |
14 | 13 | MenuButton, |
15 | 14 | Portal, |
@@ -67,169 +66,158 @@ export default function Code({ recipe }: CodeProps) { |
67 | 66 | const minWidth = lineMaxDigits < 3 ? '2.7em' : `${lineMaxDigits}.25em`; |
68 | 67 |
|
69 | 68 | return ( |
70 | | - <Flex |
71 | | - position="relative" |
72 | | - flex={1} |
73 | | - h="full" |
74 | | - w="full" |
75 | | - overflowX="auto" |
76 | | - overflowY="scroll" |
77 | | - > |
78 | | - <Box |
79 | | - position="absolute" |
80 | | - top="0" |
81 | | - left="0" |
82 | | - minHeight="full" |
83 | | - minWidth="full" |
84 | | - h="full" |
85 | | - w="full" |
| 69 | + <Flex position="relative" flex={1} h="full" w="full" overflow="hidden"> |
| 70 | + <Flex |
| 71 | + pos="absolute" |
| 72 | + alignItems="center" |
| 73 | + gridGap="space_8" |
| 74 | + top="space_8" |
| 75 | + right="space_24" |
| 76 | + zIndex="docked" |
86 | 77 | > |
87 | | - <LinkBox |
88 | | - as="article" |
89 | | - w="full" |
90 | | - minH="full" |
91 | | - overflow="hidden" |
92 | | - borderWidth="1px" |
93 | | - borderStyle="solid" |
94 | | - borderColor="neutral.50" |
95 | | - _dark={{ |
96 | | - borderColor: 'base.onyx', |
| 78 | + <CodeViewToggler |
| 79 | + inputProps={{ |
| 80 | + value: codeView, |
| 81 | + onChange: (value) => setCodeView(value as CodeViewsType), |
97 | 82 | }} |
98 | | - > |
99 | | - <CodigaCode |
100 | | - border={0} |
101 | | - borderRadius={0} |
102 | | - pt="space_48" |
103 | | - pos="relative" |
104 | | - sx={{ |
105 | | - 'code[class*="language-"] > span:first-child > .linenumber:first-child': |
106 | | - { |
107 | | - paddingTop: '0.5em !important', |
108 | | - }, |
109 | | - 'code[class*="language-"] .linenumber': { |
110 | | - border: '0 !important', |
111 | | - background: 'transparent !important', |
112 | | - fontStyle: 'normal !important', |
113 | | - }, |
114 | | - }} |
115 | | - > |
116 | | - <Flex |
117 | | - pos="absolute" |
118 | | - alignItems="center" |
119 | | - gridGap="space_8" |
120 | | - top="space_8" |
121 | | - right="space_8" |
122 | | - zIndex="docked" |
123 | | - > |
124 | | - <CodeViewToggler |
125 | | - inputProps={{ |
126 | | - value: codeView, |
127 | | - onChange: (value) => setCodeView(value as CodeViewsType), |
128 | | - }} |
129 | | - /> |
| 83 | + /> |
| 84 | + |
| 85 | + <Tooltip label="Copy Snippet"> |
| 86 | + <IconButton |
| 87 | + variant="ghost" |
| 88 | + h="32px" |
| 89 | + minW="32px" |
| 90 | + p="space_8" |
| 91 | + icon={<CopyIcon />} |
| 92 | + onClick={onCopy} |
| 93 | + aria-label="Copy Snippet" |
| 94 | + /> |
| 95 | + </Tooltip> |
130 | 96 |
|
131 | | - <Tooltip label="Copy Snippet"> |
132 | | - <IconButton |
133 | | - variant="ghost" |
134 | | - h="32px" |
135 | | - minW="32px" |
136 | | - p="space_8" |
137 | | - icon={<CopyIcon />} |
138 | | - onClick={onCopy} |
139 | | - aria-label="Copy Snippet" |
140 | | - /> |
141 | | - </Tooltip> |
| 97 | + <Tooltip label="Comment on Snippet"> |
| 98 | + <IconButton |
| 99 | + as={Link} |
| 100 | + isExternal |
| 101 | + href={`${APP_URL}/assistant/snippet/${recipe.id}/view`} |
| 102 | + variant="ghost" |
| 103 | + h="32px" |
| 104 | + minW="32px" |
| 105 | + p="space_8" |
| 106 | + _hover={{ textDecor: 'none' }} |
| 107 | + icon={ |
| 108 | + <Flex gridGap="space_4" alignItems="center"> |
| 109 | + <BubbleIcon /> |
| 110 | + <Text as="span" size="xs" lineHeight="16px"> |
| 111 | + {commentsCount} |
| 112 | + </Text> |
| 113 | + </Flex> |
| 114 | + } |
| 115 | + aria-label="Comment on Snippet" |
| 116 | + /> |
| 117 | + </Tooltip> |
142 | 118 |
|
143 | | - <Tooltip label="Comment on Snippet"> |
144 | | - <IconButton |
| 119 | + {userId && recipe.owner && userId === recipe.owner.id && ( |
| 120 | + <Menu size="sm"> |
| 121 | + <MenuButton |
| 122 | + as={IconButton} |
| 123 | + variant="ghost" |
| 124 | + h="32px" |
| 125 | + minW="32px" |
| 126 | + p="space_8" |
| 127 | + fontSize="xx-small" |
| 128 | + letterSpacing="2px" |
| 129 | + > |
| 130 | + ••• |
| 131 | + </MenuButton> |
| 132 | + <Portal> |
| 133 | + <MenuList |
| 134 | + zIndex="tooltip" |
| 135 | + boxShadow="base" |
| 136 | + py={0} |
| 137 | + overflow="hidden" |
| 138 | + minW="175px" |
| 139 | + > |
| 140 | + <MenuItem |
145 | 141 | as={Link} |
146 | 142 | isExternal |
147 | | - href={`${APP_URL}/assistant/snippet/${recipe.id}/view`} |
148 | | - variant="ghost" |
149 | | - h="32px" |
150 | | - minW="32px" |
151 | | - p="space_8" |
152 | | - _hover={{ textDecor: 'none' }} |
153 | | - icon={ |
154 | | - <Flex gridGap="space_4" alignItems="center"> |
155 | | - <BubbleIcon /> |
156 | | - <Text as="span" size="xs" lineHeight="16px"> |
157 | | - {commentsCount} |
158 | | - </Text> |
159 | | - </Flex> |
160 | | - } |
161 | | - aria-label="Comment on Snippet" |
162 | | - /> |
163 | | - </Tooltip> |
164 | | - |
165 | | - {userId && recipe.owner && userId === recipe.owner.id && ( |
166 | | - <Menu size="sm"> |
167 | | - <MenuButton |
168 | | - as={IconButton} |
169 | | - variant="ghost" |
170 | | - h="32px" |
171 | | - minW="32px" |
172 | | - p="space_8" |
173 | | - fontSize="xx-small" |
174 | | - letterSpacing="2px" |
| 143 | + href={getSnippetUrl(recipe.id, 'edit')} |
| 144 | + _hover={{ |
| 145 | + textDecor: 'none', |
| 146 | + color: '#fff !important', |
| 147 | + bg: 'base.rose', |
| 148 | + }} |
| 149 | + _focus={{ boxShadow: 'none' }} |
| 150 | + > |
| 151 | + <Text |
| 152 | + size="xs" |
| 153 | + d="flex" |
| 154 | + alignItems="center" |
| 155 | + gridGap="space_4" |
| 156 | + color="inherit !important" |
175 | 157 | > |
176 | | - ••• |
177 | | - </MenuButton> |
178 | | - <Portal> |
179 | | - <MenuList |
180 | | - zIndex="tooltip" |
181 | | - boxShadow="base" |
182 | | - py={0} |
183 | | - overflow="hidden" |
184 | | - minW="175px" |
185 | | - > |
186 | | - <MenuItem |
187 | | - as={Link} |
188 | | - isExternal |
189 | | - href={getSnippetUrl(recipe.id, 'edit')} |
190 | | - _hover={{ |
191 | | - textDecor: 'none', |
192 | | - color: '#fff !important', |
193 | | - bg: 'base.rose', |
194 | | - }} |
195 | | - _focus={{ boxShadow: 'none' }} |
196 | | - > |
197 | | - <Text |
198 | | - size="xs" |
199 | | - d="flex" |
200 | | - alignItems="center" |
201 | | - gridGap="space_4" |
202 | | - color="inherit !important" |
203 | | - > |
204 | | - <PencilIcon /> Edit Snippet |
205 | | - </Text> |
206 | | - </MenuItem> |
207 | | - </MenuList> |
208 | | - </Portal> |
209 | | - </Menu> |
210 | | - )} |
211 | | - </Flex> |
| 158 | + <PencilIcon /> Edit Snippet |
| 159 | + </Text> |
| 160 | + </MenuItem> |
| 161 | + </MenuList> |
| 162 | + </Portal> |
| 163 | + </Menu> |
| 164 | + )} |
| 165 | + </Flex> |
212 | 166 |
|
213 | | - <CodeContent |
214 | | - customStyle={{ |
215 | | - background: bg, |
216 | | - overflowX: 'auto', |
217 | | - }} |
218 | | - codeTagProps={{ |
219 | | - style: { |
220 | | - display: 'block', |
221 | | - height: '100%', |
222 | | - fontSize: '14px', |
223 | | - }, |
224 | | - }} |
225 | | - lineNumberStyle={{ minWidth }} |
226 | | - language={recipe.language?.toLocaleLowerCase()} |
227 | | - > |
228 | | - {code} |
229 | | - </CodeContent> |
230 | | - </CodigaCode> |
231 | | - </LinkBox> |
232 | | - </Box> |
| 167 | + <LinkBox |
| 168 | + as="article" |
| 169 | + minH="full" |
| 170 | + minW="full" |
| 171 | + overflow="scroll" |
| 172 | + borderWidth="1px" |
| 173 | + borderStyle="solid" |
| 174 | + borderColor="neutral.50" |
| 175 | + _dark={{ |
| 176 | + borderColor: 'base.onyx', |
| 177 | + }} |
| 178 | + > |
| 179 | + <CodigaCode |
| 180 | + border={0} |
| 181 | + borderRadius={0} |
| 182 | + pt="space_48" |
| 183 | + h="full" |
| 184 | + w="full" |
| 185 | + sx={{ |
| 186 | + 'code[class*="language-"] > span:first-child > .linenumber:first-child': |
| 187 | + { |
| 188 | + paddingTop: '0.5em !important', |
| 189 | + }, |
| 190 | + 'code[class*="language-"] .linenumber': { |
| 191 | + border: '0 !important', |
| 192 | + background: 'transparent !important', |
| 193 | + fontStyle: 'normal !important', |
| 194 | + }, |
| 195 | + }} |
| 196 | + > |
| 197 | + <CodeContent |
| 198 | + customStyle={{ |
| 199 | + background: bg, |
| 200 | + h: 'full', |
| 201 | + w: 'full', |
| 202 | + position: 'absolute', |
| 203 | + top: 0, |
| 204 | + left: 0, |
| 205 | + paddingTop: '48px', |
| 206 | + }} |
| 207 | + codeTagProps={{ |
| 208 | + style: { |
| 209 | + display: 'block', |
| 210 | + height: '100%', |
| 211 | + fontSize: '14px', |
| 212 | + }, |
| 213 | + }} |
| 214 | + lineNumberStyle={{ minWidth }} |
| 215 | + language={recipe.language?.toLocaleLowerCase()} |
| 216 | + > |
| 217 | + {code} |
| 218 | + </CodeContent> |
| 219 | + </CodigaCode> |
| 220 | + </LinkBox> |
233 | 221 | </Flex> |
234 | 222 | ); |
235 | 223 | } |
0 commit comments