@fundamental-styles/mcp 0.41.7-rc.8 → 0.41.7

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 (215) hide show
  1. package/data/AI_USAGE.md +425 -0
  2. package/data/CHANGELOG.md +53 -3
  3. package/data/component-catalog.json +62 -209
  4. package/data/components/README.md +281 -0
  5. package/data/components/action-bar.md +443 -0
  6. package/data/components/ai-busy-indicator.md +79 -0
  7. package/data/components/ai-loading-bar.md +66 -0
  8. package/data/components/avatar-btp.md +198 -0
  9. package/data/components/avatar-group.md +2660 -0
  10. package/data/components/avatar-product-switch.md +476 -0
  11. package/data/components/avatar.md +993 -0
  12. package/data/components/bar.md +574 -0
  13. package/data/components/border-radius.md +148 -0
  14. package/data/components/border.md +412 -0
  15. package/data/components/breadcrumb.md +546 -0
  16. package/data/components/button-2.md +440 -0
  17. package/data/components/button-action-sheet.md +292 -0
  18. package/data/components/button-ai.md +730 -0
  19. package/data/components/button-btp.md +223 -0
  20. package/data/components/button-button.md +233 -0
  21. package/data/components/button-counter.md +176 -0
  22. package/data/components/button-patterns.md +731 -0
  23. package/data/components/button-split.md +459 -0
  24. package/data/components/button.md +469 -0
  25. package/data/components/calendar.md +5784 -0
  26. package/data/components/card-card-media.md +707 -0
  27. package/data/components/card-card.md +2426 -0
  28. package/data/components/card-layouts.md +1201 -0
  29. package/data/components/card.md +2404 -0
  30. package/data/components/carousel.md +1506 -0
  31. package/data/components/code.md +139 -0
  32. package/data/components/component-reset.md +272 -0
  33. package/data/components/components-icons-businesssuiteinappsymbol-icons.md +85 -0
  34. package/data/components/components-icons-sap-icons.md +147 -0
  35. package/data/components/components-icons-tnt-icons.md +85 -0
  36. package/data/components/container-queries.md +221 -0
  37. package/data/components/container.md +227 -0
  38. package/data/components/dialog-docs-static-busy-indicator.md +165 -0
  39. package/data/components/dialog-docs-static-dialog.md +949 -0
  40. package/data/components/dialog-docs-static-patterns.md +147 -0
  41. package/data/components/dialog-docs-static-settings.md +528 -0
  42. package/data/components/dialog-docs-static.md +982 -0
  43. package/data/components/dialog.md +606 -0
  44. package/data/components/dynamic-page-dynamic-page.md +1914 -0
  45. package/data/components/dynamic-page.md +973 -0
  46. package/data/components/dynamic-side.md +197 -0
  47. package/data/components/elevation.md +110 -0
  48. package/data/components/feed-input.md +346 -0
  49. package/data/components/feed-list.md +580 -0
  50. package/data/components/fieldset-2.md +292 -0
  51. package/data/components/fieldset-forms.md +169 -0
  52. package/data/components/fieldset.md +381 -0
  53. package/data/components/flexible-column-layout.md +205 -0
  54. package/data/components/form-group.md +287 -0
  55. package/data/components/form-header.md +71 -0
  56. package/data/components/form-item-2.md +98 -0
  57. package/data/components/form-item-3.md +134 -0
  58. package/data/components/form-item-4.md +556 -0
  59. package/data/components/form-item-5.md +182 -0
  60. package/data/components/form-item-6.md +539 -0
  61. package/data/components/form-item-7.md +239 -0
  62. package/data/components/form-item-ai.md +158 -0
  63. package/data/components/form-item-file-uploader.md +445 -0
  64. package/data/components/form-item-forms.md +234 -0
  65. package/data/components/form-item-patterns.md +426 -0
  66. package/data/components/form-item.md +464 -0
  67. package/data/components/form-label-ai.md +126 -0
  68. package/data/components/form-label-layouts.md +306 -0
  69. package/data/components/form-label-patterns.md +1175 -0
  70. package/data/components/form-label-status-indicator.md +1083 -0
  71. package/data/components/form-label-step-input.md +620 -0
  72. package/data/components/form-label.md +2876 -0
  73. package/data/components/generic-tag.md +747 -0
  74. package/data/components/grid-list-grid-list.md +1185 -0
  75. package/data/components/grid-list.md +1449 -0
  76. package/data/components/heading.md +66 -0
  77. package/data/components/horizontal-navigation.md +568 -0
  78. package/data/components/icon-tab-bar-dev.md +190 -0
  79. package/data/components/icon-tab-bar.md +2620 -0
  80. package/data/components/icon.md +171 -0
  81. package/data/components/iconBusinessSuite.md +92 -0
  82. package/data/components/iconTnt.md +92 -0
  83. package/data/components/illustrated-message.md +439 -0
  84. package/data/components/info-label.md +348 -0
  85. package/data/components/input-group.md +2068 -0
  86. package/data/components/label.md +66 -0
  87. package/data/components/layout-grid.md +447 -0
  88. package/data/components/layout-panel.md +261 -0
  89. package/data/components/layouts-layout-grid.md +608 -0
  90. package/data/components/layouts-paddings.md +133 -0
  91. package/data/components/layouts-section.md +287 -0
  92. package/data/components/list-2.md +148 -0
  93. package/data/components/list-3.md +735 -0
  94. package/data/components/list-list.md +790 -0
  95. package/data/components/list-object-list.md +1225 -0
  96. package/data/components/list.md +1286 -0
  97. package/data/components/media-queries.md +168 -0
  98. package/data/components/menu.md +946 -0
  99. package/data/components/message-box-docs-static-ai.md +149 -0
  100. package/data/components/message-box-docs-static.md +527 -0
  101. package/data/components/message-page-upload-collection.md +678 -0
  102. package/data/components/message-page.md +256 -0
  103. package/data/components/message-strip.md +977 -0
  104. package/data/components/message-toast.md +119 -0
  105. package/data/components/micro-process-flow.md +991 -0
  106. package/data/components/navigation-menu.md +366 -0
  107. package/data/components/navigation-navigation.md +1245 -0
  108. package/data/components/navigation.md +2604 -0
  109. package/data/components/numeric-content.md +317 -0
  110. package/data/components/object-attribute.md +96 -0
  111. package/data/components/object-identifier.md +227 -0
  112. package/data/components/object-marker.md +202 -0
  113. package/data/components/object-number.md +327 -0
  114. package/data/components/object-status.md +1538 -0
  115. package/data/components/off-screen.md +87 -0
  116. package/data/components/overflow.md +97 -0
  117. package/data/components/padding.md +122 -0
  118. package/data/components/paddings.md +130 -0
  119. package/data/components/page.md +300 -0
  120. package/data/components/pagination.md +672 -0
  121. package/data/components/panel-layouts.md +345 -0
  122. package/data/components/panel.md +514 -0
  123. package/data/components/patterns-label.md +74 -0
  124. package/data/components/popover-2.md +906 -0
  125. package/data/components/popover-ai.md +466 -0
  126. package/data/components/popover-btp.md +886 -0
  127. package/data/components/popover-deprecated.md +308 -0
  128. package/data/components/popover-message-popover.md +683 -0
  129. package/data/components/popover-notification.md +1511 -0
  130. package/data/components/popover-patterns.md +1100 -0
  131. package/data/components/popover-popover.md +1862 -0
  132. package/data/components/popover-quick-view.md +385 -0
  133. package/data/components/popover-timepicker.md +1836 -0
  134. package/data/components/popover-user-menu.md +1303 -0
  135. package/data/components/popover.md +1938 -0
  136. package/data/components/progress-indicator.md +351 -0
  137. package/data/components/prompt-input-ai.md +226 -0
  138. package/data/components/prompt-input.md +226 -0
  139. package/data/components/rating-indicator.md +1469 -0
  140. package/data/components/resizable-card-layout.md +951 -0
  141. package/data/components/scrollbar.md +86 -0
  142. package/data/components/search-field.md +287 -0
  143. package/data/components/section.md +250 -0
  144. package/data/components/segmented-button.md +324 -0
  145. package/data/components/shellbar.md +2183 -0
  146. package/data/components/side-nav.md +1562 -0
  147. package/data/components/skeleton.md +243 -0
  148. package/data/components/slider.md +395 -0
  149. package/data/components/splitter.md +353 -0
  150. package/data/components/table.md +2749 -0
  151. package/data/components/tabs.md +658 -0
  152. package/data/components/text-text.md +380 -0
  153. package/data/components/text.md +253 -0
  154. package/data/components/tile.md +1132 -0
  155. package/data/components/time.md +818 -0
  156. package/data/components/title.md +153 -0
  157. package/data/components/titles.md +83 -0
  158. package/data/components/token.md +311 -0
  159. package/data/components/tokenizer.md +398 -0
  160. package/data/components/tool-header.md +1352 -0
  161. package/data/components/tool-layout.md +199 -0
  162. package/data/components/toolbar-ai.md +174 -0
  163. package/data/components/toolbar-btp.md +526 -0
  164. package/data/components/toolbar-title-bar.md +473 -0
  165. package/data/components/toolbar.md +432 -0
  166. package/data/components/tree.md +1031 -0
  167. package/data/components/typography.md +435 -0
  168. package/data/components/variant-management.md +360 -0
  169. package/data/components/vertical-nav.md +589 -0
  170. package/data/components/wizard.md +1429 -0
  171. package/data/examples/Components/dialog/device-specifications.example.html +39 -30
  172. package/data/examples/Components/shellbar/optional-items.example.html +210 -157
  173. package/data/examples/Components/shellbar/overflow-toolbar.example.html +202 -177
  174. package/data/examples/Components/shellbar/responsive-paddings.example.html +217 -146
  175. package/data/examples/Components/shellbar/responsiveness.example.html +825 -613
  176. package/data/examples/Components/user-menu/default.example.html +241 -83
  177. package/data/schemas/badge.schema.json +1 -1
  178. package/data/schemas/button-split.schema.json +1 -1
  179. package/data/schemas/component-frontmatter.schema.json +123 -0
  180. package/data/schemas/component-markdown.schema.json +81 -0
  181. package/data/schemas/counter.schema.json +1 -1
  182. package/data/schemas/dynamic-page.schema.json +1 -1
  183. package/data/schemas/dynamic-side-content.schema.json +1 -1
  184. package/data/schemas/facet.schema.json +1 -1
  185. package/data/schemas/fieldset.schema.json +1 -1
  186. package/data/schemas/flexible-column-layout.schema.json +1 -1
  187. package/data/schemas/form-group.schema.json +3 -2
  188. package/data/schemas/form-header.schema.json +1 -1
  189. package/data/schemas/form-label.schema.json +1 -0
  190. package/data/schemas/form-message.schema.json +1 -1
  191. package/data/schemas/grid-list.schema.json +1 -1
  192. package/data/schemas/input-group.schema.json +1 -1
  193. package/data/schemas/layout-panel.schema.json +1 -1
  194. package/data/schemas/page.schema.json +1 -1
  195. package/data/schemas/quick-view.schema.json +2 -1
  196. package/data/schemas/section.schema.json +1 -1
  197. package/data/schemas/side-nav.schema.json +1 -1
  198. package/data/schemas/splitter.schema.json +1 -1
  199. package/data/schemas/tabs.schema.json +1 -1
  200. package/data/schemas/tile.schema.json +1 -1
  201. package/data/schemas/tool-layout.schema.json +1 -1
  202. package/data/schemas/user-menu.schema.json +10 -0
  203. package/data/schemas/wizard.schema.json +1 -1
  204. package/package.json +1 -1
  205. package/src/data/load-catalog.d.ts +2 -0
  206. package/src/data/load-catalog.js +5 -1
  207. package/src/data/load-catalog.js.map +1 -1
  208. package/src/data/load-markdown-docs.d.ts +44 -0
  209. package/src/data/load-markdown-docs.js +179 -0
  210. package/src/data/load-markdown-docs.js.map +1 -0
  211. package/src/data/markdown-cache.d.ts +60 -0
  212. package/src/data/markdown-cache.js +218 -0
  213. package/src/data/markdown-cache.js.map +1 -0
  214. package/src/server.js +72 -1
  215. package/src/server.js.map +1 -1
