1
//! Native-styled tab widget consisting of a [`TabHeader`] (the clickable tab bar)
2
//! and [`TabContent`] (the panel shown for the active tab). Styling emulates
3
//! the Windows-native tab control appearance via inline CSS constants.
4

            
5
use azul_core::{
6
    callbacks::{CoreCallback, CoreCallbackData, Update},
7
    dom::{Dom, DomVec, EventFilter, HoverEventFilter, IdOrClass, IdOrClass::Class, IdOrClassVec},
8
    refany::RefAny,
9
};
10
use azul_css::{
11
    dynamic_selector::{CssPropertyWithConditions, CssPropertyWithConditionsVec},
12
    props::{
13
        basic::*,
14
        layout::*,
15
        property::{CssProperty, *},
16
        style::*,
17
    },
18
    *,
19
};
20
use azul_css::css::BoxOrStatic;
21

            
22
use crate::callbacks::{Callback, CallbackInfo};
23

            
24
const STRING_16146701490593874959: AzString = AzString::from_const_str("system:ui");
25
const STYLE_BACKGROUND_CONTENT_8560341490937422656_ITEMS: &[StyleBackgroundContent] =
26
    &[StyleBackgroundContent::LinearGradient(LinearGradient {
27
        direction: Direction::FromTo(DirectionCorners {
28
            dir_from: DirectionCorner::Top,
29
            dir_to: DirectionCorner::Bottom,
30
        }),
31
        extend_mode: ExtendMode::Clamp,
32
        stops: NormalizedLinearColorStopVec::from_const_slice(
33
            LINEAR_COLOR_STOP_1400070954008106244_ITEMS,
34
        ),
35
    })];
36

            
37
const STYLE_BACKGROUND_CONTENT_15534185073326444643_ITEMS: &[StyleBackgroundContent] =
38
    &[StyleBackgroundContent::LinearGradient(LinearGradient {
39
        direction: Direction::FromTo(DirectionCorners {
40
            dir_from: DirectionCorner::Top,
41
            dir_to: DirectionCorner::Bottom,
42
        }),
43
        extend_mode: ExtendMode::Clamp,
44
        stops: NormalizedLinearColorStopVec::from_const_slice(
45
            LINEAR_COLOR_STOP_16259001466875079747_ITEMS,
46
        ),
47
    })];
48
const STYLE_BACKGROUND_CONTENT_16746671892555275291_ITEMS: &[StyleBackgroundContent] =
49
    &[StyleBackgroundContent::Color(ColorU {
50
        r: 255,
51
        g: 255,
52
        b: 255,
53
        a: 255,
54
    })];
55
const STYLE_FONT_FAMILY_8122988506401935406_ITEMS: &[StyleFontFamily] =
56
    &[StyleFontFamily::System(STRING_16146701490593874959)];
57
const LINEAR_COLOR_STOP_1400070954008106244_ITEMS: &[NormalizedLinearColorStop] = &[
58
    NormalizedLinearColorStop {
59
        offset: PercentageValue::const_new(0),
60
        color: ColorOrSystem::color(ColorU {
61
            r: 240,
62
            g: 240,
63
            b: 240,
64
            a: 255,
65
        }),
66
    },
67
    NormalizedLinearColorStop {
68
        offset: PercentageValue::const_new(100),
69
        color: ColorOrSystem::color(ColorU {
70
            r: 229,
71
            g: 229,
72
            b: 229,
73
            a: 255,
74
        }),
75
    },
76
];
77
const LINEAR_COLOR_STOP_16259001466875079747_ITEMS: &[NormalizedLinearColorStop] = &[
78
    NormalizedLinearColorStop {
79
        offset: PercentageValue::const_new(0),
80
        color: ColorOrSystem::color(ColorU {
81
            r: 236,
82
            g: 244,
83
            b: 252,
84
            a: 255,
85
        }),
86
    },
87
    NormalizedLinearColorStop {
88
        offset: PercentageValue::const_new(100),
89
        color: ColorOrSystem::color(ColorU {
90
            r: 221,
91
            g: 237,
92
            b: 252,
93
            a: 255,
94
        }),
95
    },
96
];
97

            
98
const CSS_MATCH_13824480602841492081_PROPERTIES: &[CssPropertyWithConditions] = &[
99
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active:hover
100
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomWidth(
101
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
102
            inner: PixelValue::const_px(1),
103
        }),
104
    )),
105
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftWidth(
106
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
107
            inner: PixelValue::const_px(1),
108
        }),
109
    )),
110
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightWidth(
111
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
112
            inner: PixelValue::const_px(1),
113
        }),
114
    )),
115
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopWidth(
116
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
117
            inner: PixelValue::const_px(1),
118
        }),
119
    )),
120
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomStyle(
121
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
122
            inner: BorderStyle::Solid,
123
        }),
124
    )),
125
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftStyle(
126
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
127
            inner: BorderStyle::Solid,
128
        }),
129
    )),
130
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightStyle(
131
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
132
            inner: BorderStyle::Solid,
133
        }),
134
    )),
135
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopStyle(
136
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
137
            inner: BorderStyle::Solid,
138
        }),
139
    )),
140
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomColor(
141
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
142
            inner: ColorU {
143
                r: 126,
144
                g: 180,
145
                b: 234,
146
                a: 255,
147
            },
148
        }),
149
    )),
150
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftColor(
151
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
152
            inner: ColorU {
153
                r: 126,
154
                g: 180,
155
                b: 234,
156
                a: 255,
157
            },
158
        }),
