@carbon/ibm-products-web-components 0.0.1-canary.3564

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/.storybook/Preview.ts +161 -0
  2. package/.storybook/_container.scss +73 -0
  3. package/.storybook/container.ts +41 -0
  4. package/.storybook/main.ts +25 -0
  5. package/.storybook/manager.ts +13 -0
  6. package/.storybook/preview-head.html +3 -0
  7. package/.storybook/templates/with-layer.scss +38 -0
  8. package/.storybook/templates/with-layer.ts +90 -0
  9. package/.storybook/theme.ts +12 -0
  10. package/LICENSE +201 -0
  11. package/es/components/side-panel/defs.d.ts +39 -0
  12. package/es/components/side-panel/defs.js +51 -0
  13. package/es/components/side-panel/defs.js.map +1 -0
  14. package/es/components/side-panel/index.d.ts +9 -0
  15. package/es/components/side-panel/index.js +9 -0
  16. package/es/components/side-panel/index.js.map +1 -0
  17. package/es/components/side-panel/side-panel.d.ts +539 -0
  18. package/es/components/side-panel/side-panel.js +837 -0
  19. package/es/components/side-panel/side-panel.js.map +1 -0
  20. package/es/components/side-panel/side-panel.scss.js +13 -0
  21. package/es/components/side-panel/side-panel.scss.js.map +1 -0
  22. package/es/components/side-panel/side-panel.test.d.ts +7 -0
  23. package/es/components/side-panel/side-panel.test.js +56 -0
  24. package/es/components/side-panel/side-panel.test.js.map +1 -0
  25. package/es/globals/internal/handle.d.ts +18 -0
  26. package/es/globals/internal/handle.js +8 -0
  27. package/es/globals/internal/handle.js.map +1 -0
  28. package/es/globals/settings.d.ts +15 -0
  29. package/es/globals/settings.js +28 -0
  30. package/es/globals/settings.js.map +1 -0
  31. package/es/index.d.ts +9 -0
  32. package/es/index.js +9 -0
  33. package/es/index.js.map +1 -0
  34. package/lib/components/side-panel/defs.d.ts +39 -0
  35. package/lib/components/side-panel/defs.js +51 -0
  36. package/lib/components/side-panel/defs.js.map +1 -0
  37. package/lib/components/side-panel/index.d.ts +9 -0
  38. package/lib/components/side-panel/side-panel.d.ts +539 -0
  39. package/lib/components/side-panel/side-panel.test.d.ts +7 -0
  40. package/lib/globals/internal/handle.d.ts +18 -0
  41. package/lib/globals/settings.d.ts +15 -0
  42. package/lib/globals/settings.js +32 -0
  43. package/lib/globals/settings.js.map +1 -0
  44. package/lib/index.d.ts +9 -0
  45. package/netlify.toml +8 -0
  46. package/package.json +96 -0
  47. package/scss/components/side-panel/side-panel.scss +302 -0
  48. package/scss/components/side-panel/story-styles.scss +46 -0
  49. package/src/components/side-panel/defs.ts +46 -0
  50. package/src/components/side-panel/index.ts +10 -0
  51. package/src/components/side-panel/side-panel.mdx +106 -0
  52. package/src/components/side-panel/side-panel.scss +302 -0
  53. package/src/components/side-panel/side-panel.stories.ts +525 -0
  54. package/src/components/side-panel/side-panel.test.ts +52 -0
  55. package/src/components/side-panel/side-panel.ts +980 -0
  56. package/src/components/side-panel/story-styles.scss +46 -0
  57. package/src/globals/internal/handle.ts +19 -0
  58. package/src/globals/settings.ts +22 -0
  59. package/src/index.ts +10 -0
  60. package/src/typings/resources.d.ts +26 -0
  61. package/tasks/build.js +165 -0
  62. package/tools/rollup-plugin-icon-paths.js +39 -0
  63. package/tools/rollup-plugin-icons.js +73 -0
  64. package/tools/rollup-plugin-lit-scss.js +89 -0
  65. package/tools/svg-result-carbon-icon-loader.js +28 -0
  66. package/tools/svg-result-carbon-icon.js +42 -0
  67. package/tools/vite-svg-result-carbon-icon-loader.ts +65 -0
  68. package/tsconfig.json +36 -0
  69. package/vite.config.ts +32 -0
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@carbon/ibm-products-web-components",
3
+ "description": "Carbon for IBM Products Web Components",
4
+ "version": "0.0.1-canary.3564+17bbbfbcf",
5
+ "license": "Apache-2.0",
6
+ "main": "es/index.js",
7
+ "module": "es/index.js",
8
+ "type": "module",
9
+ "bugs": "https://github.com/carbon-design-system/ibm-products/issues",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/carbon-design-system/ibm-products.git",
13
+ "directory": "packages/ibm-products-web-components"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public",
17
+ "provenance": true
18
+ },
19
+ "exports": {
20
+ "./es/components/*": {
21
+ "node": "./lib/components/*",
22
+ "default": "./es/components/*"
23
+ },
24
+ "./es/globals/*": {
25
+ "node": "./lib/globals/*",
26
+ "default": "./es/globals/*"
27
+ },
28
+ "./es/*": "./es/*",
29
+ "./lib/*": "./lib/*",
30
+ "./custom-elements.json": "./custom-elements.json",
31
+ "./package.json": "./package.json"
32
+ },
33
+ "keywords": [
34
+ "carbon",
35
+ "carbon design system",
36
+ "carbon community",
37
+ "carbon for ibm products",
38
+ "carbon for ibm products web components",
39
+ "web components"
40
+ ],
41
+ "scripts": {
42
+ "build": "yarn clean && node tasks/build.js && yarn wca",
43
+ "build:storybook": "yarn wca && storybook build",
44
+ "clean": "rimraf es lib scss dist storybook-static",
45
+ "preview": "vite preview",
46
+ "storybook": "storybook dev -p 3000",
47
+ "test": "vitest run",
48
+ "test:ui": "vitest --ui",
49
+ "wca": "web-component-analyzer analyze src --outFile custom-elements.json"
50
+ },
51
+ "dependencies": {
52
+ "@carbon/ibm-products-styles": "^2.47.0-rc.0",
53
+ "@carbon/styles": "1.63.1",
54
+ "@carbon/web-components": "2.13.0",
55
+ "lit": "^3.1.0"
56
+ },
57
+ "devDependencies": {
58
+ "@carbon/icons": "^11.50.0",
59
+ "@carbon/motion": "^11.23.0",
60
+ "@mordech/vite-lit-loader": "^0.35.0",
61
+ "@rollup/plugin-alias": "^5.1.1",
62
+ "@rollup/plugin-commonjs": "^28.0.0",
63
+ "@rollup/plugin-node-resolve": "^15.3.0",
64
+ "@rollup/plugin-typescript": "^12.1.0",
65
+ "@storybook/addon-essentials": "^8.2.8",
66
+ "@storybook/addon-links": "^8.2.8",
67
+ "@storybook/addon-storysource": "^8.2.8",
68
+ "@storybook/blocks": "^8.2.8",
69
+ "@storybook/manager-api": "^8.3.4",
70
+ "@storybook/theming": "^8.3.4",
71
+ "@storybook/web-components": "^8.2.8",
72
+ "@storybook/web-components-vite": "^8.2.8",
73
+ "@types/jest": "^29.5.13",
74
+ "@vitest/browser": "latest",
75
+ "@vitest/ui": "latest",
76
+ "autoprefixer": "^10.4.20",
77
+ "cssnano": "^7.0.6",
78
+ "eslint": "^9.11.1",
79
+ "eslint-config-carbon": "^3.17.0",
80
+ "globby": "^14.0.2",
81
+ "happy-dom": "^15.7.4",
82
+ "postcss": "^8.4.47",
83
+ "remark-gfm": "^4.0.0",
84
+ "rimraf": "^5.0.5",
85
+ "rollup": "^3.29.5",
86
+ "rollup-plugin-copy": "^3.5.0",
87
+ "sass": "^1.77.2",
88
+ "storybook": "^8.2.8",
89
+ "storybook-addon-accessibility-checker": "^3.1.61-rc.3",
90
+ "typescript": "^5.5.3",
91
+ "vite": "^5.4.1",
92
+ "vitest": "^2.1.2",
93
+ "web-component-analyzer": "2.0.0"
94
+ },
95
+ "gitHead": "17bbbfbcf7be1c462a301972ac441a69b61faf1a"
96
+ }
@@ -0,0 +1,302 @@
1
+ /*
2
+ * Copyright IBM Corp. 2023, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ $css--plex: true !default;
9
+
10
+ /* Other Carbon settings. */
11
+ @use '@carbon/styles/scss/reset';
12
+ @use '@carbon/styles/scss/config' as *;
13
+ @use '@carbon/styles/scss/motion' as *;
14
+ @use '@carbon/styles/scss/spacing' as *;
15
+ @use '@carbon/styles/scss/theme' as *;
16
+ @use '@carbon/styles/scss/utilities/ai-gradient' as *;
17
+ @use '@carbon/styles/scss/utilities/convert' as *;
18
+ @use 'sass:map';
19
+
20
+ $prefix: 'c4p';
21
+ $carbon-prefix: 'cds';
22
+ @use '@carbon/ibm-products-styles/scss/components/ActionSet/index' as *;
23
+ @use '@carbon/ibm-products-styles/scss/components/SidePanel/index' as *;
24
+ @use '@carbon/ibm-products-styles/scss/components/SidePanel/side-panel-variables'
25
+ as spv;
26
+
27
+ $block-class: #{$prefix}--side-panel;
28
+ $block-class-action-set: #{$prefix}--action-set;
29
+
30
+ :host(#{$prefix}-side-panel) {
31
+ /* Replaces use of Framer for slide in / out animation */
32
+ --#{$block-class}--displaced: 100%;
33
+
34
+ * {
35
+ /* not sure why things are coming out as content-box */
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ .#{$block-class} {
40
+ @extend .#{$block-class};
41
+
42
+ /* for actions container query - note this changes the size calculation */
43
+ container-name: side-panel;
44
+ container-type: inline-size;
45
+
46
+ &[placement='left'] {
47
+ --#{$block-class}--displaced: -100%;
48
+ }
49
+
50
+ &[opening] {
51
+ transform: translateX(var(--#{$block-class}--displaced));
52
+ }
53
+
54
+ &[open] {
55
+ transform: translateX(0);
56
+ transition: all $duration-moderate-02 motion(standard, productive);
57
+ }
58
+
59
+ @media screen and (prefers-reduced-motion: reduce) {
60
+ &[open] {
61
+ transition: none;
62
+ }
63
+ }
64
+
65
+ &[closing] {
66
+ transform: translateX(var(--#{$block-class}--displaced));
67
+ transition: all $duration-moderate-01 motion(exit, productive);
68
+ }
69
+
70
+ @media screen and (prefers-reduced-motion: reduce) {
71
+ &[closing] {
72
+ transition: none;
73
+ }
74
+ }
75
+
76
+ &[placement='right'] {
77
+ @extend .#{$block-class}--right-placement;
78
+
79
+ /* remove if https://github.com/carbon-design-system/ibm-products/pull/3983 merged */
80
+ border-inline-end: 1px solid $border-subtle-02;
81
+ inset-inline-end: 0;
82
+ }
83
+
84
+ /* stylelint-disable-next-line no-duplicate-selectors -- disabled to keep close to 'right' setting */
85
+ &[placement='left'] {
86
+ @extend .#{$block-class}--left-placement;
87
+
88
+ /* remove if https://github.com/carbon-design-system/ibm-products/pull/3983 merged */
89
+ border-inline-end: 1px solid $border-subtle-02;
90
+ inset-inline-start: 0;
91
+ }
92
+
93
+ @each $size, $size_value in spv.$side-panel-sizes {
94
+ &[size='#{$size}'] {
95
+ @extend .#{$block-class}--#{$size};
96
+ }
97
+ }
98
+
99
+ &[condensed-actions] {
100
+ @extend .#{$block-class}--condensed-actions;
101
+ }
102
+ }
103
+
104
+ #{$prefix}-layer {
105
+ display: contents;
106
+ }
107
+
108
+ .#{$block-class}__overlay {
109
+ &[opening] {
110
+ opacity: 0;
111
+ }
112
+
113
+ @media screen and (prefers-reduced-motion: reduce) {
114
+ &[open] {
115
+ opacity: 1;
116
+ transition: none;
117
+ }
118
+ }
119
+
120
+ &[open] {
121
+ opacity: 1;
122
+ transition: all $duration-moderate-02 motion(standard, productive);
123
+ }
124
+ @media screen and (prefers-reduced-motion: reduce) {
125
+ &[closing] {
126
+ opacity: 0;
127
+ transition: none;
128
+ }
129
+ }
130
+
131
+ &[closing] {
132
+ opacity: 0;
133
+ transition: all $duration-moderate-01 motion(exit, productive);
134
+ }
135
+ }
136
+
137
+ .#{$block-class}__header {
138
+ &::before {
139
+ z-index: 99; /* must be higher than action toolbar */
140
+ }
141
+
142
+ &[detail-step] {
143
+ @extend .#{$block-class}__header--on-detail-step;
144
+ }
145
+
146
+ &[no-title-animation] {
147
+ @extend .#{$block-class}__header--no-title-animation;
148
+ // inset-block-start: 0;
149
+ }
150
+
151
+ &[reduced-motion] {
152
+ @extend .#{$block-class}__header--reduced-motion;
153
+ }
154
+
155
+ &[has-action-toolbar] {
156
+ margin-block-end: $spacing-03;
157
+ padding-block-end: 0;
158
+ }
159
+ }
160
+
161
+ .#{$block-class} .#{$block-class}__header[has-action-toolbar]::before {
162
+ content: initial; /* remove border below */
163
+ }
164
+
165
+ .#{$block-class}__subtitle-text {
166
+ &[hidden] {
167
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
168
+ }
169
+ }
170
+
171
+ .#{$block-class}__action-toolbar {
172
+ margin-block-end: 0;
173
+ padding-inline-start: 0;
174
+
175
+ &[hidden] {
176
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
177
+ }
178
+ }
179
+
180
+ .#{$block-class} .#{$block-class}__action-toolbar[hidden] {
181
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
182
+ }
183
+
184
+ .#{$block-class}[has-slug] {
185
+ @extend .#{$block-class}--has-slug;
186
+ }
187
+
188
+ [scrolls] {
189
+ @extend .#{$block-class}--scrolls;
190
+ }
191
+
192
+ .#{$block-class}__body-content {
193
+ @extend .#{$block-class}__body-content;
194
+ }
195
+
196
+ @mixin actions-placement() {
197
+ --flex-direction: row;
198
+ /* non carbon for IBM Products adjustment */
199
+ flex-direction: var(--flex-direction);
200
+
201
+ ::slotted(#{$prefix}-button) {
202
+ flex: 0 1 25%;
203
+ max-inline-size: to-rem(232px);
204
+ }
205
+
206
+ ::slotted(#{$prefix}-button[kind='ghost']) {
207
+ flex: 1 1 25%;
208
+ max-inline-size: none;
209
+ }
210
+
211
+ ::slotted(#{$prefix}-button[hidden]) {
212
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
213
+
214
+ display: none;
215
+ }
216
+
217
+ // -1 in @container query is for 1px left border
218
+ @container (width <= #{map.get(spv.$side-panel-sizes, lg)}) {
219
+ &:not([actions-multiple='triple']) ::slotted(#{$carbon-prefix}-button) {
220
+ // double and single on lg use 50%
221
+ flex: 0 1 50%;
222
+ max-inline-size: none;
223
+ }
224
+ }
225
+
226
+ // -1 in @container query is for 1px left border
227
+ @container (width <= #{map.get(spv.$side-panel-sizes, md)}) {
228
+ // md is 50% for two and 100% for one
229
+ // column for triple
230
+ &[actions-multiple] ::slotted(#{$carbon-prefix}-button) {
231
+ flex: 0 0 100%;
232
+ max-inline-size: none;
233
+ }
234
+
235
+ &[actions-multiple='double'] ::slotted(#{$carbon-prefix}-button) {
236
+ flex: 0 1 50%;
237
+ max-inline-size: none;
238
+ }
239
+
240
+ &[actions-multiple='triple'] {
241
+ --flex-direction: column;
242
+
243
+ ::slotted(#{$carbon-prefix}-button) {
244
+ flex: initial;
245
+ inline-size: 100%;
246
+ max-inline-size: none;
247
+ }
248
+ }
249
+ }
250
+
251
+ // -1 in @container query is for 1px left border
252
+ @container (width <= #{map.get(spv.$side-panel-sizes, sm)}) {
253
+ --flex-direction: column;
254
+
255
+ ::slotted(#{$carbon-prefix}-button) {
256
+ flex: initial;
257
+ inline-size: 100%;
258
+ max-inline-size: none;
259
+ }
260
+ }
261
+ }
262
+
263
+ .#{$block-class}__actions-container {
264
+ @extend .#{$block-class-action-set};
265
+ @include actions-placement();
266
+
267
+ display: flex;
268
+ inline-size: 100%;
269
+
270
+ ::slotted(#{$carbon-prefix}-button) {
271
+ @extend .#{$block-class-action-set}__action-button;
272
+ }
273
+
274
+ &[hidden] {
275
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
276
+
277
+ display: none;
278
+ }
279
+
280
+ $multiples: 'single' 'double' 'triple';
281
+ @each $m in $multiples {
282
+ &[actions-multiple='#{$m}'] {
283
+ @extend .#{$carbon-prefix}--action-set--row-#{$m} !optional;
284
+ }
285
+ }
286
+
287
+ $sizes: 'xs' 'sm';
288
+ @each $s in $sizes {
289
+ &[size='#{$s}'] {
290
+ @extend .#{$block-class-action-set}--#{$s} !optional;
291
+ }
292
+ }
293
+ }
294
+
295
+ .sentinel {
296
+ @extend .#{$carbon-prefix}--visually-hidden !optional;
297
+ }
298
+
299
+ .#{$block-class}__close-button {
300
+ width: 2rem;
301
+ }
302
+ }
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Copyright IBM Corp. 2023, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ @use '@carbon/styles/scss/theme' as *;
8
+
9
+ $story-prefix: 'side-panel-stories__';
10
+
11
+ .#{$story-prefix}body-content {
12
+ display: flex;
13
+ flex-direction: column;
14
+ padding: 1rem;
15
+ gap: 1rem;
16
+ }
17
+
18
+ .#{$story-prefix}text-inputs {
19
+ display: flex;
20
+ gap: 1rem;
21
+
22
+ > * {
23
+ flex-basis: 50%;
24
+ }
25
+ }
26
+
27
+ .#{$story-prefix}story-container {
28
+ position: fixed;
29
+ display: grid;
30
+ block-size: 100vh;
31
+ grid-template-rows: 3rem 1fr;
32
+ inline-size: 100vw;
33
+ inset-block-start: 0;
34
+ inset-inline-start: 0;
35
+ }
36
+
37
+ .#{$story-prefix}story-header {
38
+ background: $background-inverse;
39
+ }
40
+
41
+ .#{$story-prefix}story-content {
42
+ position: relative;
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ *
4
+ * Copyright IBM Corp. 2023, 2024
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+ /**
11
+ * Modal size.
12
+ */
13
+ export enum SIDE_PANEL_SIZE {
14
+ /**
15
+ * Extra small size.
16
+ */
17
+ EXTRA_SMALL = 'xs',
18
+
19
+ /**
20
+ * Small size.
21
+ */
22
+ SMALL = 'sm',
23
+
24
+ /**
25
+ * Medium size.
26
+ */
27
+ MEDIUM = 'md',
28
+
29
+ /**
30
+ * Large size.
31
+ */
32
+ LARGE = 'lg',
33
+
34
+ /**
35
+ * 2X-Large size.
36
+ */
37
+ EXTRA_EXTRA_LARGE = '2xl',
38
+ }
39
+
40
+ export enum SIDE_PANEL_PLACEMENT {
41
+ /** right / default */
42
+ RIGHT = 'right',
43
+
44
+ /** left */
45
+ LEFT = 'left',
46
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ *
4
+ * Copyright IBM Corp. 2023, 2024
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+ import './side-panel';
@@ -0,0 +1,106 @@
1
+ import { ArgTypes, Markdown, Meta } from '@storybook/blocks';
2
+ import { cdnJs, cdnCss } from '../../globals/internal/storybook-cdn';
3
+ import * as SidePanelStories from './side-panel.stories';
4
+
5
+ <Meta of={SidePanelStories} />
6
+
7
+ # SidePanel
8
+
9
+ > 💡 Check our
10
+ > [CodeSandbox](https://codesandbox.io/s/github/carbon-design-system/carbon/tree/main/packages/web-components/examples/components/side-panel)
11
+ > example implementation.
12
+
13
+ [![Edit carbon-web-components](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/carbon-design-system/carbon/tree/main/packages/web-components/examples/components/side-panel)
14
+
15
+ Side panels keep users in-context of a page while performing tasks like
16
+ navigating, editing, viewing details, or configuring something new.
17
+
18
+ ## Getting started
19
+
20
+ Here's a quick example to get you started.
21
+
22
+ ### JS (via import)
23
+
24
+ ```javascript
25
+ import '@carbon/web-components/es/components/side-panel/index.js';
26
+ // The following are used for slotted fields
27
+ import '@carbon/web-components/es/components/text-input/index.js';
28
+ import '@carbon/web-components/es/components/textarea/index.js';
29
+ import '@carbon/web-components/es/components/button/index.js';
30
+ ```
31
+
32
+ <Markdown>{`${cdnJs({ components: ['side-panel'] })}`}</Markdown>
33
+ <Markdown>{`${cdnCss()}`}</Markdown>
34
+
35
+ ### HTML
36
+
37
+ ```html
38
+ <c4p-side-panel
39
+ include-overlay
40
+ open
41
+ label-text="An optional label"
42
+ size="md"
43
+ title="A title, can be omitted">
44
+ <!-- Content -->
45
+ <h5>Side panel content</h5>
46
+ <div class="${storyPrefix}text-inputs">
47
+ <cds-text-input
48
+ label="Input A"
49
+ id="side-panel-story-text-input-a"></cds-text-input>
50
+ <cds-text-input
51
+ label="Input B"
52
+ id="side-panel-story-text-input-b"></cds-text-input>
53
+ </div>
54
+ <div class="${storyPrefix}text-inputs">
55
+ <cds-text-input
56
+ label="Input C"
57
+ id="side-panel-story-text-input-c"></cds-text-input>
58
+ <cds-text-input
59
+ label="Input D"
60
+ id="side-panel-story-text-input-d"></cds-text-input>
61
+ </div>
62
+ <div class="${storyPrefix}textarea-container">
63
+ <cds-textarea label="Notes" value="This is a text area"></cds-textarea>
64
+ <cds-textarea label="Notes" value="This is a text area"></cds-textarea>
65
+ <cds-textarea label="Notes" value="This is a text area"></cds-textarea>
66
+ </div>
67
+
68
+ <!-- subtitle optional -->
69
+ <div slot="subtitle">
70
+ Subtitle text which can provide more detail on the content being displayed.
71
+ </div>
72
+
73
+ <!-- Action toolbar optional -->
74
+ <cds-button slot="action-toolbar">Copy</cds-button>
75
+ <cds-button
76
+ slot="action-toolbar"
77
+ aria-label="Settings"
78
+ has-icon-only="true"
79
+ kind="${BUTTON_KIND.GHOST}"
80
+ size="sm"
81
+ tooltip-text="Settings">
82
+ ${Settings({ slot: 'icon' })}
83
+ </cds-button>
84
+ <cds-button
85
+ slot="action-toolbar"
86
+ aria-label="Delete"
87
+ has-icon-only="true"
88
+ kind="${BUTTON_KIND.GHOST}"
89
+ size="sm"
90
+ tooltip-text="Delete">
91
+ ${Trashcan({ slot: 'icon' })}
92
+ </cds-button>
93
+
94
+ <!-- Side panel actions optional -->
95
+ <cds-button slot="actions" kind="${BUTTON_KIND.GHOST}">Ghost</cds-button>
96
+ <cds-button slot="actions" kind="${BUTTON_KIND.PRIMARY}"></cds-button>
97
+ </c4p-side-panel>
98
+ ```
99
+
100
+ ## `<c4p-side-panel>` attributes, properties and events
101
+
102
+ Note: For `boolean` attributes, `true` means simply setting the attribute (e.g.
103
+ `<c4p-side-panel open>`) and `false` means not setting the attribute (e.g.
104
+ `<c4p-side-panel>` without `open` attribute).
105
+
106
+ <ArgTypes of="c4p-side-panel" />