@@ -0,0 +1,380 @@
1
+ ---
2
+ component: text
3
+ title: Text
4
+ category: text
5
+ selector:
6
+ cssFile:
7
+ sourcePath: packages/common-css/stories/text/text.stories.js
8
+ tags: []
9
+ dependencies: []
10
+ relatedComponents: []
11
+ stability: stable
12
+ generatedAt: 2026-06-09T18:29:01.651Z
13
+ ---
14
+
15
+ # Text
16
+
17
+ The text component displays text inside a form, table, or any other content area. It is generally used throughout the entire application and is responsive to all screen sizes.
18
+ <br>
19
+
20
+ <b>CSS Classes: </b>
21
+ <ul>
22
+ <li><code>.sap-text</code></li>
23
+ <li><code>.sap-text-max-lines</code></li>
24
+ <li><code>.sap-text-pre-wrap</code></li>
25
+ <li><code>.sap-text-hyphenation</code></li>
26
+ </ul>
27
+ <br>
28
+ <b>SCSS Mixin: </b>
29
+ <code>@include sap-text(<i style="color: red;">$modifier</i>)</code><br>
30
+ where <i style="color: red;">$modifier</i> is optional and can be:
31
+ <ul>
32
+ <li><code>max-lines</code>: to display text with a maximum line count</li>
33
+ <li><code>pre-wrap</code>: to display indents and/or whitespace</li>
34
+ <li><code>hyphenation</code>: to display hyphens</li>
35
+ </ul>
36
+
37
+ ## Basic Usage
38
+
39
+ ```html
40
+ <style>
41
+ .border-example-card {
42
+ background: #f7f8fa;
43
+ border: 0.0625rem solid #eaecee;
44
+ border-radius: 0.5rem;
45
+ padding: 1rem;
46
+ margin-block-end: 1rem;
47
+ }
48
+ .border-example-card h4 {
49
+ margin: 0 0 0.75rem 0;
50
+ color: #0a6ed1;
51
+ font-size: 0.9375rem;
52
+ font-weight: 600;
53
+ }
54
+ .demo-box {
55
+ background: #fff;
56
+ border: 0.0625rem solid #e4e4e4;
57
+ padding: 1rem;
58
+ margin: 0.5rem 0;
59
+ border-radius: 0.25rem;
60
+ }
61
+ </style>
62
+
63
+ <div class="border-example-card">
64
+ <div class="demo-box">
65
+ <p class="sap-text">
66
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
67
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
68
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
69
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
70
+ deserunt mollit anim id est laborum.
71
+ </p>
72
+ </div>
73
+ </div>
74
+ ```
75
+
76
+ ## Examples
77
+
78
+ ### Default
79
+
80
+ The default text component can display lines of text that wrap to the next line once they reach the end of the content container width.
81
+
82
+ ```html
83
+ <style>
84
+ .border-example-card {
85
+ background: #f7f8fa;
86
+ border: 0.0625rem solid #eaecee;
87
+ border-radius: 0.5rem;
88
+ padding: 1rem;
89
+ margin-block-end: 1rem;
90
+ }
91
+ .border-example-card h4 {
92
+ margin: 0 0 0.75rem 0;
93
+ color: #0a6ed1;
94
+ font-size: 0.9375rem;
95
+ font-weight: 600;
96
+ }
97
+ .demo-box {
98
+ background: #fff;
99
+ border: 0.0625rem solid #e4e4e4;
100
+ padding: 1rem;
101
+ margin: 0.5rem 0;
102
+ border-radius: 0.25rem;
103
+ }
104
+ </style>
105
+
106
+ <div class="border-example-card">
107
+ <div class="demo-box">
108
+ <p class="sap-text">
109
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
110
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
111
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
112
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
113
+ deserunt mollit anim id est laborum.
114
+ </p>
115
+ </div>
116
+ </div>
117
+ ```
118
+
119
+ ### Whitespace
120
+
121
+ The text component has a property that allows browsers to render specified indents and whitespace. To display indents and/or whitespace, use the \
122
+
123
+ ```html
124
+ <style>
125
+ .border-example-card {
126
+ background: #f7f8fa;
127
+ border: 0.0625rem solid #eaecee;
128
+ border-radius: 0.5rem;
129
+ padding: 1rem;
130
+ margin-block-end: 1rem;
131
+ }
132
+ .border-example-card h4 {
133
+ margin: 0 0 0.75rem 0;
134
+ color: #0a6ed1;
135
+ font-size: 0.9375rem;
136
+ font-weight: 600;
137
+ }
138
+ .demo-box {
139
+ background: #fff;
140
+ border: 0.0625rem solid #e4e4e4;
141
+ padding: 1rem;
142
+ margin: 0.5rem 0;
143
+ border-radius: 0.25rem;
144
+ }
145
+ </style>
146
+
147
+ <div class="border-example-card">
148
+ <h4>No Indents or Whitespace</h4>
149
+ <div class="demo-box">
150
+ <p class="sap-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
151
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
152
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
153
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
154
+ deserunt mollit anim id est laborum.</p>
155
+ </div>
156
+ </div>
157
+
158
+ <div class="border-example-card">
159
+ <h4>Wrapped Text with Indents and Whitespace (with modifier class)</h4>
160
+ <div class="demo-box">
161
+ <p class="sap-text-pre-wrap">
162
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntut labore et
163
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
164
+ aliquip ex ea commodo consequat.
165
+
166
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
167
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
168
+ deserunt mollit anim id est laborum.</p>
169
+ </div>
170
+ </div>
171
+
172
+ <div class="border-example-card">
173
+ <h4>Wrapped Text with Indents and Whitespace (with data attribute)</h4>
174
+ <div class="demo-box">
175
+ <p class="sap-text" data-wrap>
176
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntut labore et
177
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
178
+ aliquip ex ea commodo consequat.
179
+
180
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
181
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
182
+ deserunt mollit anim id est laborum.</p>
183
+ </div>
184
+ </div>
185
+ ```
186
+
187
+ ### Max lines
188
+
189
+ The text component can be displayed with a maximum number of lines.
190
+ When the maximum is reached, the text truncates and displays an ellipsis. To display text with a maximum line count,
191
+ use the \
192
+
193
+ ```html
194
+ <style>
195
+ .border-example-card {
196
+ background: #f7f8fa;
197
+ border: 0.0625rem solid #eaecee;
198
+ border-radius: 0.5rem;
199
+ padding: 1rem;
200
+ margin-block-end: 1rem;
201
+ }
202
+ .border-example-card h4 {
203
+ margin: 0 0 0.75rem 0;
204
+ color: #0a6ed1;
205
+ font-size: 0.9375rem;
206
+ font-weight: 600;
207
+ }
208
+ .demo-box {
209
+ background: #fff;
210
+ border: 0.0625rem solid #e4e4e4;
211
+ padding: 1rem;
212
+ margin: 0.5rem 0;
213
+ border-radius: 0.25rem;
214
+ }
215
+ </style>
216
+
217
+ <div class="border-example-card">
218
+ <h4>No Max Lines Rule</h4>
219
+ <div class="demo-box">
220
+ <p class="sap-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
221
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
222
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
223
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
224
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
225
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
226
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
227
+ duis at tellus at urna.
228
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
229
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
230
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
231
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
232
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
233
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
234
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
235
+ </div>
236
+ </div>
237
+
238
+ <div class="border-example-card">
239
+ <h4>2 Max Lines (with class)</h4>
240
+ <div class="demo-box">
241
+ <p class="sap-text-max-lines">
242
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
243
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
244
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
245
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
246
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
247
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
248
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
249
+ duis at tellus at urna.
250
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
251
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
252
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
253
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
254
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
255
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
256
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
257
+ </div>
258
+ </div>
259
+
260
+ <div class="border-example-card">
261
+ <h4>3 Max Lines (with data attribute)</h4>
262
+ <div class="demo-box">
263
+ <p class="sap-text">
264
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
265
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
266
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
267
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
268
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
269
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
270
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
271
+ duis at tellus at urna.
272
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
273
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
274
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
275
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
276
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
277
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
278
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
279
+ </div>
280
+ </div>
281
+
282
+ <div class="border-example-card">
283
+ <h4>4 Max Lines (with data attribute)</h4>
284
+ <div class="demo-box">
285
+ <p class="sap-text">
286
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
287
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
288
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
289
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
290
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
291
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
292
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
293
+ duis at tellus at urna.
294
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
295
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
296
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
297
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
298
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
299
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
300
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
301
+ </div>
302
+ </div>
303
+ ```
304
+
305
+ ### Hyphenation
306
+
307
+ The text component can display words that are broken at appropriate hyphenation
308
+ points in a text block. To display hyphens, use the \
309
+
310
+ ```html
311
+ <style>
312
+ .border-example-card {
313
+ background: #f7f8fa;
314
+ border: 0.0625rem solid #eaecee;
315
+ border-radius: 0.5rem;
316
+ padding: 1rem;
317
+ margin-block-end: 1rem;
318
+ }
319
+ .border-example-card h4 {
320
+ margin: 0 0 0.75rem 0;
321
+ color: #0a6ed1;
322
+ font-size: 0.9375rem;
323
+ font-weight: 600;
324
+ }
325
+ .demo-box {
326
+ background: #fff;
327
+ border: 0.0625rem solid #e4e4e4;
328
+ padding: 1rem;
329
+ margin: 0.5rem 0;
330
+ border-radius: 0.25rem;
331
+ max-width: 300px;
332
+ }
333
+ </style>
334
+
335
+ <div class="border-example-card">
336
+ <h4>Without Hyphenation</h4>
337
+ <div class="demo-box">
338
+ <p class="sap-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
339
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
340
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
341
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
342
+ deserunt mollit anim id est laborum.</p>
343
+ </div>
344
+ </div>
345
+
346
+ <div class="border-example-card">
347
+ <h4>Hyphenation (with data attribute)</h4>
348
+ <div class="demo-box">
349
+ <p class="sap-text" data-hyphens>Lorem ipsum dolor sit amet, con&shy;sectetur adip&shy;iscing el&shy;it, sed do eiusmod tempor
350
+ incididunt ut labore et do&shy;lore magna aliqua. Ut enim ad mi&shy;nim veniam, quis nostrud exer&shy;citation ullamco laboris nisi ut
351
+ aliquip ex ea commodo conse&shy;quat. Duis aute irure dolor in repre&shy;henderit in vo&shy;luptate velit esse cillum dolore
352
+ eu fu&shy;giat nulla pari&shy;atur. Excepteur sint occaecat cupidatat non pro&shy;ident, sunt in culpa qui officia
353
+ deserunt mollit anim id est la&shy;bo&shy;rum.</p>
354
+ </div>
355
+ </div>
356
+
357
+ <div class="border-example-card">
358
+ <h4>Hyphenation (with modifier class)</h4>
359
+ <div class="demo-box">
360
+ <p class="sap-text-hyphenation">Lorem ipsum dolor sit amet, con&shy;sectetur adip&shy;iscing el&shy;it, sed do eiusmod tempor
361
+ incididunt ut labore et do&shy;lore magna aliqua. Ut enim ad mi&shy;nim veniam, quis nostrud exer&shy;citation ullamco laboris nisi ut
362
+ aliquip ex ea commodo conse&shy;quat. Duis aute irure dolor in repre&shy;henderit in vo&shy;luptate velit esse cillum dolore
363
+ eu fu&shy;giat nulla pari&shy;atur. Excepteur sint occaecat cupidatat non pro&shy;ident, sunt in culpa qui officia
364
+ deserunt mollit anim id est la&shy;bo&shy;rum.</p>
365
+ </div>
366
+ </div>
367
+ ```
368
+
369
+ ## Accessibility
370
+
371
+ - Use semantic HTML elements where appropriate
372
+ - Include proper ARIA attributes for interactive elements
373
+ - Ensure keyboard navigation support
374
+ - Provide adequate color contrast
375
+
376
+ ## Source
377
+
378
+ This documentation was automatically generated from: `packages/common-css/stories/text/text.stories.js`
379
+
380
+ For the latest updates and interactive examples, see [Storybook](https://sap.github.io/fundamental-styles/).
@@ -0,0 +1,253 @@
1
+ ---
2
+ component: fd-text
3
+ title: Components/Text
4
+ category: Components
5
+ selector: fd-text
6
+ cssFile: text.css
7
+ sourcePath: packages/styles/stories/Components/text/text.stories.js
8
+ tags: []
9
+ dependencies: ["link","text"]
10
+ relatedComponents: ["link","text"]
11
+ stability: stable
12
+ generatedAt: 2026-06-09T18:29:01.337Z
13
+ ---
14
+
15
+ # Components/Text
16
+
17
+ The text component displays text inside a form, table, or any other content area.
18
+ It is generally used throughout the entire application and is responsive to all screen sizes.
19
+
20
+ ## Dependencies
21
+
22
+ This component depends on the following CSS files:
23
+
24
+ - `link.css`
25
+ - `text.css`
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ npm install fundamental-styles
31
+ ```
32
+
33
+ ```html
34
+ <!-- Include theme -->
35
+ <link href="node_modules/fundamental-styles/dist/theming/sap_horizon.css" rel="stylesheet">
36
+
37
+ <!-- Include component CSS -->
38
+ <link href="node_modules/fundamental-styles/dist/text.css" rel="stylesheet">
39
+
40
+ <!-- Include dependencies -->
41
+ <link href="node_modules/fundamental-styles/dist/link.css" rel="stylesheet">
42
+ <link href="node_modules/fundamental-styles/dist/text.css" rel="stylesheet">
43
+ ```
44
+
45
+ ## Basic Usage
46
+
47
+ ```html
48
+ <p class="fd-text">
49
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
50
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
51
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
52
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
53
+ deserunt mollit anim id est laborum.</p>
54
+ ```
55
+
56
+ ## Modifiers
57
+
58
+ | Class | Description |
59
+ |-------|-------------|
60
+ | `fd-text--hyphenation` | The text component can display words that are broken at appropriate hyphenation
61
+ points in a text block |
62
+ | `fd-text--max-lines` | Along with max lines, text component can display "More" and "Less" links that can show
63
+ more or less of the text. |
64
+ | `fd-text--pre-wrap` | Style variant |
65
+
66
+ ## BEM Elements
67
+
68
+ This component uses the following BEM elements:
69
+
70
+ - `fd-text__link--more`
71
+
72
+ ## Related Components
73
+
74
+ This component works with or depends on:
75
+
76
+ - `link`
77
+ - `text`
78
+
79
+ ## Design Tokens
80
+
81
+ Key CSS variables used by this component:
82
+
83
+ - `--fdText_Selected_Background_Color`
84
+ - `--hyphenation`
85
+ - `--max-lines`
86
+ - `--more`
87
+ - `--pre-wrap`
88
+ - `--sapContent_ContrastTextColor`
89
+ - `--sapContent_LabelColor`
90
+ - `--sapFontSmallSize`
91
+ - `--subline`
92
+
93
+ ## Examples
94
+
95
+ ### Default
96
+
97
+ The default text component can display lines of text that wrap to the next line once they reach the end of the content container width.
98
+
99
+ ```html
100
+ <p class="fd-text">
101
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
102
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
103
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
104
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
105
+ deserunt mollit anim id est laborum.</p>
106
+ ```
107
+
108
+ ### Whitespace
109
+
110
+ The text component has a property that allows browsers to render specified indents and whitespace. To display indents and/or whitespace, add a \
111
+
112
+ ```html
113
+ <h3>No indents or whitespace</h3>
114
+ <p class="fd-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
115
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
116
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
117
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
118
+ deserunt mollit anim id est laborum.</p>
119
+
120
+ <h3>Wrapped text with indents and whitespace</h3>
121
+ <p class="fd-text fd-text--pre-wrap">
122
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntut labore et
123
+ dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
124
+ aliquip ex ea commodo consequat.
125
+
126
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
127
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
128
+ deserunt mollit anim id est laborum.</p>
129
+ ```
130
+
131
+ ### Max lines
132
+
133
+ The text component can be displayed with a maximum number of lines.
134
+ When the maximum is reached, the text truncates and displays an ellipsis. To display text with a maximum line count,
135
+ add the \
136
+
137
+ ```html
138
+ <h3>No max lines rule</h3>
139
+ <p class="fd-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
140
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
141
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
142
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
143
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
144
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
145
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
146
+ duis at tellus at urna.
147
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
148
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
149
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
150
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
151
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
152
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
153
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
154
+
155
+ <h3>2 max lines</h3>
156
+ <p class="fd-text fd-text--max-lines">
157
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
158
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
159
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
160
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
161
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
162
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
163
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
164
+ duis at tellus at urna.
165
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
166
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
167
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
168
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
169
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
170
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
171
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
172
+
173
+ <h3>3 max lines</h3>
174
+ <p class="fd-text fd-text--max-lines">
175
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
176
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
177
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
178
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
179
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
180
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
181
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
182
+ duis at tellus at urna.
183
+ Aliquet eget sit amet tellus cras adipiscing enim. Risus ultricies tristique nulla aliquet enim tortor. Varius quam
184
+ quisque id diam vel quam elementum pulvinar. Eget aliquet nibh praesent tristique magna. Id interdum velit laoreet
185
+ id donec ultrices tincidunt arcu. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Montes nascetur
186
+ ridiculus mus mauris vitae ultricies. In nisl nisi scelerisque eu. Suspendisse interdum consectetur libero id
187
+ faucibus. Ut lectus arcu bibendum at varius. Placerat vestibulum lectus mauris ultrices eros in cursus turpis massa.
188
+ Dolor magna eget est lorem ipsum dolor sit. Aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh.
189
+ Augue neque gravida in fermentum et. Proin fermentum leo vel orci porta non pulvinar.</p>
190
+ ```
191
+
192
+ ### Expand
193
+
194
+ Along with max lines, text component can display "More" and "Less" links that can show
195
+ more or less of the text.
196
+
197
+ ```html
198
+ <h3>Show More</h3>
199
+ <p class="fd-text">
200
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
201
+ magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit amet nisl. Laoreet suspendisse interdum
202
+ consectetur libero id faucibus nisl. Tellus in metus vulputate eu scelerisque felis imperdiet proin fermentum.
203
+ Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra accumsan. Mauris vitae ultricies...</p>
204
+ <a class="fd-link fd-text__link--more" tabindex="0"><span class="fd-link__content">More</span></a>
205
+
206
+ <h3>Show Less</h3>
207
+ <p class="fd-text">
208
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
209
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Malesuada bibendum arcu vitae elementum. Ut etiam sit
210
+ amet nisl. Laoreet suspendisse interdum consectetur libero id faucibus nisl. Tellus in metus vulputate eu
211
+ scelerisque felis imperdiet proin fermentum. Ullamcorper morbi tincidunt ornare massa eget egestas purus viverra
212
+ accumsan. Mauris vitae ultricies leo integer malesuada nunc vel risus. Nisi est sit amet facilisis. Eu turpis
213
+ egestas pretium aenean. Nunc id cursus metus aliquam eleifend. Placerat in egestas erat imperdiet. Etiam dignissim
214
+ diam quis enim lobortis scelerisque. A erat nam at lectus. Amet nisl purus in mollis nunc sed id. Purus semper eget
215
+ duis at tellus at urna.</p>
216
+ <a class="fd-link fd-text__link--more" tabindex="0"><span class="fd-link__content">Less</span></a>
217
+ ```
218
+
219
+ ### Hyphenation
220
+
221
+ The text component can display words that are broken at appropriate hyphenation
222
+ points in a text block. To display hyphens, add the \
223
+
224
+ ```html
225
+ <div class="example-container">
226
+ <h3>Without hyphenation</h3>
227
+ <p class="fd-text">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt
228
+ ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
229
+ aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
230
+ eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
231
+ deserunt mollit anim id est laborum.</p>
232
+ </div>
233
+
234
+ <h3>Hyphenation</h3>
235
+ <p class="fd-text fd-text--hyphenation">Lorem ipsum dolor sit amet, con&shy;sectetur adip&shy;iscing el&shy;it, sed do eiusmod tempor
236
+ incididunt ut labore et do&shy;lore magna aliqua. Ut enim ad mi&shy;nim veniam, quis nostrud exer&shy;citation ullamco laboris nisi ut
237
+ aliquip ex ea commodo conse&shy;quat. Duis aute irure dolor in repre&shy;henderit in vo&shy;luptate velit esse cillum dolore
238
+ eu fu&shy;giat nulla pari&shy;atur. Excepteur sint occaecat cupidatat non pro&shy;ident, sunt in culpa qui officia
239
+ deserunt mollit anim id est la&shy;bo&shy;rum.</p>
240
+ ```
241
+
242
+ ## Accessibility
243
+
244
+ - Use semantic HTML elements where appropriate
245
+ - Include proper ARIA attributes for interactive elements
246
+ - Ensure keyboard navigation support
247
+ - Provide adequate color contrast
248
+
249
+ ## Source
250
+
251
+ This documentation was automatically generated from: `packages/styles/stories/Components/text/text.stories.js`
252
+
253
+ For the latest updates and interactive examples, see [Storybook](https://sap.github.io/fundamental-styles/).