@iress-oss/ids-mcp-server 0.0.1-dev.0

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 (107) hide show
  1. package/LICENSE.txt +201 -0
  2. package/README.md +93 -0
  3. package/dist/componentHandlers.js +241 -0
  4. package/dist/componentHandlers.test.js +380 -0
  5. package/dist/config.js +16 -0
  6. package/dist/index.js +53 -0
  7. package/dist/iressHandlers.js +144 -0
  8. package/dist/iressHandlers.test.js +316 -0
  9. package/dist/resourceHandlers.js +67 -0
  10. package/dist/resourceHandlers.test.js +352 -0
  11. package/dist/searchHandlers.js +287 -0
  12. package/dist/searchHandlers.test.js +524 -0
  13. package/dist/toolHandler.js +31 -0
  14. package/dist/toolHandler.test.js +369 -0
  15. package/dist/tools.js +165 -0
  16. package/dist/types.js +4 -0
  17. package/dist/utils.js +59 -0
  18. package/dist/utils.test.js +286 -0
  19. package/generated/docs/components-alert-docs.md +130 -0
  20. package/generated/docs/components-autocomplete-docs.md +754 -0
  21. package/generated/docs/components-autocomplete-recipes-docs.md +104 -0
  22. package/generated/docs/components-badge-docs.md +148 -0
  23. package/generated/docs/components-button-docs.md +362 -0
  24. package/generated/docs/components-button-recipes-docs.md +76 -0
  25. package/generated/docs/components-buttongroup-docs.md +310 -0
  26. package/generated/docs/components-card-docs.md +494 -0
  27. package/generated/docs/components-card-recipes-docs.md +89 -0
  28. package/generated/docs/components-checkbox-docs.md +193 -0
  29. package/generated/docs/components-checkboxgroup-docs.md +692 -0
  30. package/generated/docs/components-checkboxgroup-recipes-docs.md +119 -0
  31. package/generated/docs/components-col-docs.md +466 -0
  32. package/generated/docs/components-combobox-docs.md +1016 -0
  33. package/generated/docs/components-container-docs.md +91 -0
  34. package/generated/docs/components-divider-docs.md +176 -0
  35. package/generated/docs/components-expander-docs.md +215 -0
  36. package/generated/docs/components-field-docs.md +675 -0
  37. package/generated/docs/components-filter-docs.md +1109 -0
  38. package/generated/docs/components-form-docs.md +2442 -0
  39. package/generated/docs/components-form-recipes-docs.md +892 -0
  40. package/generated/docs/components-hide-docs.md +265 -0
  41. package/generated/docs/components-icon-docs.md +553 -0
  42. package/generated/docs/components-inline-docs.md +868 -0
  43. package/generated/docs/components-input-docs.md +335 -0
  44. package/generated/docs/components-input-recipes-docs.md +140 -0
  45. package/generated/docs/components-inputcurrency-docs.md +157 -0
  46. package/generated/docs/components-inputcurrency-recipes-docs.md +116 -0
  47. package/generated/docs/components-label-docs.md +135 -0
  48. package/generated/docs/components-menu-docs.md +704 -0
  49. package/generated/docs/components-menu-menuitem-docs.md +193 -0
  50. package/generated/docs/components-modal-docs.md +587 -0
  51. package/generated/docs/components-navbar-docs.md +291 -0
  52. package/generated/docs/components-navbar-recipes-docs.md +413 -0
  53. package/generated/docs/components-panel-docs.md +380 -0
  54. package/generated/docs/components-placeholder-docs.md +27 -0
  55. package/generated/docs/components-popover-docs.md +464 -0
  56. package/generated/docs/components-popover-recipes-docs.md +245 -0
  57. package/generated/docs/components-progress-docs.md +104 -0
  58. package/generated/docs/components-radio-docs.md +107 -0
  59. package/generated/docs/components-radiogroup-docs.md +683 -0
  60. package/generated/docs/components-readonly-docs.md +89 -0
  61. package/generated/docs/components-richselect-docs.md +2433 -0
  62. package/generated/docs/components-row-docs.md +877 -0
  63. package/generated/docs/components-select-docs.md +456 -0
  64. package/generated/docs/components-skeleton-docs.md +214 -0
  65. package/generated/docs/components-skeleton-recipes-docs.md +76 -0
  66. package/generated/docs/components-skiplink-docs.md +66 -0
  67. package/generated/docs/components-slideout-docs.md +538 -0
  68. package/generated/docs/components-slider-docs.md +346 -0
  69. package/generated/docs/components-spinner-docs.md +59 -0
  70. package/generated/docs/components-stack-docs.md +265 -0
  71. package/generated/docs/components-table-ag-grid-docs.md +2666 -0
  72. package/generated/docs/components-table-docs.md +1305 -0
  73. package/generated/docs/components-tabset-docs.md +341 -0
  74. package/generated/docs/components-tabset-tab-docs.md +86 -0
  75. package/generated/docs/components-tag-docs.md +115 -0
  76. package/generated/docs/components-text-docs.md +394 -0
  77. package/generated/docs/components-toaster-docs.md +294 -0
  78. package/generated/docs/components-toaster-toast-docs.md +157 -0
  79. package/generated/docs/components-toggle-docs.md +158 -0
  80. package/generated/docs/components-tooltip-docs.md +311 -0
  81. package/generated/docs/components-validationmessage-docs.md +241 -0
  82. package/generated/docs/contact-us-docs.md +27 -0
  83. package/generated/docs/extensions-editor-docs.md +288 -0
  84. package/generated/docs/extensions-editor-recipes-docs.md +39 -0
  85. package/generated/docs/foundations-accessibility-docs.md +62 -0
  86. package/generated/docs/foundations-colours-docs.md +257 -0
  87. package/generated/docs/foundations-consistency-docs.md +52 -0
  88. package/generated/docs/foundations-content-docs.md +23 -0
  89. package/generated/docs/foundations-introduction-docs.md +17 -0
  90. package/generated/docs/foundations-principles-docs.md +70 -0
  91. package/generated/docs/foundations-typography-docs.md +191 -0
  92. package/generated/docs/foundations-user-experience-docs.md +63 -0
  93. package/generated/docs/foundations-visual-design-docs.md +46 -0
  94. package/generated/docs/frequently-asked-questions-docs.md +53 -0
  95. package/generated/docs/get-started-develop-docs.md +48 -0
  96. package/generated/docs/get-started-using-storybook-docs.md +68 -0
  97. package/generated/docs/guidelines.md +812 -0
  98. package/generated/docs/introduction-docs.md +43 -0
  99. package/generated/docs/patterns-loading-docs.md +1304 -0
  100. package/generated/docs/resources-changelog-docs.md +6 -0
  101. package/generated/docs/resources-code-katas-docs.md +29 -0
  102. package/generated/docs/resources-migration-guides-from-v4-to-v5-docs.md +437 -0
  103. package/generated/docs/themes-available-themes-docs.md +66 -0
  104. package/generated/docs/themes-introduction-docs.md +121 -0
  105. package/generated/docs/themes-tokens-docs.md +1200 -0
  106. package/generated/docs/versions-docs.md +17 -0
  107. package/package.json +81 -0