159
    )),
160
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightColor(
161
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
162
            inner: ColorU {
163
                r: 126,
164
                g: 180,
165
                b: 234,
166
                a: 255,
167
            },
168
        }),
169
    )),
170
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopColor(
171
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
172
            inner: ColorU {
173
                r: 126,
174
                g: 180,
175
                b: 234,
176
                a: 255,
177
            },
178
        }),
179
    )),
180
    CssPropertyWithConditions::on_hover(CssProperty::BackgroundContent(
181
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
182
            STYLE_BACKGROUND_CONTENT_15534185073326444643_ITEMS,
183
        )),
184
    )),
185
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-noleftborder
186
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
187
        LayoutBorderLeftWidthValue::None,
188
    )),
189
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
190
        StyleBorderLeftStyleValue::None,
191
    )),
192
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
193
        StyleBorderLeftColorValue::None,
194
    )),
195
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active
196
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
197
        LayoutPaddingRight {
198
            inner: PixelValue::const_px(5),
199
        },
200
    ))),
201
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
202
        LayoutPaddingLeft {
203
            inner: PixelValue::const_px(5),
204
        },
205
    ))),
206
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
207
        LayoutPaddingBottom {
208
            inner: PixelValue::const_px(1),
209
        },
210
    ))),
211
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
212
        LayoutPaddingTop {
213
            inner: PixelValue::const_px(1),
214
        },
215
    ))),
216
    CssPropertyWithConditions::simple(CssProperty::MarginTop(LayoutMarginTopValue::Exact(
217
        LayoutMarginTop {
218
            inner: PixelValue::const_px(2),
219
        },
220
    ))),
221
    // .__azul-native-tabs-header p
222
    CssPropertyWithConditions::simple(CssProperty::TextAlign(StyleTextAlignValue::Exact(
223
        StyleTextAlign::Center,
224
    ))),
225
    CssPropertyWithConditions::simple(CssProperty::Height(LayoutHeightValue::Exact(
226
        LayoutHeight::Px(PixelValue::const_px(21)),
227
    ))),
228
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
229
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
230
            inner: PixelValue::const_px(1),
231
        }),
232
    )),
233
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
234
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
235
            inner: PixelValue::const_px(1),
236
        }),
237
    )),
238
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
239
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
240
            inner: PixelValue::const_px(1),
241
        }),
242
    )),
243
    CssPropertyWithConditions::simple(CssProperty::BorderTopWidth(
244
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
245
            inner: PixelValue::const_px(1),
246
        }),
247
    )),
248
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
249
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
250
            inner: BorderStyle::Solid,
251
        }),
252
    )),
253
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
254
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
255
            inner: BorderStyle::Solid,
256
        }),
257
    )),
258
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
259
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
260
            inner: BorderStyle::Solid,
261
        }),
262
    )),
263
    CssPropertyWithConditions::simple(CssProperty::BorderTopStyle(
264
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
265
            inner: BorderStyle::Solid,
266
        }),
267
    )),
268
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
269
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
270
            inner: ColorU {
271
                r: 172,
272
                g: 172,
273
                b: 172,
274
                a: 255,
275
            },
276
        }),
277
    )),
278
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
279
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
280
            inner: ColorU {
281
                r: 172,
282
                g: 172,
283
                b: 172,
284
                a: 255,
285
            },
286
        }),
287
    )),
288
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
289
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
290
            inner: ColorU {
291
                r: 172,
292
                g: 172,
293
                b: 172,
294
                a: 255,
295
            },
296
        }),
297
    )),
298
    CssPropertyWithConditions::simple(CssProperty::BorderTopColor(
299
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
300
            inner: ColorU {
301
                r: 172,
302
                g: 172,
303
                b: 172,
304
                a: 255,
305
            },
306
        }),
307
    )),
308
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
309
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
310
            STYLE_BACKGROUND_CONTENT_8560341490937422656_ITEMS,
311
        )),
312
    )),
313
    CssPropertyWithConditions::simple(CssProperty::AlignItems(LayoutAlignItemsValue::Exact(
314
        LayoutAlignItems::Center,
315
    ))),
316
];
317
const CSS_MATCH_13824480602841492081: CssPropertyWithConditionsVec =
318
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_13824480602841492081_PROPERTIES);
319

            
320
const CSS_MATCH_14575853790110873394_PROPERTIES: &[CssPropertyWithConditions] = &[
321
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-active
322
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
323
        LayoutPaddingRight {
324
            inner: PixelValue::const_px(7),
325
        },
326
    ))),
327
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
328
        LayoutPaddingLeft {
329
            inner: PixelValue::const_px(7),
330
        },
331
    ))),
332
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
333
        LayoutPaddingBottom {
334
            inner: PixelValue::const_px(3),
335
        },
336
    ))),
337
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
338
        LayoutPaddingTop {
339
            inner: PixelValue::const_px(3),
340
        },
341
    ))),
342
    CssPropertyWithConditions::simple(CssProperty::Height(LayoutHeightValue::Exact(
343
        LayoutHeight::Px(PixelValue::const_px(23)),
344
    ))),
345
    CssPropertyWithConditions::simple(CssProperty::BoxSizing(LayoutBoxSizingValue::Exact(
346
        LayoutBoxSizing::ContentBox,
347
    ))),
348
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
349
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
350
            inner: PixelValue::const_px(1),
351
        }),
352
    )),
353
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
354
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
355
            inner: BorderStyle::Solid,
356
        }),
357
    )),
