@splunk/react-ui 5.8.0 → 5.9.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 (69) hide show
  1. package/Anchor.js +2 -1
  2. package/ButtonSimple.js +1 -1
  3. package/CHANGELOG.md +38 -0
  4. package/Calendar.js +134 -134
  5. package/Clickable.js +131 -94
  6. package/Code.js +177 -170
  7. package/CollapsiblePanel.js +173 -135
  8. package/ColumnLayout.js +69 -45
  9. package/ComboBox.js +1 -0
  10. package/Dropdown.js +87 -72
  11. package/File.js +35 -35
  12. package/LICENSE +1 -1
  13. package/MIGRATION.md +40 -0
  14. package/Markdown.js +331 -306
  15. package/Menu.js +259 -215
  16. package/Modal.js +174 -181
  17. package/Monogram.js +2 -2
  18. package/Multiselect.js +414 -334
  19. package/Number.js +237 -242
  20. package/Search.js +15 -14
  21. package/SelectBase.js +777 -719
  22. package/SimpleTable.d.ts +2 -0
  23. package/SimpleTable.js +433 -0
  24. package/SlidingPanels.js +224 -153
  25. package/SpotLight.d.ts +2 -0
  26. package/SpotLight.js +687 -0
  27. package/Table.js +1232 -1238
  28. package/Text.js +26 -26
  29. package/docker-compose.yml +12 -18
  30. package/docs-llm/Avatar.md +2 -8
  31. package/docs-llm/Collapsible Panel.md +11 -57
  32. package/docs-llm/Column Layout.md +2 -2
  33. package/docs-llm/Divider.md +33 -0
  34. package/docs-llm/Message Bar.md +4 -1
  35. package/docs-llm/Multiselect.md +185 -162
  36. package/docs-llm/Notifications.md +46 -0
  37. package/docs-llm/Table.md +7 -7
  38. package/docs-llm/Tree.md +7 -2
  39. package/docs-llm/Typography.md +1 -1
  40. package/docs-llm/llms.txt +7 -3
  41. package/package.json +9 -11
  42. package/test-runner-jest.config.js +4 -53
  43. package/types/src/CollapsiblePanel/docs/examples/Actions.d.ts +1 -1
  44. package/types/src/ColumnLayout/ColumnLayout.d.ts +2 -2
  45. package/types/src/Divider/docs/examples/VerticalWithAlignItems.d.ts +8 -0
  46. package/types/src/Markdown/Markdown.d.ts +14 -2
  47. package/types/src/Markdown/renderers/MarkdownTable.d.ts +2 -22
  48. package/types/src/Markdown/renderers/MarkdownWrapper.d.ts +11 -0
  49. package/types/src/Markdown/renderers/index.d.ts +3 -1
  50. package/types/src/Multiselect/Compact.d.ts +12 -3
  51. package/types/src/Multiselect/Multiselect.d.ts +12 -3
  52. package/types/src/Multiselect/Normal.d.ts +8 -3
  53. package/types/src/Multiselect/Option.d.ts +6 -3
  54. package/types/src/Multiselect/docs/examples/Disabled.d.ts +1 -0
  55. package/types/src/Multiselect/docs/examples/LoadMoreWithSelectAll.d.ts +9 -0
  56. package/types/src/SelectBase/SelectBase.d.ts +5 -1
  57. package/types/src/SimpleTable/Body.d.ts +25 -0
  58. package/types/src/SimpleTable/Cell.d.ts +20 -0
  59. package/types/src/SimpleTable/Head.d.ts +20 -0
  60. package/types/src/SimpleTable/HeadCell.d.ts +20 -0
  61. package/types/src/SimpleTable/Row.d.ts +20 -0
  62. package/types/src/SimpleTable/SimpleTable.d.ts +37 -0
  63. package/types/src/SimpleTable/index.d.ts +3 -0
  64. package/types/src/SpotLight/SpotLight.d.ts +88 -0
  65. package/types/src/SpotLight/index.d.ts +2 -0
  66. package/types/src/Table/Row.d.ts +1 -1
  67. package/types/src/Table/Table.d.ts +1 -1
  68. package/types/src/Typography/Typography.d.ts +1 -1
  69. package/types/src/Multiselect/docs/examples/LoadMoreOnScrollBottom.d.ts +0 -7
