create-flowmo 1.0.0 → 1.1.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.
- package/package.json +1 -1
- package/skills/outsystems-ui/SKILL.md +263 -28
- package/skills/outsystems-ui/assets/layout-base.html +108 -0
- package/skills/outsystems-ui/assets/layout-blank.html +30 -0
- package/skills/outsystems-ui/assets/layout-side.html +117 -0
- package/skills/outsystems-ui/assets/layout-template.html +53 -30
- package/skills/outsystems-ui/assets/layout-top.html +100 -0
- package/skills/outsystems-ui/references/screen-templates.md +259 -33
- package/skills/outsystems-ui/references/ui-patterns.md +1253 -0
- package/template/screens/home.visual.html +55 -20
- package/template/theme/theme.css +15 -1
- package/skills/outsystems-ui/references/patterns-adaptive.md +0 -178
- package/skills/outsystems-ui/references/patterns-content.md +0 -242
- package/skills/outsystems-ui/references/patterns-interaction.md +0 -288
- package/skills/outsystems-ui/references/patterns-navigation.md +0 -180
- package/skills/outsystems-ui/references/patterns-numbers.md +0 -94
- package/skills/outsystems-ui/references/patterns-utilities.md +0 -124
- package/skills/outsystems-ui/references/widgets.md +0 -270
|
@@ -0,0 +1,1253 @@
|
|
|
1
|
+
# OutSystems UI Patterns Reference
|
|
2
|
+
|
|
3
|
+
Verified HTML structures scraped from the official [OutSystems UI Style Guide](https://outsystemsui.outsystems.com/StyleGuidePreview/Patterns).
|
|
4
|
+
|
|
5
|
+
Notation: `tag.class1.class2` for elements, `[Block.Name]` for OutSystems block wrappers (use `data-block` attribute or just omit in visual HTML). Indentation = nesting. Content after `:` = text content.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Adaptive
|
|
10
|
+
|
|
11
|
+
### Columns 2
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<div class="columns columns2 gutter-base">
|
|
15
|
+
<div class="columns-item">Column 1</div>
|
|
16
|
+
<div class="columns-item">Column 2</div>
|
|
17
|
+
</div>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Columns 3
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<div class="columns columns3 gutter-base">
|
|
24
|
+
<div class="columns-item">Column 1</div>
|
|
25
|
+
<div class="columns-item">Column 2</div>
|
|
26
|
+
<div class="columns-item">Column 3</div>
|
|
27
|
+
</div>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Columns 4
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<div class="columns columns4 gutter-base">
|
|
34
|
+
<div class="columns-item">Column 1</div>
|
|
35
|
+
<div class="columns-item">Column 2</div>
|
|
36
|
+
<div class="columns-item">Column 3</div>
|
|
37
|
+
<div class="columns-item">Column 4</div>
|
|
38
|
+
</div>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Columns 5
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<div class="columns columns5 gutter-base">
|
|
45
|
+
<div class="columns-item">...</div>
|
|
46
|
+
<!-- 5 columns-item -->
|
|
47
|
+
</div>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Columns 6
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<div class="columns columns6 gutter-base">
|
|
54
|
+
<div class="columns-item">...</div>
|
|
55
|
+
<!-- 6 columns-item -->
|
|
56
|
+
</div>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Columns Medium Left
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<div class="columns columns-medium-left gutter-base">
|
|
63
|
+
<div class="columns-item">Wider left</div>
|
|
64
|
+
<div class="columns-item">Narrower right</div>
|
|
65
|
+
</div>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Columns Medium Right
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<div class="columns columns-medium-right gutter-base">
|
|
72
|
+
<div class="columns-item">Narrower left</div>
|
|
73
|
+
<div class="columns-item">Wider right</div>
|
|
74
|
+
</div>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Columns Small Left
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<div class="columns columns-small-left gutter-base">
|
|
81
|
+
<div class="columns-item">Small left</div>
|
|
82
|
+
<div class="columns-item">Large right</div>
|
|
83
|
+
</div>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Columns Small Right
|
|
87
|
+
|
|
88
|
+
```html
|
|
89
|
+
<div class="columns columns-small-right gutter-base">
|
|
90
|
+
<div class="columns-item">Large left</div>
|
|
91
|
+
<div class="columns-item">Small right</div>
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Display On Device
|
|
96
|
+
|
|
97
|
+
Show/hide content per breakpoint.
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<div class="display-on-device-desktop">Desktop only content</div>
|
|
101
|
+
<div class="display-on-device-tablet">Tablet only content</div>
|
|
102
|
+
<div class="display-on-device-phone">Phone only content</div>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Gallery
|
|
106
|
+
|
|
107
|
+
Grid gallery with auto-flowing items.
|
|
108
|
+
|
|
109
|
+
```html
|
|
110
|
+
<div class="osui-gallery">
|
|
111
|
+
<div>Item 1</div>
|
|
112
|
+
<div>Item 2</div>
|
|
113
|
+
<div>Item 3</div>
|
|
114
|
+
<!-- ... -->
|
|
115
|
+
</div>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Master Detail
|
|
119
|
+
|
|
120
|
+
Split-screen list + detail layout.
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<div class="split-screen-wrapper is--full-height">
|
|
124
|
+
<div class="split-left">
|
|
125
|
+
<div class="list list-group">
|
|
126
|
+
<div class="list-item list-item-selected">
|
|
127
|
+
<!-- ListItemContent -->
|
|
128
|
+
</div>
|
|
129
|
+
<div class="list-item">
|
|
130
|
+
<!-- ListItemContent -->
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
<div class="split-right">
|
|
135
|
+
<div class="split-right-close">
|
|
136
|
+
<a><i class="icon fa fa-angle-left fa-2x"></i></a>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="split-right-content">
|
|
139
|
+
<!-- Detail content -->
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Content
|
|
148
|
+
|
|
149
|
+
### Accordion
|
|
150
|
+
|
|
151
|
+
```html
|
|
152
|
+
<div class="osui-accordion">
|
|
153
|
+
<div class="osui-accordion-item osui-accordion-item--is-open">
|
|
154
|
+
<div class="osui-accordion-item__title">Title</div>
|
|
155
|
+
<div class="osui-accordion-item__content osui-accordion-item__content--is-expanded">
|
|
156
|
+
Content
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
<div class="osui-accordion-item">
|
|
160
|
+
<div class="osui-accordion-item__title">Title 2</div>
|
|
161
|
+
<div class="osui-accordion-item__content">Content 2</div>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Alert
|
|
167
|
+
|
|
168
|
+
```html
|
|
169
|
+
<div class="alert alert-error" role="alert">
|
|
170
|
+
<div class="alert-icon">
|
|
171
|
+
<i class="icon fa fa-times-circle"></i>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="alert-message">Something went wrong.</div>
|
|
174
|
+
</div>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Variants: `alert-success`, `alert-warning`, `alert-info`, `alert-error`.
|
|
178
|
+
|
|
179
|
+
### Blank Slate
|
|
180
|
+
|
|
181
|
+
Empty state placeholder.
|
|
182
|
+
|
|
183
|
+
```html
|
|
184
|
+
<div class="blank-slate large">
|
|
185
|
+
<div class="blank-slate-icon">
|
|
186
|
+
<img src="placeholder.png">
|
|
187
|
+
</div>
|
|
188
|
+
<div class="blank-slate-description">No records have been added yet</div>
|
|
189
|
+
<div class="blank-slate-actions">
|
|
190
|
+
<!-- Optional action buttons -->
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Card
|
|
196
|
+
|
|
197
|
+
```html
|
|
198
|
+
<div class="card card-content">
|
|
199
|
+
Content goes here
|
|
200
|
+
</div>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Card Background
|
|
204
|
+
|
|
205
|
+
```html
|
|
206
|
+
<div class="card-background" style="min-height: 350px;">
|
|
207
|
+
<div class="card-background-content">
|
|
208
|
+
<!-- Overlay content -->
|
|
209
|
+
</div>
|
|
210
|
+
<div class="card-background-image">
|
|
211
|
+
<img class="img-cover" src="image.jpg" alt="">
|
|
212
|
+
</div>
|
|
213
|
+
<div class="card-background-color background-primary"></div>
|
|
214
|
+
</div>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Card Item
|
|
218
|
+
|
|
219
|
+
Horizontal card with left/center/right zones.
|
|
220
|
+
|
|
221
|
+
```html
|
|
222
|
+
<div class="card card-detail">
|
|
223
|
+
<div class="card-detail-left">
|
|
224
|
+
<img src="avatar.jpg">
|
|
225
|
+
</div>
|
|
226
|
+
<div class="card-detail-center">
|
|
227
|
+
<div class="card-detail-title">Title</div>
|
|
228
|
+
<div class="card-detail-text text-grey">Subtitle</div>
|
|
229
|
+
</div>
|
|
230
|
+
<div class="card-detail-right">
|
|
231
|
+
<i class="icon fa fa-angle-right"></i>
|
|
232
|
+
</div>
|
|
233
|
+
</div>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Card Sectioned
|
|
237
|
+
|
|
238
|
+
```html
|
|
239
|
+
<div class="card card-sectioned flex-direction-column">
|
|
240
|
+
<div class="card-image">
|
|
241
|
+
<img src="image.jpg">
|
|
242
|
+
</div>
|
|
243
|
+
<div class="card-sectioned-top flex-direction-column">
|
|
244
|
+
<div class="card-title">Title</div>
|
|
245
|
+
<div class="card-content">Description</div>
|
|
246
|
+
<div class="card-bottom">
|
|
247
|
+
<!-- Footer actions -->
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
</div>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Chat Message
|
|
254
|
+
|
|
255
|
+
```html
|
|
256
|
+
<div class="chat left">
|
|
257
|
+
<div class="chat-photo">
|
|
258
|
+
<div class="avatar border-radius-rounded background-primary" role="img">
|
|
259
|
+
<span>SR</span>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
<div class="chat-message-wrapper">
|
|
263
|
+
<div class="chat-message padding">
|
|
264
|
+
<span class="font-semi-bold">Scott Richie</span>
|
|
265
|
+
<div class="margin-top-s">Message text here</div>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Use `chat right` for the other speaker. Add `.margin-top-m` for spacing between messages.
|
|
272
|
+
|
|
273
|
+
### Flip Content
|
|
274
|
+
|
|
275
|
+
```html
|
|
276
|
+
<div class="osui-flip-content">
|
|
277
|
+
<div class="osui-flip-content__container osui-flip-content--flip-self">
|
|
278
|
+
<div class="osui-flip-content__container__front">
|
|
279
|
+
<!-- Front content -->
|
|
280
|
+
</div>
|
|
281
|
+
<!-- __back for reverse side -->
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Floating Content
|
|
287
|
+
|
|
288
|
+
Overlay content positioned over an image/container.
|
|
289
|
+
|
|
290
|
+
```html
|
|
291
|
+
<div style="position: relative;">
|
|
292
|
+
<img class="img-cover" src="background.jpg">
|
|
293
|
+
<div class="floating-content floating-content-bottom floating-content-margin">
|
|
294
|
+
<!-- Floating content here -->
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Positions: `floating-content-top`, `floating-content-bottom`.
|
|
300
|
+
|
|
301
|
+
### List Item Content
|
|
302
|
+
|
|
303
|
+
```html
|
|
304
|
+
<div class="list-item-content">
|
|
305
|
+
<div class="list-item-content-left text-primary-color">
|
|
306
|
+
<img src="avatar.jpg">
|
|
307
|
+
</div>
|
|
308
|
+
<div class="list-item-content-center">
|
|
309
|
+
<div class="list-item-content-title">Title</div>
|
|
310
|
+
<div class="list-item-content-text">Subtitle</div>
|
|
311
|
+
</div>
|
|
312
|
+
<div class="list-item-content-right">
|
|
313
|
+
<i class="icon fa fa-angle-right fa-2x"></i>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Section
|
|
319
|
+
|
|
320
|
+
```html
|
|
321
|
+
<div class="section" role="region">
|
|
322
|
+
<div class="section-title dividers">Section Title</div>
|
|
323
|
+
<div class="section-content">Content here</div>
|
|
324
|
+
</div>
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Section Group
|
|
328
|
+
|
|
329
|
+
Groups multiple sections with sticky scrolling.
|
|
330
|
+
|
|
331
|
+
```html
|
|
332
|
+
<div class="section-group is--sticky">
|
|
333
|
+
<div class="sticky">
|
|
334
|
+
<div class="section">
|
|
335
|
+
<div class="section-title dividers">Summary</div>
|
|
336
|
+
<div class="section-content">...</div>
|
|
337
|
+
</div>
|
|
338
|
+
<div class="section margin-top-base">
|
|
339
|
+
<div class="section-title dividers">Details</div>
|
|
340
|
+
<div class="section-content">...</div>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Tag
|
|
347
|
+
|
|
348
|
+
```html
|
|
349
|
+
<div class="tag border-radius- background-primary">Label</div>
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
Variants: `background-primary`, `background-red`, `background-teal`, `background-green`. Shape: `border-radius-rounded` for pill shape.
|
|
353
|
+
|
|
354
|
+
### Tooltip
|
|
355
|
+
|
|
356
|
+
```html
|
|
357
|
+
<div class="osui-tooltip osui-tooltip--is-hover">
|
|
358
|
+
<div class="osui-tooltip__content" role="button" tabindex="0">
|
|
359
|
+
Hover me
|
|
360
|
+
</div>
|
|
361
|
+
<div class="osui-tooltip__balloon-wrapper osui-balloon" role="tooltip" aria-hidden="true">
|
|
362
|
+
<div class="osui-tooltip__balloon-wrapper__balloon">Tooltip text</div>
|
|
363
|
+
<div class="osui-tooltip__balloon-arrow"></div>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### User Avatar
|
|
369
|
+
|
|
370
|
+
```html
|
|
371
|
+
<div class="avatar border-radius- background-primary" role="img" aria-label="user initials, JD">
|
|
372
|
+
<span>JD</span>
|
|
373
|
+
</div>
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Shape: `border-radius-rounded` for circle.
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Interaction
|
|
381
|
+
|
|
382
|
+
### Action Sheet
|
|
383
|
+
|
|
384
|
+
Bottom sheet with action buttons (mobile pattern).
|
|
385
|
+
|
|
386
|
+
```html
|
|
387
|
+
<div class="action-sheet-container">
|
|
388
|
+
<div class="action-sheet-background"></div>
|
|
389
|
+
<div class="action-sheet">
|
|
390
|
+
<div class="action-sheet-buttons">
|
|
391
|
+
<div class="action-sheet-actions">
|
|
392
|
+
<button class="btn text-primary">Flag</button>
|
|
393
|
+
</div>
|
|
394
|
+
<div class="action-sheet-actions">
|
|
395
|
+
<button class="btn text-primary">Mark as Unread</button>
|
|
396
|
+
</div>
|
|
397
|
+
<div class="action-sheet-actions">
|
|
398
|
+
<button class="btn text-red"><span class="text-red">Delete</span></button>
|
|
399
|
+
</div>
|
|
400
|
+
</div>
|
|
401
|
+
<div class="action-sheet-cancel">
|
|
402
|
+
<button class="btn background-white">Cancel</button>
|
|
403
|
+
</div>
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Animate
|
|
409
|
+
|
|
410
|
+
Entrance animations.
|
|
411
|
+
|
|
412
|
+
```html
|
|
413
|
+
<div class="animate bottom-to-top">
|
|
414
|
+
Content that animates in
|
|
415
|
+
</div>
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
Variants: `bottom-to-top`, `top-to-bottom`, `left-to-right`, `right-to-left`, `fade-in`, `scale-up`.
|
|
419
|
+
|
|
420
|
+
### Animated Label
|
|
421
|
+
|
|
422
|
+
Label that floats up when input is focused.
|
|
423
|
+
|
|
424
|
+
```html
|
|
425
|
+
<div class="animated-label">
|
|
426
|
+
<div class="animated-label-text">
|
|
427
|
+
<label>First Name</label>
|
|
428
|
+
</div>
|
|
429
|
+
<div class="animated-label-input">
|
|
430
|
+
<span class="input-text">
|
|
431
|
+
<input class="form-control">
|
|
432
|
+
</span>
|
|
433
|
+
</div>
|
|
434
|
+
</div>
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### Carousel
|
|
438
|
+
|
|
439
|
+
Image carousel (uses Splide library).
|
|
440
|
+
|
|
441
|
+
```html
|
|
442
|
+
<div class="osui-carousel splide">
|
|
443
|
+
<div class="osui-carousel__track splide__track">
|
|
444
|
+
<div class="osui-carousel__content splide__list">
|
|
445
|
+
<img class="splide__slide is-active is-visible" src="slide1.jpg">
|
|
446
|
+
<img class="splide__slide" src="slide2.jpg">
|
|
447
|
+
<img class="splide__slide" src="slide3.jpg">
|
|
448
|
+
</div>
|
|
449
|
+
</div>
|
|
450
|
+
<ul class="splide__pagination">
|
|
451
|
+
<li><button class="splide__pagination__page is-active"></button></li>
|
|
452
|
+
<li><button class="splide__pagination__page"></button></li>
|
|
453
|
+
</ul>
|
|
454
|
+
</div>
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### Date Picker
|
|
458
|
+
|
|
459
|
+
```html
|
|
460
|
+
<div class="osui-datepicker">
|
|
461
|
+
<span class="input-text">
|
|
462
|
+
<input class="form-control flatpickr-input" type="text">
|
|
463
|
+
</span>
|
|
464
|
+
</div>
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Dropdown Search
|
|
468
|
+
|
|
469
|
+
Searchable dropdown (uses VirtualSelect library).
|
|
470
|
+
|
|
471
|
+
```html
|
|
472
|
+
<div class="osui-dropdown-search">
|
|
473
|
+
<div class="vscomp-wrapper has-clear-button has-search-input">
|
|
474
|
+
<input class="vscomp-hidden-input">
|
|
475
|
+
<div class="vscomp-toggle-button">
|
|
476
|
+
<div class="vscomp-value">Select...</div>
|
|
477
|
+
<div class="vscomp-arrow"></div>
|
|
478
|
+
<div class="vscomp-clear-button toggle-button-child">
|
|
479
|
+
<i class="vscomp-clear-icon"></i>
|
|
480
|
+
</div>
|
|
481
|
+
</div>
|
|
482
|
+
</div>
|
|
483
|
+
</div>
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### Dropdown Tags
|
|
487
|
+
|
|
488
|
+
Multi-select with tag chips.
|
|
489
|
+
|
|
490
|
+
```html
|
|
491
|
+
<div class="osui-dropdown-tags">
|
|
492
|
+
<div class="vscomp-wrapper multiple has-select-all has-clear-button has-search-input show-value-as-tags">
|
|
493
|
+
<input class="vscomp-hidden-input">
|
|
494
|
+
<div class="vscomp-toggle-button">
|
|
495
|
+
<div class="vscomp-value">Select...</div>
|
|
496
|
+
<div class="vscomp-arrow"></div>
|
|
497
|
+
<div class="vscomp-clear-button toggle-button-child">
|
|
498
|
+
<i class="vscomp-clear-icon"></i>
|
|
499
|
+
</div>
|
|
500
|
+
</div>
|
|
501
|
+
</div>
|
|
502
|
+
</div>
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### Floating Actions
|
|
506
|
+
|
|
507
|
+
FAB (Floating Action Button) with expandable items.
|
|
508
|
+
|
|
509
|
+
```html
|
|
510
|
+
<div class="floating-actions-wrapper is--open">
|
|
511
|
+
<div class="floating-items">
|
|
512
|
+
<div class="floating-actions-item">
|
|
513
|
+
<div class="floating-actions-item-label">Member</div>
|
|
514
|
+
<div class="floating-actions-item-button">
|
|
515
|
+
<i class="icon fa fa-user"></i>
|
|
516
|
+
</div>
|
|
517
|
+
</div>
|
|
518
|
+
<div class="floating-actions-item">
|
|
519
|
+
<div class="floating-actions-item-label">Note</div>
|
|
520
|
+
<div class="floating-actions-item-button">
|
|
521
|
+
<i class="icon fa fa-file"></i>
|
|
522
|
+
</div>
|
|
523
|
+
</div>
|
|
524
|
+
</div>
|
|
525
|
+
<div class="floating-button">
|
|
526
|
+
<i class="icon fa fa-plus"></i>
|
|
527
|
+
</div>
|
|
528
|
+
</div>
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### Input With Icon
|
|
532
|
+
|
|
533
|
+
```html
|
|
534
|
+
<div class="input-with-icon input-with-icon-right">
|
|
535
|
+
<div class="input-with-icon-content-icon center">
|
|
536
|
+
<i class="icon fa fa-user"></i>
|
|
537
|
+
</div>
|
|
538
|
+
<div class="input-with-icon-input">
|
|
539
|
+
<span class="input-text">
|
|
540
|
+
<input class="form-control" type="text">
|
|
541
|
+
</span>
|
|
542
|
+
</div>
|
|
543
|
+
</div>
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
Icon position: `input-with-icon-right` (icon left, default) or `input-with-icon-left`.
|
|
547
|
+
|
|
548
|
+
### Lightbox Image
|
|
549
|
+
|
|
550
|
+
Clickable thumbnail that opens full-size overlay.
|
|
551
|
+
|
|
552
|
+
```html
|
|
553
|
+
<div class="lightbox-item">
|
|
554
|
+
<figure>
|
|
555
|
+
<a>
|
|
556
|
+
<div class="lightbox-content-thumbnail">
|
|
557
|
+
<img src="thumb.jpg">
|
|
558
|
+
</div>
|
|
559
|
+
</a>
|
|
560
|
+
<figcaption><span>Caption</span></figcaption>
|
|
561
|
+
</figure>
|
|
562
|
+
</div>
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### Notification
|
|
566
|
+
|
|
567
|
+
Toast notification banner.
|
|
568
|
+
|
|
569
|
+
```html
|
|
570
|
+
<div class="osui-notification osui-notification--is-top">
|
|
571
|
+
<div class="margin-right-base">
|
|
572
|
+
<i class="icon text-white fa fa-comments-o fa-2x"></i>
|
|
573
|
+
</div>
|
|
574
|
+
<div>
|
|
575
|
+
<span class="text-white">You have a new message</span>
|
|
576
|
+
</div>
|
|
577
|
+
</div>
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
Position: `osui-notification--is-top`, `osui-notification--is-bottom`.
|
|
581
|
+
|
|
582
|
+
### Range Slider
|
|
583
|
+
|
|
584
|
+
```html
|
|
585
|
+
<div class="osui-range-slider osui-range-slider--has-ticks">
|
|
586
|
+
<div class="osui-range-slider__provider noUi-target noUi-horizontal">
|
|
587
|
+
<div class="noUi-base">
|
|
588
|
+
<div class="noUi-connects"><div class="noUi-connect"></div></div>
|
|
589
|
+
<div class="noUi-origin">
|
|
590
|
+
<div class="noUi-handle noUi-handle-lower">
|
|
591
|
+
<div class="noUi-touch-area"></div>
|
|
592
|
+
</div>
|
|
593
|
+
</div>
|
|
594
|
+
</div>
|
|
595
|
+
</div>
|
|
596
|
+
</div>
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
### Range Slider Interval
|
|
600
|
+
|
|
601
|
+
Same as Range Slider but with two handles:
|
|
602
|
+
|
|
603
|
+
```html
|
|
604
|
+
<div class="osui-range-slider osui-range-slider--is-interval osui-range-slider--has-ticks">
|
|
605
|
+
<!-- Same structure but with noUi-handle-lower AND noUi-handle-upper -->
|
|
606
|
+
</div>
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
### Scrollable Area
|
|
610
|
+
|
|
611
|
+
Horizontal or vertical scrollable content.
|
|
612
|
+
|
|
613
|
+
```html
|
|
614
|
+
<div class="scrollable-area-content horizontal-scroll">
|
|
615
|
+
<img src="img1.jpg">
|
|
616
|
+
<img src="img2.jpg">
|
|
617
|
+
<img src="img3.jpg">
|
|
618
|
+
</div>
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
### Search
|
|
622
|
+
|
|
623
|
+
```html
|
|
624
|
+
<div class="osui-search">
|
|
625
|
+
<div class="osui-search__input">
|
|
626
|
+
<span class="input-text">
|
|
627
|
+
<input class="form-control" type="search">
|
|
628
|
+
</span>
|
|
629
|
+
</div>
|
|
630
|
+
</div>
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### Sidebar
|
|
634
|
+
|
|
635
|
+
Slide-in panel overlay.
|
|
636
|
+
|
|
637
|
+
```html
|
|
638
|
+
<aside class="osui-sidebar osui-sidebar--is-right">
|
|
639
|
+
<div class="osui-sidebar__header">
|
|
640
|
+
<a><i class="icon fa fa-remove"></i></a>
|
|
641
|
+
</div>
|
|
642
|
+
<div class="osui-sidebar__content">
|
|
643
|
+
<!-- Sidebar content -->
|
|
644
|
+
</div>
|
|
645
|
+
</aside>
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
Direction: `osui-sidebar--is-right`, `osui-sidebar--is-left`.
|
|
649
|
+
|
|
650
|
+
### Stacked Cards
|
|
651
|
+
|
|
652
|
+
Swipeable card stack.
|
|
653
|
+
|
|
654
|
+
```html
|
|
655
|
+
<div class="stackedcards stackedcards--animatable">
|
|
656
|
+
<div class="stackedcards-container">
|
|
657
|
+
<div class="list list-group">
|
|
658
|
+
<div class="card stackedcards-active stackedcards-bottom">
|
|
659
|
+
<span class="heading5">Card Title</span>
|
|
660
|
+
<div class="margin-top-m"><span>Card description...</span></div>
|
|
661
|
+
<div class="margin-top-m">
|
|
662
|
+
<div class="tag border-radius-rounded background-red">Urgent</div>
|
|
663
|
+
</div>
|
|
664
|
+
</div>
|
|
665
|
+
<!-- More cards... -->
|
|
666
|
+
</div>
|
|
667
|
+
</div>
|
|
668
|
+
</div>
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
### Video
|
|
672
|
+
|
|
673
|
+
```html
|
|
674
|
+
<video class="osui-video">
|
|
675
|
+
<source class="osui-video-source" src="video.mp4">
|
|
676
|
+
</video>
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
---
|
|
680
|
+
|
|
681
|
+
## Navigation
|
|
682
|
+
|
|
683
|
+
### Bottom Bar Item
|
|
684
|
+
|
|
685
|
+
Mobile bottom navigation.
|
|
686
|
+
|
|
687
|
+
```html
|
|
688
|
+
<div class="bottom-bar-wrapper">
|
|
689
|
+
<div class="bottom-bar">
|
|
690
|
+
<a class="active">
|
|
691
|
+
<div class="bottom-bar-item">
|
|
692
|
+
<div class="bottom-bar-item-icon">
|
|
693
|
+
<i class="icon fa fa-clock-o"></i>
|
|
694
|
+
</div>
|
|
695
|
+
<div class="bottom-bar-item-text">Recents</div>
|
|
696
|
+
</div>
|
|
697
|
+
</a>
|
|
698
|
+
<a>
|
|
699
|
+
<div class="bottom-bar-item">
|
|
700
|
+
<div class="bottom-bar-item-icon">
|
|
701
|
+
<i class="icon fa fa-file-text-o"></i>
|
|
702
|
+
</div>
|
|
703
|
+
<div class="bottom-bar-item-text">Files</div>
|
|
704
|
+
</div>
|
|
705
|
+
</a>
|
|
706
|
+
</div>
|
|
707
|
+
</div>
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
### Breadcrumbs
|
|
711
|
+
|
|
712
|
+
```html
|
|
713
|
+
<nav class="breadcrumbs">
|
|
714
|
+
<div class="breadcrumbs-content">
|
|
715
|
+
<div class="breadcrumbs-item">
|
|
716
|
+
<div class="title"><a>Dashboard</a></div>
|
|
717
|
+
<div><i class="icon fa fa-angle-right"></i></div>
|
|
718
|
+
</div>
|
|
719
|
+
<div class="breadcrumbs-item">
|
|
720
|
+
<div class="title"><a>List</a></div>
|
|
721
|
+
<div><i class="icon fa fa-angle-right"></i></div>
|
|
722
|
+
</div>
|
|
723
|
+
<div class="breadcrumbs-item">
|
|
724
|
+
<div class="title">Detail</div>
|
|
725
|
+
<div></div>
|
|
726
|
+
</div>
|
|
727
|
+
</div>
|
|
728
|
+
</nav>
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
### Overflow Menu
|
|
732
|
+
|
|
733
|
+
Contextual dropdown menu triggered by ellipsis button.
|
|
734
|
+
|
|
735
|
+
```html
|
|
736
|
+
<div class="osui-overflow-menu">
|
|
737
|
+
<div class="osui-overflow-menu__balloon osui-balloon">
|
|
738
|
+
<nav class="display-flex flex-direction-column">
|
|
739
|
+
<span class="text-uppercase text-neutral-7 font-semi-bold padding-x-base padding-top-base font-size-xs margin-bottom-s">Title</span>
|
|
740
|
+
<a><i class="icon fa fa-eye"></i><span class="margin-left-s">Item 1</span></a>
|
|
741
|
+
<a><i class="icon fa fa-file-text-o"></i><span class="margin-left-s">Item 2</span></a>
|
|
742
|
+
<a><i class="icon fa fa-pencil"></i><span class="margin-left-s">Item 3</span></a>
|
|
743
|
+
<div class="separator separator-horizontal background-neutral-4"></div>
|
|
744
|
+
<a><i class="icon fa fa-user"></i><span class="margin-left-s">Item 4</span></a>
|
|
745
|
+
</nav>
|
|
746
|
+
</div>
|
|
747
|
+
<button class="btn btn-small osui-overflow-menu__trigger">
|
|
748
|
+
<div><i class="icon fa fa-ellipsis-v"></i></div>
|
|
749
|
+
</button>
|
|
750
|
+
</div>
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
### Pagination
|
|
754
|
+
|
|
755
|
+
```html
|
|
756
|
+
<div class="pagination">
|
|
757
|
+
<div class="pagination-counter">
|
|
758
|
+
<span>1</span><span> to </span><span>3</span><span> of </span><span>55</span><span> items</span>
|
|
759
|
+
</div>
|
|
760
|
+
<nav class="pagination-container" aria-label="Pagination">
|
|
761
|
+
<button class="pagination-button" disabled aria-label="go to previous page">
|
|
762
|
+
<div class="pagination-previous"><i class="icon fa fa-angle-left"></i></div>
|
|
763
|
+
</button>
|
|
764
|
+
<div class="display-flex">
|
|
765
|
+
<button class="pagination-button is--active" aria-current="true"><span>1</span></button>
|
|
766
|
+
<div class="list list-group">
|
|
767
|
+
<button class="pagination-button"><span>2</span></button>
|
|
768
|
+
<button class="pagination-button"><span>3</span></button>
|
|
769
|
+
</div>
|
|
770
|
+
<div class="pagination-button is--ellipsis">...</div>
|
|
771
|
+
<button class="pagination-button"><span>19</span></button>
|
|
772
|
+
</div>
|
|
773
|
+
<button class="pagination-button" aria-label="go to next page">
|
|
774
|
+
<div class="pagination-next"><i class="icon fa fa-angle-right"></i></div>
|
|
775
|
+
</button>
|
|
776
|
+
</nav>
|
|
777
|
+
</div>
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
### Section Index
|
|
781
|
+
|
|
782
|
+
Anchor navigation for page sections.
|
|
783
|
+
|
|
784
|
+
```html
|
|
785
|
+
<div class="section-index">
|
|
786
|
+
<a class="section-index-item is--active"><span>Personal Details</span></a>
|
|
787
|
+
<a class="section-index-item"><span>Job Details</span></a>
|
|
788
|
+
<a class="section-index-item"><span>Team Details</span></a>
|
|
789
|
+
</div>
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
### Submenu
|
|
793
|
+
|
|
794
|
+
```html
|
|
795
|
+
<div class="osui-submenu osui-submenu--is-dropdown">
|
|
796
|
+
<div class="osui-submenu__header">
|
|
797
|
+
<div class="osui-submenu__header__item">
|
|
798
|
+
<i class="icon fa fa-folder-o"></i>
|
|
799
|
+
<span class="margin-left-s">Folders</span>
|
|
800
|
+
</div>
|
|
801
|
+
<div class="osui-submenu__header__icon"></div>
|
|
802
|
+
</div>
|
|
803
|
+
<div class="osui-submenu__items">
|
|
804
|
+
<a><i class="icon fa fa-envelope"></i><span class="margin-left-s">All mail</span></a>
|
|
805
|
+
<a><i class="icon fa fa-trash"></i><span class="margin-left-s">Trash</span></a>
|
|
806
|
+
</div>
|
|
807
|
+
</div>
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
### Tabs
|
|
811
|
+
|
|
812
|
+
```html
|
|
813
|
+
<section class="osui-tabs osui-tabs--is-horizontal osui-tabs--is-left">
|
|
814
|
+
<header class="osui-tabs__header">
|
|
815
|
+
<div class="display-contents">
|
|
816
|
+
<button class="osui-tabs__header-item osui-tabs--is-active">
|
|
817
|
+
<div class="display-contents">Personal</div>
|
|
818
|
+
</button>
|
|
819
|
+
<button class="osui-tabs__header-item">
|
|
820
|
+
<div class="display-contents">Job</div>
|
|
821
|
+
</button>
|
|
822
|
+
<button class="osui-tabs__header-item">
|
|
823
|
+
<div class="display-contents">Salary</div>
|
|
824
|
+
</button>
|
|
825
|
+
</div>
|
|
826
|
+
<div class="osui-tabs__header__indicator"></div>
|
|
827
|
+
</header>
|
|
828
|
+
<section class="osui-tabs__content">
|
|
829
|
+
<div class="display-contents">
|
|
830
|
+
<article class="osui-tabs__content-item osui-tabs--is-active">
|
|
831
|
+
Tab 1 content
|
|
832
|
+
</article>
|
|
833
|
+
<article class="osui-tabs__content-item">
|
|
834
|
+
Tab 2 content
|
|
835
|
+
</article>
|
|
836
|
+
<article class="osui-tabs__content-item">
|
|
837
|
+
Tab 3 content
|
|
838
|
+
</article>
|
|
839
|
+
</div>
|
|
840
|
+
</section>
|
|
841
|
+
</section>
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
### Timeline Item
|
|
845
|
+
|
|
846
|
+
```html
|
|
847
|
+
<div class="timeline-item">
|
|
848
|
+
<div class="timeline-left">2019</div>
|
|
849
|
+
<div class="timeline-icon">
|
|
850
|
+
<div class="timeline-icon-line"></div>
|
|
851
|
+
<div class="timeline-icon-container background-primary">
|
|
852
|
+
<i class="icon fa fa-archive"></i>
|
|
853
|
+
</div>
|
|
854
|
+
</div>
|
|
855
|
+
<div class="timeline-content">
|
|
856
|
+
<div>Pending Approval</div>
|
|
857
|
+
<div class="timeline-content-inner">This request requires your approval.</div>
|
|
858
|
+
</div>
|
|
859
|
+
<div class="timeline-right"></div>
|
|
860
|
+
</div>
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
### Wizard
|
|
864
|
+
|
|
865
|
+
```html
|
|
866
|
+
<div class="wizard-wrapper display-flex flex-direction-row">
|
|
867
|
+
<div class="wizard-wrapper-item past label-bottom">
|
|
868
|
+
<div class="wizard-item-icon-wrapper">
|
|
869
|
+
<div class="wizard-item-icon">1</div>
|
|
870
|
+
</div>
|
|
871
|
+
<div class="wizard-item-label">Personal Details</div>
|
|
872
|
+
</div>
|
|
873
|
+
<div class="wizard-wrapper-item active label-bottom">
|
|
874
|
+
<div class="wizard-item-icon-wrapper">
|
|
875
|
+
<div class="wizard-item-icon">2</div>
|
|
876
|
+
</div>
|
|
877
|
+
<div class="wizard-item-label">Address Details</div>
|
|
878
|
+
</div>
|
|
879
|
+
<div class="wizard-wrapper-item next label-bottom">
|
|
880
|
+
<div class="wizard-item-icon-wrapper">
|
|
881
|
+
<div class="wizard-item-icon">3</div>
|
|
882
|
+
</div>
|
|
883
|
+
<div class="wizard-item-label">Review Account</div>
|
|
884
|
+
</div>
|
|
885
|
+
</div>
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
States: `past` (completed), `active` (current), `next` (upcoming).
|
|
889
|
+
|
|
890
|
+
---
|
|
891
|
+
|
|
892
|
+
## Numbers
|
|
893
|
+
|
|
894
|
+
### Badge
|
|
895
|
+
|
|
896
|
+
```html
|
|
897
|
+
<div class="badge border-radius- background-primary">
|
|
898
|
+
<span>1</span>
|
|
899
|
+
</div>
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
### Counter
|
|
903
|
+
|
|
904
|
+
```html
|
|
905
|
+
<div class="counter card background-primary text-neutral-0">
|
|
906
|
+
<div class="center-align flex-direction-row">
|
|
907
|
+
<div class="font-size-display text-neutral-0">26</div>
|
|
908
|
+
<div>Completed Requests</div>
|
|
909
|
+
<div><i class="icon fa fa-check fa-3x"></i></div>
|
|
910
|
+
</div>
|
|
911
|
+
</div>
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
### Icon Badge
|
|
915
|
+
|
|
916
|
+
Icon with notification badge.
|
|
917
|
+
|
|
918
|
+
```html
|
|
919
|
+
<div class="icon-badge">
|
|
920
|
+
<div><i class="icon fa fa-comment-o fa-2x"></i></div>
|
|
921
|
+
<div class="badge border-radius-rounded background-primary">
|
|
922
|
+
<span>1</span>
|
|
923
|
+
</div>
|
|
924
|
+
</div>
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
### Progress Bar
|
|
928
|
+
|
|
929
|
+
```html
|
|
930
|
+
<div class="osui-progress-bar">
|
|
931
|
+
<div class="osui-progress-bar__container animate-entrance">
|
|
932
|
+
<div class="osui-progress-bar__value"></div>
|
|
933
|
+
<div class="osui-progress-bar__content"><span></span></div>
|
|
934
|
+
</div>
|
|
935
|
+
</div>
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
### Progress Circle
|
|
939
|
+
|
|
940
|
+
```html
|
|
941
|
+
<div class="osui-progress-circle">
|
|
942
|
+
<div class="osui-progress-circle__container">
|
|
943
|
+
<div class="osui-inline-svg svg-wrapper">
|
|
944
|
+
<svg>
|
|
945
|
+
<circle></circle>
|
|
946
|
+
<circle></circle>
|
|
947
|
+
</svg>
|
|
948
|
+
</div>
|
|
949
|
+
</div>
|
|
950
|
+
<div class="osui-progress-circle__content">
|
|
951
|
+
<span class="font-size-display">50</span>
|
|
952
|
+
</div>
|
|
953
|
+
</div>
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
### Rating
|
|
957
|
+
|
|
958
|
+
```html
|
|
959
|
+
<div class="rating is-edit">
|
|
960
|
+
<fieldset>
|
|
961
|
+
<legend class="wcag-hide-text">Rating</legend>
|
|
962
|
+
<!-- For each star (1-5): -->
|
|
963
|
+
<input class="rating-input wcag-hide-text" type="radio">
|
|
964
|
+
<label class="rating-item">
|
|
965
|
+
<span class="wcag-hide-text">Rating 1</span>
|
|
966
|
+
<div class="rating-item-filled"><i class="icon text-primary fa fa-star"></i></div>
|
|
967
|
+
<div class="rating-item-half"><i class="icon text-primary fa fa-star-half"></i></div>
|
|
968
|
+
<div class="rating-item-empty"><i class="icon text-neutral-5 fa fa-star"></i></div>
|
|
969
|
+
</label>
|
|
970
|
+
<!-- Repeat for each star -->
|
|
971
|
+
</fieldset>
|
|
972
|
+
</div>
|
|
973
|
+
```
|
|
974
|
+
|
|
975
|
+
---
|
|
976
|
+
|
|
977
|
+
## Utilities
|
|
978
|
+
|
|
979
|
+
### Align Center
|
|
980
|
+
|
|
981
|
+
Vertically aligns children.
|
|
982
|
+
|
|
983
|
+
```html
|
|
984
|
+
<div class="vertical-align flex-direction-row">
|
|
985
|
+
<div class="avatar avatar-medium border-radius-rounded background-primary">
|
|
986
|
+
<span>SR</span>
|
|
987
|
+
</div>
|
|
988
|
+
<div class="margin-left-base">Scott Ritchie</div>
|
|
989
|
+
</div>
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
### Button Loading
|
|
993
|
+
|
|
994
|
+
```html
|
|
995
|
+
<div class="osui-btn-loading osui-btn-loading--is-loading osui-btn-loading-show-spinner">
|
|
996
|
+
<button class="btn btn-primary">
|
|
997
|
+
<div class="osui-btn-loading__spinner-animation"></div>
|
|
998
|
+
</button>
|
|
999
|
+
</div>
|
|
1000
|
+
```
|
|
1001
|
+
|
|
1002
|
+
### Center Content
|
|
1003
|
+
|
|
1004
|
+
Vertically centers content with optional header/footer.
|
|
1005
|
+
|
|
1006
|
+
```html
|
|
1007
|
+
<div class="center-content">
|
|
1008
|
+
<div class="center-content-header"></div>
|
|
1009
|
+
<div class="center-content-container">
|
|
1010
|
+
<!-- Main centered content -->
|
|
1011
|
+
</div>
|
|
1012
|
+
<div class="center-content-bottom"></div>
|
|
1013
|
+
</div>
|
|
1014
|
+
```
|
|
1015
|
+
|
|
1016
|
+
### Inline SVG
|
|
1017
|
+
|
|
1018
|
+
```html
|
|
1019
|
+
<div class="osui-inline-svg svg-wrapper">
|
|
1020
|
+
<svg><!-- SVG content --></svg>
|
|
1021
|
+
</div>
|
|
1022
|
+
```
|
|
1023
|
+
|
|
1024
|
+
### Margin Container
|
|
1025
|
+
|
|
1026
|
+
Adds horizontal margins to constrain content width.
|
|
1027
|
+
|
|
1028
|
+
```html
|
|
1029
|
+
<div class="margin-container">
|
|
1030
|
+
<!-- Content with horizontal margins -->
|
|
1031
|
+
</div>
|
|
1032
|
+
```
|
|
1033
|
+
|
|
1034
|
+
### Separator
|
|
1035
|
+
|
|
1036
|
+
```html
|
|
1037
|
+
<div class="separator separator-horizontal background-neutral-4"></div>
|
|
1038
|
+
```
|
|
1039
|
+
|
|
1040
|
+
Vertical: `separator-vertical`.
|
|
1041
|
+
|
|
1042
|
+
---
|
|
1043
|
+
|
|
1044
|
+
## Widgets
|
|
1045
|
+
|
|
1046
|
+
### Button
|
|
1047
|
+
|
|
1048
|
+
```html
|
|
1049
|
+
<button class="btn btn-primary">
|
|
1050
|
+
<span>Button</span>
|
|
1051
|
+
</button>
|
|
1052
|
+
```
|
|
1053
|
+
|
|
1054
|
+
Variants: `btn-primary`, `btn-secondary`, `btn-success`, `btn-error`. Add icon: `<i class="icon fa fa-check"></i>` before text.
|
|
1055
|
+
|
|
1056
|
+
### Button Group
|
|
1057
|
+
|
|
1058
|
+
```html
|
|
1059
|
+
<div class="button-group">
|
|
1060
|
+
<button class="button-group-item button-group-selected-item">All</button>
|
|
1061
|
+
<button class="button-group-item">Active</button>
|
|
1062
|
+
<button class="button-group-item">Disabled</button>
|
|
1063
|
+
</div>
|
|
1064
|
+
```
|
|
1065
|
+
|
|
1066
|
+
### Checkbox
|
|
1067
|
+
|
|
1068
|
+
```html
|
|
1069
|
+
<span>
|
|
1070
|
+
<input type="checkbox" class="checkbox">
|
|
1071
|
+
</span>
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
### Dropdown
|
|
1075
|
+
|
|
1076
|
+
```html
|
|
1077
|
+
<div class="dropdown-container dropdown">
|
|
1078
|
+
<div class="dropdown-display">
|
|
1079
|
+
<div class="dropdown-display-content">
|
|
1080
|
+
<span>Selected value</span>
|
|
1081
|
+
</div>
|
|
1082
|
+
</div>
|
|
1083
|
+
</div>
|
|
1084
|
+
```
|
|
1085
|
+
|
|
1086
|
+
### Feedback Message
|
|
1087
|
+
|
|
1088
|
+
Triggered by button clicks, styled as toast notifications.
|
|
1089
|
+
|
|
1090
|
+
```html
|
|
1091
|
+
<button class="btn btn-success">
|
|
1092
|
+
<i class="icon fa fa-check"></i>
|
|
1093
|
+
<span class="margin-left-s">Success</span>
|
|
1094
|
+
</button>
|
|
1095
|
+
<button class="btn btn-error ThemeGrid_MarginGutter">
|
|
1096
|
+
<i class="icon fa fa-remove"></i>
|
|
1097
|
+
<span class="margin-left-s">Error</span>
|
|
1098
|
+
</button>
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
### Form
|
|
1102
|
+
|
|
1103
|
+
```html
|
|
1104
|
+
<form class="form card">
|
|
1105
|
+
<div class="columns columns2 gutter-base">
|
|
1106
|
+
<div class="columns-item">
|
|
1107
|
+
<label class="mandatory" for="firstName">First Name</label>
|
|
1108
|
+
<span class="input-text">
|
|
1109
|
+
<input class="form-control" type="text" required id="firstName">
|
|
1110
|
+
</span>
|
|
1111
|
+
</div>
|
|
1112
|
+
<div class="columns-item">
|
|
1113
|
+
<label for="lastName">Last Name</label>
|
|
1114
|
+
<span class="input-text">
|
|
1115
|
+
<input class="form-control" type="text" id="lastName">
|
|
1116
|
+
</span>
|
|
1117
|
+
</div>
|
|
1118
|
+
</div>
|
|
1119
|
+
<div>
|
|
1120
|
+
<label for="email">Email</label>
|
|
1121
|
+
<span class="input-email">
|
|
1122
|
+
<input class="form-control" type="email" id="email">
|
|
1123
|
+
</span>
|
|
1124
|
+
</div>
|
|
1125
|
+
<div>
|
|
1126
|
+
<button class="btn btn-primary" type="submit">Save</button>
|
|
1127
|
+
</div>
|
|
1128
|
+
</form>
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
### Input
|
|
1132
|
+
|
|
1133
|
+
```html
|
|
1134
|
+
<span class="input-text">
|
|
1135
|
+
<input class="form-control" type="text">
|
|
1136
|
+
</span>
|
|
1137
|
+
```
|
|
1138
|
+
|
|
1139
|
+
Input type wrappers: `input-text`, `input-email`, `input-password`, `input-search`.
|
|
1140
|
+
|
|
1141
|
+
### Link
|
|
1142
|
+
|
|
1143
|
+
```html
|
|
1144
|
+
<a class="heading6 text-primary">Link text</a>
|
|
1145
|
+
```
|
|
1146
|
+
|
|
1147
|
+
### List
|
|
1148
|
+
|
|
1149
|
+
```html
|
|
1150
|
+
<div class="list list-group">
|
|
1151
|
+
<div class="list-item">
|
|
1152
|
+
<!-- ListItemContent or custom content -->
|
|
1153
|
+
</div>
|
|
1154
|
+
<div class="list-item">
|
|
1155
|
+
<!-- ... -->
|
|
1156
|
+
</div>
|
|
1157
|
+
</div>
|
|
1158
|
+
```
|
|
1159
|
+
|
|
1160
|
+
### Popover
|
|
1161
|
+
|
|
1162
|
+
Contextual overlay triggered by user action.
|
|
1163
|
+
|
|
1164
|
+
```html
|
|
1165
|
+
<div class="popover popover-top">
|
|
1166
|
+
<!-- Popover content -->
|
|
1167
|
+
</div>
|
|
1168
|
+
```
|
|
1169
|
+
|
|
1170
|
+
### Popup
|
|
1171
|
+
|
|
1172
|
+
Modal dialog.
|
|
1173
|
+
|
|
1174
|
+
```html
|
|
1175
|
+
<button class="btn" onclick="showPopup()">Show Popup</button>
|
|
1176
|
+
<!-- Popup content rendered dynamically -->
|
|
1177
|
+
```
|
|
1178
|
+
|
|
1179
|
+
### Radio Group
|
|
1180
|
+
|
|
1181
|
+
```html
|
|
1182
|
+
<div class="radio-group">
|
|
1183
|
+
<div>
|
|
1184
|
+
<input type="radio" class="radio-button" name="group1">
|
|
1185
|
+
<label>Option A</label>
|
|
1186
|
+
</div>
|
|
1187
|
+
<div>
|
|
1188
|
+
<input type="radio" class="radio-button" name="group1">
|
|
1189
|
+
<label>Option B</label>
|
|
1190
|
+
</div>
|
|
1191
|
+
</div>
|
|
1192
|
+
```
|
|
1193
|
+
|
|
1194
|
+
### Switch
|
|
1195
|
+
|
|
1196
|
+
```html
|
|
1197
|
+
<span>
|
|
1198
|
+
<input type="checkbox" class="switch">
|
|
1199
|
+
</span>
|
|
1200
|
+
```
|
|
1201
|
+
|
|
1202
|
+
### Table
|
|
1203
|
+
|
|
1204
|
+
```html
|
|
1205
|
+
<table class="table">
|
|
1206
|
+
<thead>
|
|
1207
|
+
<tr class="table-header">
|
|
1208
|
+
<th class="sortable">
|
|
1209
|
+
<div>Name</div>
|
|
1210
|
+
<div class="sortable-icon"></div>
|
|
1211
|
+
</th>
|
|
1212
|
+
<th class="sortable">
|
|
1213
|
+
<div>Job Position</div>
|
|
1214
|
+
<div class="sortable-icon"></div>
|
|
1215
|
+
</th>
|
|
1216
|
+
</tr>
|
|
1217
|
+
</thead>
|
|
1218
|
+
<tbody>
|
|
1219
|
+
<tr class="table-row">
|
|
1220
|
+
<td><span>Patricia Wesley</span></td>
|
|
1221
|
+
<td><span>Sales Manager</span></td>
|
|
1222
|
+
</tr>
|
|
1223
|
+
</tbody>
|
|
1224
|
+
</table>
|
|
1225
|
+
```
|
|
1226
|
+
|
|
1227
|
+
### TextArea
|
|
1228
|
+
|
|
1229
|
+
```html
|
|
1230
|
+
<span>
|
|
1231
|
+
<textarea class="form-control"></textarea>
|
|
1232
|
+
</span>
|
|
1233
|
+
```
|
|
1234
|
+
|
|
1235
|
+
### Upload
|
|
1236
|
+
|
|
1237
|
+
```html
|
|
1238
|
+
<span class="upload-file">
|
|
1239
|
+
<label class="upload">
|
|
1240
|
+
<input type="file">
|
|
1241
|
+
<i class="icon fa fa-paperclip"></i>
|
|
1242
|
+
<span class="ThemeGrid_MarginGutter">Select file</span>
|
|
1243
|
+
</label>
|
|
1244
|
+
</span>
|
|
1245
|
+
```
|
|
1246
|
+
|
|
1247
|
+
---
|
|
1248
|
+
|
|
1249
|
+
## Advanced
|
|
1250
|
+
|
|
1251
|
+
### DropdownServerSide
|
|
1252
|
+
|
|
1253
|
+
Server-side rendered dropdown — no preview available (requires server interaction).
|