bitwrench 2.0.10 → 2.0.12

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.
@@ -367,7 +367,7 @@ function generateTables(scope, palette, layout) {
367
367
  'background-color': palette.light.light
368
368
  };
369
369
  rules[scopeSelector(scope, '.bw-table-striped > tbody > tr:nth-of-type(odd) > *')] = {
370
- 'background-color': 'rgba(0, 0, 0, 0.025)'
370
+ 'background-color': 'rgba(0, 0, 0, 0.05)'
371
371
  };
372
372
  rules[scopeSelector(scope, '.bw-table-hover > tbody > tr:hover > *')] = {
373
373
  'background-color': palette.primary.focus
@@ -561,6 +561,142 @@ function generateSectionsThemed(scope, palette) {
561
561
  return rules;
562
562
  }
563
563
 
564
+ function generateAccordionThemed(scope, palette) {
565
+ var rules = {};
566
+ rules[scopeSelector(scope, '.bw-accordion-item')] = {
567
+ 'background-color': '#fff',
568
+ 'border-color': palette.light.border
569
+ };
570
+ rules[scopeSelector(scope, '.bw-accordion-button')] = {
571
+ 'color': palette.dark.base
572
+ };
573
+ rules[scopeSelector(scope, '.bw-accordion-button:not(.bw-collapsed)')] = {
574
+ 'color': palette.primary.darkText,
575
+ 'background-color': palette.primary.light
576
+ };
577
+ rules[scopeSelector(scope, '.bw-accordion-button:hover')] = {
578
+ 'background-color': palette.light.light
579
+ };
580
+ rules[scopeSelector(scope, '.bw-accordion-button:not(.bw-collapsed):hover')] = {
581
+ 'background-color': palette.primary.hover
582
+ };
583
+ rules[scopeSelector(scope, '.bw-accordion-button:focus-visible')] = {
584
+ 'box-shadow': '0 0 0 0.2rem ' + palette.primary.focus
585
+ };
586
+ rules[scopeSelector(scope, '.bw-accordion-body')] = {
587
+ 'border-top': '1px solid ' + palette.light.border
588
+ };
589
+ return rules;
590
+ }
591
+
592
+ function generateCarouselThemed(scope, palette) {
593
+ var rules = {};
594
+ rules[scopeSelector(scope, '.bw-carousel')] = {
595
+ 'background-color': palette.light.light
596
+ };
597
+ rules[scopeSelector(scope, '.bw-carousel-indicator.active')] = {
598
+ 'background-color': palette.primary.base
599
+ };
600
+ return rules;
601
+ }
602
+
603
+ function generateModalThemed(scope, palette) {
604
+ var rules = {};
605
+ rules[scopeSelector(scope, '.bw-modal-content')] = {
606
+ 'background-color': '#fff',
607
+ 'border-color': palette.light.border,
608
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)'
609
+ };
610
+ rules[scopeSelector(scope, '.bw-modal-header')] = {
611
+ 'border-bottom-color': palette.light.border
612
+ };
613
+ rules[scopeSelector(scope, '.bw-modal-footer')] = {
614
+ 'border-top-color': palette.light.border
615
+ };
616
+ rules[scopeSelector(scope, '.bw-modal-title')] = {
617
+ 'color': palette.dark.base
618
+ };
619
+ return rules;
620
+ }
621
+
622
+ function generateToastThemed(scope, palette) {
623
+ var rules = {};
624
+ rules[scopeSelector(scope, '.bw-toast')] = {
625
+ 'background-color': '#fff',
626
+ 'border-color': 'rgba(0,0,0,0.1)',
627
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)'
628
+ };
629
+ rules[scopeSelector(scope, '.bw-toast-header')] = {
630
+ 'border-bottom-color': 'rgba(0,0,0,0.05)'
631
+ };
632
+ var variants = ['primary', 'secondary', 'success', 'danger', 'warning', 'info'];
633
+ variants.forEach(function(v) {
634
+ rules[scopeSelector(scope, '.bw-toast-' + v)] = {
635
+ 'border-left': '4px solid ' + palette[v].base
636
+ };
637
+ });
638
+ return rules;
639
+ }
640
+
641
+ function generateDropdownThemed(scope, palette) {
642
+ var rules = {};
643
+ rules[scopeSelector(scope, '.bw-dropdown-menu')] = {
644
+ 'background-color': '#fff',
645
+ 'border-color': palette.light.border,
646
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)'
647
+ };
648
+ rules[scopeSelector(scope, '.bw-dropdown-item')] = {
649
+ 'color': palette.dark.base
650
+ };
651
+ rules[scopeSelector(scope, '.bw-dropdown-item:hover')] = {
652
+ 'color': palette.dark.hover,
653
+ 'background-color': palette.light.light
654
+ };
655
+ rules[scopeSelector(scope, '.bw-dropdown-item.disabled')] = {
656
+ 'color': palette.secondary.base
657
+ };
658
+ rules[scopeSelector(scope, '.bw-dropdown-divider')] = {
659
+ 'border-top-color': palette.light.border
660
+ };
661
+ return rules;
662
+ }
663
+
664
+ function generateSwitchThemed(scope, palette) {
665
+ var rules = {};
666
+ rules[scopeSelector(scope, '.bw-form-switch .bw-switch-input')] = {
667
+ 'background-color': palette.secondary.base,
668
+ 'border-color': palette.secondary.base
669
+ };
670
+ rules[scopeSelector(scope, '.bw-form-switch .bw-switch-input:checked')] = {
671
+ 'background-color': palette.primary.base,
672
+ 'border-color': palette.primary.base
673
+ };
674
+ rules[scopeSelector(scope, '.bw-form-switch .bw-switch-input:focus')] = {
675
+ 'box-shadow': '0 0 0 0.25rem ' + palette.primary.focus
676
+ };
677
+ return rules;
678
+ }
679
+
680
+ function generateSkeletonThemed(scope, palette) {
681
+ var rules = {};
682
+ rules[scopeSelector(scope, '.bw-skeleton')] = {
683
+ 'background': 'linear-gradient(90deg, ' + palette.light.border + ' 25%, ' + palette.light.light + ' 37%, ' + palette.light.border + ' 63%)'
684
+ };
685
+ return rules;
686
+ }
687
+
688
+ function generateAvatarThemed(scope, palette) {
689
+ var rules = {};
690
+ var variants = ['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark'];
691
+ variants.forEach(function(v) {
692
+ rules[scopeSelector(scope, '.bw-avatar-' + v)] = {
693
+ 'background-color': palette[v].base,
694
+ 'color': palette[v].textOn
695
+ };
696
+ });
697
+ return rules;
698
+ }
699
+
564
700
  /**
565
701
  * Generate all themed CSS rules from a palette and layout.
566
702
  * Returns a flat CSS rules object (selector → declarations).
@@ -590,6 +726,14 @@ export function generateThemedCSS(scopeName, palette, layout) {
590
726
  generateSpinnerThemed(scopeName, palette),
591
727
  generateCloseButtonThemed(scopeName, palette),
592
728
  generateSectionsThemed(scopeName, palette),
729
+ generateAccordionThemed(scopeName, palette),
730
+ generateCarouselThemed(scopeName, palette),
731
+ generateModalThemed(scopeName, palette),
732
+ generateToastThemed(scopeName, palette),
733
+ generateDropdownThemed(scopeName, palette),
734
+ generateSwitchThemed(scopeName, palette),
735
+ generateSkeletonThemed(scopeName, palette),
736
+ generateAvatarThemed(scopeName, palette),
593
737
  generateUtilityColors(scopeName, palette)
594
738
  );
595
739
  }
@@ -733,7 +877,7 @@ export const defaultStyles = {
733
877
  'font-weight': '600',
734
878
  'line-height': '1.25',
735
879
  'letter-spacing': '-0.01em',
736
- 'color': '#1a1a1a'
880
+ 'color': 'inherit'
737
881
  },
738
882
  'h1': {
739
883
  'font-size': 'calc(1.375rem + 1.5vw)'
@@ -1229,7 +1373,7 @@ export const defaultStyles = {
1229
1373
  'background-color': '#fafafa',
1230
1374
  'border-bottom': '1px solid #e5e5e5'
1231
1375
  },
1232
- '.bw-navbar > .container': {
1376
+ '.bw-navbar > .bw-container, .bw-navbar > .container': {
1233
1377
  'display': 'flex',
1234
1378
  'flex-wrap': 'wrap',
1235
1379
  'align-items': 'center',
@@ -1331,10 +1475,10 @@ export const defaultStyles = {
1331
1475
  'background-color': '#f8f8f8'
1332
1476
  },
1333
1477
  '.bw-table-striped > tbody > tr:nth-of-type(odd) > *': {
1334
- 'background-color': 'rgba(0, 0, 0, 0.025)'
1478
+ 'background-color': 'rgba(0, 0, 0, 0.05)'
1335
1479
  },
1336
1480
  '.bw-table-hover > tbody > tr:hover > *': {
1337
- 'background-color': 'rgba(0, 102, 102, 0.05)'
1481
+ 'background-color': 'rgba(0, 102, 102, 0.1)'
1338
1482
  },
1339
1483
  '.bw-table-bordered': {
1340
1484
  'border': '1px solid #e0e0e0'
@@ -1451,10 +1595,10 @@ export const defaultStyles = {
1451
1595
  badges: {
1452
1596
  '.bw-badge': {
1453
1597
  'display': 'inline-block',
1454
- 'padding': '.35em .65em',
1455
- 'font-size': '.75em',
1456
- 'font-weight': '700',
1457
- 'line-height': '1',
1598
+ 'padding': '.4em .75em',
1599
+ 'font-size': '.875em',
1600
+ 'font-weight': '600',
1601
+ 'line-height': '1.3',
1458
1602
  'color': '#fff',
1459
1603
  'text-align': 'center',
1460
1604
  'white-space': 'nowrap',
@@ -1464,6 +1608,14 @@ export const defaultStyles = {
1464
1608
  '.bw-badge:empty': {
1465
1609
  'display': 'none'
1466
1610
  },
1611
+ '.bw-badge-sm': {
1612
+ 'font-size': '.75em',
1613
+ 'padding': '.25em .5em'
1614
+ },
1615
+ '.bw-badge-lg': {
1616
+ 'font-size': '1em',
1617
+ 'padding': '.5em .9em'
1618
+ },
1467
1619
  '.bw-badge-pill': {
1468
1620
  'border-radius': '50rem'
1469
1621
  },
@@ -1617,6 +1769,18 @@ export const defaultStyles = {
1617
1769
  },
1618
1770
  '.bw-tab-pane.active': {
1619
1771
  'display': 'block'
1772
+ },
1773
+ '.bw-nav-scrollable': {
1774
+ 'flex-wrap': 'nowrap',
1775
+ 'overflow-x': 'auto',
1776
+ '-webkit-overflow-scrolling': 'touch',
1777
+ 'scrollbar-width': 'none'
1778
+ },
1779
+ '.bw-nav-scrollable::-webkit-scrollbar': {
1780
+ 'display': 'none'
1781
+ },
1782
+ '.bw-nav-scrollable .bw-nav-link': {
1783
+ 'white-space': 'nowrap'
1620
1784
  }
1621
1785
  },
1622
1786
 
@@ -1814,7 +1978,11 @@ export const defaultStyles = {
1814
1978
  },
1815
1979
  '.bw-hero-title': {
1816
1980
  'font-weight': '300',
1817
- 'letter-spacing': '-0.05rem'
1981
+ 'letter-spacing': '-0.05rem',
1982
+ 'color': 'inherit'
1983
+ },
1984
+ '.bw-hero-subtitle': {
1985
+ 'color': 'inherit'
1818
1986
  },
1819
1987
  '.bw-display-4': {
1820
1988
  'font-size': 'calc(1.475rem + 2.7vw)',
@@ -1957,7 +2125,7 @@ export const defaultStyles = {
1957
2125
  },
1958
2126
  '.bw-cta-description': {
1959
2127
  'font-size': '1.125rem',
1960
- 'color': '#6c757d',
2128
+ 'color': '#555b62',
1961
2129
  'max-width': '36rem',
1962
2130
  'margin-left': 'auto',
1963
2131
  'margin-right': 'auto'
@@ -2171,9 +2339,607 @@ export const defaultStyles = {
2171
2339
  '.bw-copy-btn:hover': {
2172
2340
  'background': 'rgba(255,255,255,0.2)',
2173
2341
  'color': '#fff'
2342
+ },
2343
+ '.bw-code-pre': {
2344
+ 'margin': '0',
2345
+ 'background': '#1e293b',
2346
+ 'border': 'none',
2347
+ 'border-radius': '6px',
2348
+ 'overflow-x': 'auto'
2349
+ },
2350
+ '.bw-code-block': {
2351
+ 'display': 'block',
2352
+ 'padding': '1.25rem',
2353
+ 'font-family': '"SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace',
2354
+ 'font-size': '0.8125rem',
2355
+ 'line-height': '1.6',
2356
+ 'color': '#e2e8f0'
2357
+ },
2358
+ '.bw-code-copy-btn': {
2359
+ 'position': 'absolute',
2360
+ 'top': '0.5rem',
2361
+ 'right': '0.5rem',
2362
+ 'padding': '0.25rem 0.625rem',
2363
+ 'font-size': '0.6875rem',
2364
+ 'background': 'rgba(255,255,255,0.12)',
2365
+ 'color': '#aaa',
2366
+ 'border': '1px solid rgba(255,255,255,0.15)',
2367
+ 'border-radius': '4px',
2368
+ 'cursor': 'pointer',
2369
+ 'font-family': 'inherit',
2370
+ 'transition': 'all 0.15s'
2371
+ }
2372
+ },
2373
+
2374
+ /**
2375
+ * Button group styles
2376
+ */
2377
+ buttonGroup: {
2378
+ '.bw-btn-group, .bw-btn-group-vertical': {
2379
+ 'position': 'relative',
2380
+ 'display': 'inline-flex',
2381
+ 'vertical-align': 'middle'
2382
+ },
2383
+ '.bw-btn-group > .bw-btn, .bw-btn-group-vertical > .bw-btn': {
2384
+ 'position': 'relative',
2385
+ 'flex': '1 1 auto',
2386
+ 'border-radius': '0',
2387
+ 'margin-left': '-1px'
2388
+ },
2389
+ '.bw-btn-group > .bw-btn:first-child': {
2390
+ 'margin-left': '0',
2391
+ 'border-top-left-radius': '6px',
2392
+ 'border-bottom-left-radius': '6px'
2393
+ },
2394
+ '.bw-btn-group > .bw-btn:last-child': {
2395
+ 'border-top-right-radius': '6px',
2396
+ 'border-bottom-right-radius': '6px'
2397
+ },
2398
+ '.bw-btn-group-vertical': {
2399
+ 'flex-direction': 'column',
2400
+ 'align-items': 'flex-start',
2401
+ 'justify-content': 'center'
2402
+ },
2403
+ '.bw-btn-group-vertical > .bw-btn': {
2404
+ 'width': '100%',
2405
+ 'margin-left': '0',
2406
+ 'margin-top': '-1px'
2407
+ },
2408
+ '.bw-btn-group-vertical > .bw-btn:first-child': {
2409
+ 'margin-top': '0',
2410
+ 'border-top-left-radius': '6px',
2411
+ 'border-top-right-radius': '6px',
2412
+ 'border-bottom-left-radius': '0',
2413
+ 'border-bottom-right-radius': '0'
2414
+ },
2415
+ '.bw-btn-group-vertical > .bw-btn:last-child': {
2416
+ 'border-top-left-radius': '0',
2417
+ 'border-top-right-radius': '0',
2418
+ 'border-bottom-left-radius': '6px',
2419
+ 'border-bottom-right-radius': '6px'
2420
+ },
2421
+ '.bw-btn-group-sm > .bw-btn': {
2422
+ 'padding': '0.25rem 0.75rem',
2423
+ 'font-size': '0.8125rem'
2424
+ },
2425
+ '.bw-btn-group-lg > .bw-btn': {
2426
+ 'padding': '0.625rem 1.5rem',
2427
+ 'font-size': '1rem'
2428
+ }
2429
+ },
2430
+
2431
+ /**
2432
+ * Accordion collapse styles
2433
+ */
2434
+ accordion: {
2435
+ '.bw-accordion': {
2436
+ 'border-radius': '8px',
2437
+ 'overflow': 'hidden'
2438
+ },
2439
+ '.bw-accordion-item': {
2440
+ 'background-color': '#fff',
2441
+ 'border': '1px solid #d5d5d5'
2442
+ },
2443
+ '.bw-accordion-item + .bw-accordion-item': {
2444
+ 'border-top': '0'
2445
+ },
2446
+ '.bw-accordion-item:first-child': {
2447
+ 'border-top-left-radius': '8px',
2448
+ 'border-top-right-radius': '8px'
2449
+ },
2450
+ '.bw-accordion-item:last-child': {
2451
+ 'border-bottom-left-radius': '8px',
2452
+ 'border-bottom-right-radius': '8px'
2453
+ },
2454
+ '.bw-accordion-header': {
2455
+ 'margin': '0'
2456
+ },
2457
+ '.bw-accordion-button': {
2458
+ 'position': 'relative',
2459
+ 'display': 'flex',
2460
+ 'align-items': 'center',
2461
+ 'width': '100%',
2462
+ 'padding': '1rem 1.25rem',
2463
+ 'font-size': '1rem',
2464
+ 'font-weight': '500',
2465
+ 'color': '#1a1a1a',
2466
+ 'text-align': 'left',
2467
+ 'background-color': 'transparent',
2468
+ 'border': '0',
2469
+ 'overflow-anchor': 'none',
2470
+ 'cursor': 'pointer',
2471
+ 'font-family': 'inherit',
2472
+ 'transition': 'color 0.15s ease-in-out, background-color 0.15s ease-in-out'
2473
+ },
2474
+ '.bw-accordion-button::after': {
2475
+ 'flex-shrink': '0',
2476
+ 'width': '1.25rem',
2477
+ 'height': '1.25rem',
2478
+ 'margin-left': 'auto',
2479
+ 'content': '""',
2480
+ 'background-image': "url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")",
2481
+ 'background-repeat': 'no-repeat',
2482
+ 'background-size': '1.25rem',
2483
+ 'transition': 'transform 0.2s ease-in-out'
2484
+ },
2485
+ // Expanded header: tinted background + darker text (Bootstrap pattern)
2486
+ '.bw-accordion-button:not(.bw-collapsed)': {
2487
+ 'color': '#0a5868',
2488
+ 'background-color': '#e8f6f8'
2489
+ },
2490
+ '.bw-accordion-button:not(.bw-collapsed)::after': {
2491
+ 'transform': 'rotate(-180deg)',
2492
+ 'background-image': "url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230a5868'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")"
2493
+ },
2494
+ '.bw-accordion-button:hover': {
2495
+ 'background-color': 'rgba(0,0,0,0.03)'
2496
+ },
2497
+ '.bw-accordion-button:not(.bw-collapsed):hover': {
2498
+ 'background-color': '#daf0f3'
2499
+ },
2500
+ '.bw-accordion-button:focus-visible': {
2501
+ 'z-index': '3',
2502
+ 'outline': '0',
2503
+ 'box-shadow': '0 0 0 0.2rem rgba(10, 88, 104, 0.25)'
2504
+ },
2505
+ '.bw-accordion-collapse': {
2506
+ 'max-height': '0',
2507
+ 'overflow': 'hidden',
2508
+ 'transition': 'max-height 0.3s ease'
2509
+ },
2510
+ '.bw-accordion-collapse.bw-collapse-show': {
2511
+ 'max-height': 'none'
2512
+ },
2513
+ '.bw-accordion-body': {
2514
+ 'padding': '1rem 1.25rem',
2515
+ 'border-top': '1px solid #d5d5d5'
2516
+ }
2517
+ },
2518
+
2519
+ /**
2520
+ * Carousel/slideshow styles
2521
+ */
2522
+ carousel: {
2523
+ '.bw-carousel': {
2524
+ 'position': 'relative',
2525
+ 'overflow': 'hidden',
2526
+ 'border-radius': '8px',
2527
+ 'background-color': '#f0f0f0'
2528
+ },
2529
+ '.bw-carousel-track': {
2530
+ 'display': 'flex',
2531
+ 'transition': 'transform 0.4s ease',
2532
+ 'height': '100%'
2533
+ },
2534
+ '.bw-carousel-slide': {
2535
+ 'min-width': '100%',
2536
+ 'flex-shrink': '0',
2537
+ 'overflow': 'hidden',
2538
+ 'position': 'relative',
2539
+ 'display': 'flex',
2540
+ 'align-items': 'center',
2541
+ 'justify-content': 'center'
2542
+ },
2543
+ '.bw-carousel-slide img': {
2544
+ 'width': '100%',
2545
+ 'height': '100%',
2546
+ 'object-fit': 'cover'
2547
+ },
2548
+ '.bw-carousel-caption': {
2549
+ 'position': 'absolute',
2550
+ 'bottom': '0',
2551
+ 'left': '0',
2552
+ 'right': '0',
2553
+ 'padding': '0.75rem 1rem',
2554
+ 'background': 'linear-gradient(transparent, rgba(0,0,0,0.6))',
2555
+ 'color': '#fff',
2556
+ 'font-size': '0.9rem'
2557
+ },
2558
+ '.bw-carousel-control': {
2559
+ 'position': 'absolute',
2560
+ 'top': '50%',
2561
+ 'transform': 'translateY(-50%)',
2562
+ 'width': '40px',
2563
+ 'height': '40px',
2564
+ 'border': 'none',
2565
+ 'border-radius': '50%',
2566
+ 'background-color': 'rgba(0,0,0,0.4)',
2567
+ 'cursor': 'pointer',
2568
+ 'display': 'flex',
2569
+ 'align-items': 'center',
2570
+ 'justify-content': 'center',
2571
+ 'z-index': '2',
2572
+ 'padding': '0',
2573
+ 'transition': 'background-color 0.2s ease'
2574
+ },
2575
+ '.bw-carousel-control:hover': {
2576
+ 'background-color': 'rgba(0,0,0,0.6)'
2577
+ },
2578
+ '.bw-carousel-control img': {
2579
+ 'width': '20px',
2580
+ 'height': '20px',
2581
+ 'pointer-events': 'none'
2582
+ },
2583
+ '.bw-carousel-control-prev': {
2584
+ 'left': '10px'
2585
+ },
2586
+ '.bw-carousel-control-next': {
2587
+ 'right': '10px'
2588
+ },
2589
+ '.bw-carousel-indicators': {
2590
+ 'position': 'absolute',
2591
+ 'bottom': '12px',
2592
+ 'left': '50%',
2593
+ 'transform': 'translateX(-50%)',
2594
+ 'display': 'flex',
2595
+ 'gap': '6px',
2596
+ 'z-index': '2'
2597
+ },
2598
+ '.bw-carousel-indicator': {
2599
+ 'width': '10px',
2600
+ 'height': '10px',
2601
+ 'border-radius': '50%',
2602
+ 'border': '2px solid #fff',
2603
+ 'background-color': 'transparent',
2604
+ 'opacity': '0.6',
2605
+ 'cursor': 'pointer',
2606
+ 'padding': '0',
2607
+ 'transition': 'opacity 0.2s ease, background-color 0.2s ease'
2608
+ },
2609
+ '.bw-carousel-indicator:hover': {
2610
+ 'opacity': '0.8'
2611
+ },
2612
+ '.bw-carousel-indicator.active': {
2613
+ 'opacity': '1',
2614
+ 'background-color': '#fff'
2615
+ }
2616
+ },
2617
+
2618
+ /**
2619
+ * Modal dialog styles
2620
+ */
2621
+ modal: {
2622
+ '.bw-modal': {
2623
+ 'display': 'none',
2624
+ 'position': 'fixed',
2625
+ 'top': '0',
2626
+ 'left': '0',
2627
+ 'width': '100%',
2628
+ 'height': '100%',
2629
+ 'z-index': '1050',
2630
+ 'background-color': 'rgba(0,0,0,0.5)',
2631
+ 'overflow-x': 'hidden',
2632
+ 'overflow-y': 'auto',
2633
+ 'opacity': '0',
2634
+ 'transition': 'opacity 0.15s linear'
2635
+ },
2636
+ '.bw-modal.bw-modal-show': {
2637
+ 'display': 'flex',
2638
+ 'align-items': 'center',
2639
+ 'justify-content': 'center',
2640
+ 'opacity': '1'
2641
+ },
2642
+ '.bw-modal-dialog': {
2643
+ 'position': 'relative',
2644
+ 'width': '100%',
2645
+ 'max-width': '500px',
2646
+ 'margin': '1.75rem auto',
2647
+ 'pointer-events': 'none',
2648
+ 'transform': 'translateY(-20px)',
2649
+ 'transition': 'transform 0.2s ease-out'
2650
+ },
2651
+ '.bw-modal.bw-modal-show .bw-modal-dialog': {
2652
+ 'transform': 'translateY(0)'
2653
+ },
2654
+ '.bw-modal-sm': { 'max-width': '300px' },
2655
+ '.bw-modal-lg': { 'max-width': '800px' },
2656
+ '.bw-modal-xl': { 'max-width': '1140px' },
2657
+ '.bw-modal-content': {
2658
+ 'position': 'relative',
2659
+ 'display': 'flex',
2660
+ 'flex-direction': 'column',
2661
+ 'pointer-events': 'auto',
2662
+ 'background-color': '#fff',
2663
+ 'background-clip': 'padding-box',
2664
+ 'border': '1px solid rgba(0,0,0,0.2)',
2665
+ 'border-radius': '8px',
2666
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)',
2667
+ 'outline': '0'
2668
+ },
2669
+ '.bw-modal-header': {
2670
+ 'display': 'flex',
2671
+ 'align-items': 'center',
2672
+ 'justify-content': 'space-between',
2673
+ 'padding': '1rem 1.5rem',
2674
+ 'border-bottom': '1px solid #e5e5e5'
2675
+ },
2676
+ '.bw-modal-title': {
2677
+ 'margin': '0',
2678
+ 'font-size': '1.25rem',
2679
+ 'font-weight': '600',
2680
+ 'line-height': '1.3'
2681
+ },
2682
+ '.bw-modal-body': {
2683
+ 'position': 'relative',
2684
+ 'flex': '1 1 auto',
2685
+ 'padding': '1.5rem'
2686
+ },
2687
+ '.bw-modal-footer': {
2688
+ 'display': 'flex',
2689
+ 'flex-wrap': 'wrap',
2690
+ 'align-items': 'center',
2691
+ 'justify-content': 'flex-end',
2692
+ 'padding': '0.75rem 1.5rem',
2693
+ 'border-top': '1px solid #e5e5e5',
2694
+ 'gap': '0.5rem'
2695
+ }
2696
+ },
2697
+
2698
+ /**
2699
+ * Toast notification styles
2700
+ */
2701
+ toast: {
2702
+ '.bw-toast-container': {
2703
+ 'position': 'fixed',
2704
+ 'z-index': '1080',
2705
+ 'pointer-events': 'none',
2706
+ 'display': 'flex',
2707
+ 'flex-direction': 'column',
2708
+ 'gap': '0.5rem',
2709
+ 'padding': '1rem'
2710
+ },
2711
+ '.bw-toast-container.bw-toast-top-right': { 'top': '0', 'right': '0' },
2712
+ '.bw-toast-container.bw-toast-top-left': { 'top': '0', 'left': '0' },
2713
+ '.bw-toast-container.bw-toast-bottom-right': { 'bottom': '0', 'right': '0' },
2714
+ '.bw-toast-container.bw-toast-bottom-left': { 'bottom': '0', 'left': '0' },
2715
+ '.bw-toast-container.bw-toast-top-center': { 'top': '0', 'left': '50%', 'transform': 'translateX(-50%)' },
2716
+ '.bw-toast-container.bw-toast-bottom-center': { 'bottom': '0', 'left': '50%', 'transform': 'translateX(-50%)' },
2717
+ '.bw-toast': {
2718
+ 'pointer-events': 'auto',
2719
+ 'width': '350px',
2720
+ 'max-width': '100%',
2721
+ 'background-color': '#fff',
2722
+ 'background-clip': 'padding-box',
2723
+ 'border': '1px solid rgba(0,0,0,0.1)',
2724
+ 'border-radius': '8px',
2725
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)',
2726
+ 'opacity': '0',
2727
+ 'transform': 'translateY(-10px)',
2728
+ 'transition': 'opacity 0.3s ease, transform 0.3s ease'
2729
+ },
2730
+ '.bw-toast.bw-toast-show': {
2731
+ 'opacity': '1',
2732
+ 'transform': 'translateY(0)'
2733
+ },
2734
+ '.bw-toast.bw-toast-hiding': {
2735
+ 'opacity': '0',
2736
+ 'transform': 'translateY(-10px)'
2737
+ },
2738
+ '.bw-toast-header': {
2739
+ 'display': 'flex',
2740
+ 'align-items': 'center',
2741
+ 'justify-content': 'space-between',
2742
+ 'padding': '0.5rem 0.75rem',
2743
+ 'border-bottom': '1px solid rgba(0,0,0,0.05)',
2744
+ 'font-size': '0.875rem'
2745
+ },
2746
+ '.bw-toast-body': {
2747
+ 'padding': '0.75rem',
2748
+ 'font-size': '0.9375rem'
2749
+ },
2750
+ '.bw-toast-primary': { 'border-left': '4px solid #006666' },
2751
+ '.bw-toast-secondary': { 'border-left': '4px solid #6c757d' },
2752
+ '.bw-toast-success': { 'border-left': '4px solid #198754' },
2753
+ '.bw-toast-danger': { 'border-left': '4px solid #dc3545' },
2754
+ '.bw-toast-warning': { 'border-left': '4px solid #ffc107' },
2755
+ '.bw-toast-info': { 'border-left': '4px solid #0dcaf0' }
2756
+ },
2757
+
2758
+ /**
2759
+ * Dropdown menu styles
2760
+ */
2761
+ dropdown: {
2762
+ '.bw-dropdown': {
2763
+ 'position': 'relative',
2764
+ 'display': 'inline-block'
2765
+ },
2766
+ '.bw-dropdown-toggle::after': {
2767
+ 'display': 'inline-block',
2768
+ 'margin-left': '0.255em',
2769
+ 'vertical-align': '0.255em',
2770
+ 'content': '""',
2771
+ 'border-top': '0.3em solid',
2772
+ 'border-right': '0.3em solid transparent',
2773
+ 'border-bottom': '0',
2774
+ 'border-left': '0.3em solid transparent'
2775
+ },
2776
+ '.bw-dropdown-menu': {
2777
+ 'position': 'absolute',
2778
+ 'top': '100%',
2779
+ 'left': '0',
2780
+ 'z-index': '1000',
2781
+ 'display': 'none',
2782
+ 'min-width': '10rem',
2783
+ 'padding': '0.5rem 0',
2784
+ 'margin': '0.125rem 0 0',
2785
+ 'background-color': '#fff',
2786
+ 'background-clip': 'padding-box',
2787
+ 'border': '1px solid rgba(0,0,0,0.15)',
2788
+ 'border-radius': '6px',
2789
+ 'box-shadow': '0 0.5rem 1rem rgba(0,0,0,0.15)'
2790
+ },
2791
+ '.bw-dropdown-menu.bw-dropdown-show': {
2792
+ 'display': 'block'
2793
+ },
2794
+ '.bw-dropdown-menu-end': {
2795
+ 'left': 'auto',
2796
+ 'right': '0'
2797
+ },
2798
+ '.bw-dropdown-item': {
2799
+ 'display': 'block',
2800
+ 'width': '100%',
2801
+ 'padding': '0.375rem 1rem',
2802
+ 'clear': 'both',
2803
+ 'font-weight': '400',
2804
+ 'color': '#212529',
2805
+ 'text-align': 'inherit',
2806
+ 'text-decoration': 'none',
2807
+ 'white-space': 'nowrap',
2808
+ 'background-color': 'transparent',
2809
+ 'border': '0',
2810
+ 'font-size': '0.9375rem',
2811
+ 'transition': 'background-color 0.15s, color 0.15s'
2812
+ },
2813
+ '.bw-dropdown-item:hover': {
2814
+ 'color': '#1e2125',
2815
+ 'background-color': '#f8f9fa'
2816
+ },
2817
+ '.bw-dropdown-item.disabled': {
2818
+ 'color': '#adb5bd',
2819
+ 'pointer-events': 'none',
2820
+ 'background-color': 'transparent'
2821
+ },
2822
+ '.bw-dropdown-divider': {
2823
+ 'height': '0',
2824
+ 'margin': '0.5rem 0',
2825
+ 'overflow': 'hidden',
2826
+ 'border-top': '1px solid #e9ecef',
2827
+ 'opacity': '1'
2174
2828
  }
2175
2829
  },