package/Text.js CHANGED
@@ -89,9 +89,9 @@
89
89
  var m = e.n(y);
90
90
  // CONCATENATED MODULE: external "@splunk/react-ui/Button"
91
91
  const g = require("@splunk/react-ui/Button");
92
- var C = e.n(g);
92
+ var h = e.n(g);
93
93
  // CONCATENATED MODULE: external "@splunk/react-ui/ControlGroup"
94
- const h = require("@splunk/react-ui/ControlGroup");
94
+ const C = require("@splunk/react-ui/ControlGroup");
95
95
  // CONCATENATED MODULE: external "@splunk/react-ui/useControlled"
96
96
  const x = require("@splunk/react-ui/useControlled");
97
97
  var k = e.n(x);
@@ -109,7 +109,7 @@
109
109
  const B = require("@splunk/themes");
110
110
  // CONCATENATED MODULE: ./src/Text/TextStyles.ts
111
111
  var I = "230px";
112
- var P = O()(C()).withConfig({
112
+ var P = O()(h()).withConfig({
113
113
  displayName: "TextStyles__StyledClearButton",
114
114
  componentId: "eg7n6t-0"
115
115
  })([ "display:none;visibility:hidden;" ]);
@@ -142,7 +142,7 @@
142
142
  displayName: "TextStyles__StyledAdornment",
143
143
  componentId: "eg7n6t-3"
144
144
  })([ "display:inline-flex;align-items:center;justify-content:center;pointer-events:none;z-index:1;color:", ";", " ", ";& > button{", "}& > button:focus,& > a:focus{box-shadow:", ";}" ], B.variables.contentColorMuted, (function() {
145
- return (0, S.css)([ "height:calc(", " - 2px);" ], B.variables.inputHeight);
145
+ return (0, S.css)([ "height:calc(", " - ", " * 2);" ], B.variables.inputHeight, B.variables.inputBorderWidth);
146
146
  }), (function(e) {
147
147
  var r = e.$disabled;
148
148
  return r && (0, S.css)([ "color:", ";" ], B.variables.contentColorDisabled);
@@ -237,8 +237,8 @@
237
237
  }
238
238
  return ("string" === r ? String : Number)(e);
239
239
  }
240
- function G() {
241
- return G = Object.assign ? Object.assign.bind() : function(e) {
240
+ function W() {
241
+ return W = Object.assign ? Object.assign.bind() : function(e) {
242
242
  for (var r = 1; r < arguments.length; r++) {
243
243
  var t = arguments[r];
244
244
  for (var n in t) {
@@ -246,9 +246,9 @@
246
246
  }
247
247
  }
248
248
  return e;
249
- }, G.apply(null, arguments);
249
+ }, W.apply(null, arguments);
250
250
  }
251
- function W(e, r) {
251
+ function G(e, r) {
252
252
  return Y(e) || Q(e, r) || X(e, r) || U();
253
253
  }
254
254
  function U() {
@@ -366,15 +366,15 @@
366
366
  var r;
367
367
  var o = e.append, i = o === void 0 ? false : o, u = e.autoCapitalize, c = e.autoComplete, d = e.autoCorrect, v = e.autoFocus, b = v === void 0 ? false : v, p = e.canClear, y = p === void 0 ? false : p, g = e.children, x = e.defaultValue, S = e.disabled, O = S === void 0 ? false : S, j = e.describedBy, E = e.elementRef, A = e.endAdornment, B = e.error, I = B === void 0 ? false : B, _ = e.inline, F = _ === void 0 ? false : _, H = e.inputClassName, M = e.inputId, R = e.inputRef, V = e.labelledBy, K = e.maxLength, L = e.name, U = e.onBlur, X = e.onChange, J = e.onClick, Q = e.onFocus, Y = e.onKeyDown, ee = e.onSelect, re = e.passwordVisibilityToggle, ne = re === void 0 ? false : re, oe = e.placeholder, ae = e.prepend, ie = ae === void 0 ? false : ae, le = e.required, ue = e.spellCheck, se = e.startAdornment, ce = e.tabIndex, de = ce === void 0 ? 0 : ce, ve = e.title, be = e.type, pe = be === void 0 ? "text" : be, fe = e.value, ye = Z(e, [ "append", "autoCapitalize", "autoComplete", "autoCorrect", "autoFocus", "canClear", "children", "defaultValue", "disabled", "describedBy", "elementRef", "endAdornment", "error", "inline", "inputClassName", "inputId", "inputRef", "labelledBy", "maxLength", "name", "onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onSelect", "passwordVisibilityToggle", "placeholder", "prepend", "required", "spellCheck", "startAdornment", "tabIndex", "title", "type", "value" ]);
368
368
  // @docs-props-type TextPropsBase
369
- var me = (0, t.useContext)(h.ControlGroupContext);
369
+ var me = (0, t.useContext)(C.ControlGroupContext);
370
370
  var ge = k()({
371
371
  componentName: "Text",
372
372
  /* eslint-disable-next-line prefer-rest-params */
373
373
  componentProps: arguments[0]
374
374
  });
375
- var Ce = (0, t.useRef)(null);
376
- var he = (0, t.useState)(x || ""), xe = W(he, 2), ke = xe[0], we = xe[1];
377
- var Se = (0, t.useState)(true), Oe = W(Se, 2), je = Oe[0], Ee = Oe[1];
375
+ var he = (0, t.useRef)(null);
376
+ var Ce = (0, t.useState)(x || ""), xe = G(Ce, 2), ke = xe[0], we = xe[1];
377
+ var Se = (0, t.useState)(true), Oe = G(Se, 2), je = Oe[0], Ee = Oe[1];
378
378
  var Ae = (0, t.useMemo)((function() {
379
379
  return ge ? fe : ke;
380
380
  }), [ ge, fe, ke ]);
@@ -402,7 +402,7 @@
402
402
  if (!ge) {
403
403
  we(t);
404
404
  }
405
- Ce === null || Ce === void 0 ? void 0 : (r = Ce.current) === null || r === void 0 ? void 0 : r.focus();
405
+ he === null || he === void 0 ? void 0 : (r = he.current) === null || r === void 0 ? void 0 : r.focus();
406
406
  X === null || X === void 0 ? void 0 : X(e, {
407
407
  value: t,
408
408
  name: L
@@ -413,9 +413,9 @@
413
413
  e.stopPropagation();
414
414
  }), [ J ]);
415
415
  var qe = (0, t.useCallback)((function(e) {
416
- if (document.activeElement !== Ce.current) {
416
+ if (document.activeElement !== he.current) {
417
417
  var r;
418
- (r = Ce.current) === null || r === void 0 ? void 0 : r.focus();
418
+ (r = he.current) === null || r === void 0 ? void 0 : r.focus();
419
419
  }
420
420
  J === null || J === void 0 ? void 0 : J(e);
421
421
  }), [ J ]);
@@ -433,9 +433,9 @@
433
433
  Y === null || Y === void 0 ? void 0 : Y(e);
434
434
  }), [ Y ]);
435
435
  var Ne = (0, t.useCallback)((function(e) {
436
- Ce.current = e;
436
+ he.current = e;
437
437
  D(R, e);
438
- }), [ R, Ce ]);
438
+ }), [ R, he ]);
439
439
  var Fe = (0, t.useCallback)((function(e) {
440
440
  ee === null || ee === void 0 ? void 0 : ee(e);
441
441
  }), [ ee ]);