358
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
359
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
360
            inner: ColorU {
361
                r: 255,
362
                g: 255,
363
                b: 255,
364
                a: 255,
365
            },
366
        }),
367
    )),
368
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
369
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
370
            STYLE_BACKGROUND_CONTENT_16746671892555275291_ITEMS,
371
        )),
372
    )),
373
    // .__azul-native-tabs-header p
374
    CssPropertyWithConditions::simple(CssProperty::TextAlign(StyleTextAlignValue::Exact(
375
        StyleTextAlign::Center,
376
    ))),
377
    CssPropertyWithConditions::simple(CssProperty::Height(LayoutHeightValue::Exact(
378
        LayoutHeight::Px(PixelValue::const_px(21)),
379
    ))),
380
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
381
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
382
            inner: PixelValue::const_px(1),
383
        }),
384
    )),
385
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
386
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
387
            inner: PixelValue::const_px(1),
388
        }),
389
    )),
390
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
391
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
392
            inner: PixelValue::const_px(1),
393
        }),
394
    )),
395
    CssPropertyWithConditions::simple(CssProperty::BorderTopWidth(
396
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
397
            inner: PixelValue::const_px(1),
398
        }),
399
    )),
400
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
401
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
402
            inner: BorderStyle::Solid,
403
        }),
404
    )),
405
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
406
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
407
            inner: BorderStyle::Solid,
408
        }),
409
    )),
410
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
411
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
412
            inner: BorderStyle::Solid,
413
        }),
414
    )),
415
    CssPropertyWithConditions::simple(CssProperty::BorderTopStyle(
416
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
417
            inner: BorderStyle::Solid,
418
        }),
419
    )),
420
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
421
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
422
            inner: ColorU {
423
                r: 172,
424
                g: 172,
425
                b: 172,
426
                a: 255,
427
            },
428
        }),
429
    )),
430
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
431
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
432
            inner: ColorU {
433
                r: 172,
434
                g: 172,
435
                b: 172,
436
                a: 255,
437
            },
438
        }),
439
    )),
440
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
441
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
442
            inner: ColorU {
443
                r: 172,
444
                g: 172,
445
                b: 172,
446
                a: 255,
447
            },
448
        }),
449
    )),
450
    CssPropertyWithConditions::simple(CssProperty::BorderTopColor(
451
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
452
            inner: ColorU {
453
                r: 172,
454
                g: 172,
455
                b: 172,
456
                a: 255,
457
            },
458
        }),
459
    )),
460
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
461
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
462
            STYLE_BACKGROUND_CONTENT_8560341490937422656_ITEMS,
463
        )),
464
    )),
465
    CssPropertyWithConditions::simple(CssProperty::AlignItems(LayoutAlignItemsValue::Exact(
466
        LayoutAlignItems::Center,
467
    ))),
468
];
469
const CSS_MATCH_14575853790110873394: CssPropertyWithConditionsVec =
470
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_14575853790110873394_PROPERTIES);
471

            
472
const CSS_MATCH_17290739305197504468_PROPERTIES: &[CssPropertyWithConditions] = &[
473
    // .__azul-native-tabs-header .__azul-native-tabs-before-tabs
474
    CssPropertyWithConditions::simple(CssProperty::Width(LayoutWidthValue::Exact(
475
        LayoutWidth::Px(PixelValue::const_px(2)),
476
    ))),
477
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
478
        LayoutFlexGrow {
479
            inner: FloatValue::const_new(1),
480
        },
481
    ))),
482
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
483
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
484
            inner: PixelValue::const_px(1),
485
        }),
486
    )),
487
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
488
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
489
            inner: BorderStyle::Solid,
490
        }),
491
    )),
492
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
493
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
494
            inner: ColorU {
495
                r: 172,
496
                g: 172,
497
                b: 172,
498
                a: 255,
499
            },
500
        }),
501
    )),
502
];
503
const CSS_MATCH_17290739305197504468: CssPropertyWithConditionsVec =
504
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_17290739305197504468_PROPERTIES);
505

            
506
const CSS_MATCH_18014909903571752977_PROPERTIES: &[CssPropertyWithConditions] = &[
507
    // .__azul-native-tabs-content
508
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
509
        LayoutPaddingRight {
510
            inner: PixelValue::const_px(5),
511
        },
512
    ))),
513
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
514
        LayoutPaddingLeft {
515
            inner: PixelValue::const_px(5),
516
        },
517
    ))),
518
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
519
        LayoutPaddingBottom {
520
            inner: PixelValue::const_px(5),
521
        },
522
    ))),
523
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
524
        LayoutPaddingTop {
525
            inner: PixelValue::const_px(5),
526
        },
527
    ))),
528
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
529
        LayoutFlexGrow {
530
            inner: FloatValue::const_new(1),
531
        },
532
    ))),
533
    CssPropertyWithConditions::simple(CssProperty::BorderTopWidth(LayoutBorderTopWidthValue::None)),
534
    CssPropertyWithConditions::simple(CssProperty::BorderTopStyle(StyleBorderTopStyleValue::None)),
535
    CssPropertyWithConditions::simple(CssProperty::BorderTopColor(StyleBorderTopColorValue::None)),
536
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
537
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
538
            inner: PixelValue::const_px(1),
539
        }),
540
    )),
541
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
542
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
543
            inner: PixelValue::const_px(1),
544
        }),
545
    )),
546
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
547
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
548
            inner: PixelValue::const_px(1),
549
        }),
550
    )),
551
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
552
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
553
            inner: BorderStyle::Solid,
554
        }),
555
    )),