2176
2830
 
2831
+ /**
2832
+ * Toggle switch styles
2833
+ */
2834
+ formSwitch: {
2835
+ '.bw-form-switch': {
2836
+ 'padding-left': '2.5em'
2837
+ },
2838
+ '.bw-form-switch .bw-switch-input': {
2839
+ 'width': '2em',
2840
+ 'height': '1.125em',
2841
+ 'margin-left': '-2.5em',
2842
+ 'border-radius': '2em',
2843
+ 'appearance': 'none',
2844
+ 'background-color': '#adb5bd',
2845
+ 'border': '1px solid #adb5bd',
2846
+ 'background-image': "url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(255,255,255,1)'/%3e%3c/svg%3e\")",
2847
+ 'background-position': 'left center',
2848
+ 'background-repeat': 'no-repeat',
2849
+ 'background-size': 'contain',
2850
+ 'transition': 'background-position 0.15s ease-in-out, background-color 0.15s ease-in-out',
2851
+ 'cursor': 'pointer'
2852
+ },
2853
+ '.bw-form-switch .bw-switch-input:checked': {
2854
+ 'background-color': '#006666',
2855
+ 'border-color': '#006666',
2856
+ 'background-position': 'right center'
2857
+ },
2858
+ '.bw-form-switch .bw-switch-input:focus': {
2859
+ 'box-shadow': '0 0 0 0.25rem rgba(0, 102, 102, 0.25)',
2860
+ 'outline': '0'
2861
+ },
2862
+ '.bw-form-switch .bw-switch-input:disabled': {
2863
+ 'opacity': '0.5',
2864
+ 'cursor': 'not-allowed'
2865
+ }
2866
+ },
2867
+
2868
+ /**
2869
+ * Skeleton loading placeholder styles
2870
+ */
2871
+ skeleton: {
2872
+ '.bw-skeleton': {
2873
+ 'background': 'linear-gradient(90deg, #dde0e4 25%, #eceef1 37%, #dde0e4 63%)',
2874
+ 'background-size': '400% 100%',
2875
+ 'border-radius': '4px',
2876
+ 'animation': 'bw-skeleton-shimmer 1.4s ease infinite'
2877
+ },
2878
+ '.bw-skeleton-text': {
2879
+ 'height': '1em',
2880
+ 'margin-bottom': '0.5rem'
2881
+ },
2882
+ '.bw-skeleton-circle': {
2883
+ 'border-radius': '50%'
2884
+ },
2885
+ '.bw-skeleton-rect': {
2886
+ 'border-radius': '8px'
2887
+ },
2888
+ '.bw-skeleton-group': {
2889
+ 'display': 'flex',
2890
+ 'flex-direction': 'column'
2891
+ },
2892
+ '@keyframes bw-skeleton-shimmer': {
2893
+ '0%': { 'background-position': '100% 50%' },
2894
+ '100%': { 'background-position': '0 50%' }
2895
+ }
2896
+ },
2897
+
2898
+ /**
2899
+ * Avatar styles
2900
+ */
2901
+ avatar: {
2902
+ '.bw-avatar': {
2903
+ 'display': 'inline-flex',
2904
+ 'align-items': 'center',
2905
+ 'justify-content': 'center',
2906
+ 'border-radius': '50%',
2907
+ 'overflow': 'hidden',
2908
+ 'font-weight': '600',
2909
+ 'text-transform': 'uppercase',
2910
+ 'vertical-align': 'middle',
2911
+ 'object-fit': 'cover'
2912
+ },
2913
+ '.bw-avatar-sm': {
2914
+ 'width': '2rem',
2915
+ 'height': '2rem',
2916
+ 'font-size': '0.75rem'
2917
+ },
2918
+ '.bw-avatar-md': {
2919
+ 'width': '3rem',
2920
+ 'height': '3rem',
2921
+ 'font-size': '1rem'
2922
+ },
2923
+ '.bw-avatar-lg': {
2924
+ 'width': '4rem',
2925
+ 'height': '4rem',
2926
+ 'font-size': '1.25rem'
2927
+ },
2928
+ '.bw-avatar-xl': {
2929
+ 'width': '5rem',
2930
+ 'height': '5rem',
2931
+ 'font-size': '1.5rem'
2932
+ },
2933
+ '.bw-avatar-primary': { 'background-color': '#006666', 'color': '#fff' },
2934
+ '.bw-avatar-secondary': { 'background-color': '#6c757d', 'color': '#fff' },
2935
+ '.bw-avatar-success': { 'background-color': '#198754', 'color': '#fff' },
2936
+ '.bw-avatar-danger': { 'background-color': '#dc3545', 'color': '#fff' },
2937
+ '.bw-avatar-warning': { 'background-color': '#ffc107', 'color': '#000' },
2938
+ '.bw-avatar-info': { 'background-color': '#0dcaf0', 'color': '#000' },
2939
+ '.bw-avatar-light': { 'background-color': '#f8f9fa', 'color': '#212529' },
2940
+ '.bw-avatar-dark': { 'background-color': '#212529', 'color': '#fff' }
2941
+ },
2942
+
2177
2943
  /**
2178
2944
  * Utility classes
2179
2945
  */