@@ -450,7 +450,7 @@
450
450
  };
451
451
  if (A) {
452
452
 
453
- return n().createElement($, G({
453
+ return n().createElement($, W({
454
454
  "data-test": "end-adornment",
455
455
  onClick: $e
456
456
  }, r), A);
@@ -459,7 +459,7 @@
459
459
  var t = je ? n().createElement(f(), null) : n().createElement(m(), null);
460
460
  var o = je ? (0, w._)("Show password") : (0, w._)("Hide password");
461
461
 
462
- return n().createElement($, r, n().createElement(C(), {
462
+ return n().createElement($, r, n().createElement(h(), {
463
463
  appearance: "secondary",
464
464
  "data-test": "password-toggle",
465
465
  inline: false,
@@ -490,7 +490,7 @@
490
490
  };
491
491
  if (se) {
492
492
 
493
- return n().createElement($, G({
493
+ return n().createElement($, W({
494
494
  "data-test": "start-adornment",
495
495
  onClick: $e
496
496
  }, e), se);
@@ -519,7 +519,7 @@
519
519
  }, l()(ye, [ "inputRef", "onBlur", "onClick", "onChange", "onFocus", "onKeyDown", "onSelect" ].concat(N(a()(ze)))));
520
520
  var Ke = je ? "password" : "text";
521
521
  var Le = ne ? Ke : pe;
522
- var Ge = z(z({}, ze), {}, {
522
+ var We = z(z({}, ze), {}, {
523
523
  "data-test": "textbox",
524
524
  autoCapitalize: u,
525
525
  autoComplete: c,
@@ -546,22 +546,22 @@
546
546
  $error: I
547
547
  });
548
548
  // Do not render value in DOM when type is password, or passwordVisibilityToggle is enabled
549
- var We = pe === "password" || ne ? undefined : Ae;
549
+ var Ge = pe === "password" || ne ? undefined : Ae;
550
550
  // Firefox hack (SUI-2716). Remove when fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=1427173
551
551
  var Ue = pe === "time";
552
552
 
553
- return n().createElement(T, G({
553
+ return n().createElement(T, W({
554
554
  tabIndex: -1,
555
555
  $isTimeInput: Ue,
556
556
  "data-test": "text",
557
- "data-test-value": We,
557
+ "data-test-value": Ge,
558
558
  "data-test-disabled": O === "dimmed" && "dimmed" || O && "disabled" || undefined,
559
559
  ref: E,
560
560
  flex: true,
561
561
  inline: F,
562
562
  onClick: qe,
563
563
  $disabled: !!O
564
- }, Ve), Re(), O ? n().createElement(q, G({
564
+ }, Ve), Re(), O ? n().createElement(q, W({
565
565
  className: H,
566
566
  "data-test": "textbox",
567
567
  disabled: O === true,
@@ -569,7 +569,7 @@
569
569
  readOnly: true,
570
570
  type: Le,
571
571
  value: Ae
572
- }, ze)) : n().createElement(q, G({}, Ge, {
572
+ }, ze)) : n().createElement(q, W({}, We, {
573
573
  onClick: Te
574
574
  })), g, Me());
575
575
  }
@@ -9,7 +9,7 @@ services:
9
9
  workdir: /react-ui
10
10
  command: npx http-server storybook-static-visual-prisma --port 6007
11
11
  ports:
12
- - '6007:6007'
12
+ - "6007:6007"
13
13
  enterprise-storybook:
14
14
  build:
15
15
  context: .
@@ -20,7 +20,7 @@ services:
20
20
  workdir: /react-ui
21
21
  command: npx http-server storybook-static-visual-enterprise --port 6008
22
22
  ports:
23
- - '6008:6008'
23
+ - "6008:6008"
24
24
  splunk-magnetic-storybook:
25
25
  build:
26
26
  context: .
@@ -31,7 +31,7 @@ services:
31
31
  workdir: /react-ui
32
32
  command: npx http-server storybook-static-visual-splunk-magnetic --port 6009
33
33
  ports:
34
- - '6009:6009'
34
+ - "6009:6009"
35
35
  prisma-visual-test:
36
36
  build:
37
37
  context: .
@@ -45,12 +45,10 @@ services:
45
45
  - JOB_BROWSER=${JOB_BROWSER}
46
46
  working_dir: /react-ui
47
47
  volumes:
48
- - './src:/react-ui/src'
49
- - './test-reports:/react-ui/test-reports'
48
+ - "./src:/react-ui/src"
49
+ - "./test-reports:/react-ui/test-reports"
50
50
  # TODO(SUI-8236): can remove once webpack.test.config.js imports of infra/.config.js are removed as this won't be needed any longer (verify with no cache docker build something else didn't start using it though)
51
- - '../../infra/.config.js:/infra/.config.js:ro'
52
- - '../../infra/storybook/utils.js:/infra/storybook/utils.js:ro'
53
- - '../../infra/visual-tests/orphaned-snapshot-check-reporter.js:/infra/visual-tests/orphaned-snapshot-check-reporter.js:ro'
51
+ - "../../infra:/infra:ro"
54
52
  depends_on:
55
53
  - prisma-storybook
56
54
  command: /bin/sh -c "npx wait-on http://prisma-storybook:6007 && yarn cache clean && yarn test-storybook -c .storybook-visual --browsers $${STORYBOOK_BROWSER} $${STORYBOOK_UPDATE_SNAPSHOT} $${STORYBOOK_MAX_WORKERS} --url http://prisma-storybook:6007 --no-index-json"
@@ -67,12 +65,10 @@ services:
67
65
  - JOB_BROWSER=${JOB_BROWSER}
68
66
  working_dir: /react-ui
69
67
  volumes:
70
- - './src:/react-ui/src'
71
- - './test-reports:/react-ui/test-reports'
68
+ - "./src:/react-ui/src"
69
+ - "./test-reports:/react-ui/test-reports"
72
70
  # TODO(SUI-8236): can remove once webpack.test.config.js imports of infra/.config.js are removed as this won't be needed any longer (verify with no cache docker build something else didn't start using it though)
73
- - '../../infra/.config.js:/infra/.config.js:ro'
74
- - '../../infra/storybook/utils.js:/infra/storybook/utils.js:ro'
75
- - '../../infra/visual-tests/orphaned-snapshot-check-reporter.js:/infra/visual-tests/orphaned-snapshot-check-reporter.js:ro'
71
+ - "../../infra:/infra:ro"
76
72
  depends_on:
77
73
  - enterprise-storybook
78
74
  command: /bin/sh -c "npx wait-on http://enterprise-storybook:6008 && yarn cache clean && yarn test-storybook -c .storybook-visual --browsers $${STORYBOOK_BROWSER} $${STORYBOOK_UPDATE_SNAPSHOT} $${STORYBOOK_MAX_WORKERS} --url http://enterprise-storybook:6008 --no-index-json"
@@ -89,12 +85,10 @@ services:
89
85
  - JOB_BROWSER=${JOB_BROWSER}
90
86
  working_dir: /react-ui
91
87
  volumes:
92
- - './src:/react-ui/src'
93
- - './test-reports:/react-ui/test-reports'
88
+ - "./src:/react-ui/src"
89
+ - "./test-reports:/react-ui/test-reports"
94
90
  # TODO(SUI-8236): can remove once webpack.test.config.js imports of infra/.config.js are removed as this won't be needed any longer (verify with no cache docker build something else didn't start using it though)
95
- - '../../infra/.config.js:/infra/.config.js:ro'
96
- - '../../infra/storybook/utils.js:/infra/storybook/utils.js:ro'
97
- - '../../infra/visual-tests/orphaned-snapshot-check-reporter.js:/infra/visual-tests/orphaned-snapshot-check-reporter.js:ro'
91
+ - "../../infra:/infra:ro"
98
92
  depends_on:
99
93
  - splunk-magnetic-storybook
100
94
  command: /bin/sh -c "npx wait-on http://splunk-magnetic-storybook:6009 && yarn cache clean && yarn test-storybook -c .storybook-visual --browsers $${STORYBOOK_BROWSER} $${STORYBOOK_UPDATE_SNAPSHOT} $${STORYBOOK_MAX_WORKERS} --url http://splunk-magnetic-storybook:6009 --no-index-json"
@@ -160,14 +160,8 @@ import Layout from '@splunk/react-ui/Layout';
160
160
  import { pick, variables } from '@splunk/themes';
161
161
 
162
162
  const avatarColor = pick({
163
- enterprise: {
164
- light: variables.diverging3ColorB,
165
- dark: variables.diverging1ColorA,
166
- },
167
- prisma: {
168
- light: variables.sequential6D7,
169
- dark: variables.sequential6D3,
170
- },
163
+ light: variables.staticA1,
164
+ dark: variables.staticA1,
171
165
  });
172
166
 
173
167
 
@@ -58,6 +58,10 @@ Order panels logically, according to the specific reading order.
58
58
  > Image: Heart eye example with Collapsible panel label in sequential order 1 - 4 next to a grimacing face example where the Collapsible panel are out of order 2, 1, 4, 3
59
59
 
60
60
 
61
+
62
+ ### Keep headers consistent
63
+ Stacked `CollapsiblePanels` must share an identical header structure to prevent jarring alignment shifts and layout "jumping." It is recommended to extend this uniformity across an entire page section to keep the user’s mental model predictable for a specific task or context. Across a full page, consistency is contextual; while a uniform layout is ideal, variations are permissible between distinct, visually separated sections that serve different functional purposes.
64
+
61
65
  ## Content guidelines
62
66
 
63
67
  ### Panel title:
@@ -73,6 +77,7 @@ Order panels logically, according to the specific reading order.
73
77
  [2]: ./Table
74
78
  [3]: ./TabBar
75
79
 
80
+
76
81
  ## Examples
77
82
 
78
83
 
@@ -156,14 +161,9 @@ If a CollapsiblePanel is passed disabled the default behavior is to render as "d
156
161
  ```typescript
157
162
  import React from 'react';
158
163
 
159
- import Clone from '@splunk/react-icons/enterprise/Clone';
160
164
  import MoreVertical from '@splunk/react-icons/enterprise/MoreVertical';
161
- import Refresh from '@splunk/react-icons/enterprise/Refresh';
162
- import Remove from '@splunk/react-icons/enterprise/Remove';
163
165
  import Button from '@splunk/react-ui/Button';
164
166
  import CollapsiblePanel from '@splunk/react-ui/CollapsiblePanel';
165
- import Dropdown from '@splunk/react-ui/Dropdown';
166
- import Menu from '@splunk/react-ui/Menu';
167
167
  import P from '@splunk/react-ui/Paragraph';
168
168
  import { _ } from '@splunk/ui-utils/i18n';
169
169
 
@@ -173,51 +173,20 @@ function Dimmed() {
173
173
  <div style={{ display: 'flex', width: 140, alignItems: 'center' }}>Splunk products</div>
174
174
  );
175
175
 
176
- const actionsToggle = (
176
+ // In real usage, each CollapsiblePanel can provide its own `actions`.
177
+ // This example reuses one for brevity.
178
+ const actions = (
177
179
  <Button
178
180
  disabled="dimmed"
179
181
  appearance="secondary"
180
182
  data-test="actions-toggle"
181
183
  icon={<MoreVertical width="16px" height="16px" screenReaderText={_('Actions')} />}
182
- style={{ marginLeft: 10 }}
183
184
  />
184
185
  );
185
186
 
186
- const actions = (
187
- <div
188
- style={{
189
- position: 'relative',
190
- width: '100%',
191
- display: 'flex',
192
- justifyContent: 'flex-end',
193
- }}
194
- >
195
- <div style={{ flex: '0 0 auto' }}>
196
- <Dropdown defaultPlacement="right" toggle={actionsToggle}>
197
- <Menu>
198
- <Menu.Item startAdornment={<Refresh width="16px" height="16px" />}>
199
- Refresh
200
- </Menu.Item>
201
- <Menu.Divider />
202
- <Menu.Item startAdornment={<Clone width="16px" height="16px" />}>
203
- Duplicate
204
- </Menu.Item>
205
- <Menu.Item startAdornment={<Remove width="16px" height="16px" />}>
206
- Delete
207
- </Menu.Item>
208
- </Menu>
209
- </Dropdown>
210
- </div>
211
- </div>
212
- );
213
-
214
187
  return (
215
188
  <>
216
- <CollapsiblePanel
217
- panelId={1}
218
- disabled="dimmed"
219
- title="Introduction to Splunk Enterprise"
220
- >
189
+ <CollapsiblePanel disabled="dimmed" title={title} actions={actions}>
221
190
  <P>
222
191
  Splunk Enterprise makes it simple to collect, analyze and act upon the untapped
223
192
  value of the big data generated by your technology infrastructure, security
@@ -230,12 +199,7 @@ function Dimmed() {
230
199
  analytics backbone.
231
200
  </P>
232
201
  </CollapsiblePanel>
233
- <CollapsiblePanel
234
- panelId={2}
235
- disabled="dimmed"
236
- defaultOpen
237
- title="Introduction to Splunk Enterprise"
238
- >
202
+ <CollapsiblePanel defaultOpen disabled="dimmed" title={title} actions={actions}>
239
203
  <P>
240
204
  Splunk Enterprise makes it simple to collect, analyze and act upon the untapped
241
205
  value of the big data generated by your technology infrastructure, security
@@ -248,16 +212,6 @@ function Dimmed() {
248
212
  analytics backbone.
249
213
  </P>
250
214
  </CollapsiblePanel>
251
- <CollapsiblePanel disabled="dimmed" title={title} actions={actions}>
252
- <P>
253
- Splunk Security modernizes security operations and protects businesses with
254
- data, analytics, automation and end-to-end integrations. Splunk Observability
255
- solves problems in seconds with end-to-end visibility across infrastructure,
256
- applications and digital customer experience. Splunk Cloud provides
257
- cloud-powered insights for petabyte-scale data analytics across the hybrid cloud
258
- with Splunk as a service.
259
- </P>
260
- </CollapsiblePanel>
261
215
  </>
262
216
  );
263
217
  }
@@ -376,7 +330,7 @@ export default MultiControlled;
376
330
 
377
331
  ### Actions
378
332
 
379
- Adding clickable items in the header.
333
+ Adding clickable items in the header. Within a set of panels, keep headers consistent by either including `actions` on all panels or on none.
380
334
 
381
335
  ```typescript
382
336
  import React, { useState } from 'react';
@@ -349,8 +349,8 @@ export default AlignItems;
349
349
 
350
350
  ### ColumnLayout API
351
351
 
352
- `ColumnLayout` provides simple API for laying out content into columns. It is based on flexbox
353
- and has 12 columns.
352
+ @deprecated
353
+ ColumnLayout has been deprecated and will be removed in a future major version. Use CSS `grid` or `flex` instead.
354
354
 
355
355
  #### Props
356
356
 
@@ -83,6 +83,39 @@ export default Vertical;
83
83
 
84
84
 
85
85
 
86
+ ### Vertical with align-items
87
+
88
+ ```typescript
89
+ import React from 'react';
90
+
91
+ import styled from 'styled-components';
92
+
93
+ import Portrait from '@splunk/react-icons/Portrait';
94
+ import QuestionCircle from '@splunk/react-icons/QuestionCircle';
95
+ import Button from '@splunk/react-ui/Button';
96
+ import Divider from '@splunk/react-ui/Divider';
97
+ import Layout from '@splunk/react-ui/Layout';
98
+
99
+ const StyledDivider = styled(Divider)`
100
+ align-self: stretch;
101
+ `;
102
+
103
+
104
+ function VerticalWithAlignItems() {
105
+ return (
106
+ <Layout>
107
+ <Button icon={<QuestionCircle />} />
108
+ <StyledDivider orientation="vertical" />
109
+ <Button icon={<Portrait />} />
110
+ </Layout>
111
+ );
112
+ }
113
+
114
+ export default VerticalWithAlignItems;
115
+ ```
116
+
117
+
118
+
86
119
  ### StyledContainer
87
120
 
88
121
  ```typescript
@@ -116,6 +116,7 @@ Message Bar can have one of four types: "info", "warning", "error" or "success".
116
116
  ```typescript
117
117
  import React from 'react';
118
118
 
119
+ import Heading from '@splunk/react-ui/Heading';
119
120
  import Layout from '@splunk/react-ui/Layout';
120
121
  import Link from '@splunk/react-ui/Link';
121
122
  import MessageBar from '@splunk/react-ui/MessageBar';
@@ -129,7 +130,9 @@ function Types() {
129
130
  return (
130
131
  <section>
131
132
  <Layout style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
132
- <h2 id={headingId}>Account notifications</h2>
133
+ <Heading level={2} id={headingId}>
134
+ Account notifications
135
+ </Heading>
133
136
  <MessageBar
134
137
  type="info"
135
138
  aria-labelledby={headingId}