purgetss 3.0.4 → 3.1.2

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 (38) hide show
  1. package/.editorconfig +1 -1
  2. package/README.md +3 -3
  3. package/assets/fonts/bootstrap-icons.ttf +0 -0
  4. package/assets/fonts/tabler-icons.ttf +0 -0
  5. package/assets/images/blend-modes.png +0 -0
  6. package/assets/images/shadow.png +0 -0
  7. package/bin/purgetss +6 -5
  8. package/dist/bootstrapicons.js +1714 -0
  9. package/dist/bootstrapicons.tss +1692 -0
  10. package/dist/tablericons.js +95 -1
  11. package/dist/tablericons.tss +94 -0
  12. package/dist/tailwind.tss +3242 -411
  13. package/docs/configuring-guide.md +18 -5
  14. package/docs/glossary.md +3 -4
  15. package/docs/new-glossary.md +8313 -0
  16. package/docs/whats-new/v2.5.0.md +6 -6
  17. package/docs/whats-new/v3.0.4.md +7 -6
  18. package/docs/whats-new/v3.0.5.md +136 -0
  19. package/docs/whats-new/v3.1.0.md +614 -0
  20. package/docs/whats-new/v3.1.1.md +262 -0
  21. package/index.js +397 -246
  22. package/lib/build-bootstrap-icons-js.js +64 -0
  23. package/lib/build-bootstrap-icons-tss.js +50 -0
  24. package/lib/build-fonts-folder.js +7 -0
  25. package/lib/build-tailwind.js +78 -16
  26. package/lib/helpers.js +2027 -764
  27. package/lib/templates/bootstrap-icons/bootstrap-icons.css +1705 -0
  28. package/lib/templates/bootstrap-icons/bootstrap-icons.ttf +0 -0
  29. package/lib/templates/bootstrap-icons/reset.tss +6 -0
  30. package/lib/templates/bootstrap-icons/template.js +4 -0
  31. package/lib/templates/bootstrap-icons/template.tss +2 -0
  32. package/lib/templates/custom-template.tss +1 -1
  33. package/lib/templates/tablericons/template.js +1 -1
  34. package/lib/templates/tailwind/custom-template.tss +1 -1
  35. package/lib/templates/tailwind/template.tss +1 -1
  36. package/lib/test-function.js +9 -0
  37. package/package.json +8 -5
  38. package/purgetss.config.js +950 -0