@@ -2609,7 +3375,7 @@ export function getStructuralStyles() {
2609
3375
  'position': 'relative', 'display': 'flex', 'flex-wrap': 'wrap',
2610
3376
  'align-items': 'center', 'justify-content': 'space-between', 'padding': '0.5rem 1.5rem'
2611
3377
  };
2612
- rules['.bw-navbar > .container'] = { 'display': 'flex', 'flex-wrap': 'wrap', 'align-items': 'center', 'justify-content': 'space-between' };
3378
+ rules['.bw-navbar > .bw-container, .bw-navbar > .container'] = { 'display': 'flex', 'flex-wrap': 'wrap', 'align-items': 'center', 'justify-content': 'space-between' };
2613
3379
  rules['.bw-navbar-brand'] = {
2614
3380
  'display': 'inline-flex', 'align-items': 'center', 'gap': '0.5rem',
2615
3381
  'padding-top': '0.25rem', 'padding-bottom': '0.25rem', 'margin-right': '1.5rem',
@@ -2654,11 +3420,13 @@ export function getStructuralStyles() {
2654
3420
 
2655
3421
  // Badges (structural)
2656
3422
  rules['.bw-badge'] = {
2657
- 'display': 'inline-block', 'padding': '.35em .65em', 'font-size': '.75em',
2658
- 'font-weight': '700', 'line-height': '1', 'text-align': 'center',
3423
+ 'display': 'inline-block', 'padding': '.4em .75em', 'font-size': '.875em',
3424
+ 'font-weight': '600', 'line-height': '1.3', 'text-align': 'center',
2659
3425
  'white-space': 'nowrap', 'vertical-align': 'baseline', 'border-radius': '.375rem'
2660
3426
  };
2661
3427
  rules['.bw-badge:empty'] = { 'display': 'none' };
3428
+ rules['.bw-badge-sm'] = { 'font-size': '.75em', 'padding': '.25em .5em' };
3429
+ rules['.bw-badge-lg'] = { 'font-size': '1em', 'padding': '.5em .9em' };
2662
3430
  rules['.bw-badge-pill'] = { 'border-radius': '50rem' };
2663
3431
 
2664
3432
  // Progress (structural)
@@ -2691,6 +3459,8 @@ export function getStructuralStyles() {
2691
3459
  rules['.bw-tab-content'] = { 'padding': '1.25rem 0' };
2692
3460
  rules['.bw-tab-pane'] = { 'display': 'none' };
2693
3461
  rules['.bw-tab-pane.active'] = { 'display': 'block' };
3462
+ rules['.bw-nav-scrollable'] = { 'flex-wrap': 'nowrap', 'overflow-x': 'auto', '-webkit-overflow-scrolling': 'touch', 'scrollbar-width': 'none' };
3463
+ rules['.bw-nav-scrollable .bw-nav-link'] = { 'white-space': 'nowrap' };
2694
3464
 
2695
3465
  // List groups (structural)
2696
3466
  rules['.bw-list-group'] = { 'display': 'flex', 'flex-direction': 'column', 'padding-left': '0', 'margin-bottom': '0', 'border-radius': '0.375rem' };
@@ -2725,7 +3495,8 @@ export function getStructuralStyles() {
2725
3495
  rules['.bw-hero'] = { 'position': 'relative', 'overflow': 'hidden' };
2726
3496
  rules['.bw-hero-overlay'] = { 'position': 'absolute', 'top': '0', 'left': '0', 'right': '0', 'bottom': '0', 'z-index': '1' };
2727
3497
  rules['.bw-hero-content'] = { 'position': 'relative', 'z-index': '2' };
2728
- rules['.bw-hero-title'] = { 'font-weight': '300', 'letter-spacing': '-0.05rem' };
3498
+ rules['.bw-hero-title'] = { 'font-weight': '300', 'letter-spacing': '-0.05rem', 'color': 'inherit' };
3499
+ rules['.bw-hero-subtitle'] = { 'color': 'inherit' };
2729
3500
  rules['.bw-hero-actions'] = { 'display': 'flex', 'gap': '1rem', 'justify-content': 'center', 'flex-wrap': 'wrap' };
2730
3501
  rules['.bw-display-4'] = { 'font-size': 'calc(1.475rem + 2.7vw)', 'font-weight': '300', 'line-height': '1.2' };
2731
3502
  rules['.bw-lead'] = { 'font-size': '1.25rem', 'font-weight': '300' };
@@ -2798,6 +3569,179 @@ export function getStructuralStyles() {
2798
3569
 
2799
3570
  // Code demo (structural)
2800
3571
  rules['.bw-code-demo'] = { 'margin-bottom': '2rem' };
3572
+ rules['.bw-code-pre'] = { 'margin': '0', 'border': 'none', 'border-radius': '6px', 'overflow-x': 'auto' };
3573
+ rules['.bw-code-block'] = { 'display': 'block', 'padding': '1.25rem', 'font-family': '"SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace', 'font-size': '0.8125rem', 'line-height': '1.6' };
3574
+ rules['.bw-code-copy-btn'] = { 'position': 'absolute', 'top': '0.5rem', 'right': '0.5rem', 'padding': '0.25rem 0.625rem', 'font-size': '0.6875rem', 'border-radius': '4px', 'cursor': 'pointer', 'font-family': 'inherit', 'transition': 'all 0.15s' };
3575
+
3576
+ // Button group (structural)
3577
+ rules['.bw-btn-group, .bw-btn-group-vertical'] = { 'position': 'relative', 'display': 'inline-flex', 'vertical-align': 'middle' };
3578
+ rules['.bw-btn-group > .bw-btn, .bw-btn-group-vertical > .bw-btn'] = { 'position': 'relative', 'flex': '1 1 auto', 'border-radius': '0', 'margin-left': '-1px' };
3579
+ rules['.bw-btn-group > .bw-btn:first-child'] = { 'margin-left': '0', 'border-top-left-radius': '6px', 'border-bottom-left-radius': '6px' };
3580
+ rules['.bw-btn-group > .bw-btn:last-child'] = { 'border-top-right-radius': '6px', 'border-bottom-right-radius': '6px' };
3581
+ rules['.bw-btn-group-vertical'] = { 'flex-direction': 'column', 'align-items': 'flex-start', 'justify-content': 'center' };
3582
+ rules['.bw-btn-group-vertical > .bw-btn'] = { 'width': '100%', 'margin-left': '0', 'margin-top': '-1px' };
3583
+ rules['.bw-btn-group-vertical > .bw-btn:first-child'] = { 'margin-top': '0', 'border-top-left-radius': '6px', 'border-top-right-radius': '6px', 'border-bottom-left-radius': '0', 'border-bottom-right-radius': '0' };
3584
+ rules['.bw-btn-group-vertical > .bw-btn:last-child'] = { 'border-top-left-radius': '0', 'border-top-right-radius': '0', 'border-bottom-left-radius': '6px', 'border-bottom-right-radius': '6px' };
3585
+
3586
+ // Accordion (structural)
3587
+ rules['.bw-accordion'] = { 'border-radius': '8px', 'overflow': 'hidden' };
3588
+ rules['.bw-accordion-item'] = { 'border': '1px solid transparent' };
3589
+ rules['.bw-accordion-item + .bw-accordion-item'] = { 'border-top': '0' };
3590
+ rules['.bw-accordion-header'] = { 'margin': '0' };
3591
+ rules['.bw-accordion-button'] = {
3592
+ 'position': 'relative', 'display': 'flex', 'align-items': 'center', 'width': '100%',
3593
+ 'padding': '1rem 1.25rem', 'font-size': '1rem', 'font-weight': '500', 'text-align': 'left',
3594
+ 'background-color': 'transparent', 'border': '0', 'overflow-anchor': 'none', 'cursor': 'pointer',
3595
+ 'font-family': 'inherit', 'transition': 'color 0.15s ease-in-out, background-color 0.15s ease-in-out'
3596
+ };
3597
+ rules['.bw-accordion-button::after'] = {
3598
+ 'flex-shrink': '0', 'width': '1.25rem', 'height': '1.25rem', 'margin-left': 'auto',
3599
+ 'content': '""', 'background-repeat': 'no-repeat', 'background-size': '1.25rem',
3600
+ 'transition': 'transform 0.2s ease-in-out'
3601
+ };
3602
+ rules['.bw-accordion-button:not(.bw-collapsed)::after'] = { 'transform': 'rotate(-180deg)' };
3603
+ rules['.bw-accordion-collapse'] = { 'max-height': '0', 'overflow': 'hidden', 'transition': 'max-height 0.3s ease' };
3604
+ rules['.bw-accordion-collapse.bw-collapse-show'] = { 'max-height': 'none' };
3605
+ rules['.bw-accordion-body'] = { 'padding': '1rem 1.25rem' };
3606
+
3607
+ // Modal (structural)
3608
+ rules['.bw-modal'] = {
3609
+ 'display': 'none', 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%',
3610
+ 'z-index': '1050', 'overflow-x': 'hidden', 'overflow-y': 'auto', 'opacity': '0', 'transition': 'opacity 0.15s linear'
3611
+ };
3612
+ rules['.bw-modal.bw-modal-show'] = { 'display': 'flex', 'align-items': 'center', 'justify-content': 'center', 'opacity': '1' };
3613
+ rules['.bw-modal-dialog'] = {
3614
+ 'position': 'relative', 'width': '100%', 'max-width': '500px', 'margin': '1.75rem auto',
3615
+ 'pointer-events': 'none', 'transform': 'translateY(-20px)', 'transition': 'transform 0.2s ease-out'
3616
+ };
3617
+ rules['.bw-modal.bw-modal-show .bw-modal-dialog'] = { 'transform': 'translateY(0)' };
3618
+ rules['.bw-modal-sm'] = { 'max-width': '300px' };
3619
+ rules['.bw-modal-lg'] = { 'max-width': '800px' };
3620
+ rules['.bw-modal-xl'] = { 'max-width': '1140px' };
3621
+ rules['.bw-modal-content'] = {
3622
+ 'position': 'relative', 'display': 'flex', 'flex-direction': 'column', 'pointer-events': 'auto',
3623
+ 'background-clip': 'padding-box', 'border': '1px solid transparent', 'border-radius': '8px', 'outline': '0'
3624
+ };
3625
+ rules['.bw-modal-header'] = { 'display': 'flex', 'align-items': 'center', 'justify-content': 'space-between', 'padding': '1rem 1.5rem' };
3626
+ rules['.bw-modal-title'] = { 'margin': '0', 'font-size': '1.25rem', 'font-weight': '600', 'line-height': '1.3' };
3627
+ rules['.bw-modal-body'] = { 'position': 'relative', 'flex': '1 1 auto', 'padding': '1.5rem' };
3628
+ rules['.bw-modal-footer'] = { 'display': 'flex', 'flex-wrap': 'wrap', 'align-items': 'center', 'justify-content': 'flex-end', 'padding': '0.75rem 1.5rem', 'gap': '0.5rem' };
3629
+
3630
+ // Carousel (structural)
3631
+ rules['.bw-carousel'] = { 'position': 'relative', 'overflow': 'hidden', 'border-radius': '8px' };
3632
+ rules['.bw-carousel-track'] = { 'display': 'flex', 'transition': 'transform 0.4s ease', 'height': '100%' };
3633
+ rules['.bw-carousel-slide'] = { 'min-width': '100%', 'flex-shrink': '0', 'overflow': 'hidden', 'position': 'relative', 'display': 'flex', 'align-items': 'center', 'justify-content': 'center' };
3634
+ rules['.bw-carousel-slide img'] = { 'width': '100%', 'height': '100%', 'object-fit': 'cover' };
3635
+ rules['.bw-carousel-caption'] = { 'position': 'absolute', 'bottom': '0', 'left': '0', 'right': '0', 'padding': '0.75rem 1rem' };
3636
+ rules['.bw-carousel-control'] = {
3637
+ 'position': 'absolute', 'top': '50%', 'transform': 'translateY(-50%)', 'width': '40px', 'height': '40px',
3638
+ 'border': 'none', 'border-radius': '50%', 'cursor': 'pointer', 'display': 'flex', 'align-items': 'center',
3639
+ 'justify-content': 'center', 'z-index': '2', 'padding': '0', 'transition': 'background-color 0.2s ease'
3640
+ };
3641
+ rules['.bw-carousel-control img'] = { 'width': '20px', 'height': '20px', 'pointer-events': 'none' };
3642
+ rules['.bw-carousel-control-prev'] = { 'left': '10px' };
3643
+ rules['.bw-carousel-control-next'] = { 'right': '10px' };
3644
+ rules['.bw-carousel-indicators'] = {
3645
+ 'position': 'absolute', 'bottom': '12px', 'left': '50%', 'transform': 'translateX(-50%)',
3646
+ 'display': 'flex', 'gap': '6px', 'z-index': '2'
3647
+ };
3648
+ rules['.bw-carousel-indicator'] = {
3649
+ 'width': '10px', 'height': '10px', 'border-radius': '50%', 'border': '2px solid transparent',
3650
+ 'padding': '0', 'cursor': 'pointer', 'transition': 'opacity 0.2s ease, background-color 0.2s ease'
3651
+ };
3652
+
3653
+ // Toast (structural)
3654
+ rules['.bw-toast-container'] = {
3655
+ 'position': 'fixed', 'z-index': '1080', 'pointer-events': 'none',
3656
+ 'display': 'flex', 'flex-direction': 'column', 'gap': '0.5rem', 'padding': '1rem'
3657
+ };
3658
+ rules['.bw-toast'] = {
3659
+ 'pointer-events': 'auto', 'width': '350px', 'max-width': '100%', 'background-clip': 'padding-box',
3660
+ 'border-radius': '8px', 'opacity': '0', 'transform': 'translateY(-10px)',
3661
+ 'transition': 'opacity 0.3s ease, transform 0.3s ease'
3662
+ };
3663
+ rules['.bw-toast.bw-toast-show'] = { 'opacity': '1', 'transform': 'translateY(0)' };
3664
+ rules['.bw-toast.bw-toast-hiding'] = { 'opacity': '0', 'transform': 'translateY(-10px)' };
3665
+ rules['.bw-toast-header'] = { 'display': 'flex', 'align-items': 'center', 'justify-content': 'space-between', 'padding': '0.5rem 0.75rem', 'font-size': '0.875rem' };
3666
+ rules['.bw-toast-body'] = { 'padding': '0.75rem', 'font-size': '0.9375rem' };
3667
+
3668
+ // Dropdown (structural)
3669
+ rules['.bw-dropdown'] = { 'position': 'relative', 'display': 'inline-block' };
3670
+ rules['.bw-dropdown-toggle::after'] = {
3671
+ 'display': 'inline-block', 'margin-left': '0.255em', 'vertical-align': '0.255em',
3672
+ 'content': '""', 'border-top': '0.3em solid', 'border-right': '0.3em solid transparent',
3673
+ 'border-bottom': '0', 'border-left': '0.3em solid transparent'
3674
+ };
3675
+ rules['.bw-dropdown-menu'] = {
3676
+ 'position': 'absolute', 'top': '100%', 'left': '0', 'z-index': '1000', 'display': 'none',
3677
+ 'min-width': '10rem', 'padding': '0.5rem 0', 'margin': '0.125rem 0 0',
3678
+ 'background-clip': 'padding-box', 'border-radius': '6px'
3679
+ };
3680
+ rules['.bw-dropdown-menu.bw-dropdown-show'] = { 'display': 'block' };
3681
+ rules['.bw-dropdown-menu-end'] = { 'left': 'auto', 'right': '0' };
3682
+ rules['.bw-dropdown-item'] = {
3683
+ 'display': 'block', 'width': '100%', 'padding': '0.375rem 1rem', 'clear': 'both',
3684
+ 'font-weight': '400', 'text-align': 'inherit', 'text-decoration': 'none', 'white-space': 'nowrap',
3685
+ 'background-color': 'transparent', 'border': '0', 'font-size': '0.9375rem',
3686
+ 'transition': 'background-color 0.15s, color 0.15s'
3687
+ };
3688
+ rules['.bw-dropdown-divider'] = { 'height': '0', 'margin': '0.5rem 0', 'overflow': 'hidden', 'opacity': '1' };
3689
+
3690
+ // Switch (structural)
3691
+ rules['.bw-form-switch'] = { 'padding-left': '2.5em' };
3692
+ rules['.bw-form-switch .bw-switch-input'] = {
3693
+ 'width': '2em', 'height': '1.125em', 'margin-left': '-2.5em', 'border-radius': '2em',
3694
+ 'appearance': 'none', 'background-position': 'left center', 'background-repeat': 'no-repeat',
3695
+ 'background-size': 'contain', 'transition': 'background-position 0.15s ease-in-out, background-color 0.15s ease-in-out',
3696
+ 'cursor': 'pointer'
3697
+ };
3698
+ rules['.bw-form-switch .bw-switch-input:checked'] = { 'background-position': 'right center' };
3699
+ rules['.bw-form-switch .bw-switch-input:disabled'] = { 'opacity': '0.5', 'cursor': 'not-allowed' };
3700
+
3701
+ // Skeleton (structural)
3702
+ rules['.bw-skeleton'] = { 'border-radius': '4px', 'background-size': '400% 100%', 'animation': 'bw-skeleton-shimmer 1.4s ease infinite' };
3703
+ rules['.bw-skeleton-text'] = { 'height': '1em', 'margin-bottom': '0.5rem' };
3704
+ rules['.bw-skeleton-circle'] = { 'border-radius': '50%' };
3705
+ rules['.bw-skeleton-rect'] = { 'border-radius': '8px' };
3706
+ rules['.bw-skeleton-group'] = { 'display': 'flex', 'flex-direction': 'column' };
3707
+ rules['@keyframes bw-skeleton-shimmer'] = { '0%': { 'background-position': '100% 50%' }, '100%': { 'background-position': '0 50%' } };
3708
+
3709
+ // Avatar (structural)
3710
+ rules['.bw-avatar'] = {
3711
+ 'display': 'inline-flex', 'align-items': 'center', 'justify-content': 'center',
3712
+ 'border-radius': '50%', 'overflow': 'hidden', 'font-weight': '600',
3713
+ 'text-transform': 'uppercase', 'vertical-align': 'middle', 'object-fit': 'cover'
3714
+ };
3715
+ rules['.bw-avatar-sm'] = { 'width': '2rem', 'height': '2rem', 'font-size': '0.75rem' };
3716
+ rules['.bw-avatar-md'] = { 'width': '3rem', 'height': '3rem', 'font-size': '1rem' };
3717
+ rules['.bw-avatar-lg'] = { 'width': '4rem', 'height': '4rem', 'font-size': '1.25rem' };
3718
+ rules['.bw-avatar-xl'] = { 'width': '5rem', 'height': '5rem', 'font-size': '1.5rem' };
3719
+
3720
+ // Bar chart (structural)
3721
+ rules['.bw-bar-chart-container'] = {
3722
+ 'padding': '1rem', 'border': '1px solid transparent', 'border-radius': '8px'
3723
+ };
3724
+ rules['.bw-bar-chart'] = {
3725
+ 'display': 'flex', 'align-items': 'flex-end', 'gap': '6px', 'padding': '0 0.5rem'
3726
+ };
3727
+ rules['.bw-bar-group'] = {
3728
+ 'flex': '1', 'display': 'flex', 'flex-direction': 'column',
3729
+ 'align-items': 'center', 'height': '100%', 'justify-content': 'flex-end'
3730
+ };
3731
+ rules['.bw-bar'] = {
3732
+ 'width': '100%', 'border-radius': '3px 3px 0 0',
3733
+ 'transition': 'height 0.5s ease', 'min-height': '4px'
3734
+ };
3735
+ rules['.bw-bar:hover'] = { 'opacity': '0.85' };
3736
+ rules['.bw-bar-value'] = {
3737
+ 'font-size': '0.65rem', 'font-weight': '600', 'margin-bottom': '2px', 'text-align': 'center'
3738
+ };
3739
+ rules['.bw-bar-label'] = {
3740
+ 'font-size': '0.7rem', 'margin-top': '4px', 'text-align': 'center'
3741
+ };
3742
+ rules['.bw-bar-chart-title'] = {
3743
+ 'font-size': '1.1rem', 'font-weight': '600', 'margin': '0 0 0.75rem 0'
3744
+ };
2801
3745
 
2802
3746
  // Spacing utilities (structural)
2803
3747
  var spacingValues = { '0': '0', '1': '.25rem', '2': '.5rem', '3': '1rem', '4': '1.5rem', '5': '3rem' };
@@ -2969,6 +3913,15 @@ export function getAllStyles() {
2969
3913
  defaultStyles.stacks,
2970
3914
  defaultStyles.offsets,
2971
3915
  defaultStyles.codeDemo,
3916
+ defaultStyles.buttonGroup,
3917
+ defaultStyles.accordion,
3918
+ defaultStyles.carousel,
3919
+ defaultStyles.modal,
3920
+ defaultStyles.toast,
3921
+ defaultStyles.dropdown,
3922
+ defaultStyles.formSwitch,
3923
+ defaultStyles.skeleton,
3924
+ defaultStyles.avatar,
2972
3925
  defaultStyles.utilities,
2973
3926
  defaultStyles.responsive
2974
3927
  );
@@ -3162,6 +4115,75 @@ export function generateDarkModeCSS(palette) {
3162
4115
  '.bw-dark .bw-close': {
3163
4116
  'color': textColor
3164
4117
  },
4118
+ '.bw-dark .bw-accordion-item': {
4119
+ 'background-color': surfaceBg,
4120
+ 'border-color': borderColor
4121
+ },
4122
+ '.bw-dark .bw-accordion-button': {
4123
+ 'color': textColor
4124
+ },
4125
+ '.bw-dark .bw-accordion-button:not(.bw-collapsed)': {
4126
+ 'color': '#7dd3e0',
4127
+ 'background-color': 'rgba(125, 211, 224, 0.1)'
4128
+ },
4129
+ '.bw-dark .bw-accordion-button:hover': {
4130
+ 'background-color': bodyBg
4131
+ },
4132
+ '.bw-dark .bw-accordion-button:not(.bw-collapsed):hover': {
4133
+ 'background-color': 'rgba(125, 211, 224, 0.15)'
4134
+ },
4135
+ '.bw-dark .bw-accordion-button:focus-visible': {
4136
+ 'box-shadow': '0 0 0 0.2rem rgba(125, 211, 224, 0.3)'
4137
+ },
4138
+ '.bw-dark .bw-accordion-body': {
4139
+ 'border-top-color': borderColor
4140
+ },
4141
+ '.bw-dark .bw-carousel': {
4142
+ 'background-color': bodyBg
4143
+ },
4144
+ '.bw-dark .bw-carousel-control': {
4145
+ 'background-color': 'rgba(255,255,255,0.15)'
4146
+ },
4147
+ '.bw-dark .bw-carousel-control:hover': {
4148
+ 'background-color': 'rgba(255,255,255,0.25)'
4149
+ },
4150
+ '.bw-dark .bw-modal-content': {
4151
+ 'background-color': surfaceBg,
4152
+ 'border-color': borderColor
4153
+ },
4154
+ '.bw-dark .bw-modal-header': {
4155
+ 'border-bottom-color': borderColor
4156
+ },
4157
+ '.bw-dark .bw-modal-footer': {
4158
+ 'border-top-color': borderColor
4159
+ },
4160
+ '.bw-dark .bw-modal-title': {
4161
+ 'color': textColor
4162
+ },
4163
+ '.bw-dark .bw-toast': {
4164
+ 'background-color': surfaceBg,
4165
+ 'border-color': borderColor
4166
+ },
4167
+ '.bw-dark .bw-toast-header': {
4168
+ 'border-bottom-color': borderColor,
4169
+ 'color': textColor
4170
+ },
4171
+ '.bw-dark .bw-dropdown-menu': {
4172
+ 'background-color': surfaceBg,
4173
+ 'border-color': borderColor
4174
+ },
4175
+ '.bw-dark .bw-dropdown-item': {
4176
+ 'color': textColor
4177
+ },
4178
+ '.bw-dark .bw-dropdown-item:hover': {
4179
+ 'background-color': bodyBg
4180
+ },
4181
+ '.bw-dark .bw-dropdown-divider': {
4182
+ 'border-top-color': borderColor
4183
+ },
4184
+ '.bw-dark .bw-skeleton': {
4185
+ 'background': 'linear-gradient(90deg, ' + borderColor + ' 25%, ' + surfaceBg + ' 37%, ' + borderColor + ' 63%)'
4186
+ },
3165
4187
  '.bw-dark h1, .bw-dark h2, .bw-dark h3, .bw-dark h4, .bw-dark h5, .bw-dark h6': {
3166
4188
  'color': textColor
3167
4189
  },