@@ -0,0 +1,245 @@
1
+ [](#recipes)Recipes
2
+ ===================
3
+
4
+ [](#with-iressmenu)With `IressMenu`
5
+ -----------------------------------
6
+
7
+ When an `IressMenu` is used inside `IressPopover`, it adds some additional functionality to the popover, including:
8
+
9
+ * `IressPopover` will automatically close the popover when a menu item is clicked.
10
+ * `IressMenu` will automatically focus the first menu item when the popover is opened.
11
+
12
+ role=menu
13
+
14
+ ### Application menu behaviour
15
+
16
+ * Once activated, focus is set to the first menu item
17
+ * Menu items can be navigated using the `up` and `down` arrow keys
18
+ * Popover will close when:
19
+ * the `esc` key is pressed
20
+ * the `tab` key is pressed (focus moves to the focusable element in the DOM)
21
+ * a menu item is clicked
22
+
23
+ role=list
24
+
25
+ ### Navigation/list menu behaviour
26
+
27
+ * Once activated, focus is set to the popover panel
28
+ * Menu items can be navigated using the `tab` key
29
+ * Popover will close when:
30
+ * the `esc` key is pressed
31
+ * the popover panel loses focus
32
+
33
+ role=listbox
34
+
35
+ Multi-select
36
+
37
+ ### Listbox menu behaviour
38
+
39
+ * Once activated, focus is set to the first menu item
40
+ * Menu items can be navigated using arrow keys
41
+ * Popover will close when:
42
+ * the `esc` key is pressed
43
+ * the `tab` key is pressed (focus moves to the next focusable element in the DOM)
44
+ * a menu item is clicked (except when a listbox menu is in `multiSelect` mode)
45
+ * When user presses the `up` key when the first item is focused
46
+
47
+ role=nav
48
+
49
+ ### Navigation/list menu behaviour
50
+
51
+ * Once activated, focus is set to the popover panel
52
+ * Menu items can be navigated using the `tab` key
53
+ * Popover will close when:
54
+ * the `esc` key is pressed
55
+ * the popover panel loses focus
56
+
57
+ Hide code
58
+
59
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
60
+
61
+ <IressContainer className\="iress-u-stack iress--gutter--md"\>
62
+ <IressRow
63
+ gutter\="lg"
64
+ verticalAlign\="middle"
65
+ \>
66
+ <IressCol span\="2"\>
67
+ <IressPopover
68
+ activator\={<IressButton fluid\>role=menu</IressButton\>}
69
+ container\={document.body}
70
+ type\="menu"
71
+ \>
72
+ <IressMenu
73
+ defaultSelected\={3}
74
+ role\="menu"
75
+ \>
76
+ <IressMenuItem value\={0}\>
77
+ New task </IressMenuItem\>
78
+ <IressMenuItem value\={1}\>
79
+ Send prospect welcome pack </IressMenuItem\>
80
+ <IressMenuItem value\={2}\>
81
+ Book in Discovery meeting </IressMenuItem\>
82
+ <IressMenuItem value\={3}\>
83
+ Prospect proceeding </IressMenuItem\>
84
+ </IressMenu\>
85
+ </IressPopover\>
86
+ </IressCol\>
87
+ <IressCol\>
88
+ <MenuInPopoverRoleDescription role\="menu" />
89
+ </IressCol\>
90
+ </IressRow\>
91
+ <IressRow
92
+ gutter\="lg"
93
+ verticalAlign\="middle"
94
+ \>
95
+ <IressCol span\="2"\>
96
+ <IressPopover
97
+ activator\={<IressButton fluid\>role=list</IressButton\>}
98
+ container\={document.body}
99
+ \>
100
+ <IressMenu
101
+ defaultSelected\={3}
102
+ role\="list"
103
+ \>
104
+ <IressMenuItem value\={0}\>
105
+ New task </IressMenuItem\>
106
+ <IressMenuItem value\={1}\>
107
+ Send prospect welcome pack </IressMenuItem\>
108
+ <IressMenuItem value\={2}\>
109
+ Book in Discovery meeting </IressMenuItem\>
110
+ <IressMenuItem value\={3}\>
111
+ Prospect proceeding </IressMenuItem\>
112
+ </IressMenu\>
113
+ </IressPopover\>
114
+ </IressCol\>
115
+ <IressCol\>
116
+ <MenuInPopoverRoleDescription role\="list" />
117
+ </IressCol\>
118
+ </IressRow\>
119
+ <IressRow
120
+ gutter\="lg"
121
+ verticalAlign\="middle"
122
+ \>
123
+ <IressCol span\="2"\>
124
+ <IressPopover
125
+ activator\={<IressButton fluid\>role=listbox</IressButton\>}
126
+ container\={document.body}
127
+ type\="listbox"
128
+ \>
129
+ <IressMenu
130
+ defaultSelected\={3}
131
+ role\="listbox"
132
+ \>
133
+ <IressMenuItem value\={0}\>
134
+ New task </IressMenuItem\>
135
+ <IressMenuItem value\={1}\>
136
+ Send prospect welcome pack </IressMenuItem\>
137
+ <IressMenuItem value\={2}\>
138
+ Book in Discovery meeting </IressMenuItem\>
139
+ <IressMenuItem value\={3}\>
140
+ Prospect proceeding </IressMenuItem\>
141
+ </IressMenu\>
142
+ </IressPopover\>
143
+ </IressCol\>
144
+ <IressCol\>
145
+ <MenuInPopoverRoleDescription role\="listbox"\>
146
+ <IressToggle
147
+ className\="iress-mb--md"
148
+ onChange\={() \=> {}}
149
+ \>
150
+ Multi-select </IressToggle\>
151
+ </MenuInPopoverRoleDescription\>
152
+ </IressCol\>
153
+ </IressRow\>
154
+ <IressRow
155
+ gutter\="lg"
156
+ verticalAlign\="middle"
157
+ \>
158
+ <IressCol span\="2"\>
159
+ <IressPopover
160
+ activator\={<IressButton fluid\>role=nav</IressButton\>}
161
+ container\={document.body}
162
+ \>
163
+ <IressMenu
164
+ defaultSelected\={3}
165
+ role\="nav"
166
+ \>
167
+ <IressMenuItem value\={0}\>
168
+ New task </IressMenuItem\>
169
+ <IressMenuItem value\={1}\>
170
+ Send prospect welcome pack </IressMenuItem\>
171
+ <IressMenuItem value\={2}\>
172
+ Book in Discovery meeting </IressMenuItem\>
173
+ <IressMenuItem value\={3}\>
174
+ Prospect proceeding </IressMenuItem\>
175
+ </IressMenu\>
176
+ </IressPopover\>
177
+ </IressCol\>
178
+ <IressCol\>
179
+ <MenuInPopoverRoleDescription role\="nav" />
180
+ </IressCol\>
181
+ </IressRow\>
182
+ </IressContainer\>
183
+
184
+ Copy
185
+
186
+ [](#focusable-children)Focusable children
187
+ -----------------------------------------
188
+
189
+ If you are using the `listbox` or `menu` type popovers, you will notice that focusable children (with the exception of `IressMenuItem`) are not automatically focusable with the arrow keys. To make them focusable, you will need to embed the focusable children using the `usePopoverItem` hook.
190
+
191
+ The `usePopoverItem` hook will automatically handle the focus management for you. It has two optional arguments:
192
+
193
+ * The first argument is the typeahead label of the item you are registering. This will allow it to have a keyboard shortcut to focus the item.
194
+ * The second argument is a virtual node, which is used in `virtualFocus` enabled popovers and `IressInputPopover`, to mimic the `onKeyDown` and `onBlur` events of the original element when the item is virtually focused using `aria-activedescendant`. If not provided, nothing will happen when the element is virtually focused.
195
+
196
+ The `usePopoverItem` hook returns an object with the following properties:
197
+
198
+ * `isActiveInPopover`: A boolean that indicates if the item is currently focused in the popover. This can be used to style the item differently when it is focused.
199
+ * `...popoverItemProps`: The rest of the props that you should spread on the focusable element to make it focusable.
200
+
201
+ Toggle
202
+
203
+ Hide code
204
+
205
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
206
+
207
+ const CountButton \= () \=> {
208
+ const \[count, setCount\] \= useState(0);
209
+ const { isActiveInPopover, ...popoverItemProps } \= usePopoverItem('Count', {
210
+ onKeyDown: (e) \=> {
211
+ if (e.key \=== '+') {
212
+ setCount(count + 1);
213
+ }
214
+ },
215
+ });
216
+ const className \= isActiveInPopover ? ButtonCssClass.Active : '';
217
+ return (
218
+ <IressButton
219
+ {...popoverItemProps}
220
+ className\={className}
221
+ mode\="tertiary"
222
+ fluid
223
+ \>
224
+ Increase count using the + key: {count}
225
+ </IressButton\>
226
+ );
227
+ };
228
+ export const UsePopoverExample \= () \=> (
229
+ <IressPopover
230
+ activator\={<IressButton\>Toggle</IressButton\>}
231
+ container\={document.body}
232
+ type\="listbox"
233
+ virtualFocus
234
+ \>
235
+ <CountButton />
236
+ <CountButton />
237
+ </IressPopover\>
238
+ );
239
+
240
+ Copy
241
+
242
+ On this page
243
+
244
+ * [With IressMenu](#with-iressmenu)
245
+ * [Focusable children](#focusable-children)
@@ -0,0 +1,104 @@
1
+ [](#progress)Progress
2
+ =====================
3
+
4
+ Overview
5
+ --------
6
+
7
+ A progress component is used to indicate to a user the completion of a set of tasks or a process.
8
+
9
+ Hide code
10
+
11
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
12
+
13
+ <IressProgress
14
+ max\={30}
15
+ min\={10}
16
+ value\={20}
17
+ />
18
+
19
+ Copy
20
+
21
+ [](#usage)Usage
22
+ ---------------
23
+
24
+ Progress shows how far through a task or operation you are in a graphical way. The simplest way to use it to set the `value` to specify how much of the task the user has completed, relative to the `max` value (which defaults to 100).
25
+
26
+ ### [](#calculation-to-convert-value-in-to-width)Calculation to convert value in to width
27
+
28
+ The following calculation is used to derive the width percentage:
29
+
30
+ \[data-radix-scroll-area-viewport\] {
31
+ scrollbar-width: none;
32
+ -ms-overflow-style: none;
33
+ -webkit-overflow-scrolling: touch;
34
+ }
35
+ \[data-radix-scroll-area-viewport\]::-webkit-scrollbar {
36
+ display: none;
37
+ }
38
+ :where(\[data-radix-scroll-area-viewport\]) {
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: stretch;
42
+ }
43
+ :where(\[data-radix-scroll-area-content\]) {
44
+ flex-grow: 1;
45
+ }
46
+
47
+ Math.round(
48
+ ((this.value - this.min) / (this.max - this.min)) \* 100,
49
+ )
50
+
51
+ Copy
52
+
53
+ This caters for those scenarios where the `min` or `max` values change.
54
+
55
+ ### [](#boundary-limits)Boundary limits
56
+
57
+ There is a danger that the value can exceed the boundaries set in the `min` and `max` values, and cause the percentage width of the bar to overflow the indicator. To prevent this the following rules are applied:
58
+
59
+ * If the `value` is less than the `min` prop, it is reset to the `min` prop;
60
+ * If the `value` is more than the `max` prop, it is reset to the `max` prop;
61
+
62
+ ### [](#section-title)Section Title
63
+
64
+ The `section-title` prop is used by assistive technologies and allows you to tailor the message announced when the progress component is selected. This could be to add extra context about where the user is in a process or section with a multi-part form.
65
+
66
+ ### [](#use-of-tokens)Use of tokens
67
+
68
+ The message supports the use of two tokens within the announcement, which are replaced when the component is rendered. They are:
69
+
70
+ * `{{current}}` - replaced with the `value`;
71
+ * `{{max}}` - replaced with the maximum limit;
72
+
73
+ For example, if the component has been implemented with a max of 10, a value of 6 has been set, and the default section title, the screen reader will announce:
74
+
75
+ \[data-radix-scroll-area-viewport\] {
76
+ scrollbar-width: none;
77
+ -ms-overflow-style: none;
78
+ -webkit-overflow-scrolling: touch;
79
+ }
80
+ \[data-radix-scroll-area-viewport\]::-webkit-scrollbar {
81
+ display: none;
82
+ }
83
+ :where(\[data-radix-scroll-area-viewport\]) {
84
+ display: flex;
85
+ flex-direction: column;
86
+ align-items: stretch;
87
+ }
88
+ :where(\[data-radix-scroll-area-content\]) {
89
+ flex-grow: 1;
90
+ }
91
+
92
+ Step 6 of 10
93
+
94
+ Copy
95
+
96
+ On this page
97
+
98
+ * [Overview](#overview)
99
+ * [Props](#props)
100
+ * [Usage](#usage)
101
+ * [Calculation to convert value in to width](#calculation-to-convert-value-in-to-width)
102
+ * [Boundary limits](#boundary-limits)
103
+ * [Section Title](#section-title)
104
+ * [Use of tokens](#use-of-tokens)
@@ -0,0 +1,107 @@
1
+ [](#radio)Radio
2
+ ===============
3
+
4
+ Overview
5
+ --------
6
+
7
+ A radio is a single option presented with a radio button. It is used to select a single option from multiple options. It is typically used in an `IressRadioGroup`.
8
+
9
+ Radio button
10
+
11
+ Hide code
12
+
13
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
14
+
15
+ <IressRadio\>
16
+ Radio button
17
+ </IressRadio\>
18
+
19
+ Copy
20
+
21
+ [](#examples)Examples
22
+ ---------------------
23
+
24
+ ### [](#checked)Checked
25
+
26
+ You can set the radio to `checked` by default. This is useful when you want to pre-select an option.
27
+
28
+ **Note:** If you are using an `IressRadioGroup`, you should use the `value` prop on the `IressRadioGroup` to set the checked state of its `<IressRadio />` children, as the `checked` prop will be ignored.
29
+
30
+ Checked radio button
31
+
32
+ Hide code
33
+
34
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
35
+
36
+ <IressRadio checked\>
37
+ Checked radio button
38
+ </IressRadio\>
39
+
40
+ Copy
41
+
42
+ ### [](#hidden-control)Hidden control
43
+
44
+ You can hide the radio button and use a custom UI to display the content. Even though the radio button is hidden, it still acts like a radio.
45
+
46
+ Hidden radio button
47
+
48
+ Hide code
49
+
50
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
51
+
52
+ <IressRadio hiddenControl\>
53
+ <IressPanel\>
54
+ Hidden radio button </IressPanel\>
55
+ </IressRadio\>
56
+
57
+ Copy
58
+
59
+ ### [](#readonly)Readonly
60
+
61
+ The `readOnly` prop changes how the radio is rendered. It will only render if the radio is checked (alongside a hidden input that contains the `value` if it was set), otherwise it not be rendered.
62
+
63
+ It is understandable that this may not be the desired behavior for all use cases. If you need a radio that is not editable, but still visible, simply do not set the `readOnly` prop and set the `checked` prop instead.
64
+
65
+ Radio button
66
+
67
+ Hide code
68
+
69
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
70
+
71
+ <IressStack gutter\="sm"\>
72
+ <IressRadio
73
+ defaultChecked
74
+ readOnly
75
+ \>
76
+ Radio button </IressRadio\>
77
+ <IressRadio readOnly\>
78
+ Radio button </IressRadio\>
79
+ </IressStack\>
80
+
81
+ Copy
82
+
83
+ ### [](#touch)Touch
84
+
85
+ The `touch` prop adds the button-like border and padding to radio.
86
+
87
+ Radio button
88
+
89
+ Hide code
90
+
91
+ \[data-radix-scroll-area-viewport\] { scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; } \[data-radix-scroll-area-viewport\]::-webkit-scrollbar { display: none; } :where(\[data-radix-scroll-area-viewport\]) { display: flex; flex-direction: column; align-items: stretch; } :where(\[data-radix-scroll-area-content\]) { flex-grow: 1; }
92
+
93
+ <IressRadio touch\>
94
+ Radio button
95
+ </IressRadio\>
96
+
97
+ Copy
98
+
99
+ On this page
100
+
101
+ * [Overview](#overview)
102
+ * [Props](#props)
103
+ * [Examples](#examples)
104
+ * [Checked](#checked)
105
+ * [Hidden control](#hidden-control)
106
+ * [Readonly](#readonly)
107
+ * [Touch](#touch)