@rescui/menu 0.13.6-RUI-296-Build-docs-md-files-for-each-docs-section-2a311c841.18 → 0.13.6-RUI-293-Update-menu-component-7a032357e.20

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.
@@ -0,0 +1,309 @@
1
+ # Menu (Deprecated)
2
+
3
+ Deprecated: to get a side menu, use [this component](https://github.com/JetBrains/RescUI/tree/RUI-243-Rework-Menu-component/site/components/menu) instead.
4
+
5
+ A menu is a group of elements consisting of actions and links, represented by combinations of icons and text.
6
+
7
+ ## Usage
8
+
9
+ ### Features showcase
10
+
11
+ #### Example
12
+
13
+ ```tsx
14
+ import { Menu, MenuItem } from '@rescui/menu';
15
+ import {
16
+ PersonOutlineIcon,
17
+ CartOutlineIcon,
18
+ BugOutlineIcon,
19
+ TeamOutlineIcon,
20
+ SuccessOutlineIcon
21
+ } from '@rescui/icons';
22
+
23
+ <Menu style={{ maxWidth: 200 }}>
24
+ <MenuItem icon={<CartOutlineIcon />}>Cart</MenuItem>
25
+ <MenuItem icon={<BugOutlineIcon />}>Bug</MenuItem>
26
+ <MenuItem icon={<PersonOutlineIcon />}>Person</MenuItem>
27
+ <MenuItem icon={<TeamOutlineIcon />}>Team</MenuItem>
28
+ <MenuItem icon={<SuccessOutlineIcon />}>Success</MenuItem>
29
+ </Menu>;
30
+ ```
31
+
32
+ #### With glow hover and mode rock
33
+
34
+ ```tsx
35
+ import { Menu, MenuItem } from '@rescui/menu';
36
+ import {
37
+ PersonOutlineIcon,
38
+ CartOutlineIcon,
39
+ BugOutlineIcon,
40
+ TeamOutlineIcon,
41
+ SuccessOutlineIcon
42
+ } from '@rescui/icons';
43
+ import { useGlowHover } from '@rescui/use-glow-hover';
44
+
45
+ const GlowMenuItem = props => {
46
+ const ref = useGlowHover({
47
+ preset: 'bright-pink',
48
+ lightSizeEnterAnimationTime: 0,
49
+ lightSizeLeaveAnimationTime: 0,
50
+ enableBurst: true
51
+ });
52
+ return <MenuItem {...props} ref={ref} />;
53
+ };
54
+
55
+ const Demo = () => (
56
+ <Menu mode="rock" style={{ maxWidth: 200 }}>
57
+ <GlowMenuItem icon={<CartOutlineIcon />}>Cart</GlowMenuItem>
58
+ <GlowMenuItem icon={<BugOutlineIcon />}>Bug</GlowMenuItem>
59
+ <GlowMenuItem icon={<PersonOutlineIcon />}>Person</GlowMenuItem>
60
+ <GlowMenuItem icon={<TeamOutlineIcon />}>Team</GlowMenuItem>
61
+ <GlowMenuItem icon={<SuccessOutlineIcon />}>Success</GlowMenuItem>
62
+ </Menu>
63
+ );
64
+
65
+ render(<Demo />);
66
+ ```
67
+
68
+ #### Change size
69
+
70
+ If you want to change a size of the menu and items content, you should use `resizeIcons` prop.
71
+
72
+ ```tsx
73
+ import { Menu, MenuItem } from '@rescui/menu';
74
+ import {
75
+ PersonOutlineIcon,
76
+ CartOutlineIcon,
77
+ BugOutlineIcon,
78
+ TeamOutlineIcon,
79
+ SuccessOutlineIcon
80
+ } from '@rescui/icons';
81
+
82
+ <Menu size="s" resizeIcons style={{ maxWidth: 200 }}>
83
+ <MenuItem icon={<CartOutlineIcon />}>Cart</MenuItem>
84
+ <MenuItem icon={<BugOutlineIcon />}>Bug</MenuItem>
85
+ <MenuItem icon={<PersonOutlineIcon />}>Person</MenuItem>
86
+ <MenuItem icon={<TeamOutlineIcon />}>Team</MenuItem>
87
+ <MenuItem icon={<SuccessOutlineIcon />}>Success</MenuItem>
88
+ </Menu>;
89
+ ```
90
+
91
+ #### Contrast primary color
92
+
93
+ If your primary color background requires dark text color, use `--rs-menu-contrast-primary` CSS variable.
94
+
95
+ ```tsx
96
+ import { Menu, MenuItem } from '@rescui/menu';
97
+
98
+ const Demo = () => {
99
+ return (
100
+ <div className="light-green-primary">
101
+ <Menu className="menu-with-contrast-primary" style={{ maxWidth: 200 }}>
102
+ <MenuItem>Some text 1</MenuItem>
103
+ <MenuItem>Some text 2</MenuItem>
104
+ <MenuItem>Some text 3</MenuItem>
105
+ <MenuItem>Some text 4</MenuItem>
106
+ <MenuItem>Some text 5</MenuItem>
107
+ </Menu>
108
+ </div>
109
+ );
110
+ };
111
+
112
+ render(<Demo />);
113
+ ```
114
+
115
+ ```postcss
116
+ .menu-with-contrast-primary {
117
+ --rs-menu-contrast-primary: 1;
118
+ }
119
+
120
+ .light-green-primary {
121
+ --rs-color-primary-light-theme: rgb(71, 224, 84);
122
+ --rs-color-primary-t-dim-light-theme: rgba(71, 224, 84, 0.8);
123
+ --rs-color-primary-t-fog-light-theme: rgba(71, 224, 84, 0.2);
124
+
125
+ --rs-color-primary-dark-theme: rgb(71, 224, 84);
126
+ --rs-color-primary-t-dim-dark-theme: rgba(71, 224, 84, 0.8);
127
+ --rs-color-primary-t-fog-dark-theme: rgba(71, 224, 84, 0.2);
128
+ }
129
+ ```
130
+
131
+ ## CSS Mixins API
132
+
133
+ #### `Menu` mixins
134
+
135
+ | Mixin name | Details |
136
+ | --- | --- |
137
+ | `rs-menu-size-s` | prop: `size`<br><br>value: `"s"` |
138
+ | `rs-menu-size-m` | prop: `size`<br><br>value: `"m"` |
139
+ | `rs-menu-size-l` | prop: `size`<br><br>value: `"l"` |
140
+ | `rs-menu-mode-classic` | prop: `mode`<br><br>value: `"classic"` |
141
+ | `rs-menu-mode-rock` | prop: `mode`<br><br>value: `"rock"` |
142
+ | `rs-menu-mode-clear` | prop: `mode`<br><br>value: `"clear"` |
143
+ | `rs-menu-icon-placement-left` | prop: `iconPlacement`<br><br>value: `"left"` |
144
+ | `rs-menu-icon-placement-right` | prop: `iconPlacement`<br><br>value: `"right"` |
145
+
146
+ ##### Demo
147
+
148
+ Instead of separate classes, it may be a single class with `@media` queries inside:
149
+
150
+ ```tsx
151
+ import { Menu, MenuItem } from '@rescui/menu';
152
+ import {
153
+ PersonOutlineIcon,
154
+ CartOutlineIcon,
155
+ BugOutlineIcon,
156
+ TeamOutlineIcon,
157
+ SuccessOutlineIcon
158
+ } from '@rescui/icons';
159
+
160
+ const MyMenu = ({ className }) => {
161
+ return (
162
+ <div style={{ padding: 12, backgroundColor: 'var(--rs-color-black-t5)' }}>
163
+ <Menu
164
+ mode="rock"
165
+ size="l"
166
+ iconPlacement={'left'}
167
+ style={{ maxWidth: 300 }}
168
+ className={className}
169
+ >
170
+ <MenuItem icon={<CartOutlineIcon size="l" className="icon" />}>Cart</MenuItem>
171
+ <MenuItem icon={<BugOutlineIcon size="l" className="icon" />}>Bug</MenuItem>
172
+ <MenuItem icon={<PersonOutlineIcon size="l" className="icon" />}>
173
+ Person
174
+ </MenuItem>
175
+ <MenuItem icon={<TeamOutlineIcon size="l" className="icon" />}>Team</MenuItem>
176
+ <MenuItem icon={<SuccessOutlineIcon size="l" className="icon" />}>
177
+ Success
178
+ </MenuItem>
179
+ </Menu>
180
+ </div>
181
+ );
182
+ };
183
+
184
+ render(
185
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>
186
+ <div>
187
+ <p>Default:</p>
188
+ <MyMenu />
189
+ </div>
190
+ <div>
191
+ <p>Var1:</p>
192
+ <MyMenu className={`my-menu-var-1`} />
193
+ </div>
194
+ <div>
195
+ <p>Var1 & Var2 combined:</p>
196
+ <MyMenu className={`my-menu-var-1 my-menu-var-2`} />
197
+ </div>
198
+ </div>
199
+ );
200
+ ```
201
+
202
+ ```postcss attached
203
+ @import '@rescui/menu/lib/public-api.p.css';
204
+ @import '@rescui/icons/lib/public-api.p.css';
205
+
206
+ .my-menu-var-1 {
207
+ @mixin rs-menu-size-s;
208
+ @mixin rs-menu-mode-classic;
209
+ @mixin rs-menu-icon-placement-right;
210
+
211
+ .icon {
212
+ @mixin rs-icon-size-s;
213
+ }
214
+ }
215
+ .my-menu-var-2 {
216
+ @mixin rs-menu-size-m;
217
+ @mixin rs-menu-mode-clear;
218
+ @mixin rs-menu-icon-placement-left;
219
+
220
+ .icon {
221
+ @mixin rs-icon-size-m;
222
+ }
223
+ }
224
+ ```
225
+
226
+ #### `Menu` CSS Vars
227
+
228
+ | Variable | Syntax | Description |
229
+ | --- | --- | --- |
230
+ | `--rs-menu-contrast-primary` | `0 \| 1` | The flag whenever the current primary is contrast enough and highlighted text color should be inverted |
231
+
232
+ Check out [this example](/components/menu/#contrast-primary-color) for contrast primary.
233
+
234
+ #### `MenuItem` mixins
235
+
236
+ | Mixin name | Details |
237
+ | --- | --- |
238
+ | `rs-menu-item-size-s` | prop: `size`<br><br>value: `"s"` |
239
+ | `rs-menu-item-size-m` | prop: `size`<br><br>value: `"m"` |
240
+ | `rs-menu-item-size-l` | prop: `size`<br><br>value: `"l"` |
241
+ | `rs-menu-item-mode-classic` | prop: `mode`<br><br>value: `"classic"` |
242
+ | `rs-menu-item-mode-rock` | prop: `mode`<br><br>value: `"rock"` |
243
+ | `rs-menu-item-mode-clear` | prop: `mode`<br><br>value: `"clear"` |
244
+ | `rs-menu-item-icon-placement-left` | prop: `iconPlacement`<br><br>value: `"right"` |
245
+ | `rs-menu-item-icon-placement-right` | prop: `iconPlacement`<br><br>value: `"left"` |
246
+
247
+ ##### Demo
248
+
249
+ Instead of separate classes, it may be a single class with `@media` queries inside:
250
+
251
+ ```tsx
252
+ import { MenuItem } from '@rescui/menu';
253
+ import { PersonOutlineIcon } from '@rescui/icons';
254
+
255
+ const MyMenuItem = ({ className }) => {
256
+ return (
257
+ <div style={{ padding: 12, backgroundColor: 'var(--rs-color-black-t5)' }}>
258
+ <MenuItem
259
+ icon={<PersonOutlineIcon size="l" className="icon" />}
260
+ className={className}
261
+ style={{ maxWidth: 300 }}
262
+ >
263
+ Item
264
+ </MenuItem>
265
+ </div>
266
+ );
267
+ };
268
+
269
+ render(
270
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>
271
+ <div>
272
+ <p>Default:</p>
273
+ <MyMenuItem />
274
+ </div>
275
+ <div>
276
+ <p>Var1:</p>
277
+ <MyMenuItem className={`my-menu-item-var-1`} />
278
+ </div>
279
+ <div>
280
+ <p>Var1 & Var2 combined:</p>
281
+ <MyMenuItem className={`my-menu-item-var-1 my-menu-item-var-2`} />
282
+ </div>
283
+ </div>
284
+ );
285
+ ```
286
+
287
+ ```postcss
288
+ @import '@rescui/menu/lib/public-api.p.css';
289
+ @import '@rescui/icons/lib/public-api.p.css';
290
+
291
+ .my-menu-item-var-1 {
292
+ @mixin rs-menu-item-size-s;
293
+ @mixin rs-menu-item-mode-classic;
294
+ @mixin rs-menu-item-icon-placement-right;
295
+
296
+ .icon {
297
+ @mixin rs-icon-size-s;
298
+ }
299
+ }
300
+ .my-menu-item-var-2 {
301
+ @mixin rs-menu-item-size-m;
302
+ @mixin rs-menu-item-mode-clear;
303
+ @mixin rs-menu-item-icon-placement-left;
304
+
305
+ .icon {
306
+ @mixin rs-icon-size-m;
307
+ }
308
+ }
309
+ ```
package/llm/index.md ADDED
@@ -0,0 +1,2 @@
1
+ - Components and Hooks
2
+ - [Menu](./components/menu.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rescui/menu",
3
- "version": "0.13.6-RUI-296-Build-docs-md-files-for-each-docs-section-2a311c841.18+2a311c841",
3
+ "version": "0.13.6-RUI-293-Update-menu-component-7a032357e.20+7a032357e",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
@@ -9,6 +9,7 @@
9
9
  "src:main": "src/index.ts",
10
10
  "files": [
11
11
  "lib",
12
+ "llm",
12
13
  "LICENSE.txt"
13
14
  ],
14
15
  "publishConfig": {
@@ -25,10 +26,10 @@
25
26
  "react": ">=16.8.0 <20"
26
27
  },
27
28
  "devDependencies": {
28
- "@rescui/colors": "0.3.1-RUI-296-Build-docs-md-files-for-each-docs-section-2a311c841.53+2a311c841",
29
+ "@rescui/colors": "0.3.1-RUI-293-Update-menu-component-7a032357e.55+7a032357e",
29
30
  "@rescui/postcss-preset-library": "0.2.2",
30
31
  "@rescui/scripts": "0.5.2",
31
- "@rescui/typography": "0.27.1-RUI-296-Build-docs-md-files-for-each-docs-section-2a311c841.18+2a311c841",
32
+ "@rescui/typography": "0.27.1-RUI-293-Update-menu-component-7a032357e.20+7a032357e",
32
33
  "@rescui/visual-regression": "0.1.4",
33
34
  "postcss": "^8.3.0"
34
35
  },
@@ -37,5 +38,5 @@
37
38
  "build-pcss-api": "rescui-scripts build-pcss-api --file public-api.p.css"
38
39
  },
39
40
  "nx": {},
40
- "gitHead": "2a311c841551a48c46895aff5609fe099bbe1a61"
41
+ "gitHead": "7a032357e8f31abbf69e18aa6b7ef2d75e40f42e"
41
42
  }