@iress-oss/ids-mcp-server 6.0.0-alpha.1-canary-20251204032753-fe18cab → 6.0.0-alpha.1-canary-20251204040305-3639454

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 (99) hide show
  1. package/generated/docs/components_components-alert-docs.md +1054 -0
  2. package/generated/docs/components_components-autocomplete-docs.md +3304 -0
  3. package/generated/docs/components_components-autocomplete-recipes-docs.md +98 -0
  4. package/generated/docs/components_components-badge-docs.md +312 -0
  5. package/generated/docs/components_components-button-docs.md +2339 -0
  6. package/generated/docs/components_components-buttongroup-docs.md +980 -0
  7. package/generated/docs/components_components-card-docs.md +1970 -0
  8. package/generated/docs/components_components-checkbox-docs.md +1083 -0
  9. package/generated/docs/components_components-checkboxgroup-docs.md +1597 -0
  10. package/generated/docs/components_components-checkboxgroup-recipes-docs.md +209 -0
  11. package/generated/docs/components_components-col-docs.md +755 -0
  12. package/generated/docs/components_components-container-docs.md +172 -0
  13. package/generated/docs/components_components-divider-docs.md +235 -0
  14. package/generated/docs/components_components-expander-docs.md +428 -0
  15. package/generated/docs/components_components-field-docs.md +3345 -0
  16. package/generated/docs/components_components-filter-docs.md +4091 -0
  17. package/generated/docs/components_components-hide-docs.md +450 -0
  18. package/generated/docs/components_components-icon-docs.md +1017 -0
  19. package/generated/docs/components_components-image-docs.md +168 -0
  20. package/generated/docs/components_components-inline-docs.md +1962 -0
  21. package/generated/docs/components_components-input-docs.md +1388 -0
  22. package/generated/docs/components_components-input-recipes-docs.md +349 -0
  23. package/generated/docs/components_components-inputcurrency-docs.md +636 -0
  24. package/generated/docs/components_components-inputcurrency-recipes-docs.md +208 -0
  25. package/generated/docs/components_components-introduction-docs.md +448 -0
  26. package/generated/docs/components_components-label-docs.md +229 -0
  27. package/generated/docs/components_components-link-docs.md +454 -0
  28. package/generated/docs/components_components-menu-docs.md +2219 -0
  29. package/generated/docs/components_components-menu-menuitem-docs.md +1455 -0
  30. package/generated/docs/components_components-modal-docs.md +2002 -0
  31. package/generated/docs/components_components-panel-docs.md +342 -0
  32. package/generated/docs/components_components-placeholder-docs.md +98 -0
  33. package/generated/docs/components_components-popover-docs.md +1631 -0
  34. package/generated/docs/components_components-popover-recipes-docs.md +537 -0
  35. package/generated/docs/components_components-progress-docs.md +128 -0
  36. package/generated/docs/components_components-provider-docs.md +123 -0
  37. package/generated/docs/components_components-radio-docs.md +499 -0
  38. package/generated/docs/components_components-radiogroup-docs.md +1573 -0
  39. package/generated/docs/components_components-readonly-docs.md +277 -0
  40. package/generated/docs/components_components-richselect-docs.md +6101 -0
  41. package/generated/docs/components_components-row-docs.md +2172 -0
  42. package/generated/docs/components_components-select-docs.md +1110 -0
  43. package/generated/docs/components_components-skeleton-docs.md +467 -0
  44. package/generated/docs/components_components-skeleton-recipes-docs.md +110 -0
  45. package/generated/docs/components_components-skiplink-docs.md +220 -0
  46. package/generated/docs/components_components-slideout-docs.md +1910 -0
  47. package/generated/docs/components_components-slider-docs.md +1284 -0
  48. package/generated/docs/components_components-spinner-docs.md +90 -0
  49. package/generated/docs/components_components-stack-docs.md +730 -0
  50. package/generated/docs/components_components-table-docs.md +4038 -0
  51. package/generated/docs/components_components-tabset-docs.md +955 -0
  52. package/generated/docs/components_components-tabset-tab-docs.md +342 -0
  53. package/generated/docs/components_components-tag-docs.md +410 -0
  54. package/generated/docs/components_components-text-docs.md +593 -0
  55. package/generated/docs/components_components-toaster-docs.md +451 -0
  56. package/generated/docs/components_components-toggle-docs.md +513 -0
  57. package/generated/docs/components_components-tooltip-docs.md +564 -0
  58. package/generated/docs/components_components-validationmessage-docs.md +608 -0
  59. package/generated/docs/components_contact-us-docs.md +9 -0
  60. package/generated/docs/components_foundations-accessibility-docs.md +33 -0
  61. package/generated/docs/components_foundations-consistency-docs.md +44 -0
  62. package/generated/docs/components_foundations-content-docs.md +18 -0
  63. package/generated/docs/components_foundations-introduction-docs.md +17 -0
  64. package/generated/docs/components_foundations-principles-docs.md +60 -0
  65. package/generated/docs/components_foundations-responsive-layout-docs.md +2692 -0
  66. package/generated/docs/components_foundations-user-experience-docs.md +53 -0
  67. package/generated/docs/components_foundations-visual-design-docs.md +39 -0
  68. package/generated/docs/components_foundations-z-index-stacking-docs.md +288 -0
  69. package/generated/docs/components_frequently-asked-questions-docs.md +44 -0
  70. package/generated/docs/components_get-started-develop-docs.md +47 -0
  71. package/generated/docs/components_get-started-using-storybook-docs.md +55 -0
  72. package/generated/docs/components_introduction-docs.md +85 -0
  73. package/generated/docs/components_patterns-form-docs.md +2469 -0
  74. package/generated/docs/components_patterns-form-recipes-docs.md +1597 -0
  75. package/generated/docs/components_patterns-introduction-docs.md +31 -0
  76. package/generated/docs/components_patterns-loading-docs.md +1908 -0
  77. package/generated/docs/components_patterns-shadow-docs.md +195 -0
  78. package/generated/docs/components_resources-code-katas-docs.md +25 -0
  79. package/generated/docs/components_resources-introduction-docs.md +28 -0
  80. package/generated/docs/components_resources-mcp-server-docs.md +23 -0
  81. package/generated/docs/components_resources-migration-guides-from-v4-to-v5-docs.md +142 -0
  82. package/generated/docs/components_styling-props-colour-docs.md +91 -0
  83. package/generated/docs/components_styling-props-elevation-docs.md +69 -0
  84. package/generated/docs/components_styling-props-radius-docs.md +63 -0
  85. package/generated/docs/components_styling-props-reference-docs.md +160 -0
  86. package/generated/docs/components_styling-props-screen-readers-docs.md +66 -0
  87. package/generated/docs/components_styling-props-sizing-docs.md +217 -0
  88. package/generated/docs/components_styling-props-spacing-docs.md +545 -0
  89. package/generated/docs/components_styling-props-typography-docs.md +66 -0
  90. package/generated/docs/components_versions-docs.md +14 -0
  91. package/generated/docs/guidelines.md +3083 -0
  92. package/generated/docs/introduction-docs.md +37 -0
  93. package/generated/docs/tokens_colour-docs.md +479 -0
  94. package/generated/docs/tokens_elevation-docs.md +39 -0
  95. package/generated/docs/tokens_introduction-docs.md +150 -0
  96. package/generated/docs/tokens_radius-docs.md +67 -0
  97. package/generated/docs/tokens_spacing-docs.md +87 -0
  98. package/generated/docs/tokens_typography-docs.md +305 -0
  99. package/package.json +2 -2
