create-flowmo 1.0.0
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/README.md +56 -0
- package/index.js +170 -0
- package/package.json +43 -0
- package/skills/outsystems-logic/SKILL.md +316 -0
- package/skills/outsystems-logic/references/builtin-functions.md +144 -0
- package/skills/outsystems-logic/references/libraries.md +169 -0
- package/skills/outsystems-logic/references/system-actions.md +221 -0
- package/skills/outsystems-sql/SKILL.md +272 -0
- package/skills/outsystems-ui/SKILL.md +237 -0
- package/skills/outsystems-ui/assets/layout-template.html +43 -0
- package/skills/outsystems-ui/references/colors.md +236 -0
- package/skills/outsystems-ui/references/patterns-adaptive.md +178 -0
- package/skills/outsystems-ui/references/patterns-content.md +242 -0
- package/skills/outsystems-ui/references/patterns-interaction.md +288 -0
- package/skills/outsystems-ui/references/patterns-navigation.md +180 -0
- package/skills/outsystems-ui/references/patterns-numbers.md +94 -0
- package/skills/outsystems-ui/references/patterns-utilities.md +124 -0
- package/skills/outsystems-ui/references/screen-templates.md +390 -0
- package/skills/outsystems-ui/references/widgets.md +270 -0
- package/template/data/User.md +11 -0
- package/template/logic/GetUser.flowchart.md +7 -0
- package/template/screens/home.visual.html +36 -0
- package/template/theme/outsystems-ui.css +20139 -0
- package/template/theme/theme.css +19 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# OutSystems UI — Color Reference
|
|
2
|
+
|
|
3
|
+
Complete color palette from the OutSystems UI Cheat Sheet. Use `.background-{name}` for background colors and `.text-{name}` for text colors. CSS variables follow the `--color-{name}` pattern.
|
|
4
|
+
|
|
5
|
+
## Brand Colors
|
|
6
|
+
|
|
7
|
+
| Name | Hex | Background Class | Text Class | CSS Variable |
|
|
8
|
+
|------|-----|-----------------|------------|--------------|
|
|
9
|
+
| Primary | #1068EB | `.background-primary` | `.text-primary` | `--color-primary` |
|
|
10
|
+
| Secondary | #303D60 | `.background-secondary` | `.text-secondary` | `--color-secondary` |
|
|
11
|
+
|
|
12
|
+
## Semantic Colors
|
|
13
|
+
|
|
14
|
+
| Name | Background Class | Text Class | CSS Variable |
|
|
15
|
+
|------|-----------------|------------|--------------|
|
|
16
|
+
| Info | `.background-info` | `.text-info` | `--color-info` |
|
|
17
|
+
| Success | `.background-success` | `.text-success` | `--color-success` |
|
|
18
|
+
| Warning | `.background-warning` | `.text-warning` | `--color-warning` |
|
|
19
|
+
| Error | `.background-error` | `.text-error` | `--color-error` |
|
|
20
|
+
|
|
21
|
+
## Extended Palette
|
|
22
|
+
|
|
23
|
+
Each color has shades 0 (lightest) through 9 (darkest). Use CSS variable `--color-{color}-{shade}`.
|
|
24
|
+
|
|
25
|
+
### Red
|
|
26
|
+
|
|
27
|
+
| Shade | CSS Variable | Hex |
|
|
28
|
+
|-------|-------------|-----|
|
|
29
|
+
| 0 | `--color-red-0` | #FFF5F5 |
|
|
30
|
+
| 1 | `--color-red-1` | #FFE3E3 |
|
|
31
|
+
| 2 | `--color-red-2` | #FFC9C9 |
|
|
32
|
+
| 3 | `--color-red-3` | #FFA8A8 |
|
|
33
|
+
| 4 | `--color-red-4` | #FF8787 |
|
|
34
|
+
| 5 | `--color-red-5` | #FF6B6B |
|
|
35
|
+
| 6 | `--color-red-6` | #FA5252 |
|
|
36
|
+
| 7 | `--color-red-7` | #F03E3E |
|
|
37
|
+
| 8 | `--color-red-8` | #E03131 |
|
|
38
|
+
| 9 | `--color-red-9` | #C92A2A |
|
|
39
|
+
|
|
40
|
+
### Orange
|
|
41
|
+
|
|
42
|
+
| Shade | CSS Variable | Hex |
|
|
43
|
+
|-------|-------------|-----|
|
|
44
|
+
| 0 | `--color-orange-0` | #FFF4E6 |
|
|
45
|
+
| 1 | `--color-orange-1` | #FFE8CC |
|
|
46
|
+
| 2 | `--color-orange-2` | #FFD8A8 |
|
|
47
|
+
| 3 | `--color-orange-3` | #FFC078 |
|
|
48
|
+
| 4 | `--color-orange-4` | #FFA94D |
|
|
49
|
+
| 5 | `--color-orange-5` | #FF922B |
|
|
50
|
+
| 6 | `--color-orange-6` | #FD7E14 |
|
|
51
|
+
| 7 | `--color-orange-7` | #F76707 |
|
|
52
|
+
| 8 | `--color-orange-8` | #E8590C |
|
|
53
|
+
| 9 | `--color-orange-9` | #D9480F |
|
|
54
|
+
|
|
55
|
+
### Yellow
|
|
56
|
+
|
|
57
|
+
| Shade | CSS Variable | Hex |
|
|
58
|
+
|-------|-------------|-----|
|
|
59
|
+
| 0 | `--color-yellow-0` | #FFF9DB |
|
|
60
|
+
| 1 | `--color-yellow-1` | #FFF3BF |
|
|
61
|
+
| 2 | `--color-yellow-2` | #FFEC99 |
|
|
62
|
+
| 3 | `--color-yellow-3` | #FFE066 |
|
|
63
|
+
| 4 | `--color-yellow-4` | #FFD43B |
|
|
64
|
+
| 5 | `--color-yellow-5` | #FCC419 |
|
|
65
|
+
| 6 | `--color-yellow-6` | #FAB005 |
|
|
66
|
+
| 7 | `--color-yellow-7` | #F59F00 |
|
|
67
|
+
| 8 | `--color-yellow-8` | #F08C00 |
|
|
68
|
+
| 9 | `--color-yellow-9` | #E67700 |
|
|
69
|
+
|
|
70
|
+
### Lime
|
|
71
|
+
|
|
72
|
+
| Shade | CSS Variable | Hex |
|
|
73
|
+
|-------|-------------|-----|
|
|
74
|
+
| 0 | `--color-lime-0` | #F4FCE3 |
|
|
75
|
+
| 1 | `--color-lime-1` | #E9FAC8 |
|
|
76
|
+
| 2 | `--color-lime-2` | #D8F5A2 |
|
|
77
|
+
| 3 | `--color-lime-3` | #C0EB75 |
|
|
78
|
+
| 4 | `--color-lime-4` | #A9E34B |
|
|
79
|
+
| 5 | `--color-lime-5` | #94D82D |
|
|
80
|
+
| 6 | `--color-lime-6` | #82C91E |
|
|
81
|
+
| 7 | `--color-lime-7` | #74B816 |
|
|
82
|
+
| 8 | `--color-lime-8` | #66A80F |
|
|
83
|
+
| 9 | `--color-lime-9` | #5C940D |
|
|
84
|
+
|
|
85
|
+
### Green
|
|
86
|
+
|
|
87
|
+
| Shade | CSS Variable | Hex |
|
|
88
|
+
|-------|-------------|-----|
|
|
89
|
+
| 0 | `--color-green-0` | #EBFBEE |
|
|
90
|
+
| 1 | `--color-green-1` | #D3F9D8 |
|
|
91
|
+
| 2 | `--color-green-2` | #B2F2BB |
|
|
92
|
+
| 3 | `--color-green-3` | #8CE99A |
|
|
93
|
+
| 4 | `--color-green-4` | #69DB7C |
|
|
94
|
+
| 5 | `--color-green-5` | #51CF66 |
|
|
95
|
+
| 6 | `--color-green-6` | #40C057 |
|
|
96
|
+
| 7 | `--color-green-7` | #37B24D |
|
|
97
|
+
| 8 | `--color-green-8` | #2F9E44 |
|
|
98
|
+
| 9 | `--color-green-9` | #2B8A3E |
|
|
99
|
+
|
|
100
|
+
### Teal
|
|
101
|
+
|
|
102
|
+
| Shade | CSS Variable | Hex |
|
|
103
|
+
|-------|-------------|-----|
|
|
104
|
+
| 0 | `--color-teal-0` | #E6FCF5 |
|
|
105
|
+
| 1 | `--color-teal-1` | #C3FAE8 |
|
|
106
|
+
| 2 | `--color-teal-2` | #96F2D7 |
|
|
107
|
+
| 3 | `--color-teal-3` | #63E6BE |
|
|
108
|
+
| 4 | `--color-teal-4` | #38D9A9 |
|
|
109
|
+
| 5 | `--color-teal-5` | #20C997 |
|
|
110
|
+
| 6 | `--color-teal-6` | #12B886 |
|
|
111
|
+
| 7 | `--color-teal-7` | #0CA678 |
|
|
112
|
+
| 8 | `--color-teal-8` | #099268 |
|
|
113
|
+
| 9 | `--color-teal-9` | #087F5B |
|
|
114
|
+
|
|
115
|
+
### Cyan
|
|
116
|
+
|
|
117
|
+
| Shade | CSS Variable | Hex |
|
|
118
|
+
|-------|-------------|-----|
|
|
119
|
+
| 0 | `--color-cyan-0` | #E3FAFC |
|
|
120
|
+
| 1 | `--color-cyan-1` | #C5F6FA |
|
|
121
|
+
| 2 | `--color-cyan-2` | #99E9F2 |
|
|
122
|
+
| 3 | `--color-cyan-3` | #66D9E8 |
|
|
123
|
+
| 4 | `--color-cyan-4` | #3BC9DB |
|
|
124
|
+
| 5 | `--color-cyan-5` | #22B8CF |
|
|
125
|
+
| 6 | `--color-cyan-6` | #15AABF |
|
|
126
|
+
| 7 | `--color-cyan-7` | #1098AD |
|
|
127
|
+
| 8 | `--color-cyan-8` | #0C8599 |
|
|
128
|
+
| 9 | `--color-cyan-9` | #0B7285 |
|
|
129
|
+
|
|
130
|
+
### Blue
|
|
131
|
+
|
|
132
|
+
| Shade | CSS Variable | Hex |
|
|
133
|
+
|-------|-------------|-----|
|
|
134
|
+
| 0 | `--color-blue-0` | #E7F5FF |
|
|
135
|
+
| 1 | `--color-blue-1` | #D0EBFF |
|
|
136
|
+
| 2 | `--color-blue-2` | #A5D8FF |
|
|
137
|
+
| 3 | `--color-blue-3` | #74C0FC |
|
|
138
|
+
| 4 | `--color-blue-4` | #4DABF7 |
|
|
139
|
+
| 5 | `--color-blue-5` | #339AF0 |
|
|
140
|
+
| 6 | `--color-blue-6` | #228BE6 |
|
|
141
|
+
| 7 | `--color-blue-7` | #1C7ED6 |
|
|
142
|
+
| 8 | `--color-blue-8` | #1971C2 |
|
|
143
|
+
| 9 | `--color-blue-9` | #1864AB |
|
|
144
|
+
|
|
145
|
+
### Indigo
|
|
146
|
+
|
|
147
|
+
| Shade | CSS Variable | Hex |
|
|
148
|
+
|-------|-------------|-----|
|
|
149
|
+
| 0 | `--color-indigo-0` | #EDF2FF |
|
|
150
|
+
| 1 | `--color-indigo-1` | #DBE4FF |
|
|
151
|
+
| 2 | `--color-indigo-2` | #BAC8FF |
|
|
152
|
+
| 3 | `--color-indigo-3` | #91A7FF |
|
|
153
|
+
| 4 | `--color-indigo-4` | #748FFC |
|
|
154
|
+
| 5 | `--color-indigo-5` | #5C7CFA |
|
|
155
|
+
| 6 | `--color-indigo-6` | #4C6EF5 |
|
|
156
|
+
| 7 | `--color-indigo-7` | #4263EB |
|
|
157
|
+
| 8 | `--color-indigo-8` | #3B5BDB |
|
|
158
|
+
| 9 | `--color-indigo-9` | #364FC7 |
|
|
159
|
+
|
|
160
|
+
### Violet
|
|
161
|
+
|
|
162
|
+
| Shade | CSS Variable | Hex |
|
|
163
|
+
|-------|-------------|-----|
|
|
164
|
+
| 0 | `--color-violet-0` | #F3F0FF |
|
|
165
|
+
| 1 | `--color-violet-1` | #E5DBFF |
|
|
166
|
+
| 2 | `--color-violet-2` | #D0BFFF |
|
|
167
|
+
| 3 | `--color-violet-3` | #B197FC |
|
|
168
|
+
| 4 | `--color-violet-4` | #9775FA |
|
|
169
|
+
| 5 | `--color-violet-5` | #845EF7 |
|
|
170
|
+
| 6 | `--color-violet-6` | #7950F2 |
|
|
171
|
+
| 7 | `--color-violet-7` | #7048E8 |
|
|
172
|
+
| 8 | `--color-violet-8` | #6741D9 |
|
|
173
|
+
| 9 | `--color-violet-9` | #5F3DC4 |
|
|
174
|
+
|
|
175
|
+
### Grape
|
|
176
|
+
|
|
177
|
+
| Shade | CSS Variable | Hex |
|
|
178
|
+
|-------|-------------|-----|
|
|
179
|
+
| 0 | `--color-grape-0` | #F8F0FC |
|
|
180
|
+
| 1 | `--color-grape-1` | #F3D9FA |
|
|
181
|
+
| 2 | `--color-grape-2` | #EEBEFA |
|
|
182
|
+
| 3 | `--color-grape-3` | #E599F7 |
|
|
183
|
+
| 4 | `--color-grape-4` | #DA77F2 |
|
|
184
|
+
| 5 | `--color-grape-5` | #CC5DE8 |
|
|
185
|
+
| 6 | `--color-grape-6` | #BE4BDB |
|
|
186
|
+
| 7 | `--color-grape-7` | #AE3EC9 |
|
|
187
|
+
| 8 | `--color-grape-8` | #9C36B5 |
|
|
188
|
+
| 9 | `--color-grape-9` | #862E9C |
|
|
189
|
+
|
|
190
|
+
### Pink
|
|
191
|
+
|
|
192
|
+
| Shade | CSS Variable | Hex |
|
|
193
|
+
|-------|-------------|-----|
|
|
194
|
+
| 0 | `--color-pink-0` | #FFF0F6 |
|
|
195
|
+
| 1 | `--color-pink-1` | #FFDEEB |
|
|
196
|
+
| 2 | `--color-pink-2` | #FCC2D7 |
|
|
197
|
+
| 3 | `--color-pink-3` | #FAA2C1 |
|
|
198
|
+
| 4 | `--color-pink-4` | #F783AC |
|
|
199
|
+
| 5 | `--color-pink-5` | #F06595 |
|
|
200
|
+
| 6 | `--color-pink-6` | #E64980 |
|
|
201
|
+
| 7 | `--color-pink-7` | #D6336C |
|
|
202
|
+
| 8 | `--color-pink-8` | #C2255C |
|
|
203
|
+
| 9 | `--color-pink-9` | #A61E4D |
|
|
204
|
+
|
|
205
|
+
## Neutral Palette
|
|
206
|
+
|
|
207
|
+
Used for text, borders, backgrounds, and shadows.
|
|
208
|
+
|
|
209
|
+
| Shade | CSS Variable | Description |
|
|
210
|
+
|-------|-------------|-------------|
|
|
211
|
+
| 0 | `--color-neutral-0` | White / lightest background |
|
|
212
|
+
| 1 | `--color-neutral-1` | Very light background |
|
|
213
|
+
| 2 | `--color-neutral-2` | Light background / hover |
|
|
214
|
+
| 3 | `--color-neutral-3` | Border light |
|
|
215
|
+
| 4 | `--color-neutral-4` | Border / divider |
|
|
216
|
+
| 5 | `--color-neutral-5` | Placeholder text |
|
|
217
|
+
| 6 | `--color-neutral-6` | Subtle text |
|
|
218
|
+
| 7 | `--color-neutral-7` | Secondary text |
|
|
219
|
+
| 8 | `--color-neutral-8` | Primary text |
|
|
220
|
+
| 9 | `--color-neutral-9` | Heading text |
|
|
221
|
+
| 10 | `--color-neutral-10` | Darkest / near-black |
|
|
222
|
+
|
|
223
|
+
## Global CSS Variables (Colors)
|
|
224
|
+
|
|
225
|
+
These variables are defined at the `:root` level of the OSUI theme:
|
|
226
|
+
|
|
227
|
+
```css
|
|
228
|
+
--color-primary: #1068EB;
|
|
229
|
+
--color-secondary: #303D60;
|
|
230
|
+
--color-background-body: var(--color-neutral-0);
|
|
231
|
+
--color-background-login: var(--color-neutral-1);
|
|
232
|
+
--color-neutral-0: #FFFFFF;
|
|
233
|
+
--color-neutral-10: #1A1A2E;
|
|
234
|
+
--color-focus-outer: #FFD337;
|
|
235
|
+
--color-focus-inner: var(--color-neutral-10);
|
|
236
|
+
```
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# OutSystems UI — Adaptive Patterns (12)
|
|
2
|
+
|
|
3
|
+
Layout and responsive patterns for building multi-column, device-aware, and master-detail screens.
|
|
4
|
+
|
|
5
|
+
## Columns2
|
|
6
|
+
|
|
7
|
+
Two equal-width columns that auto-stack on mobile.
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<div class="columns2">
|
|
11
|
+
<div class="column">{{content-left}}</div>
|
|
12
|
+
<div class="column">{{content-right}}</div>
|
|
13
|
+
</div>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**Mandatory classes**: `.columns2`, `.column`
|
|
17
|
+
|
|
18
|
+
## Columns3
|
|
19
|
+
|
|
20
|
+
```html
|
|
21
|
+
<div class="columns3">
|
|
22
|
+
<div class="column">{{content-1}}</div>
|
|
23
|
+
<div class="column">{{content-2}}</div>
|
|
24
|
+
<div class="column">{{content-3}}</div>
|
|
25
|
+
</div>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Mandatory classes**: `.columns3`, `.column`
|
|
29
|
+
|
|
30
|
+
## Columns4
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<div class="columns4">
|
|
34
|
+
<div class="column">{{content-1}}</div>
|
|
35
|
+
<div class="column">{{content-2}}</div>
|
|
36
|
+
<div class="column">{{content-3}}</div>
|
|
37
|
+
<div class="column">{{content-4}}</div>
|
|
38
|
+
</div>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Mandatory classes**: `.columns4`, `.column`
|
|
42
|
+
|
|
43
|
+
## Columns5
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<div class="columns5">
|
|
47
|
+
<div class="column">{{content-1}}</div>
|
|
48
|
+
<div class="column">{{content-2}}</div>
|
|
49
|
+
<div class="column">{{content-3}}</div>
|
|
50
|
+
<div class="column">{{content-4}}</div>
|
|
51
|
+
<div class="column">{{content-5}}</div>
|
|
52
|
+
</div>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Mandatory classes**: `.columns5`, `.column`
|
|
56
|
+
|
|
57
|
+
## Columns6
|
|
58
|
+
|
|
59
|
+
```html
|
|
60
|
+
<div class="columns6">
|
|
61
|
+
<div class="column">{{content-1}}</div>
|
|
62
|
+
<div class="column">{{content-2}}</div>
|
|
63
|
+
<div class="column">{{content-3}}</div>
|
|
64
|
+
<div class="column">{{content-4}}</div>
|
|
65
|
+
<div class="column">{{content-5}}</div>
|
|
66
|
+
<div class="column">{{content-6}}</div>
|
|
67
|
+
</div>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Mandatory classes**: `.columns6`, `.column`
|
|
71
|
+
|
|
72
|
+
## Columns Medium Left
|
|
73
|
+
|
|
74
|
+
Asymmetric — left column is wider (medium-sized), right is narrow.
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<div class="columns-medium-left">
|
|
78
|
+
<div class="column">{{content-main}}</div>
|
|
79
|
+
<div class="column">{{content-aside}}</div>
|
|
80
|
+
</div>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Mandatory classes**: `.columns-medium-left`, `.column`
|
|
84
|
+
|
|
85
|
+
## Columns Medium Right
|
|
86
|
+
|
|
87
|
+
Asymmetric — left is narrow, right column is wider.
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<div class="columns-medium-right">
|
|
91
|
+
<div class="column">{{content-aside}}</div>
|
|
92
|
+
<div class="column">{{content-main}}</div>
|
|
93
|
+
</div>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Mandatory classes**: `.columns-medium-right`, `.column`
|
|
97
|
+
|
|
98
|
+
## Columns Small Left
|
|
99
|
+
|
|
100
|
+
Left column is narrow sidebar, right column takes remaining space.
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<div class="columns-small-left">
|
|
104
|
+
<div class="column">{{content-sidebar}}</div>
|
|
105
|
+
<div class="column">{{content-main}}</div>
|
|
106
|
+
</div>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Mandatory classes**: `.columns-small-left`, `.column`
|
|
110
|
+
|
|
111
|
+
## Columns Small Right
|
|
112
|
+
|
|
113
|
+
Left column takes most space, right column is narrow.
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<div class="columns-small-right">
|
|
117
|
+
<div class="column">{{content-main}}</div>
|
|
118
|
+
<div class="column">{{content-sidebar}}</div>
|
|
119
|
+
</div>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Mandatory classes**: `.columns-small-right`, `.column`
|
|
123
|
+
|
|
124
|
+
## Display On Device
|
|
125
|
+
|
|
126
|
+
Show or hide content based on device type.
|
|
127
|
+
|
|
128
|
+
```html
|
|
129
|
+
<div class="display-desktop">{{desktop-only-content}}</div>
|
|
130
|
+
<div class="display-tablet">{{tablet-only-content}}</div>
|
|
131
|
+
<div class="display-phone">{{phone-only-content}}</div>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Classes**: `.display-desktop`, `.display-tablet`, `.display-phone`
|
|
135
|
+
|
|
136
|
+
## Gallery
|
|
137
|
+
|
|
138
|
+
Responsive grid with configurable columns per breakpoint.
|
|
139
|
+
|
|
140
|
+
```html
|
|
141
|
+
<div class="gallery" style="
|
|
142
|
+
--grid-desktop: 4;
|
|
143
|
+
--grid-tablet: 2;
|
|
144
|
+
--grid-phone: 1;
|
|
145
|
+
--grid-gap: var(--space-base);
|
|
146
|
+
">
|
|
147
|
+
<div class="gallery-item">{{content-1}}</div>
|
|
148
|
+
<div class="gallery-item">{{content-2}}</div>
|
|
149
|
+
<div class="gallery-item">{{content-3}}</div>
|
|
150
|
+
<div class="gallery-item">{{content-4}}</div>
|
|
151
|
+
</div>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Mandatory classes**: `.gallery`, `.gallery-item`
|
|
155
|
+
**CSS Variables**: `--grid-desktop`, `--grid-tablet`, `--grid-phone`, `--grid-gap`
|
|
156
|
+
|
|
157
|
+
## Master Detail
|
|
158
|
+
|
|
159
|
+
Side-by-side layout for list + detail views. Common for entity list screens.
|
|
160
|
+
|
|
161
|
+
```html
|
|
162
|
+
<div class="master-detail" style="
|
|
163
|
+
--master-detail-height: 600px;
|
|
164
|
+
--left-percentage: 50;
|
|
165
|
+
">
|
|
166
|
+
<div class="master-detail-list">{{list-content}}</div>
|
|
167
|
+
<div class="master-detail-detail">{{detail-content}}</div>
|
|
168
|
+
</div>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Mandatory classes**: `.master-detail`, `.master-detail-list`, `.master-detail-detail`
|
|
172
|
+
**CSS Variables**: `--master-detail-height`, `--left-percentage` (default: 50)
|
|
173
|
+
|
|
174
|
+
## Notes
|
|
175
|
+
|
|
176
|
+
- All column patterns auto-stack on phone breakpoints. Do NOT add custom `@media` queries.
|
|
177
|
+
- Column patterns use flexbox internally. Child `.column` elements stretch to equal height by default.
|
|
178
|
+
- Gallery is CSS Grid-based and the most flexible option for card-heavy layouts.
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# OutSystems UI — Content Patterns (16)
|
|
2
|
+
|
|
3
|
+
Patterns for displaying content: cards, alerts, sections, and informational elements.
|
|
4
|
+
|
|
5
|
+
## Accordion
|
|
6
|
+
|
|
7
|
+
Expandable/collapsible sections. Each item has a title and content area.
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<div class="osui-accordion">
|
|
11
|
+
<div class="osui-accordion__item">
|
|
12
|
+
<div class="osui-accordion__item__header">
|
|
13
|
+
<span class="osui-accordion__item__header__title">{{title}}</span>
|
|
14
|
+
<span class="osui-accordion__item__header__icon"></span>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="osui-accordion__item__content">{{content}}</div>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Mandatory classes**: `.osui-accordion`, `.osui-accordion__item`, `__header`, `__content`
|
|
22
|
+
|
|
23
|
+
## Alert
|
|
24
|
+
|
|
25
|
+
Inline feedback message with semantic color.
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<div class="osui-alert osui-alert--{type}">
|
|
29
|
+
<div class="osui-alert__content">{{message}}</div>
|
|
30
|
+
<div class="osui-alert__close"></div>
|
|
31
|
+
</div>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Types**: Replace `{type}` with `info`, `success`, `warning`, `error`
|
|
35
|
+
**Mandatory classes**: `.osui-alert`, `.osui-alert--{type}`
|
|
36
|
+
|
|
37
|
+
## Blank Slate
|
|
38
|
+
|
|
39
|
+
Empty state placeholder — use when a list or section has no data.
|
|
40
|
+
|
|
41
|
+
```html
|
|
42
|
+
<div class="blank-slate">
|
|
43
|
+
<div class="blank-slate-image">{{icon-or-image}}</div>
|
|
44
|
+
<div class="blank-slate-content">
|
|
45
|
+
<h5>{{title}}</h5>
|
|
46
|
+
<p>{{description}}</p>
|
|
47
|
+
</div>
|
|
48
|
+
<div class="blank-slate-footer">{{action-button}}</div>
|
|
49
|
+
</div>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Mandatory classes**: `.blank-slate`
|
|
53
|
+
|
|
54
|
+
## Card
|
|
55
|
+
|
|
56
|
+
The most common content container. Adds elevation and padding.
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<div class="card">
|
|
60
|
+
<div class="card-header">{{header}}</div>
|
|
61
|
+
<div class="card-content">{{content}}</div>
|
|
62
|
+
<div class="card-footer">{{footer}}</div>
|
|
63
|
+
</div>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Mandatory classes**: `.card`
|
|
67
|
+
**Optional sections**: `.card-header`, `.card-content`, `.card-footer`
|
|
68
|
+
|
|
69
|
+
## Card Background
|
|
70
|
+
|
|
71
|
+
Card with a background image. Content overlays the image.
|
|
72
|
+
|
|
73
|
+
```html
|
|
74
|
+
<div class="card-background" style="background-image: url('{{image-url}}');">
|
|
75
|
+
<div class="card-background-content">
|
|
76
|
+
<h4>{{title}}</h4>
|
|
77
|
+
<p>{{description}}</p>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Mandatory classes**: `.card-background`, `.card-background-content`
|
|
83
|
+
|
|
84
|
+
## Card Item
|
|
85
|
+
|
|
86
|
+
Compact card variant used inside lists. Typically has an image + text side by side.
|
|
87
|
+
|
|
88
|
+
```html
|
|
89
|
+
<div class="card-item">
|
|
90
|
+
<div class="card-item-image">{{image}}</div>
|
|
91
|
+
<div class="card-item-content">
|
|
92
|
+
<div class="card-item-title">{{title}}</div>
|
|
93
|
+
<div class="card-item-description">{{description}}</div>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Mandatory classes**: `.card-item`
|
|
99
|
+
|
|
100
|
+
## Card Sectioned
|
|
101
|
+
|
|
102
|
+
Card divided into distinct sections with dividers.
|
|
103
|
+
|
|
104
|
+
```html
|
|
105
|
+
<div class="card-sectioned">
|
|
106
|
+
<div class="card-sectioned-item">{{section-1}}</div>
|
|
107
|
+
<div class="card-sectioned-item">{{section-2}}</div>
|
|
108
|
+
<div class="card-sectioned-item">{{section-3}}</div>
|
|
109
|
+
</div>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Mandatory classes**: `.card-sectioned`, `.card-sectioned-item`
|
|
113
|
+
|
|
114
|
+
## Chat Message
|
|
115
|
+
|
|
116
|
+
Message bubble for chat-style interfaces.
|
|
117
|
+
|
|
118
|
+
```html
|
|
119
|
+
<div class="chat-message">
|
|
120
|
+
<div class="chat-message-avatar">{{avatar}}</div>
|
|
121
|
+
<div class="chat-message-content">
|
|
122
|
+
<div class="chat-message-header">
|
|
123
|
+
<span class="chat-message-name">{{name}}</span>
|
|
124
|
+
<span class="chat-message-time">{{timestamp}}</span>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="chat-message-text">{{message}}</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Mandatory classes**: `.chat-message`
|
|
132
|
+
**Variants**: Add `.chat-message--right` for outgoing messages.
|
|
133
|
+
|
|
134
|
+
## Flip Content
|
|
135
|
+
|
|
136
|
+
Two-sided content that flips on hover or click.
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<div class="flip-content">
|
|
140
|
+
<div class="flip-content-front">{{front-content}}</div>
|
|
141
|
+
<div class="flip-content-back">{{back-content}}</div>
|
|
142
|
+
</div>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Mandatory classes**: `.flip-content`, `.flip-content-front`, `.flip-content-back`
|
|
146
|
+
|
|
147
|
+
## Floating Content
|
|
148
|
+
|
|
149
|
+
Content that overlays the page in a fixed/floating position.
|
|
150
|
+
|
|
151
|
+
```html
|
|
152
|
+
<div class="floating-content">
|
|
153
|
+
{{content}}
|
|
154
|
+
</div>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Mandatory classes**: `.floating-content`
|
|
158
|
+
|
|
159
|
+
## List Item Content
|
|
160
|
+
|
|
161
|
+
Structured list item with image, text, and optional right action.
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<div class="list-item-content">
|
|
165
|
+
<div class="list-item-content-left">{{image-or-icon}}</div>
|
|
166
|
+
<div class="list-item-content-center">
|
|
167
|
+
<div class="list-item-content-title">{{title}}</div>
|
|
168
|
+
<div class="list-item-content-description">{{description}}</div>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="list-item-content-right">{{action}}</div>
|
|
171
|
+
</div>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Mandatory classes**: `.list-item-content`
|
|
175
|
+
|
|
176
|
+
## Section
|
|
177
|
+
|
|
178
|
+
Groups related content under a heading.
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<div class="section">
|
|
182
|
+
<div class="section-header">
|
|
183
|
+
<h5 class="section-title">{{title}}</h5>
|
|
184
|
+
</div>
|
|
185
|
+
<div class="section-content">{{content}}</div>
|
|
186
|
+
</div>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Mandatory classes**: `.section`
|
|
190
|
+
|
|
191
|
+
## Section Group
|
|
192
|
+
|
|
193
|
+
Container for multiple Sections with consistent spacing.
|
|
194
|
+
|
|
195
|
+
```html
|
|
196
|
+
<div class="section-group">
|
|
197
|
+
<div class="section">{{section-1}}</div>
|
|
198
|
+
<div class="section">{{section-2}}</div>
|
|
199
|
+
</div>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Mandatory classes**: `.section-group`
|
|
203
|
+
|
|
204
|
+
## Tag
|
|
205
|
+
|
|
206
|
+
Small label/badge for categorization.
|
|
207
|
+
|
|
208
|
+
```html
|
|
209
|
+
<span class="tag">{{label}}</span>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Mandatory classes**: `.tag`
|
|
213
|
+
**Color variants**: Combine with `.background-primary`, `.background-success`, etc.
|
|
214
|
+
**Shape**: Add `.border-radius-rounded` for pill shape.
|
|
215
|
+
|
|
216
|
+
## Tooltip
|
|
217
|
+
|
|
218
|
+
Information popup on hover.
|
|
219
|
+
|
|
220
|
+
```html
|
|
221
|
+
<div class="osui-tooltip">
|
|
222
|
+
<div class="osui-tooltip__trigger">{{trigger-element}}</div>
|
|
223
|
+
<div class="osui-tooltip__content">{{tooltip-text}}</div>
|
|
224
|
+
</div>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Mandatory classes**: `.osui-tooltip`
|
|
228
|
+
**Position**: Add `.osui-tooltip--top`, `.osui-tooltip--bottom`, `.osui-tooltip--left`, `.osui-tooltip--right`
|
|
229
|
+
|
|
230
|
+
## User Avatar
|
|
231
|
+
|
|
232
|
+
Circular user image with optional initials fallback.
|
|
233
|
+
|
|
234
|
+
```html
|
|
235
|
+
<div class="user-avatar">
|
|
236
|
+
<img src="{{image-url}}" alt="{{name}}" />
|
|
237
|
+
</div>
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Mandatory classes**: `.user-avatar`
|
|
241
|
+
**Sizes**: `.user-avatar--small`, `.user-avatar--medium` (default), `.user-avatar--large`
|
|
242
|
+
**Fallback**: Use initials text inside the div when no image is available.
|