556
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
557
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
558
            inner: BorderStyle::Solid,
559
        }),
560
    )),
561
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
562
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
563
            inner: BorderStyle::Solid,
564
        }),
565
    )),
566
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
567
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
568
            inner: ColorU {
569
                r: 172,
570
                g: 172,
571
                b: 172,
572
                a: 255,
573
            },
574
        }),
575
    )),
576
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
577
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
578
            inner: ColorU {
579
                r: 172,
580
                g: 172,
581
                b: 172,
582
                a: 255,
583
            },
584
        }),
585
    )),
586
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
587
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
588
            inner: ColorU {
589
                r: 172,
590
                g: 172,
591
                b: 172,
592
                a: 255,
593
            },
594
        }),
595
    )),
596
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
597
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
598
            STYLE_BACKGROUND_CONTENT_16746671892555275291_ITEMS,
599
        )),
600
    )),
601
];
602
const CSS_MATCH_18014909903571752977: CssPropertyWithConditionsVec =
603
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_18014909903571752977_PROPERTIES);
604

            
605
const CSS_MATCH_3088386549906605418_PROPERTIES: &[CssPropertyWithConditions] = &[
606
    // .__azul-native-tabs-header .__azul-native-tabs-after-tabs
607
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
608
        LayoutFlexGrow {
609
            inner: FloatValue::const_new(1),
610
        },
611
    ))),
612
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
613
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
614
            inner: PixelValue::const_px(1),
615
        }),
616
    )),
617
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
618
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
619
            inner: BorderStyle::Solid,
620
        }),
621
    )),
622
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
623
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
624
            inner: ColorU {
625
                r: 172,
626
                g: 172,
627
                b: 172,
628
                a: 255,
629
            },
630
        }),
631
    )),
632
];
633
const CSS_MATCH_3088386549906605418: CssPropertyWithConditionsVec =
634
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_3088386549906605418_PROPERTIES);
635

            
636
const CSS_MATCH_4415083954137121609_PROPERTIES: &[CssPropertyWithConditions] = &[
637
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active:hover
638
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomWidth(
639
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
640
            inner: PixelValue::const_px(1),
641
        }),
642
    )),
643
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftWidth(
644
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
645
            inner: PixelValue::const_px(1),
646
        }),
647
    )),
648
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightWidth(
649
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
650
            inner: PixelValue::const_px(1),
651
        }),
652
    )),
653
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopWidth(
654
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
655
            inner: PixelValue::const_px(1),
656
        }),
657
    )),
658
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomStyle(
659
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
660
            inner: BorderStyle::Solid,
661
        }),
662
    )),
663
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftStyle(
664
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
665
            inner: BorderStyle::Solid,
666
        }),
667
    )),
668
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightStyle(
669
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
670
            inner: BorderStyle::Solid,
671
        }),
672
    )),
673
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopStyle(
674
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
675
            inner: BorderStyle::Solid,
676
        }),
677
    )),
678
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomColor(
679
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
680
            inner: ColorU {
681
                r: 126,
682
                g: 180,
683
                b: 234,
684
                a: 255,
685
            },
686
        }),
687
    )),
688
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftColor(
689
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
690
            inner: ColorU {
691
                r: 126,
692
                g: 180,
693
                b: 234,
694
                a: 255,
695
            },
696
        }),
697
    )),
698
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightColor(
699
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
700
            inner: ColorU {
701
                r: 126,
702
                g: 180,
703
                b: 234,
704
                a: 255,
705
            },
706
        }),
707
    )),
708
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopColor(
709
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
710
            inner: ColorU {
711
                r: 126,
712
                g: 180,
713
                b: 234,
714
                a: 255,
715
            },
716
        }),
717
    )),
718
    CssPropertyWithConditions::on_hover(CssProperty::BackgroundContent(
719
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
720
            STYLE_BACKGROUND_CONTENT_15534185073326444643_ITEMS,
721
        )),
722
    )),
723
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-norightborder
724
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
725
        LayoutBorderRightWidthValue::None,
726
    )),
727
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
728
        StyleBorderRightStyleValue::None,
729
    )),
730
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
731
        StyleBorderRightColorValue::None,
732
    )),
733
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active
734
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
735
        LayoutPaddingRight {
736
            inner: PixelValue::const_px(5),
737
        },
738
    ))),
739
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
740
        LayoutPaddingLeft {
741
            inner: PixelValue::const_px(5),
742
        },
743
    ))),
744
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
745
        LayoutPaddingBottom {
746
            inner: PixelValue::const_px(1),
747
        },
748
    ))),
749
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
750
        LayoutPaddingTop {
751
            inner: PixelValue::const_px(1),
752
        },
753
    ))),
754
    CssPropertyWithConditions::simple(CssProperty::MarginTop(LayoutMarginTopValue::Exact(
755
        LayoutMarginTop {
756
            inner: PixelValue::const_px(2),
757
        },
758
    ))),
759
    // .__azul-native-tabs-header p
760
    CssPropertyWithConditions::simple(CssProperty::TextAlign(StyleTextAlignValue::Exact(
761
        StyleTextAlign::Center,
762
    ))),
763
    CssPropertyWithConditions::simple(CssProperty::Height(LayoutHeightValue::Exact(
764
        LayoutHeight::Px(PixelValue::const_px(21)),
765
    ))),
766
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
767
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
768
            inner: PixelValue::const_px(1),
769
        }),
770
    )),
771
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
772
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
773
            inner: PixelValue::const_px(1),
774
        }),