@@ -0,0 +1,3083 @@
1
+ # Design Guidelines
2
+
3
+ This document contains all design foundations and guidelines for the design system.
4
+
5
+ ## React components / Introduction
6
+
7
+ Introduction
8
+ ============
9
+
10
+ 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.
11
+
12
+ 1. [Principles](/?path=/docs/foundations-principles--docs)
13
+ 2. [Accessibility](/?path=/docs/foundations-accessibility--docs)
14
+ 3. [Tokens](/?path=/docs/foundations-tokens-introduction--docs)
15
+ 4. [Breakpoints](/?path=/docs/foundations-breakpoints--docs)
16
+ 5. [Consistency](/?path=/docs/foundations-consistency--docs)
17
+ 6. [Grid](/?path=/docs/foundations-grid--docs)
18
+ 7. [Content](/?path=/docs/foundations-content--docs)
19
+ 8. [User Experience](/?path=/docs/foundations-user-experience--docs)
20
+ 9. [Visual Design](/?path=/docs/foundations-visual-design--docs)
21
+ 10. [Z-index (stacking)](/?path=/docs/foundations-z-index-stacking--docs)
22
+
23
+ _This document is a living standard. Revisit and revise regularly to reflect evolving needs, technologies, and user expectations._
24
+
25
+ ## React components / Principles
26
+
27
+ Core Design Principles
28
+ ======================
29
+
30
+ Consistency
31
+ -----------
32
+
33
+ * Maintain brand consistency across all applications and experiences
34
+ * Use standardised component naming conventions (all components start with `Iress` prefix)
35
+ * Leverage shared design tokens for spacing, colours, typography, and interactive states
36
+ * Ensure consistent behaviour patterns across similar components
37
+
38
+ Accessibility First
39
+ -------------------
40
+
41
+ * Meet or exceed WCAG 2.1 Level AA Accessibility Guidelines
42
+ * Provide proper colour contrast ratios (minimum 4.5:1 for AA, 7:1 for AAA)
43
+ * Implement comprehensive keyboard navigation support
44
+ * Include screen reader compatibility with appropriate ARIA attributes
45
+ * Support focus management and skip navigation patterns
46
+ * Document accessibility considerations and requirements
47
+
48
+ Clarity and Usability
49
+ ---------------------
50
+
51
+ * Prioritise clear visual hierarchy through typography scales and spacing systems
52
+ * Use progressive disclosure to manage complexity
53
+ * Provide immediate feedback for user actions (loading states, validation, etc.)
54
+ * Design for touch-friendly interfaces with adequate target sizes
55
+
56
+ Developer Experience
57
+ --------------------
58
+
59
+ * Maintain clean component APIs with predictable prop patterns
60
+ * Provide comprehensive documentation with usage examples
61
+ * Include common patterns and anti-patterns
62
+ * Support both controlled and uncontrolled component patterns
63
+ * Enable efficient testing strategies with semantic roles and accessible queries
64
+ * Maintain up-to-date prop documentation and type definitions
65
+
66
+ Quality assurance
67
+ -----------------
68
+
69
+ * Test components across supported browsers and devices
70
+ * Validate accessibility compliance with automated and manual testing
71
+ * Ensure proper keyboard navigation functionality
72
+ * Test with assistive technologies (screen readers, voice control)
73
+
74
+ ### Code Standards
75
+
76
+ * Follow consistent naming conventions for CSS classes and component props
77
+ * Use semantic HTML elements where appropriate
78
+ * Implement proper TypeScript typing for better developer experience
79
+ * Maintain clean separation between presentation and logic
80
+
81
+ ### Performance Considerations
82
+
83
+ * Optimise component rendering and re-rendering
84
+ * Implement appropriate code splitting strategies
85
+ * Use efficient animation and transition patterns
86
+ * Consider bundle size impact of component dependencies
87
+
88
+ ## React components / Accessibility
89
+
90
+ Accessibility
91
+ =============
92
+
93
+ 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.
94
+
95
+ 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.
96
+
97
+ Interaction Patterns
98
+ --------------------
99
+
100
+ ### Keyboard Navigation
101
+
102
+ * Support standard keyboard shortcuts (Tab, Arrow keys, Enter, Space, Escape)
103
+ * Implement proper focus order and visual focus indicators
104
+ * Provide keyboard alternatives for mouse-only interactions
105
+ * Follow established ARIA patterns for complex widgets
106
+
107
+ ### Touch Interactions
108
+
109
+ * Provide adequate touch target sizes (minimum 44px)
110
+ * Implement touch-friendly spacing between interactive elements
111
+ * Support gesture-based interactions where appropriate
112
+ * Ensure consistent behaviour across device types
113
+
114
+ ### Loading and Feedback
115
+
116
+ * Use appropriate loading patterns based on context:
117
+ * **Page**: Full page loading states
118
+ * **Component**: Local loading within sections
119
+ * **Button**: Inline loading for form submissions
120
+ * **Validate**: Server-side validation feedback
121
+ * Provide clear success and error feedback
122
+ * Use progressive enhancement for better perceived performance
123
+
124
+ ## React components / Responsive layout
125
+
126
+ Responsive layout
127
+ =================
128
+
129
+ The Iress Design System (IDS) is built with responsive design principles in mind. This means that our components are designed to adapt to different screen sizes and orientations, ensuring a consistent user experience across devices.
130
+
131
+ Breakpoints
132
+ -----------
133
+
134
+ * Implement mobile-first responsive design
135
+ * Use consistent breakpoint values across all components
136
+ * Provide appropriate component variants for different screen sizes
137
+ * Consider content priority and progressive disclosure on smaller screens
138
+
139
+ [](./iframe.html?id=foundations-responsive-layout--breakpoints)
140
+
141
+ ### Breakpoints supported by IDS
142
+
143
+ | Size | Screen Width | Media Query | Active Viewport | Example Viewport |
144
+ | --- | --- | --- | --- | --- |
145
+ | xs | 0 - 575px | (min-width: 0) and (max-width: 575px) | 100% | 360px width |
146
+ | sm | 576px - 767px | (min-width: 576px) and (max-width: 767px) | 100% | 767px width |
147
+ | md | 768px - 1023px | (min-width: 768px) and (max-width: 1023px) | 100% | 962px width |
148
+ | lg | 1024px - 1199px | (min-width: 1024px) and (max-width: 1199px) | 100% | 1180px width |
149
+ | xl | 1200px - 1499px | (min-width: 1200px) and (max-width: 1499px) | 1280px | 1366px width |
150
+ | xxl | 1500px and above | (min-width: 1500px) | 1280px | 1920px width |
151
+
152
+ ```
153
+
154
+ <IressTable
155
+ caption\={<IressText element\="h3" textAlign\="left"\>Breakpoints supported by IDS</IressText\>}
156
+ rows\={\[
157
+ {
158
+ activeViewport: '100%',
159
+ exampleViewport: '360px width',
160
+ mediaQuery: '(min-width: 0) and (max-width: 575px)',
161
+ screenWidth: '0 - 575px',
162
+ size: 'xs'
163
+ },
164
+ {
165
+ activeViewport: '100%',
166
+ exampleViewport: '767px width',
167
+ mediaQuery: '(min-width: 576px) and (max-width: 767px)',
168
+ screenWidth: '576px - 767px',
169
+ size: 'sm'
170
+ },
171
+ {
172
+ activeViewport: '100%',
173
+ exampleViewport: '962px width',
174
+ mediaQuery: '(min-width: 768px) and (max-width: 1023px)',
175
+ screenWidth: '768px - 1023px',
176
+ size: 'md'
177
+ },
178
+ {
179
+ activeViewport: '100%',
180
+ exampleViewport: '1180px width',
181
+ mediaQuery: '(min-width: 1024px) and (max-width: 1199px)',
182
+ screenWidth: '1024px - 1199px',
183
+ size: 'lg'
184
+ },
185
+ {
186
+ activeViewport: '1280px',
187
+ exampleViewport: '1366px width',
188
+ mediaQuery: '(min-width: 1200px) and (max-width: 1499px)',
189
+ screenWidth: '1200px - 1499px',
190
+ size: 'xl'
191
+ },
192
+ {
193
+ activeViewport: '1280px',
194
+ exampleViewport: '1920px width',
195
+ mediaQuery: '(min-width: 1500px)',
196
+ screenWidth: '1500px and above',
197
+ size: 'xxl'
198
+ }
199
+ \]}
200
+ />
201
+
202
+ ```
203
+
204
+ #### Props
205
+
206
+ | Name | Description | Default | Control |
207
+ | --- | --- | --- | --- |
208
+ | alternate |
209
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
210
+
211
+ boolean
212
+
213
+ |
214
+
215
+ false
216
+
217
+ | Set boolean |
218
+ | caption\* |
219
+
220
+ Caption that describes the data in the table, required for accessibility.
221
+
222
+ ReactNode
223
+
224
+ | \- |
225
+
226
+ RAW
227
+
228
+ caption :
229
+
230
+ {
231
+
232
+ * $$typeof : Symbol(react.transitional.element)
233
+ * type : ({ className, ...restProps }) => { \_s(); const Component = useMemo( () => styled(restProps.element ?? "div", text), \[restProps.element\] ); return /\* @\_\_PURE\_\_ \*/ jsxDEV( Component, { ...restProps, className: cx(className, GlobalCSSClass.Text) }, void 0, false, { fileName: "/home/runner/work/design-system/design-system/packages/components/src/components/Text/Text.tsx", lineNumber: 46, columnNumber: 5 }, this ); }
234
+ * key : null
235
+ * props :
236
+
237
+ {...} 3 keys
238
+
239
+ * \_owner : null
240
+ * \_store :
241
+
242
+ {...} 0 keys
243
+
244
+
245
+ }
246
+
247
+ |
248
+ | children |
249
+
250
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
251
+
252
+ ReactNode
253
+
254
+ | \- | Set object |
255
+ | columns |
256
+
257
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
258
+
259
+ TableColumn<TRow, TVal>\[\]
260
+
261
+ | \- | Set object |
262
+ | compact |
263
+
264
+ Compact view of the table, used for tables with a lot of data.
265
+
266
+ boolean
267
+
268
+ |
269
+
270
+ false
271
+
272
+ | Set boolean |
273
+ | empty |
274
+
275
+ Content to be show when there is no rowData (columns must also be provided).
276
+
277
+ ReactNode
278
+
279
+ | \- | Set object |
280
+ | hiddenCaption |
281
+
282
+ When set to true, the table caption will be visually hidden.
283
+
284
+ boolean
285
+
286
+ | \- | Set boolean |
287
+ | hiddenHeader |
288
+
289
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
290
+
291
+ boolean
292
+
293
+ | \- | Set boolean |
294
+ | hover |
295
+
296
+ When set to true, hovering over a row will trigger a UI change.
297
+
298
+ boolean
299
+
300
+ | \- | Set boolean |
301
+ | removeRowBorders |
302
+
303
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
304
+
305
+ boolean
306
+
307
+ |
308
+
309
+ false
310
+
311
+ | Set boolean |
312
+ | rowProps |
313
+
314
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
315
+
316
+ TableRowsProps\['rowProps'\]
317
+
318
+ | \- | Set object |
319
+ | rows |
320
+
321
+ Each object in the array contains the data for a row.
322
+
323
+ TRow\[\]
324
+
325
+ | \[\] |
326
+
327
+ RAW
328
+
329
+ * rows :
330
+
331
+ \[
332
+
333
+ * 0 :
334
+
335
+ {...} 5 keys
336
+
337
+ * 1 :
338
+
339
+ {...} 5 keys
340
+
341
+ * 2 :
342
+
343
+ {...} 5 keys
344
+
345
+ * 3 :
346
+
347
+ {...} 5 keys
348
+
349
+ * 4 :
350
+
351
+ {...} 5 keys
352
+
353
+ * 5 :
354
+
355
+ {...} 5 keys
356
+
357
+
358
+ \]
359
+
360
+
361
+ |
362
+ | scope |
363
+
364
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
365
+
366
+ union
367
+
368
+ | \- |
369
+
370
+ rowcol
371
+
372
+ |
373
+
374
+ ### Extra-small screens (`xs`)
375
+
376
+ [](./iframe.html?id=foundations-responsive-layout--xs)
377
+
378
+ **0 - 575px**
379
+ The mobile breakpoint is used for small mobile devices.
380
+
381
+ **Min screen width**
382
+
383
+ 0px
384
+
385
+ **Max screen width**
386
+
387
+ 575px
388
+
389
+ **Example viewport**
390
+
391
+ 100%
392
+
393
+ **Margin**
394
+
395
+ 16px
396
+
397
+ * * *
398
+
399
+ Grid example
400
+ ------------
401
+
402
+ To ensure the best usability and accessibility, please do not use grids with more than 4 columns maximum on extra small screens. For developers, this means the minimum span on mobile devices is 3.
403
+
404
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
405
+
406
+ ```
407
+
408
+ <IressStack gap\="lg"\>
409
+ <IressInline
410
+ gap\="md"
411
+ verticalAlign\="bottom"
412
+ \>
413
+ <IressStack
414
+ gap\="xs"
415
+ maxWidth\="input.16"
416
+ \>
417
+ <React.Suspense\>
418
+ <React.Lazy />
419
+ </React.Suspense\>
420
+ <IressText\>
421
+ <strong\>
422
+ 0 - 575px </strong\>
423
+ <br />
424
+ The mobile breakpoint is used for small mobile devices. </IressText\>
425
+ </IressStack\>
426
+ <IressStack gap\="xs"\>
427
+ <IressInline gap\="sm"\>
428
+ <IressText element\="strong"\>
429
+ Min screen width </IressText\>
430
+ <IressText\>
431
+ 0px </IressText\>
432
+ </IressInline\>
433
+ <IressInline gap\="sm"\>
434
+ <IressText element\="strong"\>
435
+ Max screen width </IressText\>
436
+ <IressText\>
437
+ 575px </IressText\>
438
+ </IressInline\>
439
+ <IressInline gap\="sm"\>
440
+ <IressText element\="strong"\>
441
+ Example viewport </IressText\>
442
+ <IressText\>
443
+ 100% </IressText\>
444
+ </IressInline\>
445
+ <IressInline gap\="sm"\>
446
+ <IressText element\="strong"\>
447
+ Margin </IressText\>
448
+ <IressText\>
449
+ 16px </IressText\>
450
+ </IressInline\>
451
+ </IressStack\>
452
+ </IressInline\>
453
+ <IressDivider />
454
+ <IressText\>
455
+ <h2\>
456
+ Grid example </h2\>
457
+ <p\>
458
+ To ensure the best usability and accessibility, please do not use grids with more than 4 columns maximum on extra small screens. For developers, this means the minimum span on mobile devices is 3. </p\>
459
+ <IressPanel bg\="alt"\>
460
+ <kn renderLabel\="viewing" />
461
+ </IressPanel\>
462
+ </IressText\>
463
+ <IressContainer
464
+ style\={{
465
+ maxWidth: '360px'
466
+ }}
467
+ \>
468
+ <IressRow gutter\="md"\>
469
+ <IressCol span\={12}\>
470
+ <IressPlaceholder height\="5em" />
471
+ </IressCol\>
472
+ <IressCol span\={6}\>
473
+ <IressPlaceholder height\="5em" />
474
+ </IressCol\>
475
+ <IressCol span\={6}\>
476
+ <IressPlaceholder height\="5em" />
477
+ </IressCol\>
478
+ <IressCol span\={3}\>
479
+ <IressPlaceholder height\="5em" />
480
+ </IressCol\>
481
+ <IressCol span\={3}\>
482
+ <IressPlaceholder height\="5em" />
483
+ </IressCol\>
484
+ <IressCol span\={3}\>
485
+ <IressPlaceholder height\="5em" />
486
+ </IressCol\>
487
+ <IressCol span\={3}\>
488
+ <IressPlaceholder height\="5em" />
489
+ </IressCol\>
490
+ </IressRow\>
491
+ </IressContainer\>
492
+ </IressStack\>
493
+
494
+ ```
495
+
496
+ #### Props
497
+
498
+ | Name | Description | Default | Control |
499
+ | --- | --- | --- | --- |
500
+ | alternate |
501
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
502
+
503
+ boolean
504
+
505
+ |
506
+
507
+ false
508
+
509
+ | Set boolean |
510
+ | caption\* |
511
+
512
+ Caption that describes the data in the table, required for accessibility.
513
+
514
+ ReactNode
515
+
516
+ | \- |
517
+
518
+ "0 - 575px"
519
+
520
+ |
521
+ | children |
522
+
523
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
524
+
525
+ ReactNode
526
+
527
+ | \- | Set object |
528
+ | columns |
529
+
530
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
531
+
532
+ TableColumn<TRow, TVal>\[\]
533
+
534
+ | \- | Set object |
535
+ | compact |
536
+
537
+ Compact view of the table, used for tables with a lot of data.
538
+
539
+ boolean
540
+
541
+ |
542
+
543
+ false
544
+
545
+ | Set boolean |
546
+ | empty |
547
+
548
+ Content to be show when there is no rowData (columns must also be provided).
549
+
550
+ ReactNode
551
+
552
+ | \- | Set object |
553
+ | hiddenCaption |
554
+
555
+ When set to true, the table caption will be visually hidden.
556
+
557
+ boolean
558
+
559
+ | \- | Set boolean |
560
+ | hiddenHeader |
561
+
562
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
563
+
564
+ boolean
565
+
566
+ | \- | Set boolean |
567
+ | hover |
568
+
569
+ When set to true, hovering over a row will trigger a UI change.
570
+
571
+ boolean
572
+
573
+ | \- | Set boolean |
574
+ | removeRowBorders |
575
+
576
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
577
+
578
+ boolean
579
+
580
+ |
581
+
582
+ false
583
+
584
+ | Set boolean |
585
+ | rowProps |
586
+
587
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
588
+
589
+ TableRowsProps\['rowProps'\]
590
+
591
+ | \- | Set object |
592
+ | rows |
593
+
594
+ Each object in the array contains the data for a row.
595
+
596
+ TRow\[\]
597
+
598
+ | \[\] | Set object |
599
+ | scope |
600
+
601
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
602
+
603
+ union
604
+
605
+ | \- |
606
+
607
+ rowcol
608
+
609
+ |
610
+
611
+ ### Small screens (`sm`)
612
+
613
+ [](./iframe.html?id=foundations-responsive-layout--sm)
614
+
615
+ **576px - 767px**
616
+ Small breakpoint, for larger mobile devices and tablet portrait.
617
+
618
+ **Min screen width**
619
+
620
+ 576px
621
+
622
+ **Max screen width**
623
+
624
+ 767px
625
+
626
+ **Example viewport**
627
+
628
+ 100%
629
+
630
+ **Margin**
631
+
632
+ 16px
633
+
634
+ * * *
635
+
636
+ Grid example
637
+ ------------
638
+
639
+ To ensure the best usability and accessibility, please do not use grids with more than 4 columns maximum on small screens. For developers, this means the minimum span on mobile devices is 3.
640
+
641
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
642
+
643
+ ```
644
+
645
+ <IressStack gap\="lg"\>
646
+ <IressInline
647
+ gap\="md"
648
+ verticalAlign\="bottom"
649
+ \>
650
+ <IressStack
651
+ gap\="xs"
652
+ maxWidth\="input.16"
653
+ \>
654
+ <React.Suspense\>
655
+ <React.Lazy />
656
+ </React.Suspense\>
657
+ <IressText\>
658
+ <strong\>
659
+ 576px - 767px </strong\>
660
+ <br />
661
+ Small breakpoint, for larger mobile devices and tablet portrait. </IressText\>
662
+ </IressStack\>
663
+ <IressStack gap\="xs"\>
664
+ <IressInline gap\="sm"\>
665
+ <IressText element\="strong"\>
666
+ Min screen width </IressText\>
667
+ <IressText\>
668
+ 576px </IressText\>
669
+ </IressInline\>
670
+ <IressInline gap\="sm"\>
671
+ <IressText element\="strong"\>
672
+ Max screen width </IressText\>
673
+ <IressText\>
674
+ 767px </IressText\>
675
+ </IressInline\>
676
+ <IressInline gap\="sm"\>
677
+ <IressText element\="strong"\>
678
+ Example viewport </IressText\>
679
+ <IressText\>
680
+ 100% </IressText\>
681
+ </IressInline\>
682
+ <IressInline gap\="sm"\>
683
+ <IressText element\="strong"\>
684
+ Margin </IressText\>
685
+ <IressText\>
686
+ 16px </IressText\>
687
+ </IressInline\>
688
+ </IressStack\>
689
+ </IressInline\>
690
+ <IressDivider />
691
+ <IressText\>
692
+ <h2\>
693
+ Grid example </h2\>
694
+ <p\>
695
+ To ensure the best usability and accessibility, please do not use grids with more than 4 columns maximum on small screens. For developers, this means the minimum span on mobile devices is 3. </p\>
696
+ <IressPanel bg\="alt"\>
697
+ <kn renderLabel\="viewing" />
698
+ </IressPanel\>
699
+ </IressText\>
700
+ <IressContainer
701
+ style\={{
702
+ maxWidth: '767px'
703
+ }}
704
+ \>
705
+ <IressRow gutter\="md"\>
706
+ <IressCol
707
+ span\={{
708
+ base: 12,
709
+ sm: 12
710
+ }}
711
+ \>
712
+ <IressPlaceholder height\="5em" />
713
+ </IressCol\>
714
+ <IressCol
715
+ span\={{
716
+ base: 12,
717
+ sm: 6
718
+ }}
719
+ \>
720
+ <IressPlaceholder height\="5em" />
721
+ </IressCol\>
722
+ <IressCol
723
+ span\={{
724
+ base: 12,
725
+ sm: 6
726
+ }}
727
+ \>
728
+ <IressPlaceholder height\="5em" />
729
+ </IressCol\>
730
+ <IressCol
731
+ span\={{
732
+ base: 12,
733
+ sm: 3
734
+ }}
735
+ \>
736
+ <IressPlaceholder height\="5em" />
737
+ </IressCol\>
738
+ <IressCol
739
+ span\={{
740
+ base: 12,
741
+ sm: 3
742
+ }}
743
+ \>
744
+ <IressPlaceholder height\="5em" />
745
+ </IressCol\>
746
+ <IressCol
747
+ span\={{
748
+ base: 12,
749
+ sm: 3
750
+ }}
751
+ \>
752
+ <IressPlaceholder height\="5em" />
753
+ </IressCol\>
754
+ <IressCol
755
+ span\={{
756
+ base: 12,
757
+ sm: 3
758
+ }}
759
+ \>
760
+ <IressPlaceholder height\="5em" />
761
+ </IressCol\>
762
+ </IressRow\>
763
+ </IressContainer\>
764
+ </IressStack\>
765
+
766
+ ```
767
+
768
+ #### Props
769
+
770
+ | Name | Description | Default | Control |
771
+ | --- | --- | --- | --- |
772
+ | alternate |
773
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
774
+
775
+ boolean
776
+
777
+ |
778
+
779
+ false
780
+
781
+ | Set boolean |
782
+ | caption\* |
783
+
784
+ Caption that describes the data in the table, required for accessibility.
785
+
786
+ ReactNode
787
+
788
+ | \- |
789
+
790
+ "576px - 767px"
791
+
792
+ |
793
+ | children |
794
+
795
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
796
+
797
+ ReactNode
798
+
799
+ | \- | Set object |
800
+ | columns |
801
+
802
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
803
+
804
+ TableColumn<TRow, TVal>\[\]
805
+
806
+ | \- | Set object |
807
+ | compact |
808
+
809
+ Compact view of the table, used for tables with a lot of data.
810
+
811
+ boolean
812
+
813
+ |
814
+
815
+ false
816
+
817
+ | Set boolean |
818
+ | empty |
819
+
820
+ Content to be show when there is no rowData (columns must also be provided).
821
+
822
+ ReactNode
823
+
824
+ | \- | Set object |
825
+ | hiddenCaption |
826
+
827
+ When set to true, the table caption will be visually hidden.
828
+
829
+ boolean
830
+
831
+ | \- | Set boolean |
832
+ | hiddenHeader |
833
+
834
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
835
+
836
+ boolean
837
+
838
+ | \- | Set boolean |
839
+ | hover |
840
+
841
+ When set to true, hovering over a row will trigger a UI change.
842
+
843
+ boolean
844
+
845
+ | \- | Set boolean |
846
+ | removeRowBorders |
847
+
848
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
849
+
850
+ boolean
851
+
852
+ |
853
+
854
+ false
855
+
856
+ | Set boolean |
857
+ | rowProps |
858
+
859
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
860
+
861
+ TableRowsProps\['rowProps'\]
862
+
863
+ | \- | Set object |
864
+ | rows |
865
+
866
+ Each object in the array contains the data for a row.
867
+
868
+ TRow\[\]
869
+
870
+ | \[\] | Set object |
871
+ | scope |
872
+
873
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
874
+
875
+ union
876
+
877
+ | \- |
878
+
879
+ rowcol
880
+
881
+ |
882
+
883
+ ### Medium screens (`md`)
884
+
885
+ [](./iframe.html?id=foundations-responsive-layout--md)
886
+
887
+ **768px - 1023px**
888
+ Medium breakpoint for tablets and small laptops such as Chromebooks.
889
+
890
+ **Min screen width**
891
+
892
+ 768px
893
+
894
+ **Max screen width**
895
+
896
+ 1023px
897
+
898
+ **Example viewport**
899
+
900
+ 100%
901
+
902
+ **Margin**
903
+
904
+ 16px
905
+
906
+ * * *
907
+
908
+ Grid example
909
+ ------------
910
+
911
+ To ensure the best usability and accessibility, please do not use grids with more than 6 columns maximum on medium screens. For developers, this means the minimum span on medium screems is 2.
912
+
913
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
914
+
915
+ ```
916
+
917
+ <IressStack gap\="lg"\>
918
+ <IressInline
919
+ gap\="md"
920
+ verticalAlign\="bottom"
921
+ \>
922
+ <IressStack
923
+ gap\="xs"
924
+ maxWidth\="input.16"
925
+ \>
926
+ <React.Suspense\>
927
+ <React.Lazy />
928
+ </React.Suspense\>
929
+ <IressText\>
930
+ <strong\>
931
+ 768px - 1023px </strong\>
932
+ <br />
933
+ Medium breakpoint for tablets and small laptops such as Chromebooks. </IressText\>
934
+ </IressStack\>
935
+ <IressStack gap\="xs"\>
936
+ <IressInline gap\="sm"\>
937
+ <IressText element\="strong"\>
938
+ Min screen width </IressText\>
939
+ <IressText\>
940
+ 768px </IressText\>
941
+ </IressInline\>
942
+ <IressInline gap\="sm"\>
943
+ <IressText element\="strong"\>
944
+ Max screen width </IressText\>
945
+ <IressText\>
946
+ 1023px </IressText\>
947
+ </IressInline\>
948
+ <IressInline gap\="sm"\>
949
+ <IressText element\="strong"\>
950
+ Example viewport </IressText\>
951
+ <IressText\>
952
+ 100% </IressText\>
953
+ </IressInline\>
954
+ <IressInline gap\="sm"\>
955
+ <IressText element\="strong"\>
956
+ Margin </IressText\>
957
+ <IressText\>
958
+ 16px </IressText\>
959
+ </IressInline\>
960
+ </IressStack\>
961
+ </IressInline\>
962
+ <IressDivider />
963
+ <IressText\>
964
+ <h2\>
965
+ Grid example </h2\>
966
+ <p\>
967
+ To ensure the best usability and accessibility, please do not use grids with more than 6 columns maximum on medium screens. For developers, this means the minimum span on medium screems is 2. </p\>
968
+ <IressPanel bg\="alt"\>
969
+ <kn renderLabel\="viewing" />
970
+ </IressPanel\>
971
+ </IressText\>
972
+ <IressContainer
973
+ style\={{
974
+ maxWidth: '962px'
975
+ }}
976
+ \>
977
+ <IressRow gutter\="md"\>
978
+ <IressCol
979
+ span\={{
980
+ base: 12,
981
+ md: 12
982
+ }}
983
+ \>
984
+ <IressPlaceholder height\="5em" />
985
+ </IressCol\>
986
+ <IressCol
987
+ span\={{
988
+ base: 12,
989
+ md: 6
990
+ }}
991
+ \>
992
+ <IressPlaceholder height\="5em" />
993
+ </IressCol\>
994
+ <IressCol
995
+ span\={{
996
+ base: 12,
997
+ md: 6
998
+ }}
999
+ \>
1000
+ <IressPlaceholder height\="5em" />
1001
+ </IressCol\>
1002
+ <IressCol
1003
+ span\={{
1004
+ base: 12,
1005
+ md: 4
1006
+ }}
1007
+ \>
1008
+ <IressPlaceholder height\="5em" />
1009
+ </IressCol\>
1010
+ <IressCol
1011
+ span\={{
1012
+ base: 12,
1013
+ md: 4
1014
+ }}
1015
+ \>
1016
+ <IressPlaceholder height\="5em" />
1017
+ </IressCol\>
1018
+ <IressCol
1019
+ span\={{
1020
+ base: 12,
1021
+ md: 4
1022
+ }}
1023
+ \>
1024
+ <IressPlaceholder height\="5em" />
1025
+ </IressCol\>
1026
+ <IressCol
1027
+ span\={{
1028
+ base: 12,
1029
+ md: 2
1030
+ }}
1031
+ \>
1032
+ <IressPlaceholder height\="5em" />
1033
+ </IressCol\>
1034
+ <IressCol
1035
+ span\={{
1036
+ base: 12,
1037
+ md: 2
1038
+ }}
1039
+ \>
1040
+ <IressPlaceholder height\="5em" />
1041
+ </IressCol\>
1042
+ <IressCol
1043
+ span\={{
1044
+ base: 12,
1045
+ md: 2
1046
+ }}
1047
+ \>
1048
+ <IressPlaceholder height\="5em" />
1049
+ </IressCol\>
1050
+ <IressCol
1051
+ span\={{
1052
+ base: 12,
1053
+ md: 2
1054
+ }}
1055
+ \>
1056
+ <IressPlaceholder height\="5em" />
1057
+ </IressCol\>
1058
+ <IressCol
1059
+ span\={{
1060
+ base: 12,
1061
+ md: 2
1062
+ }}
1063
+ \>
1064
+ <IressPlaceholder height\="5em" />
1065
+ </IressCol\>
1066
+ <IressCol
1067
+ span\={{
1068
+ base: 12,
1069
+ md: 2
1070
+ }}
1071
+ \>
1072
+ <IressPlaceholder height\="5em" />
1073
+ </IressCol\>
1074
+ </IressRow\>
1075
+ </IressContainer\>
1076
+ </IressStack\>
1077
+
1078
+ ```
1079
+
1080
+ #### Props
1081
+
1082
+ | Name | Description | Default | Control |
1083
+ | --- | --- | --- | --- |
1084
+ | alternate |
1085
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
1086
+
1087
+ boolean
1088
+
1089
+ |
1090
+
1091
+ false
1092
+
1093
+ | Set boolean |
1094
+ | caption\* |
1095
+
1096
+ Caption that describes the data in the table, required for accessibility.
1097
+
1098
+ ReactNode
1099
+
1100
+ | \- |
1101
+
1102
+ "768px - 1023px"
1103
+
1104
+ |
1105
+ | children |
1106
+
1107
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
1108
+
1109
+ ReactNode
1110
+
1111
+ | \- | Set object |
1112
+ | columns |
1113
+
1114
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
1115
+
1116
+ TableColumn<TRow, TVal>\[\]
1117
+
1118
+ | \- | Set object |
1119
+ | compact |
1120
+
1121
+ Compact view of the table, used for tables with a lot of data.
1122
+
1123
+ boolean
1124
+
1125
+ |
1126
+
1127
+ false
1128
+
1129
+ | Set boolean |
1130
+ | empty |
1131
+
1132
+ Content to be show when there is no rowData (columns must also be provided).
1133
+
1134
+ ReactNode
1135
+
1136
+ | \- | Set object |
1137
+ | hiddenCaption |
1138
+
1139
+ When set to true, the table caption will be visually hidden.
1140
+
1141
+ boolean
1142
+
1143
+ | \- | Set boolean |
1144
+ | hiddenHeader |
1145
+
1146
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
1147
+
1148
+ boolean
1149
+
1150
+ | \- | Set boolean |
1151
+ | hover |
1152
+
1153
+ When set to true, hovering over a row will trigger a UI change.
1154
+
1155
+ boolean
1156
+
1157
+ | \- | Set boolean |
1158
+ | removeRowBorders |
1159
+
1160
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
1161
+
1162
+ boolean
1163
+
1164
+ |
1165
+
1166
+ false
1167
+
1168
+ | Set boolean |
1169
+ | rowProps |
1170
+
1171
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
1172
+
1173
+ TableRowsProps\['rowProps'\]
1174
+
1175
+ | \- | Set object |
1176
+ | rows |
1177
+
1178
+ Each object in the array contains the data for a row.
1179
+
1180
+ TRow\[\]
1181
+
1182
+ | \[\] | Set object |
1183
+ | scope |
1184
+
1185
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
1186
+
1187
+ union
1188
+
1189
+ | \- |
1190
+
1191
+ rowcol
1192
+
1193
+ |
1194
+
1195
+ ### Large screens (`lg`)
1196
+
1197
+ [](./iframe.html?id=foundations-responsive-layout--lg)
1198
+
1199
+ **1024px - 1199px**
1200
+ Large breakpoint for desktops and laptops, such as 13inch MacBooks.
1201
+
1202
+ **Min screen width**
1203
+
1204
+ 1024px
1205
+
1206
+ **Max screen width**
1207
+
1208
+ 1199px
1209
+
1210
+ **Example viewport**
1211
+
1212
+ 100%
1213
+
1214
+ **Margin**
1215
+
1216
+ 16px
1217
+
1218
+ * * *
1219
+
1220
+ Grid example
1221
+ ------------
1222
+
1223
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on large screens is 1.
1224
+
1225
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
1226
+
1227
+ ```
1228
+
1229
+ <IressStack gap\="lg"\>
1230
+ <IressInline
1231
+ gap\="md"
1232
+ verticalAlign\="bottom"
1233
+ \>
1234
+ <IressStack
1235
+ gap\="xs"
1236
+ maxWidth\="input.16"
1237
+ \>
1238
+ <React.Suspense\>
1239
+ <React.Lazy />
1240
+ </React.Suspense\>
1241
+ <IressText\>
1242
+ <strong\>
1243
+ 1024px - 1199px </strong\>
1244
+ <br />
1245
+ Large breakpoint for desktops and laptops, such as 13inch MacBooks. </IressText\>
1246
+ </IressStack\>
1247
+ <IressStack gap\="xs"\>
1248
+ <IressInline gap\="sm"\>
1249
+ <IressText element\="strong"\>
1250
+ Min screen width </IressText\>
1251
+ <IressText\>
1252
+ 1024px </IressText\>
1253
+ </IressInline\>
1254
+ <IressInline gap\="sm"\>
1255
+ <IressText element\="strong"\>
1256
+ Max screen width </IressText\>
1257
+ <IressText\>
1258
+ 1199px </IressText\>
1259
+ </IressInline\>
1260
+ <IressInline gap\="sm"\>
1261
+ <IressText element\="strong"\>
1262
+ Example viewport </IressText\>
1263
+ <IressText\>
1264
+ 100% </IressText\>
1265
+ </IressInline\>
1266
+ <IressInline gap\="sm"\>
1267
+ <IressText element\="strong"\>
1268
+ Margin </IressText\>
1269
+ <IressText\>
1270
+ 16px </IressText\>
1271
+ </IressInline\>
1272
+ </IressStack\>
1273
+ </IressInline\>
1274
+ <IressDivider />
1275
+ <IressText\>
1276
+ <h2\>
1277
+ Grid example </h2\>
1278
+ <p\>
1279
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on large screens is 1. </p\>
1280
+ <IressPanel bg\="alt"\>
1281
+ <kn renderLabel\="viewing" />
1282
+ </IressPanel\>
1283
+ </IressText\>
1284
+ <IressContainer
1285
+ style\={{
1286
+ maxWidth: '1180px'
1287
+ }}
1288
+ \>
1289
+ <IressRow gutter\="md"\>
1290
+ <IressCol
1291
+ span\={{
1292
+ base: 12,
1293
+ lg: 12
1294
+ }}
1295
+ \>
1296
+ <IressPlaceholder height\="5em" />
1297
+ </IressCol\>
1298
+ <IressCol
1299
+ span\={{
1300
+ base: 12,
1301
+ lg: 6
1302
+ }}
1303
+ \>
1304
+ <IressPlaceholder height\="5em" />
1305
+ </IressCol\>
1306
+ <IressCol
1307
+ span\={{
1308
+ base: 12,
1309
+ lg: 6
1310
+ }}
1311
+ \>
1312
+ <IressPlaceholder height\="5em" />
1313
+ </IressCol\>
1314
+ <IressCol
1315
+ span\={{
1316
+ base: 12,
1317
+ lg: 4
1318
+ }}
1319
+ \>
1320
+ <IressPlaceholder height\="5em" />
1321
+ </IressCol\>
1322
+ <IressCol
1323
+ span\={{
1324
+ base: 12,
1325
+ lg: 4
1326
+ }}
1327
+ \>
1328
+ <IressPlaceholder height\="5em" />
1329
+ </IressCol\>
1330
+ <IressCol
1331
+ span\={{
1332
+ base: 12,
1333
+ lg: 4
1334
+ }}
1335
+ \>
1336
+ <IressPlaceholder height\="5em" />
1337
+ </IressCol\>
1338
+ <IressCol
1339
+ span\={{
1340
+ base: 12,
1341
+ lg: 2
1342
+ }}
1343
+ \>
1344
+ <IressPlaceholder height\="5em" />
1345
+ </IressCol\>
1346
+ <IressCol
1347
+ span\={{
1348
+ base: 12,
1349
+ lg: 2
1350
+ }}
1351
+ \>
1352
+ <IressPlaceholder height\="5em" />
1353
+ </IressCol\>
1354
+ <IressCol
1355
+ span\={{
1356
+ base: 12,
1357
+ lg: 2
1358
+ }}
1359
+ \>
1360
+ <IressPlaceholder height\="5em" />
1361
+ </IressCol\>
1362
+ <IressCol
1363
+ span\={{
1364
+ base: 12,
1365
+ lg: 2
1366
+ }}
1367
+ \>
1368
+ <IressPlaceholder height\="5em" />
1369
+ </IressCol\>
1370
+ <IressCol
1371
+ span\={{
1372
+ base: 12,
1373
+ lg: 2
1374
+ }}
1375
+ \>
1376
+ <IressPlaceholder height\="5em" />
1377
+ </IressCol\>
1378
+ <IressCol
1379
+ span\={{
1380
+ base: 12,
1381
+ lg: 2
1382
+ }}
1383
+ \>
1384
+ <IressPlaceholder height\="5em" />
1385
+ </IressCol\>
1386
+ <IressCol
1387
+ span\={{
1388
+ base: 12,
1389
+ lg: 1
1390
+ }}
1391
+ \>
1392
+ <IressPlaceholder height\="5em" />
1393
+ </IressCol\>
1394
+ <IressCol
1395
+ span\={{
1396
+ base: 12,
1397
+ lg: 1
1398
+ }}
1399
+ \>
1400
+ <IressPlaceholder height\="5em" />
1401
+ </IressCol\>
1402
+ <IressCol
1403
+ span\={{
1404
+ base: 12,
1405
+ lg: 1
1406
+ }}
1407
+ \>
1408
+ <IressPlaceholder height\="5em" />
1409
+ </IressCol\>
1410
+ <IressCol
1411
+ span\={{
1412
+ base: 12,
1413
+ lg: 1
1414
+ }}
1415
+ \>
1416
+ <IressPlaceholder height\="5em" />
1417
+ </IressCol\>
1418
+ <IressCol
1419
+ span\={{
1420
+ base: 12,
1421
+ lg: 1
1422
+ }}
1423
+ \>
1424
+ <IressPlaceholder height\="5em" />
1425
+ </IressCol\>
1426
+ <IressCol
1427
+ span\={{
1428
+ base: 12,
1429
+ lg: 1
1430
+ }}
1431
+ \>
1432
+ <IressPlaceholder height\="5em" />
1433
+ </IressCol\>
1434
+ <IressCol
1435
+ span\={{
1436
+ base: 12,
1437
+ lg: 1
1438
+ }}
1439
+ \>
1440
+ <IressPlaceholder height\="5em" />
1441
+ </IressCol\>
1442
+ <IressCol
1443
+ span\={{
1444
+ base: 12,
1445
+ lg: 1
1446
+ }}
1447
+ \>
1448
+ <IressPlaceholder height\="5em" />
1449
+ </IressCol\>
1450
+ <IressCol
1451
+ span\={{
1452
+ base: 12,
1453
+ lg: 1
1454
+ }}
1455
+ \>
1456
+ <IressPlaceholder height\="5em" />
1457
+ </IressCol\>
1458
+ <IressCol
1459
+ span\={{
1460
+ base: 12,
1461
+ lg: 1
1462
+ }}
1463
+ \>
1464
+ <IressPlaceholder height\="5em" />
1465
+ </IressCol\>
1466
+ <IressCol
1467
+ span\={{
1468
+ base: 12,
1469
+ lg: 1
1470
+ }}
1471
+ \>
1472
+ <IressPlaceholder height\="5em" />
1473
+ </IressCol\>
1474
+ <IressCol
1475
+ span\={{
1476
+ base: 12,
1477
+ lg: 1
1478
+ }}
1479
+ \>
1480
+ <IressPlaceholder height\="5em" />
1481
+ </IressCol\>
1482
+ </IressRow\>
1483
+ </IressContainer\>
1484
+ </IressStack\>
1485
+
1486
+ ```
1487
+
1488
+ #### Props
1489
+
1490
+ | Name | Description | Default | Control |
1491
+ | --- | --- | --- | --- |
1492
+ | alternate |
1493
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
1494
+
1495
+ boolean
1496
+
1497
+ |
1498
+
1499
+ false
1500
+
1501
+ | Set boolean |
1502
+ | caption\* |
1503
+
1504
+ Caption that describes the data in the table, required for accessibility.
1505
+
1506
+ ReactNode
1507
+
1508
+ | \- |
1509
+
1510
+ "1024px - 1199px"
1511
+
1512
+ |
1513
+ | children |
1514
+
1515
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
1516
+
1517
+ ReactNode
1518
+
1519
+ | \- | Set object |
1520
+ | columns |
1521
+
1522
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
1523
+
1524
+ TableColumn<TRow, TVal>\[\]
1525
+
1526
+ | \- | Set object |
1527
+ | compact |
1528
+
1529
+ Compact view of the table, used for tables with a lot of data.
1530
+
1531
+ boolean
1532
+
1533
+ |
1534
+
1535
+ false
1536
+
1537
+ | Set boolean |
1538
+ | empty |
1539
+
1540
+ Content to be show when there is no rowData (columns must also be provided).
1541
+
1542
+ ReactNode
1543
+
1544
+ | \- | Set object |
1545
+ | hiddenCaption |
1546
+
1547
+ When set to true, the table caption will be visually hidden.
1548
+
1549
+ boolean
1550
+
1551
+ | \- | Set boolean |
1552
+ | hiddenHeader |
1553
+
1554
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
1555
+
1556
+ boolean
1557
+
1558
+ | \- | Set boolean |
1559
+ | hover |
1560
+
1561
+ When set to true, hovering over a row will trigger a UI change.
1562
+
1563
+ boolean
1564
+
1565
+ | \- | Set boolean |
1566
+ | removeRowBorders |
1567
+
1568
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
1569
+
1570
+ boolean
1571
+
1572
+ |
1573
+
1574
+ false
1575
+
1576
+ | Set boolean |
1577
+ | rowProps |
1578
+
1579
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
1580
+
1581
+ TableRowsProps\['rowProps'\]
1582
+
1583
+ | \- | Set object |
1584
+ | rows |
1585
+
1586
+ Each object in the array contains the data for a row.
1587
+
1588
+ TRow\[\]
1589
+
1590
+ | \[\] | Set object |
1591
+ | scope |
1592
+
1593
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
1594
+
1595
+ union
1596
+
1597
+ | \- |
1598
+
1599
+ rowcol
1600
+
1601
+ |
1602
+
1603
+ ### Extra-large screens (`xl`)
1604
+
1605
+ [](./iframe.html?id=foundations-responsive-layout--xl)
1606
+
1607
+ **1200px - 1499px**
1608
+ Large breakpoint for desktops and laptops, such as 15inch laptops and monitors.
1609
+
1610
+ **Min screen width**
1611
+
1612
+ 1200px
1613
+
1614
+ **Max screen width**
1615
+
1616
+ 1499px
1617
+
1618
+ **Example viewport**
1619
+
1620
+ 1280px
1621
+
1622
+ **Margin**
1623
+
1624
+ 16px
1625
+
1626
+ * * *
1627
+
1628
+ Grid example
1629
+ ------------
1630
+
1631
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on extra large screens is 1. At this screen the container max width is applied, but can be opted out by using the `fluid` prop. It is recommended to keep the max width in most scenarios to ensure optimal readability.
1632
+
1633
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
1634
+
1635
+ ```
1636
+
1637
+ <IressStack gap\="lg"\>
1638
+ <IressInline
1639
+ gap\="md"
1640
+ verticalAlign\="bottom"
1641
+ \>
1642
+ <IressStack
1643
+ gap\="xs"
1644
+ maxWidth\="input.16"
1645
+ \>
1646
+ <React.Suspense\>
1647
+ <React.Lazy />
1648
+ </React.Suspense\>
1649
+ <IressText\>
1650
+ <strong\>
1651
+ 1200px - 1499px </strong\>
1652
+ <br />
1653
+ Large breakpoint for desktops and laptops, such as 15inch laptops and monitors. </IressText\>
1654
+ </IressStack\>
1655
+ <IressStack gap\="xs"\>
1656
+ <IressInline gap\="sm"\>
1657
+ <IressText element\="strong"\>
1658
+ Min screen width </IressText\>
1659
+ <IressText\>
1660
+ 1200px </IressText\>
1661
+ </IressInline\>
1662
+ <IressInline gap\="sm"\>
1663
+ <IressText element\="strong"\>
1664
+ Max screen width </IressText\>
1665
+ <IressText\>
1666
+ 1499px </IressText\>
1667
+ </IressInline\>
1668
+ <IressInline gap\="sm"\>
1669
+ <IressText element\="strong"\>
1670
+ Example viewport </IressText\>
1671
+ <IressText\>
1672
+ 1280px </IressText\>
1673
+ </IressInline\>
1674
+ <IressInline gap\="sm"\>
1675
+ <IressText element\="strong"\>
1676
+ Margin </IressText\>
1677
+ <IressText\>
1678
+ 16px </IressText\>
1679
+ </IressInline\>
1680
+ </IressStack\>
1681
+ </IressInline\>
1682
+ <IressDivider />
1683
+ <IressText\>
1684
+ <h2\>
1685
+ Grid example </h2\>
1686
+ <p\>
1687
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on extra large screens is 1. At this screen the container max width is applied, but can be opted out by using the{' '}
1688
+ <code\>
1689
+ fluid </code\>
1690
+ {' '}prop. It is recommended to keep the max width in most scenarios to ensure optimal readability.
1691
+ </p\>
1692
+ <IressPanel bg\="alt"\>
1693
+ <kn renderLabel\="viewing" />
1694
+ </IressPanel\>
1695
+ </IressText\>
1696
+ <IressContainer\>
1697
+ <IressRow gutter\="md"\>
1698
+ <IressCol
1699
+ span\={{
1700
+ base: 12,
1701
+ xl: 12
1702
+ }}
1703
+ \>
1704
+ <IressPlaceholder height\="5em" />
1705
+ </IressCol\>
1706
+ <IressCol
1707
+ span\={{
1708
+ base: 12,
1709
+ xl: 6
1710
+ }}
1711
+ \>
1712
+ <IressPlaceholder height\="5em" />
1713
+ </IressCol\>
1714
+ <IressCol
1715
+ span\={{
1716
+ base: 12,
1717
+ xl: 6
1718
+ }}
1719
+ \>
1720
+ <IressPlaceholder height\="5em" />
1721
+ </IressCol\>
1722
+ <IressCol
1723
+ span\={{
1724
+ base: 12,
1725
+ xl: 4
1726
+ }}
1727
+ \>
1728
+ <IressPlaceholder height\="5em" />
1729
+ </IressCol\>
1730
+ <IressCol
1731
+ span\={{
1732
+ base: 12,
1733
+ xl: 4
1734
+ }}
1735
+ \>
1736
+ <IressPlaceholder height\="5em" />
1737
+ </IressCol\>
1738
+ <IressCol
1739
+ span\={{
1740
+ base: 12,
1741
+ xl: 4
1742
+ }}
1743
+ \>
1744
+ <IressPlaceholder height\="5em" />
1745
+ </IressCol\>
1746
+ <IressCol
1747
+ span\={{
1748
+ base: 12,
1749
+ xl: 2
1750
+ }}
1751
+ \>
1752
+ <IressPlaceholder height\="5em" />
1753
+ </IressCol\>
1754
+ <IressCol
1755
+ span\={{
1756
+ base: 12,
1757
+ xl: 2
1758
+ }}
1759
+ \>
1760
+ <IressPlaceholder height\="5em" />
1761
+ </IressCol\>
1762
+ <IressCol
1763
+ span\={{
1764
+ base: 12,
1765
+ xl: 2
1766
+ }}
1767
+ \>
1768
+ <IressPlaceholder height\="5em" />
1769
+ </IressCol\>
1770
+ <IressCol
1771
+ span\={{
1772
+ base: 12,
1773
+ xl: 2
1774
+ }}
1775
+ \>
1776
+ <IressPlaceholder height\="5em" />
1777
+ </IressCol\>
1778
+ <IressCol
1779
+ span\={{
1780
+ base: 12,
1781
+ xl: 2
1782
+ }}
1783
+ \>
1784
+ <IressPlaceholder height\="5em" />
1785
+ </IressCol\>
1786
+ <IressCol
1787
+ span\={{
1788
+ base: 12,
1789
+ xl: 2
1790
+ }}
1791
+ \>
1792
+ <IressPlaceholder height\="5em" />
1793
+ </IressCol\>
1794
+ <IressCol
1795
+ span\={{
1796
+ base: 12,
1797
+ xl: 1
1798
+ }}
1799
+ \>
1800
+ <IressPlaceholder height\="5em" />
1801
+ </IressCol\>
1802
+ <IressCol
1803
+ span\={{
1804
+ base: 12,
1805
+ xl: 1
1806
+ }}
1807
+ \>
1808
+ <IressPlaceholder height\="5em" />
1809
+ </IressCol\>
1810
+ <IressCol
1811
+ span\={{
1812
+ base: 12,
1813
+ xl: 1
1814
+ }}
1815
+ \>
1816
+ <IressPlaceholder height\="5em" />
1817
+ </IressCol\>
1818
+ <IressCol
1819
+ span\={{
1820
+ base: 12,
1821
+ xl: 1
1822
+ }}
1823
+ \>
1824
+ <IressPlaceholder height\="5em" />
1825
+ </IressCol\>
1826
+ <IressCol
1827
+ span\={{
1828
+ base: 12,
1829
+ xl: 1
1830
+ }}
1831
+ \>
1832
+ <IressPlaceholder height\="5em" />
1833
+ </IressCol\>
1834
+ <IressCol
1835
+ span\={{
1836
+ base: 12,
1837
+ xl: 1
1838
+ }}
1839
+ \>
1840
+ <IressPlaceholder height\="5em" />
1841
+ </IressCol\>
1842
+ <IressCol
1843
+ span\={{
1844
+ base: 12,
1845
+ xl: 1
1846
+ }}
1847
+ \>
1848
+ <IressPlaceholder height\="5em" />
1849
+ </IressCol\>
1850
+ <IressCol
1851
+ span\={{
1852
+ base: 12,
1853
+ xl: 1
1854
+ }}
1855
+ \>
1856
+ <IressPlaceholder height\="5em" />
1857
+ </IressCol\>
1858
+ <IressCol
1859
+ span\={{
1860
+ base: 12,
1861
+ xl: 1
1862
+ }}
1863
+ \>
1864
+ <IressPlaceholder height\="5em" />
1865
+ </IressCol\>
1866
+ <IressCol
1867
+ span\={{
1868
+ base: 12,
1869
+ xl: 1
1870
+ }}
1871
+ \>
1872
+ <IressPlaceholder height\="5em" />
1873
+ </IressCol\>
1874
+ <IressCol
1875
+ span\={{
1876
+ base: 12,
1877
+ xl: 1
1878
+ }}
1879
+ \>
1880
+ <IressPlaceholder height\="5em" />
1881
+ </IressCol\>
1882
+ <IressCol
1883
+ span\={{
1884
+ base: 12,
1885
+ xl: 1
1886
+ }}
1887
+ \>
1888
+ <IressPlaceholder height\="5em" />
1889
+ </IressCol\>
1890
+ </IressRow\>
1891
+ </IressContainer\>
1892
+ </IressStack\>
1893
+
1894
+ ```
1895
+
1896
+ #### Props
1897
+
1898
+ | Name | Description | Default | Control |
1899
+ | --- | --- | --- | --- |
1900
+ | alternate |
1901
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
1902
+
1903
+ boolean
1904
+
1905
+ |
1906
+
1907
+ false
1908
+
1909
+ | Set boolean |
1910
+ | caption\* |
1911
+
1912
+ Caption that describes the data in the table, required for accessibility.
1913
+
1914
+ ReactNode
1915
+
1916
+ | \- |
1917
+
1918
+ "1200px - 1499px"
1919
+
1920
+ |
1921
+ | children |
1922
+
1923
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
1924
+
1925
+ ReactNode
1926
+
1927
+ | \- | Set object |
1928
+ | columns |
1929
+
1930
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
1931
+
1932
+ TableColumn<TRow, TVal>\[\]
1933
+
1934
+ | \- | Set object |
1935
+ | compact |
1936
+
1937
+ Compact view of the table, used for tables with a lot of data.
1938
+
1939
+ boolean
1940
+
1941
+ |
1942
+
1943
+ false
1944
+
1945
+ | Set boolean |
1946
+ | empty |
1947
+
1948
+ Content to be show when there is no rowData (columns must also be provided).
1949
+
1950
+ ReactNode
1951
+
1952
+ | \- | Set object |
1953
+ | hiddenCaption |
1954
+
1955
+ When set to true, the table caption will be visually hidden.
1956
+
1957
+ boolean
1958
+
1959
+ | \- | Set boolean |
1960
+ | hiddenHeader |
1961
+
1962
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
1963
+
1964
+ boolean
1965
+
1966
+ | \- | Set boolean |
1967
+ | hover |
1968
+
1969
+ When set to true, hovering over a row will trigger a UI change.
1970
+
1971
+ boolean
1972
+
1973
+ | \- | Set boolean |
1974
+ | removeRowBorders |
1975
+
1976
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
1977
+
1978
+ boolean
1979
+
1980
+ |
1981
+
1982
+ false
1983
+
1984
+ | Set boolean |
1985
+ | rowProps |
1986
+
1987
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
1988
+
1989
+ TableRowsProps\['rowProps'\]
1990
+
1991
+ | \- | Set object |
1992
+ | rows |
1993
+
1994
+ Each object in the array contains the data for a row.
1995
+
1996
+ TRow\[\]
1997
+
1998
+ | \[\] | Set object |
1999
+ | scope |
2000
+
2001
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
2002
+
2003
+ union
2004
+
2005
+ | \- |
2006
+
2007
+ rowcol
2008
+
2009
+ |
2010
+
2011
+ ### Extremely large screens (`xxl`)
2012
+
2013
+ [](./iframe.html?id=foundations-responsive-layout--xxl)
2014
+
2015
+ **1500px and above**
2016
+ Extra-large breakpoint for modern desktop monitors and large laptops (17inch+).
2017
+
2018
+ **Min screen width**
2019
+
2020
+ 1500px
2021
+
2022
+ **Max screen width**
2023
+
2024
+ N/A
2025
+
2026
+ **Example viewport**
2027
+
2028
+ 1280px
2029
+
2030
+ **Margin**
2031
+
2032
+ 16px
2033
+
2034
+ * * *
2035
+
2036
+ Grid example
2037
+ ------------
2038
+
2039
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on extra large screens is 1. At this screen the container max width is applied, but can be opted out by using the `fluid` prop. It is recommended to keep the max width in most scenarios to ensure optimal readability.
2040
+
2041
+ You are currently viewing the **xl** breakpoint (1200px - 1499px). Resize your screen to view different breakpoints.
2042
+
2043
+ ```
2044
+
2045
+ <IressStack gap\="lg"\>
2046
+ <IressInline
2047
+ gap\="md"
2048
+ verticalAlign\="bottom"
2049
+ \>
2050
+ <IressStack
2051
+ gap\="xs"
2052
+ maxWidth\="input.16"
2053
+ \>
2054
+ <React.Suspense\>
2055
+ <React.Lazy />
2056
+ </React.Suspense\>
2057
+ <IressText\>
2058
+ <strong\>
2059
+ 1500px and above </strong\>
2060
+ <br />
2061
+ Extra-large breakpoint for modern desktop monitors and large laptops (17inch+). </IressText\>
2062
+ </IressStack\>
2063
+ <IressStack gap\="xs"\>
2064
+ <IressInline gap\="sm"\>
2065
+ <IressText element\="strong"\>
2066
+ Min screen width </IressText\>
2067
+ <IressText\>
2068
+ 1500px </IressText\>
2069
+ </IressInline\>
2070
+ <IressInline gap\="sm"\>
2071
+ <IressText element\="strong"\>
2072
+ Max screen width </IressText\>
2073
+ <IressText\>
2074
+ N/A </IressText\>
2075
+ </IressInline\>
2076
+ <IressInline gap\="sm"\>
2077
+ <IressText element\="strong"\>
2078
+ Example viewport </IressText\>
2079
+ <IressText\>
2080
+ 1280px </IressText\>
2081
+ </IressInline\>
2082
+ <IressInline gap\="sm"\>
2083
+ <IressText element\="strong"\>
2084
+ Margin </IressText\>
2085
+ <IressText\>
2086
+ 16px </IressText\>
2087
+ </IressInline\>
2088
+ </IressStack\>
2089
+ </IressInline\>
2090
+ <IressDivider />
2091
+ <IressText\>
2092
+ <h2\>
2093
+ Grid example </h2\>
2094
+ <p\>
2095
+ From large screens onwards, all 12 columns of the grid can be used. For developers, this means the minimum span on extra large screens is 1. At this screen the container max width is applied, but can be opted out by using the{' '}
2096
+ <code\>
2097
+ fluid </code\>
2098
+ {' '}prop. It is recommended to keep the max width in most scenarios to ensure optimal readability.
2099
+ </p\>
2100
+ <IressPanel bg\="alt"\>
2101
+ <kn renderLabel\="viewing" />
2102
+ </IressPanel\>
2103
+ </IressText\>
2104
+ <IressContainer\>
2105
+ <IressRow gutter\="md"\>
2106
+ <IressCol
2107
+ span\={{
2108
+ base: 12,
2109
+ xxl: 12
2110
+ }}
2111
+ \>
2112
+ <IressPlaceholder height\="5em" />
2113
+ </IressCol\>
2114
+ <IressCol
2115
+ span\={{
2116
+ base: 12,
2117
+ xxl: 6
2118
+ }}
2119
+ \>
2120
+ <IressPlaceholder height\="5em" />
2121
+ </IressCol\>
2122
+ <IressCol
2123
+ span\={{
2124
+ base: 12,
2125
+ xxl: 6
2126
+ }}
2127
+ \>
2128
+ <IressPlaceholder height\="5em" />
2129
+ </IressCol\>
2130
+ <IressCol
2131
+ span\={{
2132
+ base: 12,
2133
+ xxl: 4
2134
+ }}
2135
+ \>
2136
+ <IressPlaceholder height\="5em" />
2137
+ </IressCol\>
2138
+ <IressCol
2139
+ span\={{
2140
+ base: 12,
2141
+ xxl: 4
2142
+ }}
2143
+ \>
2144
+ <IressPlaceholder height\="5em" />
2145
+ </IressCol\>
2146
+ <IressCol
2147
+ span\={{
2148
+ base: 12,
2149
+ xxl: 4
2150
+ }}
2151
+ \>
2152
+ <IressPlaceholder height\="5em" />
2153
+ </IressCol\>
2154
+ <IressCol
2155
+ span\={{
2156
+ base: 12,
2157
+ xxl: 2
2158
+ }}
2159
+ \>
2160
+ <IressPlaceholder height\="5em" />
2161
+ </IressCol\>
2162
+ <IressCol
2163
+ span\={{
2164
+ base: 12,
2165
+ xxl: 2
2166
+ }}
2167
+ \>
2168
+ <IressPlaceholder height\="5em" />
2169
+ </IressCol\>
2170
+ <IressCol
2171
+ span\={{
2172
+ base: 12,
2173
+ xxl: 2
2174
+ }}
2175
+ \>
2176
+ <IressPlaceholder height\="5em" />
2177
+ </IressCol\>
2178
+ <IressCol
2179
+ span\={{
2180
+ base: 12,
2181
+ xxl: 2
2182
+ }}
2183
+ \>
2184
+ <IressPlaceholder height\="5em" />
2185
+ </IressCol\>
2186
+ <IressCol
2187
+ span\={{
2188
+ base: 12,
2189
+ xxl: 2
2190
+ }}
2191
+ \>
2192
+ <IressPlaceholder height\="5em" />
2193
+ </IressCol\>
2194
+ <IressCol
2195
+ span\={{
2196
+ base: 12,
2197
+ xxl: 2
2198
+ }}
2199
+ \>
2200
+ <IressPlaceholder height\="5em" />
2201
+ </IressCol\>
2202
+ <IressCol
2203
+ span\={{
2204
+ base: 12,
2205
+ xxl: 1
2206
+ }}
2207
+ \>
2208
+ <IressPlaceholder height\="5em" />
2209
+ </IressCol\>
2210
+ <IressCol
2211
+ span\={{
2212
+ base: 12,
2213
+ xxl: 1
2214
+ }}
2215
+ \>
2216
+ <IressPlaceholder height\="5em" />
2217
+ </IressCol\>
2218
+ <IressCol
2219
+ span\={{
2220
+ base: 12,
2221
+ xxl: 1
2222
+ }}
2223
+ \>
2224
+ <IressPlaceholder height\="5em" />
2225
+ </IressCol\>
2226
+ <IressCol
2227
+ span\={{
2228
+ base: 12,
2229
+ xxl: 1
2230
+ }}
2231
+ \>
2232
+ <IressPlaceholder height\="5em" />
2233
+ </IressCol\>
2234
+ <IressCol
2235
+ span\={{
2236
+ base: 12,
2237
+ xxl: 1
2238
+ }}
2239
+ \>
2240
+ <IressPlaceholder height\="5em" />
2241
+ </IressCol\>
2242
+ <IressCol
2243
+ span\={{
2244
+ base: 12,
2245
+ xxl: 1
2246
+ }}
2247
+ \>
2248
+ <IressPlaceholder height\="5em" />
2249
+ </IressCol\>
2250
+ <IressCol
2251
+ span\={{
2252
+ base: 12,
2253
+ xxl: 1
2254
+ }}
2255
+ \>
2256
+ <IressPlaceholder height\="5em" />
2257
+ </IressCol\>
2258
+ <IressCol
2259
+ span\={{
2260
+ base: 12,
2261
+ xxl: 1
2262
+ }}
2263
+ \>
2264
+ <IressPlaceholder height\="5em" />
2265
+ </IressCol\>
2266
+ <IressCol
2267
+ span\={{
2268
+ base: 12,
2269
+ xxl: 1
2270
+ }}
2271
+ \>
2272
+ <IressPlaceholder height\="5em" />
2273
+ </IressCol\>
2274
+ <IressCol
2275
+ span\={{
2276
+ base: 12,
2277
+ xxl: 1
2278
+ }}
2279
+ \>
2280
+ <IressPlaceholder height\="5em" />
2281
+ </IressCol\>
2282
+ <IressCol
2283
+ span\={{
2284
+ base: 12,
2285
+ xxl: 1
2286
+ }}
2287
+ \>
2288
+ <IressPlaceholder height\="5em" />
2289
+ </IressCol\>
2290
+ <IressCol
2291
+ span\={{
2292
+ base: 12,
2293
+ xxl: 1
2294
+ }}
2295
+ \>
2296
+ <IressPlaceholder height\="5em" />
2297
+ </IressCol\>
2298
+ </IressRow\>
2299
+ </IressContainer\>
2300
+ </IressStack\>
2301
+
2302
+ ```
2303
+
2304
+ #### Props
2305
+
2306
+ | Name | Description | Default | Control |
2307
+ | --- | --- | --- | --- |
2308
+ | alternate |
2309
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
2310
+
2311
+ boolean
2312
+
2313
+ |
2314
+
2315
+ false
2316
+
2317
+ | Set boolean |
2318
+ | caption\* |
2319
+
2320
+ Caption that describes the data in the table, required for accessibility.
2321
+
2322
+ ReactNode
2323
+
2324
+ | \- |
2325
+
2326
+ "1500px and above"
2327
+
2328
+ |
2329
+ | children |
2330
+
2331
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
2332
+
2333
+ ReactNode
2334
+
2335
+ | \- | Set object |
2336
+ | columns |
2337
+
2338
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
2339
+
2340
+ TableColumn<TRow, TVal>\[\]
2341
+
2342
+ | \- | Set object |
2343
+ | compact |
2344
+
2345
+ Compact view of the table, used for tables with a lot of data.
2346
+
2347
+ boolean
2348
+
2349
+ |
2350
+
2351
+ false
2352
+
2353
+ | Set boolean |
2354
+ | empty |
2355
+
2356
+ Content to be show when there is no rowData (columns must also be provided).
2357
+
2358
+ ReactNode
2359
+
2360
+ | \- | Set object |
2361
+ | hiddenCaption |
2362
+
2363
+ When set to true, the table caption will be visually hidden.
2364
+
2365
+ boolean
2366
+
2367
+ | \- | Set boolean |
2368
+ | hiddenHeader |
2369
+
2370
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
2371
+
2372
+ boolean
2373
+
2374
+ | \- | Set boolean |
2375
+ | hover |
2376
+
2377
+ When set to true, hovering over a row will trigger a UI change.
2378
+
2379
+ boolean
2380
+
2381
+ | \- | Set boolean |
2382
+ | removeRowBorders |
2383
+
2384
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
2385
+
2386
+ boolean
2387
+
2388
+ |
2389
+
2390
+ false
2391
+
2392
+ | Set boolean |
2393
+ | rowProps |
2394
+
2395
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
2396
+
2397
+ TableRowsProps\['rowProps'\]
2398
+
2399
+ | \- | Set object |
2400
+ | rows |
2401
+
2402
+ Each object in the array contains the data for a row.
2403
+
2404
+ TRow\[\]
2405
+
2406
+ | \[\] | Set object |
2407
+ | scope |
2408
+
2409
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
2410
+
2411
+ union
2412
+
2413
+ | \- |
2414
+
2415
+ rowcol
2416
+
2417
+ |
2418
+
2419
+ * * *
2420
+
2421
+ For designers
2422
+ -------------
2423
+
2424
+ When designing for responsive layouts, consider how your designs will adapt to different screen sizes. Use the breakpoints defined in the design system to guide your layout decisions and ensure that your designs are flexible and adaptable.
2425
+
2426
+ ### Tips
2427
+
2428
+ 1. Use the example viewport sizes provided in the breakpoints table to show your designs at different screen widths.
2429
+ 2. Prioritise content based on screen size, ensuring that the most important information is easily accessible on smaller devices.
2430
+ 3. Reduce option counts on mobile devices where appropriate
2431
+ 4. Implement responsive navigation patterns
2432
+ 5. Adjust spacing and sizing for different contexts
2433
+ 6. Maintain usability across all supported devices
2434
+
2435
+ * * *
2436
+
2437
+ For developers
2438
+ --------------
2439
+
2440
+ If you are using the IDS components, the breakpoints have already been mapped out to their respective props. You can use props such as `gap` to change the visual properties of the component at certain breakpoints.
2441
+
2442
+ import { IressStack } from '@iress-oss/ids-components';
2443
+ <IressStack gap\={{ xs: 'spacing.100', md: 'spacing.200' }} />;
2444
+
2445
+ ```
2446
+
2447
+ ### Hooks
2448
+
2449
+ #### `useBreakpoint`
2450
+
2451
+ We also provide a `useBreakpoint` hook that allows you to access the current breakpoint in your components. This can be useful for conditionally rendering components based on the current screen size.
2452
+
2453
+ **Note:** It is best to use media queries for responsive styling. Most props that require responsive values already support breakpoints which map to CSS values. Only use the `useBreakpoint` hook when there is no other way to achieve the desired responsive behavior.
2454
+
2455
+ import { useBreakpoint } from '@iress-oss/ids-components';
2456
+ const MyComponent \= () \=> {
2457
+ const { breakpoint } \= useBreakpoint();
2458
+ return (
2459
+ <div\>
2460
+ {breakpoint \=== 'xs' && <p\>This is extra small screen</p\>}
2461
+ {breakpoint \=== 'md' && <p\>This is medium screen</p\>}
2462
+ </div\>
2463
+ );
2464
+ };
2465
+
2466
+ ```
2467
+
2468
+ #### `useResponsiveProps`
2469
+
2470
+ Another hook is `useResponsiveProps`, which allows you to define responsive properties that change based on the current breakpoint. This is particularly useful for completely changing components at various screen sizes.
2471
+
2472
+ **Note:** It is best to use media queries for responsive styling. Most props that require responsive values already support breakpoints which map to CSS values. Only use the `useResponsiveProps` hook when there is no other way to achieve the desired responsive behavior.
2473
+
2474
+ [](./iframe.html?id=foundations-responsive-layout--responsive-props)
2475
+
2476
+ `useResponsiveProps`
2477
+ --------------------
2478
+
2479
+ This example demonstrates a use case for `useResponsiveProps`, for changing the columns on a table based on the breakpoint.
2480
+
2481
+ Resize the screen to see the columns change
2482
+
2483
+ | Name | Age |
2484
+ | --- | --- |
2485
+ | Luke Skywalker | 19 |
2486
+ | Princess Leia | 19 |
2487
+ | Han Solo | 32 |
2488
+
2489
+ ```
2490
+
2491
+ export const ResponsiveTableColumns \= () \=> {
2492
+ const { value } \= useResponsiveProps({
2493
+ base: \[{ key: 'name', label: 'Name' }\],
2494
+ lg: \[
2495
+ { key: 'name', label: 'Name' },
2496
+ { key: 'age', label: 'Age' },
2497
+ \],
2498
+ });
2499
+ return (
2500
+ <IressTable
2501
+ caption\={
2502
+ <IressText textAlign\="left"\>
2503
+ <h2\>
2504
+ <code\>useResponsiveProps</code\>
2505
+ </h2\>
2506
+ <p\>
2507
+ This example demonstrates a use case for{' '}
2508
+ <code\>useResponsiveProps</code\>, for changing the columns on a table
2509
+ based on the breakpoint. </p\>
2510
+ <p\>Resize the screen to see the columns change</p\>
2511
+ </IressText\>
2512
+ }
2513
+ columns\={value}
2514
+ rows\={\[
2515
+ { name: 'Luke Skywalker', age: 19 },
2516
+ { name: 'Princess Leia', age: 19 },
2517
+ { name: 'Han Solo', age: 32 },
2518
+ \]}
2519
+ />
2520
+ );
2521
+ };
2522
+
2523
+ ```
2524
+
2525
+ #### Props
2526
+
2527
+ | Name | Description | Default | Control |
2528
+ | --- | --- | --- | --- |
2529
+ | alternate |
2530
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
2531
+
2532
+ boolean
2533
+
2534
+ |
2535
+
2536
+ false
2537
+
2538
+ | Set boolean |
2539
+ | caption\* |
2540
+
2541
+ Caption that describes the data in the table, required for accessibility.
2542
+
2543
+ ReactNode
2544
+
2545
+ | \- | Set object |
2546
+ | children |
2547
+
2548
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
2549
+
2550
+ ReactNode
2551
+
2552
+ | \- | Set object |
2553
+ | columns |
2554
+
2555
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
2556
+
2557
+ TableColumn<TRow, TVal>\[\]
2558
+
2559
+ | \- | Set object |
2560
+ | compact |
2561
+
2562
+ Compact view of the table, used for tables with a lot of data.
2563
+
2564
+ boolean
2565
+
2566
+ |
2567
+
2568
+ false
2569
+
2570
+ | Set boolean |
2571
+ | empty |
2572
+
2573
+ Content to be show when there is no rowData (columns must also be provided).
2574
+
2575
+ ReactNode
2576
+
2577
+ | \- | Set object |
2578
+ | hiddenCaption |
2579
+
2580
+ When set to true, the table caption will be visually hidden.
2581
+
2582
+ boolean
2583
+
2584
+ | \- | Set boolean |
2585
+ | hiddenHeader |
2586
+
2587
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
2588
+
2589
+ boolean
2590
+
2591
+ | \- | Set boolean |
2592
+ | hover |
2593
+
2594
+ When set to true, hovering over a row will trigger a UI change.
2595
+
2596
+ boolean
2597
+
2598
+ | \- | Set boolean |
2599
+ | removeRowBorders |
2600
+
2601
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
2602
+
2603
+ boolean
2604
+
2605
+ |
2606
+
2607
+ false
2608
+
2609
+ | Set boolean |
2610
+ | rowProps |
2611
+
2612
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
2613
+
2614
+ TableRowsProps\['rowProps'\]
2615
+
2616
+ | \- | Set object |
2617
+ | rows |
2618
+
2619
+ Each object in the array contains the data for a row.
2620
+
2621
+ TRow\[\]
2622
+
2623
+ | \[\] | Set object |
2624
+ | scope |
2625
+
2626
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
2627
+
2628
+ union
2629
+
2630
+ | \- |
2631
+
2632
+ rowcol
2633
+
2634
+ |
2635
+
2636
+ ### Constant
2637
+
2638
+ You can also use the breakpoints directly in your CSS or styled components. The breakpoints are defined in the `@iress-oss/ids-components` package.
2639
+
2640
+ import { BREAKPOINT\_DETAILS } from '@iress-oss/ids-components';
2641
+ const css \= \`
2642
+ @media (${BREAKPOINT\_DETAILS.md.mediaQuery}}) {
2643
+ .my-class { padding: 20px; } }
2644
+ \`;
2645
+ <style\>{css}</style\>;
2646
+
2647
+ ```
2648
+
2649
+ The base grid size is exported as `GRID_SIZE` from the `@iress-oss/ids-components` package, in case you need to reference it in your own code.
2650
+
2651
+ ## React components / Z-index (stacking)
2652
+
2653
+ Z-index (stacking)
2654
+ ==================
2655
+
2656
+ The z-index determines the stacking order of elements. Elements with a higher z-index always sit in front of elements with a lower z-index. Each index has been mapped to the appropriate elevation(s).
2657
+
2658
+ Reference
2659
+ ---------
2660
+
2661
+ [](./iframe.html?id=foundations-z-index-stacking--reference)
2662
+
2663
+ | Name | Usage | Value |
2664
+ | --- | --- | --- |
2665
+ | DEFAULT | The default z-index used for most elements. Can be combined with raised and floating elevations. | 0 |
2666
+ | MODAL | Used for IressModal. Can be combined with floating elevation. | 400 |
2667
+ | NAVBAR | Used for navbars. Can be combined with overflow elevation. | 100 |
2668
+ | POPOVER | Used for IressPopover. Can be combined with floating elevation. | 200 |
2669
+ | SLIDEOUT | Used for IressSlideout. Can be combined with floating elevation. | 300 |
2670
+ | TOAST | Used for IressToast. Can be combined with floating elevation. | 500 |
2671
+ | TOOLTIP | Used for IressTooltip. Can be combined with floating elevation. | 600 |
2672
+
2673
+ ```
2674
+
2675
+ <IressTable
2676
+ columns\={\[
2677
+ {
2678
+ key: 'name',
2679
+ label: 'Name',
2680
+ sort: 'asc',
2681
+ width: '1%'
2682
+ },
2683
+ {
2684
+ key: 'usage',
2685
+ label: 'Usage'
2686
+ },
2687
+ {
2688
+ key: 'value',
2689
+ label: 'Value',
2690
+ width: '200px'
2691
+ }
2692
+ \]}
2693
+ rows\={\[
2694
+ {
2695
+ name: 'DEFAULT',
2696
+ usage: 'The default z-index used for most elements. Can be combined with raised and floating elevations.',
2697
+ value: 0
2698
+ },
2699
+ {
2700
+ name: 'NAVBAR',
2701
+ usage: 'Used for navbars. Can be combined with overflow elevation.',
2702
+ value: 100
2703
+ },
2704
+ {
2705
+ name: 'POPOVER',
2706
+ usage: 'Used for IressPopover. Can be combined with floating elevation.',
2707
+ value: 200
2708
+ },
2709
+ {
2710
+ name: 'SLIDEOUT',
2711
+ usage: 'Used for IressSlideout. Can be combined with floating elevation.',
2712
+ value: 300
2713
+ },
2714
+ {
2715
+ name: 'MODAL',
2716
+ usage: 'Used for IressModal. Can be combined with floating elevation.',
2717
+ value: 400
2718
+ },
2719
+ {
2720
+ name: 'TOAST',
2721
+ usage: 'Used for IressToast. Can be combined with floating elevation.',
2722
+ value: 500
2723
+ },
2724
+ {
2725
+ name: 'TOOLTIP',
2726
+ usage: 'Used for IressTooltip. Can be combined with floating elevation.',
2727
+ value: 600
2728
+ }
2729
+ \]}
2730
+ />
2731
+
2732
+ ```
2733
+
2734
+ #### Props
2735
+
2736
+ | Name | Description | Default | Control |
2737
+ | --- | --- | --- | --- |
2738
+ | alternate |
2739
+ If set to true, the table will have alternating row colors. This is useful for improving readability in tables with many rows.
2740
+
2741
+ boolean
2742
+
2743
+ |
2744
+
2745
+ false
2746
+
2747
+ | Set boolean |
2748
+ | caption\* |
2749
+
2750
+ Caption that describes the data in the table, required for accessibility.
2751
+
2752
+ ReactNode
2753
+
2754
+ | \- | Set object |
2755
+ | children |
2756
+
2757
+ Multiple table elements can be passed as children. Used to create a static table, or add a `<tfoot />` element to a `rows` based table.
2758
+
2759
+ ReactNode
2760
+
2761
+ | \- | Set object |
2762
+ | columns |
2763
+
2764
+ A mapping of columns to be displayed in the table. If not provided, it will be automatically regenerated from the row data.
2765
+
2766
+ TableColumn<TRow, TVal>\[\]
2767
+
2768
+ | \- |
2769
+
2770
+ RAW
2771
+
2772
+ * columns :
2773
+
2774
+ \[
2775
+
2776
+ * 0 :
2777
+
2778
+ {...} 4 keys
2779
+
2780
+ * 1 :
2781
+
2782
+ {...} 2 keys
2783
+
2784
+ * 2 :
2785
+
2786
+ {...} 3 keys
2787
+
2788
+
2789
+ \]
2790
+
2791
+
2792
+ |
2793
+ | compact |
2794
+
2795
+ Compact view of the table, used for tables with a lot of data.
2796
+
2797
+ boolean
2798
+
2799
+ |
2800
+
2801
+ false
2802
+
2803
+ | Set boolean |
2804
+ | empty |
2805
+
2806
+ Content to be show when there is no rowData (columns must also be provided).
2807
+
2808
+ ReactNode
2809
+
2810
+ | \- | Set object |
2811
+ | hiddenCaption |
2812
+
2813
+ When set to true, the table caption will be visually hidden.
2814
+
2815
+ boolean
2816
+
2817
+ | \- | Set boolean |
2818
+ | hiddenHeader |
2819
+
2820
+ When set to true, the table header (`<thead></thead>`) will be not be rendered. Only use with very simple tables.
2821
+
2822
+ boolean
2823
+
2824
+ | \- | Set boolean |
2825
+ | hover |
2826
+
2827
+ When set to true, hovering over a row will trigger a UI change.
2828
+
2829
+ boolean
2830
+
2831
+ | \- | Set boolean |
2832
+ | removeRowBorders |
2833
+
2834
+ If set to true, the table will not have borders between rows. This is useful for simpler tables where the row borders are not needed.
2835
+
2836
+ boolean
2837
+
2838
+ |
2839
+
2840
+ false
2841
+
2842
+ | Set boolean |
2843
+ | rowProps |
2844
+
2845
+ Add additional props to the row element. Can be a props map or a function that returns an props map. The function is called with the row data.
2846
+
2847
+ TableRowsProps\['rowProps'\]
2848
+
2849
+ | \- | Set object |
2850
+ | rows |
2851
+
2852
+ Each object in the array contains the data for a row.
2853
+
2854
+ TRow\[\]
2855
+
2856
+ | \[\] |
2857
+
2858
+ RAW
2859
+
2860
+ * rows :
2861
+
2862
+ \[
2863
+
2864
+ * 0 :
2865
+
2866
+ {...} 3 keys
2867
+
2868
+ * 1 :
2869
+
2870
+ {...} 3 keys
2871
+
2872
+ * 2 :
2873
+
2874
+ {...} 3 keys
2875
+
2876
+ * 3 :
2877
+
2878
+ {...} 3 keys
2879
+
2880
+ * 4 :
2881
+
2882
+ {...} 3 keys
2883
+
2884
+ * 5 :
2885
+
2886
+ {...} 3 keys
2887
+
2888
+ * 6 :
2889
+
2890
+ {...} 3 keys
2891
+
2892
+
2893
+ \]
2894
+
2895
+
2896
+ |
2897
+ | scope |
2898
+
2899
+ Defaults to 'row' - the first cell in the row is a `<th>`, otherwise it's a `<td>`.
2900
+
2901
+ union
2902
+
2903
+ | \- |
2904
+
2905
+ rowcol
2906
+
2907
+ |
2908
+
2909
+ * * *
2910
+
2911
+ For developers
2912
+ --------------
2913
+
2914
+ If you are using the IDS components, the z-indexes have already been mapped out to their respective components based on the usage above. They are hardcoded into the components, so you don't need to worry about them.
2915
+
2916
+ The mapping is exported as `Z_INDEX` from the `@iress-oss/ids-components` package, in case you need to reference it in your own code.
2917
+
2918
+ ## React components / Visual Design
2919
+
2920
+ Visual Design Standards
2921
+ =======================
2922
+
2923
+ Typography
2924
+ ----------
2925
+
2926
+ * Use systematic font sizing with heading scales (H1-H6)
2927
+ * Implement consistent line heights and font weights
2928
+ * Provide text colour hierarchies (primary, muted, success, warning, danger)
2929
+ * Support responsive typography scaling
2930
+
2931
+ Colour System
2932
+ -------------
2933
+
2934
+ * Maintain semantic colour meanings:
2935
+ * **Primary**: Main call-to-action colour with high contrast
2936
+ * **Success**: Positive outcomes and confirmations
2937
+ * **Warning**: Caution and important notices
2938
+ * **Danger**: Errors and destructive actions
2939
+ * **Info**: Neutral information and guidance
2940
+ * **Positive/Negative**: Financial context (buy/sell actions)
2941
+ * Ensure all colour combinations meet accessibility contrast requirements
2942
+ * Provide consistent hover and active state colours
2943
+
2944
+ Spacing and Layout
2945
+ ------------------
2946
+
2947
+ * Use systematic spacing scale (xs, sm, md, lg, xl)
2948
+ * Apply consistent gutter systems for layout components
2949
+ * Implement responsive breakpoints for adaptive layouts
2950
+ * Maintain proper margin and padding relationships
2951
+
2952
+ Interactive States
2953
+ ------------------
2954
+
2955
+ * Provide clear hover, focus, active, and disabled states
2956
+ * Use consistent transition timing and easing
2957
+ * Implement proper focus indicators for keyboard navigation
2958
+ * Show loading states for asynchronous operations
2959
+
2960
+ ## React components / Consistency
2961
+
2962
+ Using components consistently
2963
+ =============================
2964
+
2965
+ Buttons
2966
+ -------
2967
+
2968
+ * **Primary**: Limit to one per view for main call-to-action
2969
+ * **Secondary**: Use for secondary actions
2970
+ * **Tertiary**: Extra affordance between secondary actions
2971
+ * **Link**: Button styled as link (avoid with icon-only content)
2972
+ * **Danger**: Destructive actions requiring extra confirmation
2973
+ * **Positive/Negative**: Financial transactions (buy/sell)
2974
+
2975
+ Forms
2976
+ -----
2977
+
2978
+ * Always use `IressField` wrapper for proper label, hint, and error placement
2979
+ * Provide clear validation feedback with appropriate error messages
2980
+ * Use consistent input sizing based on expected content length
2981
+ * Implement proper form state management and accessibility
2982
+
2983
+ Navigation
2984
+ ----------
2985
+
2986
+ * Use semantic HTML5 navigation elements
2987
+ * Provide skip links for keyboard users
2988
+ * Implement proper ARIA labelling for navigation sections
2989
+ * Ensure consistent navigation patterns across applications
2990
+
2991
+ Data Display
2992
+ ------------
2993
+
2994
+ * Use semantic table structures with proper headers
2995
+ * Provide clear visual hierarchy in data presentations
2996
+ * Implement consistent sorting and filtering patterns
2997
+ * Use appropriate loading states for data-heavy components
2998
+
2999
+ Modals and Overlays
3000
+ -------------------
3001
+
3002
+ * Reserve modals for critical tasks requiring full attention
3003
+ * Provide multiple dismissal methods (backdrop, escape key, close button)
3004
+ * Implement proper focus management and restoration
3005
+ * Use slideouts for supplementary tasks where underlying content needs visibility
3006
+
3007
+ ## React components / Content
3008
+
3009
+ Content
3010
+ =======
3011
+
3012
+ Microcopy Guidelines
3013
+ --------------------
3014
+
3015
+ * Use clear, concise language that matches user mental models
3016
+ * Provide helpful error messages with actionable guidance
3017
+ * Implement consistent tone of voice across all interface text
3018
+ * Use progressive disclosure for complex information
3019
+
3020
+ Iconography
3021
+ -----------
3022
+
3023
+ * Use icons consistently with established meanings
3024
+ * Provide screen reader text for meaningful icons
3025
+ * Avoid using icons as the sole means of communication
3026
+ * Maintain consistent icon sizing and alignment
3027
+
3028
+ ## React components / User Experience
3029
+
3030
+ User experience
3031
+ ===============
3032
+
3033
+ We use heuristic guidelines to assess the usability and user-centred design quality of all Iress products.
3034
+
3035
+ System Feedback
3036
+ ---------------
3037
+
3038
+ * Always show users where they are, what just happened, and what’s possible next.
3039
+ * Provide immediate visual and textual feedback for all actions and states.
3040
+ * Ensure feedback is clear, contextual, and proportionate to the importance of the action.
3041
+
3042
+ Language and Mental Models
3043
+ --------------------------
3044
+
3045
+ * Use user-centred language and avoid technical jargon.
3046
+ * Follow cultural and industry conventions for colour, iconography, terminology, and layout.
3047
+ * Align interaction patterns with real-world analogues wherever feasible.
3048
+
3049
+ Control and Forgiveness
3050
+ -----------------------
3051
+
3052
+ * Make actions reversible and provide undo where errors may occur.
3053
+ * Let users easily backtrack, edit inputs, or abandon flows.
3054
+ * Provide escape hatches from any process without penalty.
3055
+
3056
+ Standards and Consistency
3057
+ -------------------------
3058
+
3059
+ * Use consistent layout, labelling, iconography, and grammar.
3060
+ * Reinforce expectations by placing similar elements in predictable positions.
3061
+ * Apply colour, spacing, and visual patterns consistently across all screens.
3062
+
3063
+ Error Prevention and Recovery
3064
+ -----------------------------
3065
+
3066
+ * Prevent errors by anticipating misuse and validating early.
3067
+ * Phrase error messages with clarity, empathy, and constructive suggestions.
3068
+ * Where errors occur, explain why and how they can be resolved.
3069
+
3070
+ Recognition Over Recall
3071
+ -----------------------
3072
+
3073
+ * Display necessary information at the point of decision.
3074
+ * Use visual grouping, spacing, and affordance to reveal hierarchy.
3075
+ * Prioritise visual clarity over novelty.
3076
+
3077
+ Simplicity and Minimalism
3078
+ -------------------------
3079
+
3080
+ * Remove unnecessary detail—every word, element, or feature should earn its place.
3081
+ * Design for clarity of purpose with visually distinct, semantically meaningful UI components.
3082
+ * Use whitespace, clean alignment, and simplified flows to reduce cognitive load.
3083
+