@@ -0,0 +1,614 @@
1
+ # What's new in v3.1.0
2
+ - [What's new in v3.1.0](#whats-new-in-v310)
3
+ - [New Border Radius Classes](#new-border-radius-classes)
4
+ - [Rounding sides](#rounding-sides)
5
+ - [Rounding each corner separately](#rounding-each-corner-separately)
6
+ - [Refactored Tint Color](#refactored-tint-color)
7
+ - [Window](#window)
8
+ - [Auto Adjust Scroll View Insets](#auto-adjust-scroll-view-insets)
9
+ - [Extend Edges](#extend-edges)
10
+ - [Status Bar Style](#status-bar-style)
11
+ - [Hides Back Button](#hides-back-button)
12
+ - [Hides Bars On Swipe](#hides-bars-on-swipe)
13
+ - [Hides Bars On Tap](#hides-bars-on-tap)
14
+ - [Include Opaque Bars](#include-opaque-bars)
15
+ - [Large Title Enabled](#large-title-enabled)
16
+ - [Large Title Display Mode](#large-title-display-mode)
17
+ - [Nav Bar Hidden](#nav-bar-hidden)
18
+ - [Orientation Modes](#orientation-modes)
19
+ - [Tab Bar Hidden](#tab-bar-hidden)
20
+ - [Ti.UI.Picker](#tiuipicker)
21
+ - [The `type` of picker displayed](#the-type-of-picker-displayed)
22
+ - [`useSpinner` multicolumn spinner or single column drop-down picker.](#usespinner-multicolumn-spinner-or-single-column-drop-down-picker)
23
+ - [Auto Link](#auto-link)
24
+ - [Border Style](#border-style)
25
+ - [Bubble Parent](#bubble-parent)
26
+ - [Fullscreen](#fullscreen)
27
+ - [TabGroups](#tabgroups)
28
+ - [Shift Mode](#shift-mode)
29
+ - [Style](#style)
30
+ - [Padding](#padding)
31
+ - [Tab](#tab)
32
+ - [Icon Is Mask](#icon-is-mask)
33
+ - [Active Icon Is Mask](#active-icon-is-mask)
34
+ - [Keep Sections In Search](#keep-sections-in-search)
35
+ - [Keyboard](#keyboard)
36
+ - [keyboardAppearance](#keyboardappearance)
37
+ - [keyboardDismissMode](#keyboarddismissmode)
38
+ - [keyboardType](#keyboardtype)
39
+ - [loginKeyboardType](#loginkeyboardtype)
40
+ - [Masked Image View Blend Modes](#masked-image-view-blend-modes)
41
+ - [Blend Mode](#blend-mode)
42
+ - [Ti.Media](#timedia)
43
+ - [Video Player](#video-player)
44
+ - [Video Repeat Mode](#video-repeat-mode)
45
+ - [Music Player](#music-player)
46
+ - [Repeat Mode](#repeat-mode)
47
+ - [Shuffle Mode](#shuffle-mode)
48
+ - [Show As Action](#show-as-action)
49
+ - [Translucent](#translucent)
50
+
51
+ ## New Border Radius Classes
52
+
53
+ ### Rounding sides
54
+ Use `rounded-{t|r|b|l}-{size}` to only round one side of an element.
55
+
56
+ ```css
57
+ // Component(s): Ti.UI.Android.CardView, Ti.UI.View
58
+ // Property(ies): borderRadius ( with Extra Styles )
59
+ // Top Corners
60
+ '.rounded-t-1': { borderRadius: [2, 2, 0, 0] }
61
+ '.rounded-t-2': { borderRadius: [4, 4, 0, 0] }
62
+ '.rounded-t-3': { borderRadius: [6, 6, 0, 0] }
63
+ // ...
64
+ '.rounded-t-72': { borderRadius: [144, 144, 0, 0] }
65
+ '.rounded-t-80': { borderRadius: [160, 160, 0, 0] }
66
+ '.rounded-t-96': { borderRadius: [192, 192, 0, 0] }
67
+
68
+ // Right Corners
69
+ '.rounded-r-1': { borderRadius: [0, 2, 2, 0] }
70
+ '.rounded-r-2': { borderRadius: [0, 4, 4, 0] }
71
+ '.rounded-r-3': { borderRadius: [0, 6, 6, 0] }
72
+ // ...
73
+ '.rounded-r-72': { borderRadius: [0, 144, 144, 0] }
74
+ '.rounded-r-80': { borderRadius: [0, 160, 160, 0] }
75
+ '.rounded-r-96': { borderRadius: [0, 192, 192, 0] }
76
+
77
+ // Bottom Corners
78
+ '.rounded-b-1': { borderRadius: [0, 0, 2, 2] }
79
+ '.rounded-b-2': { borderRadius: [0, 0, 4, 4] }
80
+ '.rounded-b-3': { borderRadius: [0, 0, 6, 6] }
81
+ // ...
82
+ '.rounded-b-72': { borderRadius: [0, 0, 144, 144] }
83
+ '.rounded-b-80': { borderRadius: [0, 0, 160, 160] }
84
+ '.rounded-b-96': { borderRadius: [0, 0, 192, 192] }
85
+
86
+ // Left Corners
87
+ '.rounded-l-1': { borderRadius: [2, 0, 0, 2] }
88
+ '.rounded-l-2': { borderRadius: [4, 0, 0, 4] }
89
+ '.rounded-l-3': { borderRadius: [6, 0, 0, 6] }
90
+ // ...
91
+ '.rounded-l-72': { borderRadius: [144, 0, 0, 144] }
92
+ '.rounded-l-80': { borderRadius: [160, 0, 0, 160] }
93
+ '.rounded-l-96': { borderRadius: [192, 0, 0, 192] }
94
+ ```
95
+
96
+ ### Rounding each corner separately
97
+ Use `rounded-{tl|tr|br|bl}-{size}` to only round one corner an element.
98
+
99
+ ```css
100
+ // Component(s): Ti.UI.Android.CardView, Ti.UI.View
101
+ // Property(ies): borderRadius ( with Extra Styles )
102
+ // Top Left Corner
103
+ '.rounded-tl-1': { borderRadius: [2, 0, 0, 0] }
104
+ '.rounded-tl-2': { borderRadius: [4, 0, 0, 0] }
105
+ '.rounded-tl-3': { borderRadius: [6, 0, 0, 0] }
106
+ // ...
107
+ '.rounded-tl-72': { borderRadius: [144, 0, 0, 0] }
108
+ '.rounded-tl-80': { borderRadius: [160, 0, 0, 0] }
109
+ '.rounded-tl-96': { borderRadius: [192, 0, 0, 0] }
110
+
111
+ // Top Right Corner
112
+ '.rounded-tr-1': { borderRadius: [0, 2, 0, 0] }
113
+ '.rounded-tr-2': { borderRadius: [0, 4, 0, 0] }
114
+ '.rounded-tr-3': { borderRadius: [0, 6, 0, 0] }
115
+ // ...
116
+ '.rounded-tr-72': { borderRadius: [0, 144, 0, 0] }
117
+ '.rounded-tr-80': { borderRadius: [0, 160, 0, 0] }
118
+ '.rounded-tr-96': { borderRadius: [0, 192, 0, 0] }
119
+
120
+ // Bottom Right Corner
121
+ '.rounded-br-1': { borderRadius: [0, 0, 2, 0] }
122
+ '.rounded-br-2': { borderRadius: [0, 0, 4, 0] }
123
+ '.rounded-br-3': { borderRadius: [0, 0, 6, 0] }
124
+ // ...
125
+ '.rounded-br-72': { borderRadius: [0, 0, 144, 0] }
126
+ '.rounded-br-80': { borderRadius: [0, 0, 160, 0] }
127
+ '.rounded-br-96': { borderRadius: [0, 0, 192, 0] }
128
+
129
+ // Bottom Left Corner
130
+ '.rounded-bl-1': { borderRadius: [0, 0, 0, 2] }
131
+ '.rounded-bl-2': { borderRadius: [0, 0, 0, 4] }
132
+ '.rounded-bl-3': { borderRadius: [0, 0, 0, 6] }
133
+ // ...
134
+ '.rounded-bl-72': { borderRadius: [0, 0, 0, 144] }
135
+ '.rounded-bl-80': { borderRadius: [0, 0, 0, 160] }
136
+ '.rounded-bl-96': { borderRadius: [0, 0, 0, 192] }
137
+ ```
138
+
139
+ ## Refactored Tint Color
140
+ Refactored `tint-color` classes to include `tint` property for the `MaskedImage` view.
141
+
142
+ *Hopefully this won't break anything!!*
143
+
144
+ ```css
145
+ // Component(s): Ti.UI, Ti.UI.AlertDialog, Ti.UI.Button, Ti.UI.ImageView, Ti.UI.iOS.Stepper, Ti.UI.ProgressBar, Ti.UI.RefreshControll, Ti.UI.Slider, Ti.UI.Switch, and `tint` for Ti.UI.MaskedImage
146
+ // Property(ies): tint and tintColor
147
+ '.tint-transparent': { tint: 'transparent', tintColor: 'transparent' }
148
+ '.tint-black': { tint: '#000000', tintColor: '#000000' }
149
+ '.tint-white': { tint: '#ffffff', tintColor: '#ffffff' }
150
+ '.tint-slate-50': { tint: '#f8fafc', tintColor: '#f8fafc' }
151
+ '.tint-slate-100': { tint: '#f1f5f9', tintColor: '#f1f5f9' }
152
+ // ...
153
+ ```
154
+
155
+ ## Window
156
+ New classes for the `Ti.UI.Window` container: `autoAdjustScrollViewInsets`, `extendEdges`, `statusBarStyle`, `hidesBackButton`, `hidesBarsOnSwipe`, `hidesBarsOnTap`, `includeOpaqueBars`, `largeTitleEnabled`, `largeTitleDisplayMode`, `navBarHidden`, `orientationModes` and `tabBarHidden`.
157
+
158
+ ### Auto Adjust Scroll View Insets
159
+ ```css
160
+ // Component(s): Ti.UI.Window
161
+ // Property(ies): autoAdjustScrollViewInsets - iOS Only
162
+ '.auto-adjust-scroll-view-inset[platform=ios]': { autoAdjustScrollViewInsets: true }
163
+ ```
164
+
165
+ ### Extend Edges
166
+ ```css
167
+ // Component(s): Ti.UI.Window
168
+ // Property(ies): extendEdges - iOS Only
169
+ '.extend-edges-all[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_ALL ] }
170
+ '.extend-edges-bottom[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_BOTTOM ] }
171
+ '.extend-edges-left[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_LEFT ] }
172
+ '.extend-edges-none[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_NONE ] }
173
+ '.extend-edges-right[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_RIGHT ] }
174
+ '.extend-edges-top[platform=ios]': { extendEdges: [ Ti.UI.EXTEND_EDGE_TOP ] }
175
+ ```
176
+
177
+ ### Status Bar Style
178
+ ```css
179
+ // Component(s): Ti.UI.Window
180
+ // Property(ies): statusBarStyle - iOS Only
181
+ '.status-bar[platform=ios]': { statusBarStyle: Ti.UI.iOS.StatusBar.DEFAULT }
182
+ '.status-bar-dark[platform=ios]': { statusBarStyle: Ti.UI.iOS.StatusBar.DARK_CONTENT }
183
+ '.status-bar-light[platform=ios]': { statusBarStyle: Ti.UI.iOS.StatusBar.LIGHT_CONTENT }
184
+ ```
185
+
186
+ ### Hides Back Button
187
+ ```css
188
+ // Component(s): Ti.UI.Window
189
+ // Property(ies): hidesBackButton
190
+ '.hides-back-button': { hidesBackButton: true }
191
+ ```
192
+
193
+ ### Hides Bars On Swipe
194
+ ```css
195
+ // Component(s): Ti.UI.Window
196
+ // Property(ies): hidesBarsOnSwipe - iOS Only
197
+ '.hides-bars-on-swipe[platform=ios]': { hidesBarsOnSwipe: true }
198
+ ```
199
+
200
+ ### Hides Bars On Tap
201
+ ```css
202
+ // Component(s): Ti.UI.Window
203
+ // Property(ies): hidesBarsOnTap - iOS Only
204
+ '.hides-bars-on-tap[platform=ios]': { hidesBarsOnTap: true }
205
+ ```
206
+
207
+ ### Include Opaque Bars
208
+ ```css
209
+ // Component(s): Ti.UI.Window
210
+ // Property(ies): includeOpaqueBars - iOS Only
211
+ '.include-opaque-bars[platform=ios]': { includeOpaqueBars: true }
212
+ ```
213
+
214
+ ### Large Title Enabled
215
+ ```css
216
+ // Component(s): Ti.UI.Window
217
+ // Property(ies): largeTitleEnabled - iOS Only
218
+ '.large-title-enabled[platform=ios]': { largeTitleEnabled: true }
219
+ ```
220
+
221
+ ### Large Title Display Mode
222
+ ```css
223
+ // Component(s): Ti.UI.Window
224
+ // Property(ies): largeTitleDisplayMode - iOS Only
225
+ '.large-title-display-always[platform=ios]': { largeTitleDisplayMode: Ti.UI.iOS.LARGE_TITLE_DISPLAY_MODE_ALWAYS }
226
+ '.large-title-display-automatic[platform=ios]': { largeTitleDisplayMode: Ti.UI.iOS.LARGE_TITLE_DISPLAY_MODE_AUTOMATIC }
227
+ '.large-title-display-never[platform=ios]': { largeTitleDisplayMode: Ti.UI.iOS.LARGE_TITLE_DISPLAY_MODE_NEVER }
228
+ ```
229
+
230
+ ### Nav Bar Hidden
231
+ ```css
232
+ // Component(s): Ti.UI.Window
233
+ // Property(ies): navBarHidden
234
+ '.nav-bar-hidden': { navBarHidden: true }
235
+ '.nav-bar-visible': { navBarHidden: false }
236
+ ```
237
+
238
+ ### Orientation Modes
239
+ ```css
240
+ // Component(s): Ti.UI.Window
241
+ // Property(ies): orientationModes
242
+ '.orientation-left': { orientationModes: [ Ti.UI.LANDSCAPE_LEFT ] }
243
+ '.orientation-right': { orientationModes: [ Ti.UI.LANDSCAPE_RIGHT ] }
244
+ '.orientation-portrait': { orientationModes: [ Ti.UI.PORTRAIT ] }
245
+ '.orientation-upside-portrait': { orientationModes: [ Ti.UI.UPSIDE_PORTRAIT ] }
246
+ '.orientation-landscape': { orientationModes: [ Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT ] }
247
+
248
+ // Component(s): Ti.UI.Window
249
+ // Property(ies): orientationModes (Alternative)
250
+ '.portrait': { orientationModes: [ Ti.UI.PORTRAIT ] }
251
+ '.upside-portrait': { orientationModes: [ Ti.UI.UPSIDE_PORTRAIT ] }
252
+ '.landscape-left': { orientationModes: [ Ti.UI.LANDSCAPE_LEFT ] }
253
+ '.landscape-right': { orientationModes: [ Ti.UI.LANDSCAPE_RIGHT ] }
254
+ '.landscape': { orientationModes: [ Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT ] }
255
+ ```
256
+
257
+ ### Tab Bar Hidden
258
+ ```css
259
+ // Component(s): Ti.UI.Window
260
+ // Property(ies): tabBarHidden - iOS Only
261
+ '.tab-bar-hidden[platform=ios]': { tabBarHidden: true }
262
+ ```
263
+
264
+ ## Ti.UI.Picker
265
+
266
+ ### The `type` of picker displayed
267
+ ```css
268
+ // Component(s): Ti.UI.Picker
269
+ // Property(ies): type (Picker Type)
270
+ '.picker-type-count-down-timer': { type: Ti.UI.PICKER_TYPE_COUNT_DOWN_TIMER }
271
+ '.picker-type-date': { type: Ti.UI.PICKER_TYPE_DATE }
272
+ '.picker-type-date-and-time': { type: Ti.UI.PICKER_TYPE_DATE_AND_TIME }
273
+ '.picker-type-plain': { type: Ti.UI.PICKER_TYPE_PLAIN }
274
+ '.picker-type-time': { type: Ti.UI.PICKER_TYPE_TIME }
275
+ ```
276
+
277
+ ### `useSpinner` multicolumn spinner or single column drop-down picker.
278
+ ```css
279
+ // Component(s): Ti.UI.Picker
280
+ // Property(ies): useSpinner
281
+ '.use-spinner': { useSpinner: true }
282
+ '.dont-use-spinner': { useSpinner: false }
283
+ ```
284
+
285
+ ## Auto Link
286
+ ```css
287
+ // Component(s): Ti.UI.Label, Ti.UI.TextArea, Ti.UI.TextField
288
+ // Property(ies): autoLink
289
+ '.auto-link-all': { autoLink: Ti.UI.AUTOLINK_ALL }
290
+ '.auto-link-email-addresses': { autoLink: Ti.UI.AUTOLINK_EMAIL_ADDRESSES }
291
+ '.auto-link-map-addresses': { autoLink: Ti.UI.AUTOLINK_MAP_ADDRESSES }
292
+ '.auto-link-none': { autoLink: Ti.UI.AUTOLINK_NONE }
293
+ '.auto-link-phone-numbers': { autoLink: Ti.UI.AUTOLINK_PHONE_NUMBERS }
294
+ '.auto-link-urls': { autoLink: Ti.UI.AUTOLINK_URLS }
295
+ '.auto-link-calendar[platform=ios]': { autoLink: Ti.UI.AUTOLINK_CALENDAR }
296
+ ```
297
+
298
+ ## Border Style
299
+ ```css
300
+ // Component(s): Ti.UI.Picker[android], Ti.UI.TextArea, Ti.UI.TextField
301
+ // Property(ies): borderStyle
302
+ '.border-style-bezel': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_BEZEL }
303
+ '.border-style-filled': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_FILLED }
304
+ '.border-style-line': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_LINE }
305
+ '.border-style-none': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_NONE }
306
+ '.border-style-rounded': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED }
307
+ '.border-style-underlined': { borderStyle: Ti.UI.INPUT_BORDERSTYLE_UNDERLINED }
308
+ ```
309
+
310
+ ## Bubble Parent
311
+ ```css
312
+ // Component(s): Ti.Proxy
313
+ // Property(ies): bubbleParent
314
+ '.bubble-parent': { bubbleParent: true }
315
+ '.dont-bubble-parent': { bubbleParent: false }
316
+ ```
317
+
318
+ ## Fullscreen
319
+ ```css
320
+ // Component(s): Ti.Media.VideoPlayer[android], Ti.UI.TextArea, Ti.UI.TextField, Ti.UI.Window
321
+ // Property(ies): fullscreen
322
+ '.fullscreen': { fullscreen: true }
323
+ '.fullscreen-disabled': { fullscreen: false }
324
+ ```
325
+
326
+ ## TabGroups
327
+ Added more utility classes for styling the `TabGroup` Object.
328
+
329
+ ### Shift Mode
330
+ ```css
331
+ // Component(s): Ti.UI.TabGroup
332
+ // Property(ies): shiftMode - Android Only
333
+ '.shift-mode[platform=android]': { shiftMode: true }
334
+ '.shift-mode-disabled[platform=android]': { shiftMode: false }
335
+ ```
336
+
337
+ ### Style
338
+ Property defining which style for the TabGroup to be used.
339
+
340
+ ```css
341
+ // Component(s): Ti.UI.TabGroup
342
+ // Property(ies): style - Android Only
343
+ '.tabs-style[platform=android]': { style: Ti.UI.Android.TABS_STYLE_DEFAULT }
344
+ '.tabs-style-bottom[platform=android]': { style: Ti.UI.Android.TABS_STYLE_BOTTOM_NAVIGATION }
345
+ ```
346
+
347
+ ### Padding
348
+ For padding of bottom navigation in TabGroups and for CardViews container in Android.
349
+
350
+ When using TABS_STYLE_BOTTOM_NAVIGATION you can set the padding to have a floating bottom navigation
351
+
352
+ ```css
353
+ // Component(s): Ti.UI.Android.CardView, Ti.UI.TabGroup
354
+ // Property(ies): padding, paddingTop, paddingLeft, paddingRight, paddingBottom
355
+ '.padding-0': { padding: 0 }
356
+ '.padding-1': { padding: 4 }
357
+ '.padding-2': { padding: 8 }
358
+ '.padding-3': { padding: 12 }
359
+ '.padding-4': { padding: 16 }
360
+ // ...
361
+ // Padding Horizontally
362
+ '.padding-x-0': { paddingLeft: 0, paddingRight: 0 }
363
+ '.padding-x-1': { paddingLeft: 4, paddingRight: 4 }
364
+ '.padding-x-2': { paddingLeft: 8, paddingRight: 8 }
365
+ '.padding-x-3': { paddingLeft: 12, paddingRight: 12 }
366
+ '.padding-x-4': { paddingLeft: 16, paddingRight: 16 }
367
+ // ...
368
+ // Padding Vertically
369
+ '.padding-y-0': { paddingTop: 0, paddingBottom: 0 }
370
+ '.padding-y-1': { paddingTop: 4, paddingBottom: 4 }
371
+ '.padding-y-2': { paddingTop: 8, paddingBottom: 8 }
372
+ '.padding-y-3': { paddingTop: 12, paddingBottom: 12 }
373
+ '.padding-y-4': { paddingTop: 16, paddingBottom: 16 }
374
+ // ...
375
+ // Padding Top
376
+ '.padding-t-0': { paddingTop: 0 }
377
+ '.padding-t-1': { paddingTop: 4 }
378
+ '.padding-t-2': { paddingTop: 8 }
379
+ '.padding-t-3': { paddingTop: 12 }
380
+ '.padding-t-4': { paddingTop: 16 }
381
+ // ...
382
+ // Padding Left
383
+ '.padding-l-0': { paddingLeft: 0 }
384
+ '.padding-l-1': { paddingLeft: 4 }
385
+ '.padding-l-2': { paddingLeft: 8 }
386
+ '.padding-l-3': { paddingLeft: 12 }
387
+ '.padding-l-4': { paddingLeft: 16 }
388
+ // ...
389
+ // Padding Right
390
+ '.padding-r-0': { paddingRight: 0 }
391
+ '.padding-r-1': { paddingRight: 4 }
392
+ '.padding-r-2': { paddingRight: 8 }
393
+ '.padding-r-3': { paddingRight: 12 }
394
+ '.padding-r-4': { paddingRight: 16 }
395
+ // ...
396
+ // Padding Bottom
397
+ '.padding-b-0': { paddingBottom: 0 }
398
+ '.padding-b-1': { paddingBottom: 4 }
399
+ '.padding-b-2': { paddingBottom: 8 }
400
+ '.padding-b-3': { paddingBottom: 12 }
401
+ '.padding-b-4': { paddingBottom: 16 }
402
+ // ...
403
+ ```
404
+
405
+ ## Tab
406
+ `iconIsMask` and `activeIconsIsMask` properties.
407
+
408
+ ### Icon Is Mask
409
+ ```css
410
+ // Component(s): Ti.UI.Tab
411
+ // Property(ies): iconIsMask - iOS Only
412
+ '.icon-is-mask[platform=ios]': { iconIsMask: true }
413
+ '.icon-is-not-mask[platform=ios]': { iconIsMask: false }
414
+ ```
415
+
416
+ ### Active Icon Is Mask
417
+ ```css
418
+ // Component(s): Ti.UI.Tab
419
+ // Property(ies): activeIconIsMask - iOS Only
420
+ '.active-icon-is-mask[platform=ios]': { activeIconIsMask: true }
421
+ '.active-icon-is-not-mask[platform=ios]': { activeIconIsMask: false }
422
+ ```
423
+
424
+ ## Keep Sections In Search
425
+ ```css
426
+ // Component(s): Ti.UI.ListView
427
+ // Property(ies): keepSectionsInSearch - iOS Only
428
+ '.keep-sections-in-search[platform=ios]': { keepSectionsInSearch: true }
429
+ '.dont-keep-sections-in-search[platform=ios]': { keepSectionsInSearch: false }
430
+ ```
431
+
432
+ ## Keyboard
433
+ Added keyboard classes for these properties: `keyboardAppearance`, `keyboardDismissMode`, `keyboardType` and `loginKeyboardType`.
434
+
435
+ ### keyboardAppearance
436
+ ```css
437
+ // Component(s): Ti.UI.AlertDialog, Ti.UI.SearchBar, Ti.UI.TextArea, Ti.UI.TextField
438
+ // Property(ies): keyboardAppearance - iOS Only
439
+ '.keyboard-appearance[platform=ios]': { keyboardAppearance: Ti.UI.KEYBOARD_APPEARANCE_DEFAULT }
440
+ '.keyboard-appearance-dark[platform=ios]': { keyboardAppearance: Ti.UI.KEYBOARD_APPEARANCE_DARK }
441
+ '.keyboard-appearance-light[platform=ios]': { keyboardAppearance: Ti.UI.KEYBOARD_APPEARANCE_LIGHT }
442
+ ```
443
+
444
+ ### keyboardDismissMode
445
+ ```css
446
+ // Component(s): Ti.UI.AlertDialog, Ti.UI.SearchBar, Ti.UI.TextArea, Ti.UI.TextField
447
+ // Property(ies): keyboardDismissMode - iOS Only
448
+ '.keyboard-dismiss-interactive[platform=ios]': { keyboardDismissMode: Ti.UI.iOS.KEYBOARD_DISMISS_MODE_INTERACTIVE }
449
+ '.keyboard-dismiss-none[platform=ios]': { keyboardDismissMode: Ti.UI.iOS.KEYBOARD_DISMISS_MODE_NONE }
450
+ '.keyboard-dismiss-on-drag[platform=ios]': { keyboardDismissMode: Ti.UI.iOS.KEYBOARD_DISMISS_MODE_ON_DRAG }
451
+ ```
452
+
453
+ ### keyboardType
454
+ ```css
455
+ // Component(s): Ti.UI.AlertDialog, Ti.UI.SearchBar, Ti.UI.TextArea, Ti.UI.TextField
456
+ // Property(ies): keyboardType
457
+ '.keyboard-type': { keyboardType: Ti.UI.KEYBOARD_TYPE_DEFAULT }
458
+ '.keyboard-type-ascii': { keyboardType: Ti.UI.KEYBOARD_TYPE_ASCII }
459
+ '.keyboard-type-decimal-pad': { keyboardType: Ti.UI.KEYBOARD_TYPE_DECIMAL_PAD }
460
+ '.keyboard-type-email': { keyboardType: Ti.UI.KEYBOARD_TYPE_EMAIL }
461
+ '.keyboard-type-namephone-pad': { keyboardType: Ti.UI.KEYBOARD_TYPE_NAMEPHONE_PAD }
462
+ '.keyboard-type-number-pad': { keyboardType: Ti.UI.KEYBOARD_TYPE_NUMBER_PAD }
463
+ '.keyboard-type-numbers-punctuation': { keyboardType: Ti.UI.KEYBOARD_TYPE_NUMBERS_PUNCTUATION }
464
+ '.keyboard-type-phone-pad': { keyboardType: Ti.UI.KEYBOARD_TYPE_PHONE_PAD }
465
+ '.keyboard-type-url': { keyboardType: Ti.UI.KEYBOARD_TYPE_URL }
466
+ '.keyboard-type-appearance[platform=ios]': { keyboardType: Ti.UI.KEYBOARD_APPEARANCE_DEFAULT }
467
+ '.keyboard-type-appearance-dark[platform=ios]': { keyboardType: Ti.UI.KEYBOARD_APPEARANCE_DARK }
468
+ '.keyboard-type-appearance-light[platform=ios]': { keyboardType: Ti.UI.KEYBOARD_APPEARANCE_LIGHT }
469
+ '.keyboard-type-twitter[platform=ios]': { keyboardType: Ti.UI.KEYBOARD_TYPE_TWITTER }
470
+ '.keyboard-type-websearch[platform=ios]': { keyboardType: Ti.UI.KEYBOARD_TYPE_WEBSEARCH }
471
+ ```
472
+
473
+ ### loginKeyboardType
474
+ ```css
475
+ // Component(s): Ti.UI.AlertDialog
476
+ // Property(ies): loginKeyboardType
477
+ '.login-keyboard': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_DEFAULT }
478
+ '.login-keyboard-appearance': { loginKeyboardType: Ti.UI.KEYBOARD_APPEARANCE_DEFAULT }
479
+ '.login-keyboard-appearance-dark': { loginKeyboardType: Ti.UI.KEYBOARD_APPEARANCE_DARK }
480
+ '.login-keyboard-appearance-light': { loginKeyboardType: Ti.UI.KEYBOARD_APPEARANCE_LIGHT }
481
+ '.login-keyboard-ascii': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_ASCII }
482
+ '.login-keyboard-decimal-pad': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_DECIMAL_PAD }
483
+ '.login-keyboard-email': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_EMAIL }
484
+ '.login-keyboard-namephone-pad': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_NAMEPHONE_PAD }
485
+ '.login-keyboard-number-pad': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_NUMBER_PAD }
486
+ '.login-keyboard-numbers-punctuation': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_NUMBERS_PUNCTUATION }
487
+ '.login-keyboard-phone-pad': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_PHONE_PAD }
488
+ '.login-keyboard-twitter': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_TWITTER }
489
+ '.login-keyboard-url': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_URL }
490
+ '.login-keyboard-websearch': { loginKeyboardType: Ti.UI.KEYBOARD_TYPE_WEBSEARCH }
491
+ ```
492
+
493
+ ## Masked Image View Blend Modes
494
+ A control that displays an image composited with a background image or color.
495
+
496
+ ```xml
497
+ <Alloy>
498
+ <Window class="landscape">
499
+ <View class="horizontal">
500
+ <MaskedImage class="w-1/4 bg-blend-lighten tint-purple-500" mask="images/building.jpeg" />
501
+
502
+ <MaskedImage class="w-1/4 bg-blend-overlay tint-purple-500" mask="images/building.jpeg" />
503
+
504
+ <MaskedImage class="w-1/4 bg-blend-screen tint-purple-500" mask="images/building.jpeg" />
505
+
506
+ <MaskedImage class="w-1/4 bg-blend-multiply tint-purple-500" mask="images/building.jpeg" />
507
+ </View>
508
+ </Window>
509
+ </Alloy>
510
+ ```
511
+
512
+ ```css
513
+ // Main styles
514
+ '.bg-blend-lighten': { mode: Ti.UI.BLEND_MODE_LIGHTEN }
515
+ '.bg-blend-multiply': { mode: Ti.UI.BLEND_MODE_MULTIPLY }
516
+ '.bg-blend-overlay': { mode: Ti.UI.BLEND_MODE_OVERLAY }
517
+ '.bg-blend-screen': { mode: Ti.UI.BLEND_MODE_SCREEN }
518
+ '.horizontal': { layout: 'horizontal' }
519
+ '.landscape': { orientationModes: [ Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT ] }
520
+ '.tint-purple-500': { tint: '#a855f7', tintColor: '#a855f7' }
521
+ '.w-1/4': { width: '25%' }
522
+ 'View': { width: Ti.UI.SIZE, height: Ti.UI.SIZE }
523
+ 'Window': { backgroundColor: '#ffffff' }
524
+ ```
525
+
526
+ <img src="../../assets/images/blend-modes.png" alt="Blend Modes">
527
+
528
+ ### Blend Mode
529
+ ```css
530
+ // Component(s): Ti.UI.MaskedImage
531
+ // Property(ies): mode ( Background Blend Mode )
532
+ '.bg-blend-clear': { mode: Ti.UI.BLEND_MODE_CLEAR }
533
+ '.bg-blend-copy': { mode: Ti.UI.BLEND_MODE_COPY }
534
+ '.bg-blend-darken': { mode: Ti.UI.BLEND_MODE_DARKEN }
535
+ '.bg-blend-destination-atop': { mode: Ti.UI.BLEND_MODE_DESTINATION_ATOP }
536
+ '.bg-blend-destination-in': { mode: Ti.UI.BLEND_MODE_DESTINATION_IN }
537
+ '.bg-blend-destination-out': { mode: Ti.UI.BLEND_MODE_DESTINATION_OUT }
538
+ '.bg-blend-destination-over': { mode: Ti.UI.BLEND_MODE_DESTINATION_OVER }
539
+ '.bg-blend-lighten': { mode: Ti.UI.BLEND_MODE_LIGHTEN }
540
+ '.bg-blend-multiply': { mode: Ti.UI.BLEND_MODE_MULTIPLY }
541
+ '.bg-blend-normal': { mode: Ti.UI.BLEND_MODE_NORMAL }
542
+ '.bg-blend-overlay': { mode: Ti.UI.BLEND_MODE_OVERLAY }
543
+ '.bg-blend-plus-lighter': { mode: Ti.UI.BLEND_MODE_PLUS_LIGHTER }
544
+ '.bg-blend-screen': { mode: Ti.UI.BLEND_MODE_SCREEN }
545
+ '.bg-blend-source-atop': { mode: Ti.UI.BLEND_MODE_SOURCE_ATOP }
546
+ '.bg-blend-source-in': { mode: Ti.UI.BLEND_MODE_SOURCE_IN }
547
+ '.bg-blend-source-out': { mode: Ti.UI.BLEND_MODE_SOURCE_OUT }
548
+ '.bg-blend-xor': { mode: Ti.UI.BLEND_MODE_XOR }
549
+ '.bg-blend-color[platform=ios]': { mode: Ti.UI.BLEND_MODE_COLOR }
550
+ '.bg-blend-color-burn[platform=ios]': { mode: Ti.UI.BLEND_MODE_COLOR_BURN }
551
+ '.bg-blend-color-dodge[platform=ios]': { mode: Ti.UI.BLEND_MODE_COLOR_DODGE }
552
+ '.bg-blend-diference[platform=ios]': { mode: Ti.UI.BLEND_MODE_DIFFERENCE }
553
+ '.bg-blend-exclusion[platform=ios]': { mode: Ti.UI.BLEND_MODE_EXCLUSION }
554
+ '.bg-blend-hard-light[platform=ios]': { mode: Ti.UI.BLEND_MODE_HARD_LIGHT }
555
+ '.bg-blend-hue[platform=ios]': { mode: Ti.UI.BLEND_MODE_HUE }
556
+ '.bg-blend-luminosity[platform=ios]': { mode: Ti.UI.BLEND_MODE_LUMINOSITY }
557
+ '.bg-blend-plus-darker[platform=ios]': { mode: Ti.UI.BLEND_MODE_PLUS_DARKER }
558
+ '.bg-blend-saturation[platform=ios]': { mode: Ti.UI.BLEND_MODE_SATURATION }
559
+ '.bg-blend-soft-light[platform=ios]': { mode: Ti.UI.BLEND_MODE_SOFT_LIGHT }
560
+ ```
561
+
562
+ ## Ti.Media
563
+
564
+ ### Video Player
565
+
566
+ #### Video Repeat Mode
567
+ ```css
568
+ // Component(s): Ti.Media.VideoPlayer
569
+ // Property(ies): repeatMode
570
+ // Description: Determines how the movie player repeats when reaching the end of playback.
571
+ '.video-repeat-one': { repeatMode: Ti.Media.VIDEO_REPEAT_MODE_ONE }
572
+ '.video-repeat-none': { repeatMode: Ti.Media.VIDEO_REPEAT_MODE_NONE }
573
+ ```
574
+
575
+ ### Music Player
576
+
577
+ #### Repeat Mode
578
+ ```css
579
+ // Component(s): Ti.Media.MusicPlayer
580
+ // Property(ies): repeatMode - iOS Only
581
+ '.music-repeat-all[platform=ios]': { repeatMode: Ti.Media.MUSIC_PLAYER_REPEAT_ALL }
582
+ '.music-repeat[platform=ios]': { repeatMode: Ti.Media.MUSIC_PLAYER_REPEAT_DEFAULT }
583
+ '.music-repeat-none[platform=ios]': { repeatMode: Ti.Media.MUSIC_PLAYER_REPEAT_NONE }
584
+ '.music-repeat-one[platform=ios]': { repeatMode: Ti.Media.MUSIC_PLAYER_REPEAT_ONE }
585
+ ```
586
+
587
+ #### Shuffle Mode
588
+ ```css
589
+ // Component(s): Ti.Media.MusicPlayer
590
+ // Property(ies): shuffleMode - iOS Only
591
+ '.music-shuffle-albums[platform=ios]': { shuffleMode: Ti.Media.MUSIC_PLAYER_SHUFFLE_ALBUMS }
592
+ '.music-shuffle[platform=ios]': { shuffleMode: Ti.Media.MUSIC_PLAYER_SHUFFLE_DEFAULT }
593
+ '.music-shuffle-none[platform=ios]': { shuffleMode: Ti.Media.MUSIC_PLAYER_SHUFFLE_NONE }
594
+ '.music-shuffle-songs[platform=ios]': { shuffleMode: Ti.Media.MUSIC_PLAYER_SHUFFLE_SONGS }
595
+ ```
596
+
597
+ ## Show As Action
598
+ ```css
599
+ // Component(s): Ti.Android.MenuItem
600
+ // Property(ies): showAsAction - Android Only
601
+ '.show-as-action-always[platform=android]': { showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS }
602
+ '.show-as-action-collapse[platform=android]': { showAsAction: Ti.Android.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW }
603
+ '.show-as-action-if-room[platform=android]': { showAsAction: Ti.Android.SHOW_AS_ACTION_IF_ROOM }
604
+ '.show-as-action-never[platform=android]': { showAsAction: Ti.Android.SHOW_AS_ACTION_NEVER }
605
+ '.show-as-action-with-text[platform=android]': { showAsAction: Ti.Android.SHOW_AS_ACTION_WITH_TEXT }
606
+ ```
607
+
608
+ ## Translucent
609
+ ```css
610
+ // Component(s): Ti.UI.iOS.Toolbar, Ti.UI.TabGroup, Ti.UI.Toolbar, Ti.UI.Window
611
+ // Property(ies): translucent - iOS Only
612
+ '.translucent[platform=ios]': { translucent: true }
613
+ '.translucent-disabled[platform=ios]': { translucent: false }
614
+ ```