775
    )),
776
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
777
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
778
            inner: PixelValue::const_px(1),
779
        }),
780
    )),
781
    CssPropertyWithConditions::simple(CssProperty::BorderTopWidth(
782
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
783
            inner: PixelValue::const_px(1),
784
        }),
785
    )),
786
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
787
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
788
            inner: BorderStyle::Solid,
789
        }),
790
    )),
791
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
792
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
793
            inner: BorderStyle::Solid,
794
        }),
795
    )),
796
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
797
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
798
            inner: BorderStyle::Solid,
799
        }),
800
    )),
801
    CssPropertyWithConditions::simple(CssProperty::BorderTopStyle(
802
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
803
            inner: BorderStyle::Solid,
804
        }),
805
    )),
806
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
807
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
808
            inner: ColorU {
809
                r: 172,
810
                g: 172,
811
                b: 172,
812
                a: 255,
813
            },
814
        }),
815
    )),
816
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
817
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
818
            inner: ColorU {
819
                r: 172,
820
                g: 172,
821
                b: 172,
822
                a: 255,
823
            },
824
        }),
825
    )),
826
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
827
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
828
            inner: ColorU {
829
                r: 172,
830
                g: 172,
831
                b: 172,
832
                a: 255,
833
            },
834
        }),
835
    )),
836
    CssPropertyWithConditions::simple(CssProperty::BorderTopColor(
837
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
838
            inner: ColorU {
839
                r: 172,
840
                g: 172,
841
                b: 172,
842
                a: 255,
843
            },
844
        }),
845
    )),
846
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
847
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
848
            STYLE_BACKGROUND_CONTENT_8560341490937422656_ITEMS,
849
        )),
850
    )),
851
    CssPropertyWithConditions::simple(CssProperty::AlignItems(LayoutAlignItemsValue::Exact(
852
        LayoutAlignItems::Center,
853
    ))),
854
];
855
const CSS_MATCH_4415083954137121609: CssPropertyWithConditionsVec =
856
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_4415083954137121609_PROPERTIES);
857

            
858
const CSS_MATCH_4738503469417034630_PROPERTIES: &[CssPropertyWithConditions] = &[
859
    // .__azul-native-tabs-container
860
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
861
        LayoutPaddingRight {
862
            inner: PixelValue::const_px(5),
863
        },
864
    ))),
865
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
866
        LayoutPaddingLeft {
867
            inner: PixelValue::const_px(5),
868
        },
869
    ))),
870
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
871
        LayoutPaddingBottom {
872
            inner: PixelValue::const_px(5),
873
        },
874
    ))),
875
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
876
        LayoutPaddingTop {
877
            inner: PixelValue::const_px(5),
878
        },
879
    ))),
880
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
881
        LayoutFlexGrow {
882
            inner: FloatValue::const_new(1),
883
        },
884
    ))),
885
];
886
const CSS_MATCH_4738503469417034630: CssPropertyWithConditionsVec =
887
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_4738503469417034630_PROPERTIES);
888

            
889
const CSS_MATCH_9988039989460234263_PROPERTIES: &[CssPropertyWithConditions] = &[
890
    // .__azul-native-tabs-header
891
    CssPropertyWithConditions::simple(CssProperty::FontSize(StyleFontSizeValue::Exact(
892
        StyleFontSize {
893
            inner: PixelValue::const_px(11),
894
        },
895
    ))),
896
    CssPropertyWithConditions::simple(CssProperty::FontFamily(StyleFontFamilyVecValue::Exact(
897
        StyleFontFamilyVec::from_const_slice(STYLE_FONT_FAMILY_8122988506401935406_ITEMS),
898
    ))),
899
    CssPropertyWithConditions::simple(CssProperty::FlexDirection(LayoutFlexDirectionValue::Exact(
900
        LayoutFlexDirection::Row,
901
    ))),
902
];
903
const CSS_MATCH_9988039989460234263: CssPropertyWithConditionsVec =
904
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_9988039989460234263_PROPERTIES);
905

            
906
// -- NO PADDING
907
const CSS_MATCH_18014909903571752977_PROPERTIES_NO_PADDING: &[CssPropertyWithConditions] = &[
908
    // .__azul-native-tabs-content
909
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
910
        LayoutFlexGrow {
911
            inner: FloatValue::const_new(1),
912
        },
913
    ))),
914
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
915
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
916
            STYLE_BACKGROUND_CONTENT_16746671892555275291_ITEMS,
917
        )),
918
    )),
919
];
920
const CSS_MATCH_18014909903571752977_NO_PADDING: CssPropertyWithConditionsVec =
921
    CssPropertyWithConditionsVec::from_const_slice(
922
        CSS_MATCH_18014909903571752977_PROPERTIES_NO_PADDING,
923
    );
924

            
925
const CSS_MATCH_4738503469417034630_PROPERTIES_NO_PADDING: &[CssPropertyWithConditions] = &[
926
    // .__azul-native-tabs-container
927
    CssPropertyWithConditions::simple(CssProperty::FlexGrow(LayoutFlexGrowValue::Exact(
928
        LayoutFlexGrow {
929
            inner: FloatValue::const_new(1),
930
        },
931
    ))),
932
];
933
const CSS_MATCH_4738503469417034630_NO_PADDING: CssPropertyWithConditionsVec =
934
    CssPropertyWithConditionsVec::from_const_slice(
935
        CSS_MATCH_4738503469417034630_PROPERTIES_NO_PADDING,
936
    );
