@iress-oss/ids-mcp-server 0.0.1-dev.3 → 0.0.1

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 (122) hide show
  1. package/LICENSE +193 -0
  2. package/README.md +159 -29
  3. package/build/componentHandlers.js +205 -0
  4. package/{dist → build}/config.js +5 -5
  5. package/build/index.js +51 -0
  6. package/{dist → build}/iressHandlers.js +46 -52
  7. package/{dist → build}/resourceHandlers.js +22 -23
  8. package/{dist → build}/searchHandlers.js +92 -107
  9. package/{dist → build}/toolHandler.js +13 -13
  10. package/build/tools.js +165 -0
  11. package/{dist → build}/utils.js +15 -11
  12. package/docs/api-reference.md +0 -0
  13. package/docs/best-practices.md +0 -0
  14. package/docs/configuration.md +0 -0
  15. package/docs/examples.md +0 -0
  16. package/docs/guidelines.md +269 -0
  17. package/{generated/docs → docs/ids}/components-autocomplete-docs.md +6 -6
  18. package/{generated/docs → docs/ids}/components-autocomplete-recipes-docs.md +51 -17
  19. package/{generated/docs → docs/ids}/components-card-recipes-docs.md +1 -1
  20. package/{generated/docs → docs/ids}/components-checkbox-docs.md +19 -6
  21. package/{generated/docs → docs/ids}/components-checkboxgroup-docs.md +18 -18
  22. package/{generated/docs → docs/ids}/components-checkboxgroup-recipes-docs.md +9 -9
  23. package/{generated/docs → docs/ids}/components-col-docs.md +1 -1
  24. package/{generated/docs → docs/ids}/components-combobox-docs.md +6 -6
  25. package/{generated/docs → docs/ids}/components-container-docs.md +42 -8
  26. package/{generated/docs → docs/ids}/components-filter-docs.md +65 -12
  27. package/{generated/docs → docs/ids}/components-form-docs.md +335 -341
  28. package/{generated/docs → docs/ids}/components-form-recipes-docs.md +1 -198
  29. package/{generated/docs → docs/ids}/components-hide-docs.md +70 -16
  30. package/{generated/docs → docs/ids}/components-icon-docs.md +4 -4
  31. package/{generated/docs → docs/ids}/components-input-recipes-docs.md +2 -2
  32. package/{generated/docs → docs/ids}/components-inputcurrency-recipes-docs.md +40 -6
  33. package/{generated/docs → docs/ids}/components-modal-docs.md +113 -3
  34. package/docs/ids/components-popover-docs.md +4 -0
  35. package/{generated/docs → docs/ids}/components-radiogroup-docs.md +21 -21
  36. package/{generated/docs → docs/ids}/components-richselect-docs.md +111 -149
  37. package/{generated/docs → docs/ids}/components-row-docs.md +4 -4
  38. package/{generated/docs → docs/ids}/components-skeleton-docs.md +3 -3
  39. package/{generated/docs → docs/ids}/components-skeleton-recipes-docs.md +1 -1
  40. package/{generated/docs → docs/ids}/components-skiplink-docs.md +1 -1
  41. package/{generated/docs → docs/ids}/components-slideout-docs.md +113 -3
  42. package/{generated/docs → docs/ids}/components-table-ag-grid-docs.md +137 -109
  43. package/{generated/docs → docs/ids}/components-table-docs.md +597 -92
  44. package/{generated/docs → docs/ids}/components-tabset-docs.md +2 -2
  45. package/{generated/docs → docs/ids}/components-tag-docs.md +1 -1
  46. package/{generated/docs → docs/ids}/components-toaster-docs.md +5 -5
  47. package/{generated/docs → docs/ids}/foundations-colours-docs.md +1 -1
  48. package/{generated/docs → docs/ids}/foundations-typography-docs.md +2 -7
  49. package/{generated/docs → docs/ids}/get-started-develop-docs.md +3 -3
  50. package/{generated/docs → docs/ids}/introduction-docs.md +4 -4
  51. package/{generated/docs → docs/ids}/patterns-loading-docs.md +2 -332
  52. package/docs/ids/resources-migration-guides-from-v4-to-v5-docs.md +639 -0
  53. package/docs/ids/themes-available-themes-docs.md +74 -0
  54. package/docs/ids/themes-tokens-docs.md +4580 -0
  55. package/docs/ids/versions-docs.md +27 -0
  56. package/docs/tutorials/basic-integration.md +0 -0
  57. package/package.json +15 -44
  58. package/LICENSE.txt +0 -201
  59. package/dist/componentHandlers.js +0 -241
  60. package/dist/componentHandlers.test.js +0 -380
  61. package/dist/index.js +0 -53
  62. package/dist/iressHandlers.test.js +0 -316
  63. package/dist/resourceHandlers.test.js +0 -352
  64. package/dist/searchHandlers.test.js +0 -524
  65. package/dist/toolHandler.test.js +0 -369
  66. package/dist/tools.js +0 -165
  67. package/dist/utils.test.js +0 -286
  68. package/generated/docs/components-popover-docs.md +0 -464
  69. package/generated/docs/foundations-accessibility-docs.md +0 -62
  70. package/generated/docs/foundations-consistency-docs.md +0 -52
  71. package/generated/docs/foundations-content-docs.md +0 -23
  72. package/generated/docs/foundations-introduction-docs.md +0 -17
  73. package/generated/docs/foundations-principles-docs.md +0 -70
  74. package/generated/docs/foundations-user-experience-docs.md +0 -63
  75. package/generated/docs/foundations-visual-design-docs.md +0 -46
  76. package/generated/docs/guidelines.md +0 -812
  77. package/generated/docs/resources-migration-guides-from-v4-to-v5-docs.md +0 -437
  78. package/generated/docs/themes-available-themes-docs.md +0 -66
  79. package/generated/docs/themes-tokens-docs.md +0 -1200
  80. package/generated/docs/versions-docs.md +0 -17
  81. /package/{dist → build}/types.js +0 -0
  82. /package/{generated/docs → docs/ids}/components-alert-docs.md +0 -0
  83. /package/{generated/docs → docs/ids}/components-badge-docs.md +0 -0
  84. /package/{generated/docs → docs/ids}/components-button-docs.md +0 -0
  85. /package/{generated/docs → docs/ids}/components-button-recipes-docs.md +0 -0
  86. /package/{generated/docs → docs/ids}/components-buttongroup-docs.md +0 -0
  87. /package/{generated/docs → docs/ids}/components-card-docs.md +0 -0
  88. /package/{generated/docs → docs/ids}/components-divider-docs.md +0 -0
  89. /package/{generated/docs → docs/ids}/components-expander-docs.md +0 -0
  90. /package/{generated/docs → docs/ids}/components-field-docs.md +0 -0
  91. /package/{generated/docs → docs/ids}/components-inline-docs.md +0 -0
  92. /package/{generated/docs → docs/ids}/components-input-docs.md +0 -0
  93. /package/{generated/docs → docs/ids}/components-inputcurrency-docs.md +0 -0
  94. /package/{generated/docs → docs/ids}/components-label-docs.md +0 -0
  95. /package/{generated/docs → docs/ids}/components-menu-docs.md +0 -0
  96. /package/{generated/docs → docs/ids}/components-menu-menuitem-docs.md +0 -0
  97. /package/{generated/docs → docs/ids}/components-navbar-docs.md +0 -0
  98. /package/{generated/docs → docs/ids}/components-navbar-recipes-docs.md +0 -0
  99. /package/{generated/docs → docs/ids}/components-panel-docs.md +0 -0
  100. /package/{generated/docs → docs/ids}/components-placeholder-docs.md +0 -0
  101. /package/{generated/docs → docs/ids}/components-popover-recipes-docs.md +0 -0
  102. /package/{generated/docs → docs/ids}/components-progress-docs.md +0 -0
  103. /package/{generated/docs → docs/ids}/components-radio-docs.md +0 -0
  104. /package/{generated/docs → docs/ids}/components-readonly-docs.md +0 -0
  105. /package/{generated/docs → docs/ids}/components-select-docs.md +0 -0
  106. /package/{generated/docs → docs/ids}/components-slider-docs.md +0 -0
  107. /package/{generated/docs → docs/ids}/components-spinner-docs.md +0 -0
  108. /package/{generated/docs → docs/ids}/components-stack-docs.md +0 -0
  109. /package/{generated/docs → docs/ids}/components-tabset-tab-docs.md +0 -0
  110. /package/{generated/docs → docs/ids}/components-text-docs.md +0 -0
  111. /package/{generated/docs → docs/ids}/components-toaster-toast-docs.md +0 -0
  112. /package/{generated/docs → docs/ids}/components-toggle-docs.md +0 -0
  113. /package/{generated/docs → docs/ids}/components-tooltip-docs.md +0 -0
  114. /package/{generated/docs → docs/ids}/components-validationmessage-docs.md +0 -0
  115. /package/{generated/docs → docs/ids}/contact-us-docs.md +0 -0
  116. /package/{generated/docs → docs/ids}/extensions-editor-docs.md +0 -0
  117. /package/{generated/docs → docs/ids}/extensions-editor-recipes-docs.md +0 -0
  118. /package/{generated/docs → docs/ids}/frequently-asked-questions-docs.md +0 -0
  119. /package/{generated/docs → docs/ids}/get-started-using-storybook-docs.md +0 -0
  120. /package/{generated/docs → docs/ids}/resources-changelog-docs.md +0 -0
  121. /package/{generated/docs → docs/ids}/resources-code-katas-docs.md +0 -0
  122. /package/{generated/docs → docs/ids}/themes-introduction-docs.md +0 -0
