@festo-ui/web-essentials 10.1.0 → 10.1.1-dev.919

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.
@@ -0,0 +1,643 @@
1
+ # Components
2
+
3
+ ## Accordion
4
+
5
+ Collapsible content panels using native `<details>`/`<summary>` elements.
6
+
7
+ ```html
8
+ <div class="fwe-accordion">
9
+ <div class="fwe-accordion-header">Optional Header</div>
10
+ <details class="fwe-accordion-item" open>
11
+ <summary class="fwe-accordion-item-header">Title</summary>
12
+ <div class="fwe-accordion-item-body">Content</div>
13
+ </details>
14
+ <details class="fwe-accordion-item">
15
+ <summary class="fwe-accordion-item-header">Title 2</summary>
16
+ <div class="fwe-accordion-item-body">Content 2</div>
17
+ </details>
18
+ </div>
19
+ ```
20
+
21
+ ---
22
+
23
+ ## Badge
24
+
25
+ Small status/label indicators.
26
+
27
+ ```html
28
+ <span class="fwe-badge">5</span>
29
+ <span class="fwe-badge fwe-badge-hero">Hero</span>
30
+ ```
31
+
32
+ ### Sizes
33
+
34
+ | Class | Description |
35
+ |---|---|
36
+ | `fwe-badge-xl` | Extra large |
37
+ | `fwe-badge-lg` | Large |
38
+ | `fwe-badge-md` | Medium |
39
+ | `fwe-badge-sm` | Small |
40
+
41
+ ### Colors
42
+
43
+ `fwe-badge-caerul`, `fwe-badge-dark`, `fwe-badge-green`, `fwe-badge-yellow`, `fwe-badge-orange`, `fwe-badge-red`, `fwe-badge-hero`, `fwe-badge-control`
44
+
45
+ ### Text-Badge
46
+
47
+ ```html
48
+ <span class="fwe-badge-text">12</span>
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Bottom Navigation
54
+
55
+ Mobile tab bar at the bottom of the screen.
56
+
57
+ ```html
58
+ <div class="fwe-bottom-navigation">
59
+ <button class="fwe-bottom-navigation-button fwe-selected">
60
+ <i class="fwe-icon fwe-icon-menu-home"></i>
61
+ <span>Home</span>
62
+ </button>
63
+ <button class="fwe-bottom-navigation-button">
64
+ <i class="fwe-icon fwe-icon-file-search"></i>
65
+ <span>Search</span>
66
+ </button>
67
+ </div>
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Bottom Sheet
73
+
74
+ Mobile slide-up panel.
75
+
76
+ ```html
77
+ <div class="fwe-bottom-sheet-backdrop fwe-bottom-sheet-backdrop--visible">
78
+ <div class="fwe-bottom-sheet-container fwe-bottom-sheet-container--open">
79
+ <div class="fwe-bottom-sheet-header">
80
+ <div class="fwe-bottom-sheet-drag-handle-container">
81
+ <div class="fwe-bottom-sheet-drag-handle"></div>
82
+ </div>
83
+ <button class="fwe-bottom-sheet-close-btn"></button>
84
+ </div>
85
+ <div class="fwe-bottom-sheet-content">Content</div>
86
+ </div>
87
+ </div>
88
+ ```
89
+
90
+ ### Variants
91
+
92
+ | Class | Description |
93
+ |---|---|
94
+ | `fwe-bottom-sheet-container--expanded` | Fully expanded |
95
+ | `fwe-bottom-sheet-container--expand-from-center` | Expands from center |
96
+
97
+ ---
98
+
99
+ ## Breadcrumb
100
+
101
+ Navigation breadcrumb trail.
102
+
103
+ ```html
104
+ <nav aria-label="Breadcrumb" class="fwe-breadcrumb">
105
+ <ol>
106
+ <li><a href="/page1">Page 1</a></li>
107
+ <li><a href="/page2">Page 2</a></li>
108
+ <li><a href="" aria-current="page">Current Page</a></li>
109
+ </ol>
110
+ </nav>
111
+ ```
112
+
113
+ ### Mobile Variant
114
+
115
+ ```html
116
+ <nav aria-label="Breadcrumb" class="fwe-breadcrumb fwe-breadcrumb--mobile">
117
+ ...
118
+ </nav>
119
+ ```
120
+
121
+ ### Custom Color
122
+
123
+ ```html
124
+ <nav class="fwe-breadcrumb" style="color: var(--fwe-text-light)">
125
+ ...
126
+ </nav>
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Button
132
+
133
+ ```html
134
+ <!-- Primary (Hero) -->
135
+ <button class="fwe-btn fwe-btn-hero">Primary</button>
136
+
137
+ <!-- Secondary (Standard) -->
138
+ <button class="fwe-btn">Secondary</button>
139
+
140
+ <!-- Link-Style -->
141
+ <button class="fwe-btn fwe-btn-link">Link</button>
142
+
143
+ <!-- Dark Link -->
144
+ <button class="fwe-btn fwe-btn-link fwe-dark">Dark Link</button>
145
+
146
+ <!-- Icon-Button -->
147
+ <button class="fwe-btn fwe-btn-icon">
148
+ <i class="fwe-icon fwe-icon-file-edit"></i>
149
+ </button>
150
+ ```
151
+
152
+ ### Sizes
153
+
154
+ | Class | Description |
155
+ |---|---|
156
+ | *(default)* | Normal |
157
+ | `fwe-btn-lg` | Large |
158
+
159
+ ### Block Button
160
+
161
+ ```html
162
+ <button class="fwe-btn fwe-btn-hero fwe-btn-block">Full width</button>
163
+ ```
164
+
165
+ ### Floating Action Button
166
+
167
+ ```html
168
+ <button class="fwe-btn fwe-btn-floating">
169
+ <i class="fwe-icon fwe-icon-menu-add"></i>
170
+ </button>
171
+ ```
172
+
173
+ ### States
174
+
175
+ `disabled` attribute for disabled state.
176
+
177
+ ---
178
+
179
+ ## Card
180
+
181
+ ```html
182
+ <div class="fwe-card">
183
+ <div class="fwe-card-header">
184
+ <h4 class="fwe-card-title">Title</h4>
185
+ </div>
186
+ <div class="fwe-card-body">
187
+ <p class="fwe-card-text">Content</p>
188
+ </div>
189
+ </div>
190
+ ```
191
+
192
+ ### With Image
193
+
194
+ ```html
195
+ <div class="fwe-card">
196
+ <div class="fwe-card-img-169">
197
+ <img src="image.jpg" />
198
+ </div>
199
+ <div class="fwe-card-body">...</div>
200
+ </div>
201
+ ```
202
+
203
+ Image formats: `fwe-card-img-169` (16:9), `fwe-card-img-32` (3:2)
204
+
205
+ ### With Notification
206
+
207
+ ```html
208
+ <div class="fwe-card">
209
+ <div class="fwe-card-notification">Notification text</div>
210
+ <div class="fwe-card-body">...</div>
211
+ </div>
212
+ ```
213
+
214
+ ---
215
+
216
+ ## Chips
217
+
218
+ Selectable tag/filter buttons.
219
+
220
+ ```html
221
+ <div class="fwe-chip-container">
222
+ <button class="fwe-chip">Chip 1</button>
223
+ <button class="fwe-chip fwe-selected">Chip 2 (active)</button>
224
+ <button class="fwe-chip fwe-disabled">Chip 3 (disabled)</button>
225
+ </div>
226
+ ```
227
+
228
+ ### Variants
229
+
230
+ | Class | Description |
231
+ |---|---|
232
+ | *(default)* | Choice Chip |
233
+ | `fwe-category` | Category Chip |
234
+ | `fwe-filter` | Filter Chip |
235
+ | `fwe-readonly` | Read-only |
236
+
237
+ ### Large Chips
238
+
239
+ ```html
240
+ <div class="fwe-chip-container fwe-chip-container-lg">...</div>
241
+ ```
242
+
243
+ ---
244
+
245
+ ## List
246
+
247
+ ```html
248
+ <ul class="fwe-list-group">
249
+ <li class="fwe-list-group-item">Item 1</li>
250
+ <li class="fwe-list-group-item fwe-active">Item 2 (active)</li>
251
+ <li class="fwe-list-group-item fwe-disabled">Item 3 (disabled)</li>
252
+ </ul>
253
+ ```
254
+
255
+ ### As Links
256
+
257
+ ```html
258
+ <div class="fwe-list-group">
259
+ <a class="fwe-list-group-item" href="#">Link Item</a>
260
+ </div>
261
+ ```
262
+
263
+ ### As Buttons
264
+
265
+ ```html
266
+ <div class="fwe-list-group">
267
+ <button class="fwe-list-group-item">Button Item</button>
268
+ </div>
269
+ ```
270
+
271
+ ### With Borders
272
+
273
+ ```html
274
+ <ul class="fwe-list-group fwe-list-group-border">...</ul>
275
+ ```
276
+
277
+ ### Horizontal
278
+
279
+ ```html
280
+ <ul class="fwe-list-group fwe-list-group-horizontal">...</ul>
281
+ ```
282
+
283
+ ### Custom Content
284
+
285
+ ```html
286
+ <div class="fwe-list-group">
287
+ <div class="fwe-list-group-item fwe-list-group-item-custom">
288
+ <div class="fwe-list-group-item-head">Header</div>
289
+ <div class="fwe-list-group-item-body">Body</div>
290
+ <div class="fwe-list-group-item-footer">Footer</div>
291
+ </div>
292
+ </div>
293
+ ```
294
+
295
+ ---
296
+
297
+ ## Loading Indicator
298
+
299
+ ```html
300
+ <div class="fwe-waiting-container">
301
+ <div class="fwe-waiting-indicator">
302
+ <div class="fwe-waiting-circle-1"></div>
303
+ <div class="fwe-waiting-circle-2"></div>
304
+ <div class="fwe-waiting-circle-3"></div>
305
+ <div class="fwe-waiting-circle-4"></div>
306
+ </div>
307
+ </div>
308
+ ```
309
+
310
+ ### Sizes
311
+
312
+ | Class | Description |
313
+ |---|---|
314
+ | `fwe-waiting-container` | Default |
315
+ | `fwe-waiting-container-sm` | Small |
316
+ | `fwe-waiting-indicator-md` | Medium indicator |
317
+ | `fwe-waiting-indicator-sm` | Small indicator |
318
+
319
+ ### With Text
320
+
321
+ ```html
322
+ <div class="fwe-waiting-container">
323
+ <div class="fwe-waiting-indicator">...</div>
324
+ <div class="fwe-waiting-content-container">Loading...</div>
325
+ </div>
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Modal
331
+
332
+ ```html
333
+ <div class="fwe-modal-backdrop">
334
+ <div class="fwe-modal">
335
+ <button class="fwe-modal-close-btn"></button>
336
+ <div class="fwe-modal-header">
337
+ <h2 class="fwe-modal-h1">Title</h2>
338
+ <h3 class="fwe-modal-h2">Subtitle</h3>
339
+ </div>
340
+ <div class="fwe-modal-body">Content</div>
341
+ <div class="fwe-modal-footer">
342
+ <div class="fwe-modal-buttons">
343
+ <button class="fwe-btn">Cancel</button>
344
+ <button class="fwe-btn fwe-btn-hero">OK</button>
345
+ </div>
346
+ </div>
347
+ </div>
348
+ </div>
349
+ ```
350
+
351
+ ### Variants
352
+
353
+ | Class | Description |
354
+ |---|---|
355
+ | `fwe-modal--warning` | Warning |
356
+ | `fwe-modal--error fwe-modal--with-indicator-bar` | Error with indicator bar |
357
+ | `fwe-modal--large` | Large modal |
358
+
359
+ ---
360
+
361
+ ## Navbar
362
+
363
+ ```html
364
+ <header class="fwe-fixed-header">
365
+ <nav class="fwe-navbar">
366
+ <div class="fwe-container">
367
+ <div class="fwe-app-logo-container">
368
+ <img src="app-logo.png" />
369
+ </div>
370
+ <nav class="fwe-navlist fwe-d-none fwe-d-md-flex">
371
+ <a href="#" class="fwe-active">Page 1</a>
372
+ <a href="#">Page 2</a>
373
+ </nav>
374
+ <div class="fwe-logo-container">
375
+ <div class="fwe-festo-logo"></div>
376
+ </div>
377
+ </div>
378
+ </nav>
379
+ </header>
380
+ <div class="fwe-navbar-spacer"></div>
381
+ ```
382
+
383
+ ### Mobile Flyout
384
+
385
+ ```html
386
+ <div class="fwe-mobile-flyout fwe-d-block fwe-d-md-none">
387
+ <button class="fwe-burger-button"></button>
388
+ </div>
389
+ <div class="fwe-mobile-flyout-container opened">
390
+ <div class="fwe-mobile-flyout-page">
391
+ <button class="fwe-close-button"></button>
392
+ <div class="fwe-mobile-flyout-item-container">
393
+ <a class="fwe-mobile-flyout-item fwe-active">Page 1</a>
394
+ <a class="fwe-mobile-flyout-item">Page 2</a>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ ```
399
+
400
+ ### App Title (without Logo)
401
+
402
+ ```html
403
+ <nav class="fwe-navbar fwe-navbar--no-logo">
404
+ <div class="fwe-container">
405
+ <div class="fwe-app-title-container">APP NAME</div>
406
+ ...
407
+ </div>
408
+ </nav>
409
+ ```
410
+
411
+ ---
412
+
413
+ ## Navbar Menu
414
+
415
+ Dropdown menus in the navbar (profile, notifications).
416
+
417
+ ```html
418
+ <div class="fwe-button-container">
419
+ <button class="fwe-btn fwe-btn-link fwe-dark">
420
+ <i class="fwe-icon fwe-icon-communication-notification fwe-icon-lg"></i>
421
+ </button>
422
+ </div>
423
+ ```
424
+
425
+ ---
426
+
427
+ ## Pagination
428
+
429
+ ```html
430
+ <!-- Navigation Buttons -->
431
+ <div class="fwe-pagination">
432
+ <button class="fwe-navigate-btn-down" disabled></button>
433
+ <button class="fwe-navigate-btn-up"></button>
434
+ </div>
435
+
436
+ <!-- Page Dots -->
437
+ <div class="fwe-pagination">
438
+ <span class="fwe-page-dot fwe-selected"></span>
439
+ <span class="fwe-page-dot"></span>
440
+ <span class="fwe-page-dot"></span>
441
+ </div>
442
+
443
+ <!-- Page Numbers -->
444
+ <div class="fwe-pagination">
445
+ <button class="fwe-navigate-btn-down"></button>
446
+ <span class="fwe-page-current">12</span>
447
+ <span class="fwe-page-max">50</span>
448
+ <button class="fwe-navigate-btn-up"></button>
449
+ </div>
450
+ ```
451
+
452
+ On dark background: `fwe-pagination--on-dark-bg`
453
+
454
+ ---
455
+
456
+ ## Popover
457
+
458
+ ```html
459
+ <div class="fwe-popover-container">
460
+ <div class="fwe-triangle fwe-triangle-top"></div>
461
+ <div class="fwe-popover">Popover content</div>
462
+ </div>
463
+ ```
464
+
465
+ ### Triangle-Positionen
466
+
467
+ `fwe-triangle-top`, `fwe-triangle-bottom`, `fwe-triangle-left`, `fwe-triangle-right`
468
+
469
+ ### Popover Variants
470
+
471
+ | Class | Description |
472
+ |---|---|
473
+ | `fwe-popover` | Default (text) |
474
+ | `fwe-popover--menu` | Menu with buttons |
475
+ | `fwe-popover--legend` | Legend with `<dl>` |
476
+
477
+ ### Popover-Menu-Trigger
478
+
479
+ ```html
480
+ <button class="fwe-popover-menu-trigger">
481
+ <i class="fwe-icon fwe-icon-lg fwe-icon-menu-more"></i>
482
+ </button>
483
+ ```
484
+
485
+ ---
486
+
487
+ ## Progress
488
+
489
+ ```html
490
+ <div class="fwe-progress">
491
+ <div class="fwe-progress-bar" role="progressbar"
492
+ style="width: 50%"
493
+ aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
494
+ </div>
495
+ </div>
496
+ ```
497
+
498
+ Change color: `fwe-bg-red` etc. on `.fwe-progress-bar`.
499
+
500
+ ---
501
+
502
+ ## Scrollbar
503
+
504
+ Custom scrollbar styling.
505
+
506
+ ```html
507
+ <div class="fwe-scrollbar" style="overflow-y: auto; height: 300px;">
508
+ Long content...
509
+ </div>
510
+ ```
511
+
512
+ ---
513
+
514
+ ## Side Menu
515
+
516
+ ```html
517
+ <!-- Vertical -->
518
+ <nav class="fwe-side-menu">
519
+ <a class="fwe-side-menu-item fwe-active">Subpage 1</a>
520
+ <a class="fwe-side-menu-item">Subpage 2</a>
521
+ </nav>
522
+
523
+ <!-- Horizontal -->
524
+ <nav class="fwe-side-menu fwe-side-menu--horizontal">
525
+ <a class="fwe-side-menu-item fwe-active">Subpage 1</a>
526
+ <a class="fwe-side-menu-item">Subpage 2</a>
527
+ </nav>
528
+ ```
529
+
530
+ ---
531
+
532
+ ## Sidebar Menu (Overlay)
533
+
534
+ ```html
535
+ <div class="fwe-sidebar-overlay fwe-sidebar-overlay--open">
536
+ <button class="fwe-sidebar-overlay-close-btn"></button>
537
+ <div>Type</div>
538
+ <h1 class="fwe-mt-0">Name</h1>
539
+ <p>Details</p>
540
+ </div>
541
+ ```
542
+
543
+ With Navbar: add `fwe-navbar-margin` class.
544
+
545
+ ---
546
+
547
+ ## Snackbar
548
+
549
+ ```html
550
+ <!-- Type A (with shadow) -->
551
+ <div class="fwe-snackbar fwe-snackbar-shadow">Info text</div>
552
+
553
+ <!-- Type B (without shadow) -->
554
+ <div class="fwe-snackbar fwe-snackbar-b">Info text</div>
555
+
556
+ <!-- Type C (compact) -->
557
+ <div class="fwe-snackbar fwe-snackbar-c fwe-snackbar-shadow">Info text</div>
558
+ ```
559
+
560
+ ### Variants
561
+
562
+ | Class | Meaning |
563
+ |---|---|
564
+ | `fwe-snackbar-info` | Info (blue) |
565
+ | `fwe-snackbar-warning` | Warning (yellow) |
566
+ | `fwe-snackbar-error` | Error (red) |
567
+
568
+ ### With Actions
569
+
570
+ ```html
571
+ <div class="fwe-snackbar fwe-snackbar-shadow fwe-snackbar-warning">
572
+ <span>Warning!</span>
573
+ <button class="fwe-snackbar-link-btn">Details</button>
574
+ <div class="fwe-snackbar-separator"></div>
575
+ <button class="fwe-snackbar-close-btn"></button>
576
+ </div>
577
+ ```
578
+
579
+ ---
580
+
581
+ ## Stepper
582
+
583
+ ### Horizontal
584
+
585
+ ```html
586
+ <div class="fwe-stepper-horizontal">
587
+ <div class="fwe-step-container fwe-step-done">
588
+ <div class="fwe-step">
589
+ <div class="fwe-step-no">1</div>
590
+ <div class="fwe-step-name">Step 1</div>
591
+ </div>
592
+ </div>
593
+ <div class="fwe-step-container fwe-step-active">
594
+ <div class="fwe-step">
595
+ <div class="fwe-step-no">2</div>
596
+ <div class="fwe-step-name">Step 2</div>
597
+ </div>
598
+ </div>
599
+ <div class="fwe-step-container">
600
+ <div class="fwe-step">
601
+ <div class="fwe-step-no">3</div>
602
+ <div class="fwe-step-name">Step 3</div>
603
+ </div>
604
+ </div>
605
+ </div>
606
+ ```
607
+
608
+ ### Vertical
609
+
610
+ ```html
611
+ <div class="fwe-stepper-vertical">
612
+ <div class="fwe-step-container fwe-step-active">
613
+ <div class="fwe-step">
614
+ <div class="fwe-step-no">1</div>
615
+ <div class="fwe-step-name">Step 1</div>
616
+ </div>
617
+ <div class="fwe-step-content-container">
618
+ <div class="fwe-step-content">Content</div>
619
+ </div>
620
+ </div>
621
+ </div>
622
+ ```
623
+
624
+ Step states: `fwe-step-done`, `fwe-step-active`, *(empty = pending)*
625
+
626
+ ---
627
+
628
+ ## Toolbar
629
+
630
+ ```html
631
+ <div class="fwe-toolbar">
632
+ <div class="fwe-toolbar-actions">
633
+ <button class="fwe-btn fwe-btn-link fwe-active">
634
+ <i class="fwe-icon fwe-icon-list-filter fwe-icon-lg"></i>
635
+ </button>
636
+ <button class="fwe-btn fwe-btn-link fwe-dark">
637
+ <i class="fwe-icon fwe-icon-menu-more fwe-icon-lg"></i>
638
+ </button>
639
+ </div>
640
+ </div>
641
+ ```
642
+
643
+ Right toolbar: `fwe-toolbar fwe-toolbar-right`