937

            
938
// -- REGULAR_INACTIVE_TAB
939

            
940
const CSS_MATCH_11510695043643111367_PROPERTIES: &[CssPropertyWithConditions] = &[
941
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active:hover
942
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomWidth(
943
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
944
            inner: PixelValue::const_px(1),
945
        }),
946
    )),
947
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftWidth(
948
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
949
            inner: PixelValue::const_px(1),
950
        }),
951
    )),
952
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightWidth(
953
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
954
            inner: PixelValue::const_px(1),
955
        }),
956
    )),
957
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopWidth(
958
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
959
            inner: PixelValue::const_px(1),
960
        }),
961
    )),
962
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomStyle(
963
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
964
            inner: BorderStyle::Solid,
965
        }),
966
    )),
967
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftStyle(
968
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
969
            inner: BorderStyle::Solid,
970
        }),
971
    )),
972
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightStyle(
973
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
974
            inner: BorderStyle::Solid,
975
        }),
976
    )),
977
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopStyle(
978
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
979
            inner: BorderStyle::Solid,
980
        }),
981
    )),
982
    CssPropertyWithConditions::on_hover(CssProperty::BorderBottomColor(
983
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
984
            inner: ColorU {
985
                r: 126,
986
                g: 180,
987
                b: 234,
988
                a: 255,
989
            },
990
        }),
991
    )),