@@ -1,464 +0,0 @@
1
- [](#popover)Popover
2
- ===================
3
-
4
- Overview
5
- --------
6
-
7
- A popover is panel that is toggled on/off by an activator button or text input. The panel is positioned relative to its activator element.
8
-
9
- Toggle popover
10
-
11
- A little more information about this area.
12
-
13
- Hide code
14
-
15
- \[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; }
16
-
17
- <IressPopover activator\={<IressButton\>Toggle popover</IressButton\>}\>
18
- <IressPanel className\="iress-u-text"\>
19
- A little more information about this area. </IressPanel\>
20
- </IressPopover\>
21
-
22
- Copy
23
-
24
- [](#usage)Usage
25
- ---------------
26
-
27
- ### [](#activator)Activator
28
-
29
- For the popover to render, the `activator` property is required. It is the element used to trigger the popover, and works best with an `IressButton`.
30
-
31
- Anything added as the children of the `IressPopover` component will be displayed in the popover panel.
32
-
33
- Toggle popover
34
-
35
- A little more information about this area.
36
-
37
- Hide code
38
-
39
- \[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; }
40
-
41
- <IressPopover activator\={<IressButton\>Toggle popover</IressButton\>}\>
42
- <IressPanel className\="iress-u-text"\>
43
- A little more information about this area. </IressPanel\>
44
- </IressPopover\>
45
-
46
- Copy
47
-
48
- ### [](#the-show-property)The `show` property
49
-
50
- You can use state to control the popover by setting the `show` property to `true` or `false`. To sync your state with the popover, you can use the `onActivated` and `onDeactivated` prop.
51
-
52
- Show popover using state
53
-
54
- A little more information about this area.
55
-
56
- Hide code
57
-
58
- \[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; }
59
-
60
- import {
61
- IressButton,
62
- IressPanel,
63
- IressPopover,
64
- IressPopoverProps,
65
- } from '@iress-oss/ids-components';
66
- import { useState } from 'react';
67
- export const PopoverUsingState \= () \=> {
68
- const \[show, setShow\] \= useState(false);
69
- return (
70
- <IressPopover
71
-
72
- activator\={
73
- <IressButton onClick\={() \=> setShow(!show)}\>
74
- Show popover using state </IressButton\>
75
- }
76
- show\={show}
77
- onActivated\={() \=> setShow(true)}
78
- onDeactivated\={() \=> setShow(false)}
79
- \>
80
- <IressPanel\>A little more information about this area.</IressPanel\>
81
- </IressPopover\>
82
- );
83
- };
84
-
85
- Copy
86
-
87
- [](#behaviour)Behaviour
88
- -----------------------
89
-
90
- * The popover is opened when the activator is pressed
91
- * Once activated, the popover will set focus to popover content
92
- * When the activator is pressed whilst the popover is open, it will close
93
- * When the escape key is pressed while it is open, it will close
94
- * When the popover panel loses focus, it will close
95
-
96
- [](#examples)Examples
97
- ---------------------
98
-
99
- ### [](#align)Align
100
-
101
- The popover panel can be aligned in one of 12 positions relative to the activator element. The default value is `auto`.
102
-
103
- The popover panel's position will change dynamically based on the amount of space available in it's container window, so that it doesn't overflow.
104
-
105
- top-start
106
-
107
- Hello!
108
-
109
- top
110
-
111
- Hello!
112
-
113
- top-end
114
-
115
- Hello!
116
-
117
- left-start
118
-
119
- Hello!
120
-
121
- left
122
-
123
- Hello!
124
-
125
- left-end
126
-
127
- Hello!
128
-
129
- right-start
130
-
131
- Hello!
132
-
133
- right
134
-
135
- Hello!
136
-
137
- right-end
138
-
139
- Hello!
140
-
141
- bottom-start
142
-
143
- Hello!
144
-
145
- bottom
146
-
147
- Hello!
148
-
149
- bottom-end
150
-
151
- Hello!
152
-
153
- Hide code
154
-
155
- \[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; }
156
-
157
- <div
158
- style\={{
159
- padding: '80px 150px'
160
- }}
161
- \>
162
- <IressStack gutter\="md"\>
163
- <IressInline
164
- gutter\="sm"
165
- horizontalAlign\="center"
166
- \>
167
- <IressPopover
168
- activator\={<IressTooltip align\="bottom-start" tooltipText\="Tooltips and popovers can go together if needed!"\><IressButton\>top-start</IressButton\></IressTooltip\>}
169
- align\="top-start"
170
- \>
171
- <IressPanel className\="iress-u-text"\>
172
- Hello! </IressPanel\>
173
- </IressPopover\>
174
- <IressPopover
175
- activator\={<IressButton\>top</IressButton\>}
176
- align\="top"
177
- \>
178
- <IressPanel className\="iress-u-text"\>
179
- Hello! </IressPanel\>
180
- </IressPopover\>
181
- <IressPopover
182
- activator\={<IressButton\>top-end</IressButton\>}
183
- align\="top-end"
184
- \>
185
- <IressPanel className\="iress-u-text"\>
186
- Hello! </IressPanel\>
187
- </IressPopover\>
188
- </IressInline\>
189
- <IressInline horizontalAlign\="between"\>
190
- <IressStack gutter\="sm"\>
191
- <IressInline horizontalAlign\="left"\>
192
- <IressPopover
193
- activator\={<IressButton\>left-start</IressButton\>}
194
- align\="left-start"
195
- \>
196
- <IressPanel className\="iress-u-text"\>
197
- Hello! </IressPanel\>
198
- </IressPopover\>
199
- </IressInline\>
200
- <IressInline horizontalAlign\="left"\>
201
- <IressPopover
202
- activator\={<IressButton\>left</IressButton\>}
203
- align\="left"
204
- \>
205
- <IressPanel className\="iress-u-text"\>
206
- Hello! </IressPanel\>
207
- </IressPopover\>
208
- </IressInline\>
209
- <IressInline horizontalAlign\="left"\>
210
- <IressPopover
211
- activator\={<IressButton\>left-end</IressButton\>}
212
- align\="left-end"
213
- \>
214
- <IressPanel className\="iress-u-text"\>
215
- Hello! </IressPanel\>
216
- </IressPopover\>
217
- </IressInline\>
218
- </IressStack\>
219
- <IressStack gutter\="sm"\>
220
- <IressInline horizontalAlign\="right"\>
221
- <IressPopover
222
- activator\={<IressButton\>right-start</IressButton\>}
223
- align\="right-start"
224
- \>
225
- <IressPanel className\="iress-u-text"\>
226
- Hello! </IressPanel\>
227
- </IressPopover\>
228
- </IressInline\>
229
- <IressInline horizontalAlign\="right"\>
230
- <IressPopover
231
- activator\={<IressButton\>right</IressButton\>}
232
- align\="right"
233
- \>
234
- <IressPanel className\="iress-u-text"\>
235
- Hello! </IressPanel\>
236
- </IressPopover\>
237
- </IressInline\>
238
- <IressInline horizontalAlign\="right"\>
239
- <IressPopover
240
- activator\={<IressButton\>right-end</IressButton\>}
241
- align\="right-end"
242
- \>
243
- <IressPanel className\="iress-u-text"\>
244
- Hello! </IressPanel\>
245
- </IressPopover\>
246
- </IressInline\>
247
- </IressStack\>
248
- </IressInline\>
249
- <IressInline
250
- gutter\="sm"
251
- horizontalAlign\="center"
252
- \>
253
- <IressPopover
254
- activator\={<IressButton\>bottom-start</IressButton\>}
255
- align\="bottom-start"
256
- \>
257
- <IressPanel className\="iress-u-text"\>
258
- Hello! </IressPanel\>
259
- </IressPopover\>
260
- <IressPopover
261
- activator\={<IressButton\>bottom</IressButton\>}
262
- align\="bottom"
263
- \>
264
- <IressPanel className\="iress-u-text"\>
265
- Hello! </IressPanel\>
266
- </IressPopover\>
267
- <IressPopover
268
- activator\={<IressButton\>bottom-end</IressButton\>}
269
- align\="bottom-end"
270
- \>
271
- <IressPanel className\="iress-u-text"\>
272
- Hello! </IressPanel\>
273
- </IressPopover\>
274
- </IressInline\>
275
- </IressStack\>
276
- </div\>
277
-
278
- Copy
279
-
280
- ### [](#width)Width
281
-
282
- Occasionally, you may have more information to display than the width set by the theme can comfortably show.
283
-
284
- This is where the `--iress-width` CSS token come in, it will allow you to set the width for the popover panel. For better results, its recommended to use it with the `--iress-max-width` CSS token, to allow your popovers to be responsive.
285
-
286
- **Note:** The `width` prop has been deprecated in favour of the CSS tokens.
287
-
288
- Toggle popover
289
-
290
- Hide code
291
-
292
- \[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; }
293
-
294
- <IressPopover
295
- activator\={<IressButton\>Toggle popover</IressButton\>}
296
- container\={document.body}
297
- style\={{
298
- '--iress-max-width': '30rem',
299
- '--iress-width': '100%'
300
- }}
301
- \>
302
- <IressPanel\>
303
- <IressRow\>
304
- <IressCol span\={6}\>
305
- <IressText\>
306
- Client </IressText\>
307
- <IressText noGutter\>
308
- <ul\>
309
- <li\>
310
- Entity id 582323 </li\>
311
- <li\>
312
- Fruit Apple </li\>
313
- <li\>
314
- Preferred email mamaduke@gmail.com </li\>
315
- </ul\>
316
- </IressText\>
317
- </IressCol\>
318
- <IressCol span\={6}\>
319
- <IressText\>
320
- Client </IressText\>
321
- <IressText noGutter\>
322
- <ul\>
323
- <li\>
324
- Entity id 8766 </li\>
325
- <li\>
326
- Fruit Orange </li\>
327
- <li\>
328
- Preferred email felicity@yahoo.com </li\>
329
- </ul\>
330
- </IressText\>
331
- </IressCol\>
332
- </IressRow\>
333
- </IressPanel\>
334
- </IressPopover\>
335
-
336
- Copy
337
-
338
- ### [](#overflow)Overflow
339
-
340
- Popovers can contain a wide variety of different content, including components that use popovers themselves (like Combobox). This can cause issues with overflowing content, so by default we allow popovers to grow in height based on their content.
341
-
342
- If you need to fix the height of a popover, you can set a maximum height using the `--iress-max-height` theme token on your popover. You'll also need to change the overflow behaviour by setting the `--iress-overflow-y` theme token:
343
-
344
- Normal popover
345
-
346
- Fixed height popover
347
-
348
- Hide code
349
-
350
- \[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; }
351
-
352
- <IressInline gutter\="md"\>
353
- <IressPopover
354
- activator\={<IressButton\>Normal popover</IressButton\>}
355
- align\="bottom-start"
356
- container\={document.body}
357
- \>
358
- <IressPanel\>
359
- <IressText noGutter\>
360
- <p\>
361
- His head is gone, it is like it is been erased... Erased from existence. That was the day I invented time travel. I remember it vividly. I was standing on the edge of my toilet hanging a clock, the porces was wet, I slipped, hit my head on the edge of the sink. And when I came to I had a revelation, a picture, a picture in my head, a picture of this. This is what makes time travel possible. The flux capacitor. </p\>
362
- </IressText\>
363
- </IressPanel\>
364
- </IressPopover\>
365
- <IressPopover
366
- activator\={<IressButton\>Fixed height popover</IressButton\>}
367
- align\="bottom-start"
368
- container\={document.body}
369
- style\={{
370
- '--iress-max-height': '200px',
371
- '--iress-overflow-y': 'auto'
372
- }}
373
- \>
374
- <IressPanel\>
375
- <IressText noGutter\>
376
- <p\>
377
- His head is gone, it is like it is been erased... Erased from existence. That was the day I invented time travel. I remember it vividly. I was standing on the edge of my toilet hanging a clock, the porces was wet, I slipped, hit my head on the edge of the sink. And when I came to I had a revelation, a picture, a picture in my head, a picture of this. This is what makes time travel possible. The flux capacitor. </p\>
378
- </IressText\>
379
- </IressPanel\>
380
- </IressPopover\>
381
- </IressInline\>
382
-
383
- Copy
384
-
385
- ### [](#container)Container
386
-
387
- By default, the popover will be rendered where its parent is rendered. If you need to render the popover in a different container, you can use the `container` prop.
388
-
389
- **Note:** If the `container` doesn’t exist when the portal is mounted, ensure you pass an element directly (not a ref) and specify null as the default value before it is set. This lets it wait for the root to be available.
390
-
391
- This will be the case when you are rendering into its parent container, which is not yet rendered when the popover is mounted. The example below shows how to use state instead of a reference to change where the popover is rendered.
392
-
393
- Toggle
394
-
395
- This content will be rendered in the parent container
396
-
397
- Hide code
398
-
399
- \[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; }
400
-
401
- export const PopoverParentContainer \= () \=> {
402
- const \[parentContainer, setParentContainer\] \= useState<HTMLDivElement | null\>(
403
- null,
404
- );
405
- return (
406
- <div id\="parent" ref\={setParentContainer}\>
407
- <IressPopover
408
- activator\={<IressButton\>Toggle</IressButton\>}
409
- container\={parentContainer}
410
- \>
411
- <IressPanel\>
412
- This content will be rendered in the parent container </IressPanel\>
413
- </IressPopover\>
414
- </div\>
415
- );
416
- };
417
-
418
- Copy
419
-
420
- [](#iressinputpopover)`IressInputPopover`
421
- -----------------------------------------
422
-
423
- If you need a popover that is triggered by input changes, you can use the `IressInputPopover` component. This component has an additional `minLength` prop that allows you to specify the minimum number of characters required before the popover is shown.
424
-
425
- ### [](#behaviour-1)Behaviour
426
-
427
- Input popovers work slightly different to normal popovers, where the focus inside the popover is **virtual**. This means that the popover content will act as if it is in focus, but the input will still be the actual focus.
428
-
429
- * The popover is opened when the input has content that meets the `minLength` requirement
430
- * The popover is closed when the input no longer meets the `minLength` requirement
431
- * Once activated, virtual focus will be set to the popover content if it contains a menu (e.g. items will highlight as if in focus, but the user can still type in the input)
432
- * When the `minLength` is 0, it will open on focus
433
- * When the escape key is pressed while it is open, it will close
434
- * When the input loses focus, it will close
435
-
436
- Hide code
437
-
438
- \[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; }
439
-
440
- <IressInputPopover
441
- activator\={<IressInput />}
442
- container\={document.body}
443
- \>
444
- <IressPanel className\="iress-u-text"\>
445
- A little more information about this area. </IressPanel\>
446
- </IressInputPopover\>
447
-
448
- Copy
449
-
450
- On this page
451
-
452
- * [Overview](#overview)
453
- * [Props](#props)
454
- * [Usage](#usage)
455
- * [Activator](#activator)
456
- * [The show property](#the-show-property)
457
- * [Behaviour](#behaviour)
458
- * [Examples](#examples)
459
- * [Align](#align)
460
- * [Width](#width)
461
- * [Overflow](#overflow)
462
- * [Container](#container)
463
- * [IressInputPopover](#iressinputpopover)
464
- * [Behaviour](#behaviour-1)
@@ -1,62 +0,0 @@
1
- [](#accessibility)Accessibility
2
- ===============================
3
-
4
- Accessibility is everyone's responsibility. It ensures that all users, regardless of their abilities or disabilities, can access and interact with our components effectively. This document outlines the key practices for building accessible components we follow within IDS.
5
-
6
- Please note: The default behaviour of our components is to be accessible, but it is the responsibility of the product to ensure that they are used correctly in accessibile context, or any modifications made to them do not compromise accessibility.
7
-
8
- [](#interaction-patterns)Interaction Patterns
9
- ---------------------------------------------
10
-
11
- ### [](#keyboard-navigation)Keyboard Navigation
12
-
13
- * Support standard keyboard shortcuts (Tab, Arrow keys, Enter, Space, Escape)
14
- * Implement proper focus order and visual focus indicators
15
- * Provide keyboard alternatives for mouse-only interactions
16
- * Follow established ARIA patterns for complex widgets
17
-
18
- ### [](#touch-interactions)Touch Interactions
19
-
20
- * Provide adequate touch target sizes (minimum 44px)
21
- * Implement touch-friendly spacing between interactive elements
22
- * Support gesture-based interactions where appropriate
23
- * Ensure consistent behaviour across device types
24
-
25
- ### [](#loading-and-feedback)Loading and Feedback
26
-
27
- * Use appropriate loading patterns based on context:
28
- * **Page**: Full page loading states
29
- * **Component**: Local loading within sections
30
- * **Button**: Inline loading for form submissions
31
- * **Validate**: Server-side validation feedback
32
- * Provide clear success and error feedback
33
- * Use progressive enhancement for better perceived performance
34
-
35
- * * *
36
-
37
- [](#responsive-design)Responsive Design
38
- ---------------------------------------
39
-
40
- ### [](#breakpoint-strategy)Breakpoint Strategy
41
-
42
- * Implement mobile-first responsive design
43
- * Use consistent breakpoint values across all components
44
- * Provide appropriate component variants for different screen sizes
45
- * Consider content priority and progressive disclosure on smaller screens
46
-
47
- ### [](#adaptive-behaviour)Adaptive Behaviour
48
-
49
- * Reduce option counts on mobile devices where appropriate
50
- * Implement responsive navigation patterns
51
- * Adjust spacing and sizing for different contexts
52
- * Maintain usability across all supported devices
53
-
54
- On this page
55
-
56
- * [Interaction Patterns](#interaction-patterns)
57
- * [Keyboard Navigation](#keyboard-navigation)
58
- * [Touch Interactions](#touch-interactions)
59
- * [Loading and Feedback](#loading-and-feedback)
60
- * [Responsive Design](#responsive-design)
61
- * [Breakpoint Strategy](#breakpoint-strategy)
62
- * [Adaptive Behaviour](#adaptive-behaviour)
@@ -1,52 +0,0 @@
1
- [](#using-components-consistently)Using components consistently
2
- ===============================================================
3
-
4
- [](#buttons)Buttons
5
- -------------------
6
-
7
- * **Primary**: Limit to one per view for main call-to-action
8
- * **Secondary**: Use for secondary actions
9
- * **Tertiary**: Extra affordance between secondary actions
10
- * **Link**: Button styled as link (avoid with icon-only content)
11
- * **Danger**: Destructive actions requiring extra confirmation
12
- * **Positive/Negative**: Financial transactions (buy/sell)
13
-
14
- [](#forms)Forms
15
- ---------------
16
-
17
- * Always use `IressField` wrapper for proper label, hint, and error placement
18
- * Provide clear validation feedback with appropriate error messages
19
- * Use consistent input sizing based on expected content length
20
- * Implement proper form state management and accessibility
21
-
22
- [](#navigation)Navigation
23
- -------------------------
24
-
25
- * Use semantic HTML5 navigation elements
26
- * Provide skip links for keyboard users
27
- * Implement proper ARIA labelling for navigation sections
28
- * Ensure consistent navigation patterns across applications
29
-
30
- [](#data-display)Data Display
31
- -----------------------------
32
-
33
- * Use semantic table structures with proper headers
34
- * Provide clear visual hierarchy in data presentations
35
- * Implement consistent sorting and filtering patterns
36
- * Use appropriate loading states for data-heavy components
37
-
38
- [](#modals-and-overlays)Modals and Overlays
39
- -------------------------------------------
40
-
41
- * Reserve modals for critical tasks requiring full attention
42
- * Provide multiple dismissal methods (backdrop, escape key, close button)
43
- * Implement proper focus management and restoration
44
- * Use slideouts for supplementary tasks where underlying content needs visibility
45
-
46
- On this page
47
-
48
- * [Buttons](#buttons)
49
- * [Forms](#forms)
50
- * [Navigation](#navigation)
51
- * [Data Display](#data-display)
52
- * [Modals and Overlays](#modals-and-overlays)
@@ -1,23 +0,0 @@
1
- [](#content)Content
2
- ===================
3
-
4
- [](#microcopy-guidelines)Microcopy Guidelines
5
- ---------------------------------------------
6
-
7
- * Use clear, concise language that matches user mental models
8
- * Provide helpful error messages with actionable guidance
9
- * Implement consistent tone of voice across all interface text
10
- * Use progressive disclosure for complex information
11
-
12
- [](#iconography)Iconography
13
- ---------------------------
14
-
15
- * Use icons consistently with established meanings
16
- * Provide screen reader text for meaningful icons
17
- * Avoid using icons as the sole means of communication
18
- * Maintain consistent icon sizing and alignment
19
-
20
- On this page
21
-
22
- * [Microcopy Guidelines](#microcopy-guidelines)
23
- * [Iconography](#iconography)
@@ -1,17 +0,0 @@
1
- [](#introduction)Introduction
2
- =============================
3
-
4
- The IDS and product design team use the foundations to create a consistent user experience across all Iress products. This includes design principles and guidelines that ensure a cohesive look and feel.
5
-
6
- 1. [Principles](./?path=/docs/foundations-principles--docs)
7
- 2. [Accessibility](./?path=/docs/foundations-accessibility--docs)
8
- 3. [Colours](./?path=/docs/foundations-colours--docs)
9
- 4. [Typography](./?path=/docs/foundations-typography--docs)
10
- 5. [Visual Design](./?path=/docs/foundations-visual-design--docs)
11
- 6. [Consistency](./?path=/docs/foundations-consistency--docs)
12
- 7. [Content](./?path=/docs/foundations-content--docs)
13
- 8. [User Experience](./?path=/docs/foundations-user-experience--docs)
14
-
15
- _This document is a living standard. Revisit and revise regularly to reflect evolving needs, technologies, and user expectations._
16
-
17
- On this page
@@ -1,70 +0,0 @@
1
- [](#core-design-principles)Core Design Principles
2
- =================================================
3
-
4
- [](#consistency)Consistency
5
- ---------------------------
6
-
7
- * Maintain brand consistency across all applications and experiences
8
- * Use standardised component naming conventions (all components start with `Iress` prefix)
9
- * Leverage shared design tokens for spacing, colours, typography, and interactive states
10
- * Ensure consistent behaviour patterns across similar components
11
-
12
- [](#accessibility-first)Accessibility First
13
- -------------------------------------------
14
-
15
- * Meet or exceed WCAG 2.1 Level AA Accessibility Guidelines
16
- * Provide proper colour contrast ratios (minimum 4.5:1 for AA, 7:1 for AAA)
17
- * Implement comprehensive keyboard navigation support
18
- * Include screen reader compatibility with appropriate ARIA attributes
19
- * Support focus management and skip navigation patterns
20
- * Document accessibility considerations and requirements
21
-
22
- [](#clarity-and-usability)Clarity and Usability
23
- -----------------------------------------------
24
-
25
- * Prioritise clear visual hierarchy through typography scales and spacing systems
26
- * Use progressive disclosure to manage complexity
27
- * Provide immediate feedback for user actions (loading states, validation, etc.)
28
- * Design for touch-friendly interfaces with adequate target sizes
29
-
30
- [](#developer-experience)Developer Experience
31
- ---------------------------------------------
32
-
33
- * Maintain clean component APIs with predictable prop patterns
34
- * Provide comprehensive documentation with usage examples
35
- * Include common patterns and anti-patterns
36
- * Support both controlled and uncontrolled component patterns
37
- * Enable efficient testing strategies with semantic roles and accessible queries
38
- * Maintain up-to-date prop documentation and type definitions
39
-
40
- [](#quality-assurance)Quality assurance
41
- ---------------------------------------
42
-
43
- * Test components across supported browsers and devices
44
- * Validate accessibility compliance with automated and manual testing
45
- * Ensure proper keyboard navigation functionality
46
- * Test with assistive technologies (screen readers, voice control)
47
-
48
- ### [](#code-standards)Code Standards
49
-
50
- * Follow consistent naming conventions for CSS classes and component props
51
- * Use semantic HTML elements where appropriate
52
- * Implement proper TypeScript typing for better developer experience
53
- * Maintain clean separation between presentation and logic
54
-
55
- ### [](#performance-considerations)Performance Considerations
56
-
57
- * Optimise component rendering and re-rendering
58
- * Implement appropriate code splitting strategies
59
- * Use efficient animation and transition patterns
60
- * Consider bundle size impact of component dependencies
61
-
62
- On this page
63
-
64
- * [Consistency](#consistency)
65
- * [Accessibility First](#accessibility-first)
66
- * [Clarity and Usability](#clarity-and-usability)
67
- * [Developer Experience](#developer-experience)
68
- * [Quality assurance](#quality-assurance)
69
- * [Code Standards](#code-standards)
70
- * [Performance Considerations](#performance-considerations)