992
    CssPropertyWithConditions::on_hover(CssProperty::BorderLeftColor(
993
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
994
            inner: ColorU {
995
                r: 126,
996
                g: 180,
997
                b: 234,
998
                a: 255,
999
            },
        }),
    )),
    CssPropertyWithConditions::on_hover(CssProperty::BorderRightColor(
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
            inner: ColorU {
                r: 126,
                g: 180,
                b: 234,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::on_hover(CssProperty::BorderTopColor(
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
            inner: ColorU {
                r: 126,
                g: 180,
                b: 234,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::on_hover(CssProperty::BackgroundContent(
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
            STYLE_BACKGROUND_CONTENT_15534185073326444643_ITEMS,
        )),
    )),
    // .__azul-native-tabs-header p.__azul-native-tabs-tab-not-active
    CssPropertyWithConditions::simple(CssProperty::PaddingRight(LayoutPaddingRightValue::Exact(
        LayoutPaddingRight {
            inner: PixelValue::const_px(5),
        },
    ))),
    CssPropertyWithConditions::simple(CssProperty::PaddingLeft(LayoutPaddingLeftValue::Exact(
        LayoutPaddingLeft {
            inner: PixelValue::const_px(5),
        },
    ))),
    CssPropertyWithConditions::simple(CssProperty::PaddingBottom(LayoutPaddingBottomValue::Exact(
        LayoutPaddingBottom {
            inner: PixelValue::const_px(1),
        },
    ))),
    CssPropertyWithConditions::simple(CssProperty::PaddingTop(LayoutPaddingTopValue::Exact(
        LayoutPaddingTop {
            inner: PixelValue::const_px(1),
        },
    ))),
    CssPropertyWithConditions::simple(CssProperty::MarginTop(LayoutMarginTopValue::Exact(
        LayoutMarginTop {
            inner: PixelValue::const_px(2),
        },
    ))),
    // .__azul-native-tabs-header p
    CssPropertyWithConditions::simple(CssProperty::TextAlign(StyleTextAlignValue::Exact(
        StyleTextAlign::Center,
    ))),
    CssPropertyWithConditions::simple(CssProperty::Height(LayoutHeightValue::Exact(
        LayoutHeight::Px(PixelValue::const_px(21)),
    ))),
    CssPropertyWithConditions::simple(CssProperty::BorderBottomWidth(
        LayoutBorderBottomWidthValue::Exact(LayoutBorderBottomWidth {
            inner: PixelValue::const_px(1),
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderLeftWidth(
        LayoutBorderLeftWidthValue::Exact(LayoutBorderLeftWidth {
            inner: PixelValue::const_px(1),
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderRightWidth(
        LayoutBorderRightWidthValue::Exact(LayoutBorderRightWidth {
            inner: PixelValue::const_px(1),
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderTopWidth(
        LayoutBorderTopWidthValue::Exact(LayoutBorderTopWidth {
            inner: PixelValue::const_px(1),
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderBottomStyle(
        StyleBorderBottomStyleValue::Exact(StyleBorderBottomStyle {
            inner: BorderStyle::Solid,
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderLeftStyle(
        StyleBorderLeftStyleValue::Exact(StyleBorderLeftStyle {
            inner: BorderStyle::Solid,
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderRightStyle(
        StyleBorderRightStyleValue::Exact(StyleBorderRightStyle {
            inner: BorderStyle::Solid,
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderTopStyle(
        StyleBorderTopStyleValue::Exact(StyleBorderTopStyle {
            inner: BorderStyle::Solid,
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderBottomColor(
        StyleBorderBottomColorValue::Exact(StyleBorderBottomColor {
            inner: ColorU {
                r: 172,
                g: 172,
                b: 172,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderLeftColor(
        StyleBorderLeftColorValue::Exact(StyleBorderLeftColor {
            inner: ColorU {
                r: 172,
                g: 172,
                b: 172,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderRightColor(
        StyleBorderRightColorValue::Exact(StyleBorderRightColor {
            inner: ColorU {
                r: 172,
                g: 172,
                b: 172,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BorderTopColor(
        StyleBorderTopColorValue::Exact(StyleBorderTopColor {
            inner: ColorU {
                r: 172,
                g: 172,
                b: 172,
                a: 255,
            },
        }),
    )),
    CssPropertyWithConditions::simple(CssProperty::BackgroundContent(
        StyleBackgroundContentVecValue::Exact(StyleBackgroundContentVec::from_const_slice(
            STYLE_BACKGROUND_CONTENT_8560341490937422656_ITEMS,
        )),
    )),
    CssPropertyWithConditions::simple(CssProperty::AlignItems(LayoutAlignItemsValue::Exact(
        LayoutAlignItems::Center,
    ))),
];
const CSS_MATCH_11510695043643111367: CssPropertyWithConditionsVec =
    CssPropertyWithConditionsVec::from_const_slice(CSS_MATCH_11510695043643111367_PROPERTIES);
/// Header bar for a tab widget, containing the clickable tab labels.
#[derive(Debug, Clone)]
#[repr(C)]
pub struct TabHeader {
    /// Labels for each tab.
    pub tabs: StringVec,
    /// Zero-based index of the currently active tab.
    pub active_tab: usize,
    /// Optional callback invoked when a tab is clicked.
    pub on_click: OptionTabOnClick,
}
impl Default for TabHeader {
    fn default() -> Self {
        Self {
            tabs: StringVec::from_const_slice(&[]),
            active_tab: 0,
            on_click: None.into(),
        }
    }
}
/// State passed to the tab-click callback, indicating which tab was selected.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(C)]
pub struct TabHeaderState {
    /// Zero-based index of the newly selected tab.
    pub active_tab: usize,
}
/// Signature for the tab-click callback function.
pub type TabOnClickCallbackType = extern "C" fn(RefAny, CallbackInfo, TabHeaderState) -> Update;
impl_widget_callback!(
    TabOnClick,
    OptionTabOnClick,
    TabOnClickCallback,
    TabOnClickCallbackType
);
azul_core::impl_managed_callback! {
    wrapper:        TabOnClickCallback,
    info_ty:        CallbackInfo,
    return_ty:      Update,
    default_ret:    Update::DoNothing,
    invoker_static: TAB_ON_CLICK_INVOKER,
    invoker_ty:     AzTabOnClickCallbackInvoker,
    thunk_fn:       az_tab_on_click_callback_thunk,
    setter_fn:      AzApp_setTabOnClickCallbackInvoker,
    from_handle_fn: AzTabOnClickCallback_createFromHostHandle,
    extra_args:     [ state: TabHeaderState ],
}
impl TabHeader {
    pub fn create(tabs: StringVec) -> Self {
        Self {
            tabs,
            active_tab: 0,
            on_click: None.into(),
        }
    }
    pub fn swap_with_default(&mut self) -> Self {
        let mut default = Self::default();
        core::mem::swap(&mut default, self);
        default
    }
    pub fn set_active_tab(&mut self, active_tab: usize) {
        self.active_tab = active_tab;
    }
    pub fn with_active_tab(mut self, active_tab: usize) -> Self {
        self.set_active_tab(active_tab);
        self
    }
    pub fn set_on_click<C: Into<TabOnClickCallback>>(&mut self, refany: RefAny, on_click: C) {
        self.on_click = Some(TabOnClick {
            refany,
            callback: on_click.into(),
        })
        .into();
    }
    pub fn with_on_click<C: Into<TabOnClickCallback>>(
        mut self,
        refany: RefAny,
        on_click: C,
    ) -> Self {
        self.set_on_click(refany, on_click);
        self
    }
    pub fn dom(self) -> Dom {
        use azul_core::callbacks::CoreCallbackDataVec;
        let on_click_is_some = self.on_click.is_some();
        Dom::create_div()
            .with_css_props(CSS_MATCH_9988039989460234263)
            .with_ids_and_classes({
                const IDS_AND_CLASSES_6172459441955124689: &[IdOrClass] =
                    &[Class(AzString::from_const_str("__azul-native-tabs-header"))];
                IdOrClassVec::from_const_slice(IDS_AND_CLASSES_6172459441955124689)
            })
            .with_children({
                let mut tab_items = vec![Dom::create_div()
                    .with_css_props(CSS_MATCH_17290739305197504468)
                    .with_ids_and_classes({
                        const IDS_AND_CLASSES_8360971686689797550: &[IdOrClass] = &[Class(
                            AzString::from_const_str("__azul-native-tabs-before-tabs"),
                        )];
                        IdOrClassVec::from_const_slice(IDS_AND_CLASSES_8360971686689797550)
                    })];
                let dataset = TabLocalDataset {
                    tab_idx: 0,
                    on_click: self.on_click,
                };
                for (tab_idx, tab) in self.tabs.as_ref().iter().enumerate() {
                    let next_tab_is_active = self.active_tab == tab_idx.saturating_add(1);
                    let previous_tab_was_active = if self.active_tab == 0 {
                        false
                    } else {
                        self.active_tab == tab_idx.saturating_sub(1)
                    };
                    let tab_is_active = self.active_tab == tab_idx;
                    // classes for previous tab
                    const IDS_AND_CLASSES_5117007530891373979: &[IdOrClass] = &[
                        Class(AzString::from_const_str(
                            "__azul-native-tabs-tab-norightborder",
                        )),
                        Class(AzString::from_const_str(
                            "__azul-native-tabs-tab-not-active",
                        )),
                    ]; // CSS_MATCH_4415083954137121609
                    // classes for current tab
                    const IDS_AND_CLASSES_15002865554973741556: &[IdOrClass] = &[Class(
                        AzString::from_const_str("__azul-native-tabs-tab-active"),
                    )];
                    // classes for next tab
                    const IDS_AND_CLASSES_16877793354714897051: &[IdOrClass] = &[
                        Class(AzString::from_const_str(
                            "__azul-native-tabs-tab-noleftborder",
                        )),
                        Class(AzString::from_const_str(
                            "__azul-native-tabs-tab-not-active",
                        )),
                    ];
                    // classes for default inactive tab
                    const IDS_AND_CLASSES_INACTIVE: &[IdOrClass] = &[Class(
                        AzString::from_const_str("__azul-native-tabs-tab-not-active"),
                    )];
                    let (ids_and_classes, css_props) = if tab_is_active {
                        (
                            IDS_AND_CLASSES_15002865554973741556,
                            CSS_MATCH_14575853790110873394,
                        )
                    } else if next_tab_is_active {
                        // tab before the active tab
                        (
                            IDS_AND_CLASSES_5117007530891373979,
                            CSS_MATCH_4415083954137121609,
                        )
                    } else if previous_tab_was_active {
                        // tab after the active tab
                        (
                            IDS_AND_CLASSES_16877793354714897051,
                            CSS_MATCH_13824480602841492081,
                        )
                    } else {
                        // default inactive tab
                        (IDS_AND_CLASSES_INACTIVE, CSS_MATCH_11510695043643111367)
                    };
                    let mut dataset = dataset.clone();
                    dataset.tab_idx = tab_idx;
                    let dataset = RefAny::new(dataset);
                    tab_items.push(
                        Dom::create_text(tab.clone())
                            .with_callbacks(if on_click_is_some {
                                vec![CoreCallbackData {
                                    event: EventFilter::Hover(HoverEventFilter::MouseUp),
                                    callback: CoreCallback {
                                        cb: on_tab_click as usize,
                                        ctx: azul_core::refany::OptionRefAny::None,
                                    },
                                    refany: dataset.clone(),
                                }]
                                .into()
                            } else {
                                CoreCallbackDataVec::from_const_slice(&[])
                            })
                            .with_dataset(Some(dataset).into())
                            .with_css_props(css_props)
                            .with_ids_and_classes(IdOrClassVec::from_const_slice(ids_and_classes)),
                    );
                }
                tab_items.push(
                    Dom::create_div()
                        .with_css_props(CSS_MATCH_3088386549906605418)
                        .with_ids_and_classes({
                            const IDS_AND_CLASSES_11001585590816277275: &[IdOrClass] = &[Class(
                                AzString::from_const_str("__azul-native-tabs-after-tabs"),
                            )];
                            IdOrClassVec::from_const_slice(IDS_AND_CLASSES_11001585590816277275)
                        }),
                );
                tab_items.into()
            })
    }
}
/// Content panel displayed beneath the active tab in a tab widget.
#[derive(Debug, Clone)]
#[repr(C)]
pub struct TabContent {
    /// The DOM subtree shown as the tab's content area.
    pub content: Dom,
    /// Whether the content area includes default padding.
    pub has_padding: bool,
}
impl Default for TabContent {
    fn default() -> Self {
        Self {
            content: Dom::create_div(),
            has_padding: true,
        }
    }
}
impl TabContent {
    pub fn new(content: Dom) -> Self {
        Self {
            content,
            has_padding: true,
        }
    }
    pub fn swap_with_default(&mut self) -> Self {
        let mut default = Self::default();
        core::mem::swap(&mut default, self);
        default
    }
    pub fn with_padding(mut self, padding: bool) -> Self {
        self.set_padding(padding);
        self
    }
    pub fn set_padding(&mut self, padding: bool) {
        self.has_padding = padding;
    }
    pub fn dom(self) -> Dom {
        const IDS_AND_CLASSES_2989815829020816222: &[IdOrClass] = &[Class(
            AzString::from_const_str("__azul-native-tabs-content"),
        )];
        let tab_content_css_style = if self.has_padding {
            CSS_MATCH_18014909903571752977
        } else {
            CSS_MATCH_18014909903571752977_NO_PADDING
        };
        Dom::create_div()
            .with_css_props(tab_content_css_style)
            .with_children(DomVec::from_vec(vec![Dom::create_div()
                .with_ids_and_classes(IdOrClassVec::from_const_slice(
                    IDS_AND_CLASSES_2989815829020816222,
                ))
                .with_children(DomVec::from_vec(vec![self.content]))]))
    }
}
#[derive(Clone)]
struct TabLocalDataset {
    tab_idx: usize,
    on_click: OptionTabOnClick,
}
extern "C" fn on_tab_click(mut refany: RefAny, mut info: CallbackInfo) -> Update {
    fn select_new_tab_inner(mut refany: RefAny, info: &mut CallbackInfo) -> Option<Update> {
        let mut tab_local_dataset = refany.downcast_mut::<TabLocalDataset>()?;
        let tab_idx = tab_local_dataset.tab_idx;
        let tab_header_state = TabHeaderState {
            active_tab: tab_idx,
        };
        let result = {
            // rustc doesn't understand the borrowing lifetime here
            let tab_local_dataset = &mut *tab_local_dataset;
            let onclick = &mut tab_local_dataset.on_click;
            match onclick.as_mut() {
                Some(TabOnClick { callback, refany }) => {
                    (callback.cb)(refany.clone(), info.clone(), tab_header_state)
                }
                None => Update::DoNothing,
            }
        };
        Some(result)
    }
    select_new_tab_inner(refany, &mut info).unwrap_or(Update::RefreshDom)
}