osi-cards-lib 1.5.41 → 1.5.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/osi-cards-lib.mjs +6109 -3631
  3. package/fesm2022/osi-cards-lib.mjs.map +1 -1
  4. package/index.d.ts +211 -270
  5. package/package.json +4 -3
  6. package/scripts/setup-angular-styles.js +1 -0
  7. package/styles/bundles/_ai-card.scss +11 -4
  8. package/styles/bundles/_card-skeleton.scss +1 -1
  9. package/styles/components/_ai-card-renderer.scss +0 -2
  10. package/styles/components/_badges.scss +1 -2
  11. package/styles/components/_card-actions.scss +5 -4
  12. package/styles/components/_component-styles.scss +1 -1
  13. package/styles/components/cards/_ai-card.scss +7 -13
  14. package/styles/components/sections/_all-sections.generated.scss +0 -3
  15. package/styles/components/sections/_all-sections.scss +88 -64
  16. package/styles/components/sections/_compact-mixins.scss +9 -8
  17. package/styles/components/sections/_component-mixins.scss +40 -11
  18. package/styles/components/sections/_design-system.scss +96 -11
  19. package/styles/components/sections/_design-tokens.scss +1 -1
  20. package/styles/components/sections/_master-compact-system.scss +0 -17
  21. package/styles/components/sections/_minimalistic-design.scss +1 -4
  22. package/styles/components/sections/_modern-effects.scss +1 -3
  23. package/styles/components/sections/_modern-sections.scss +13 -69
  24. package/styles/components/sections/_section-animations.scss +158 -77
  25. package/styles/components/sections/_section-shell.scss +39 -9
  26. package/styles/components/sections/_section-types.generated.scss +0 -3
  27. package/styles/components/sections/_sections-all.scss +7 -0
  28. package/styles/components/sections/_sections-base.scss +340 -64
  29. package/styles/components/sections/_unified-section-style.scss +17 -44
  30. package/styles/components/sections/_visual-effects-library.scss +3 -3
  31. package/styles/core/_bootstrap-reset.scss +1 -1
  32. package/styles/core/_global-unified.scss +2 -6
  33. package/styles/core/_mixins.scss +4 -4
  34. package/styles/core/_surface-layers.scss +20 -11
  35. package/styles/design-system/_section-base.scss +9 -32
  36. package/styles/design-system/_tokens.scss +68 -6
  37. package/styles/design-system/_unified-sections.scss +21 -42
  38. package/styles/layout/_masonry.scss +26 -32
  39. package/styles/layout/_tilt.scss +3 -3
  40. package/styles/mixins/_section-mixins.scss +2 -2
  41. package/styles/reset/_shadow-reset.scss +3 -7
  42. package/styles/responsive.scss +9 -7
  43. package/styles/tokens/_master.scss +271 -79
  44. package/styles/tokens/_section-tokens.generated.scss +0 -7
@@ -4,6 +4,8 @@
4
4
  * Breakpoints and responsive utilities for cards and sections.
5
5
  */
6
6
 
7
+ @use "sass:map";
8
+
7
9
  // ============================================
8
10
  // Breakpoint Variables
9
11
  // ============================================
@@ -23,8 +25,8 @@ $breakpoints: (
23
25
 
24
26
  /// Media query for minimum width (mobile-first)
25
27
  @mixin responsive($breakpoint) {
26
- @if map-has-key($breakpoints, $breakpoint) {
27
- @media (min-width: map-get($breakpoints, $breakpoint)) {
28
+ @if map.has-key($breakpoints, $breakpoint) {
29
+ @media (min-width: map.get($breakpoints, $breakpoint)) {
28
30
  @content;
29
31
  }
30
32
  } @else {
@@ -36,8 +38,8 @@ $breakpoints: (
36
38
 
37
39
  /// Media query for maximum width
38
40
  @mixin responsive-down($breakpoint) {
39
- @if map-has-key($breakpoints, $breakpoint) {
40
- @media (max-width: #{map-get($breakpoints, $breakpoint) - 1px}) {
41
+ @if map.has-key($breakpoints, $breakpoint) {
42
+ @media (max-width: #{map.get($breakpoints, $breakpoint) - 1px}) {
41
43
  @content;
42
44
  }
43
45
  } @else {
@@ -49,8 +51,8 @@ $breakpoints: (
49
51
 
50
52
  /// Media query for range
51
53
  @mixin responsive-between($min, $max) {
52
- $min-width: if(map-has-key($breakpoints, $min), map-get($breakpoints, $min), $min);
53
- $max-width: if(map-has-key($breakpoints, $max), map-get($breakpoints, $max), $max);
54
+ $min-width: if(map.has-key($breakpoints, $min), map.get($breakpoints, $min), $min);
55
+ $max-width: if(map.has-key($breakpoints, $max), map.get($breakpoints, $max), $max);
54
56
 
55
57
  @media (min-width: $min-width) and (max-width: #{$max-width - 1px}) {
56
58
  @content;
@@ -169,7 +171,7 @@ $breakpoints: (
169
171
  }
170
172
 
171
173
  .metric-value {
172
- font-size: 1.5rem;
174
+ font-size: var(--text-2xl);
173
175
  }
174
176
  }
175
177
 
@@ -466,15 +466,14 @@ $breakpoints: (
466
466
  @mixin osi-card-typography($variant: "demo") {
467
467
  // Both demo and integration now use the same compact values
468
468
  // Section Titles
469
- --section-title-font-size: 0.92rem;
469
+ --section-title-font-size: calc(0.92rem - 8px); // Reduced by 2px
470
470
  --section-title-font-weight: 700;
471
471
  --section-title-letter-spacing: -0.02em;
472
472
  --section-title-line-height: 1.3;
473
473
  --section-title-text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
474
474
 
475
475
  // Card Header Title (main card title - larger)
476
- --card-header-title-font-size: 1.25rem; /* 20px - main card header (reduced by 2px from 22px) */
477
- --card-header-title-font-size-mobile: 1rem; /* 16px - mobile (reduced by 2px from 18px) */
476
+ --card-header-title-font-size: 0.875rem; /* 14px - fixed size for all screen sizes */
478
477
  --card-header-title-font-weight: 700;
479
478
  --card-header-title-letter-spacing: -0.02em;
480
479
  --card-header-title-line-height: 1.3;
@@ -487,7 +486,7 @@ $breakpoints: (
487
486
  --card-title-text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
488
487
 
489
488
  // Card Subtitles
490
- --card-subtitle-font-size: 0.65rem;
489
+ --card-subtitle-font-size: 0.525rem;
491
490
  --card-subtitle-font-weight: 500;
492
491
  --card-subtitle-letter-spacing: 0.015em;
493
492
  --card-subtitle-line-height: 1.3;
@@ -526,31 +525,39 @@ $breakpoints: (
526
525
 
527
526
  /// Generate card layout tokens
528
527
  @mixin osi-card-layout() {
529
- --card-main-padding: 16px;
528
+ --card-main-padding: 8px;
530
529
  --card-padding-vertical: 12px;
531
- --card-padding-horizontal: 16px;
532
- --card-padding: 16px;
530
+ --card-padding-horizontal: 12px;
531
+ --card-padding: 12px;
533
532
  --card-padding-large: 20px;
534
- --section-padding: 12px;
533
+ --section-padding: 8px;
535
534
  --section-container-padding: 12px;
536
535
  --card-min-height: auto;
537
- --card-gap: 6px;
536
+ --card-gap: 10px;
538
537
  --card-gap-large: 10px;
539
538
  --card-nested-gap: 3px;
540
- --section-header-gap: 3px;
539
+ --section-header-gap: 2px;
541
540
  --section-header-padding-bottom: 0px;
542
541
  --section-title-margin-bottom: 0;
543
542
  --card-border-radius: 12px;
544
543
  --card-border-radius-large: 16px;
545
- --section-card-gap: 12px;
544
+ --section-card-gap: 8px;
546
545
  --section-card-border-radius: 10px;
547
546
 
548
- // Element gaps within cards
549
- --card-element-gap-xs: 2px;
550
- --card-element-gap-sm: 3px;
551
- --card-element-gap-md: 4px;
552
- --card-element-gap-lg: 6px;
553
- --card-element-gap-xl: 8px;
547
+ // Element gaps within cards - DEPRECATED: Use --osi-section-item-gap-* instead
548
+ // @deprecated Use --osi-section-item-gap-xs instead
549
+ --card-element-gap-xs: var(--osi-section-item-gap-xs, 2px);
550
+ // @deprecated Use --osi-section-item-gap-sm instead
551
+ --card-element-gap-sm: var(--osi-section-item-gap-sm, 3px);
552
+ // @deprecated Use --osi-section-item-gap-md instead
553
+ --card-element-gap-md: var(--osi-section-item-gap-md, 4px);
554
+ // @deprecated Use --osi-section-item-gap-lg instead
555
+ --card-element-gap-lg: var(--osi-section-item-gap-lg, 12px);
556
+ // @deprecated Use --osi-section-item-gap-xl instead
557
+ --card-element-gap-xl: var(--osi-section-item-gap-xl, 8px);
558
+
559
+ // @deprecated Use --osi-section-item-gap instead
560
+ --card-gap: var(--osi-section-item-gap, 10px);
554
561
 
555
562
  // Border widths
556
563
  --border-width-default: 1px;
@@ -587,8 +594,14 @@ $breakpoints: (
587
594
  // Section-specific gaps
588
595
  --section-grid-gap: var(--gap-md);
589
596
  --section-stack-gap: var(--gap-lg);
590
- --section-item-gap: var(--gap-sm);
591
- --section-item-padding: var(--gap-lg);
597
+ // @deprecated Use --osi-section-item-gap instead
598
+ --section-item-gap: var(--osi-section-item-gap, var(--gap-sm));
599
+ // @deprecated Use --osi-section-item-padding instead
600
+ --section-item-padding: var(--osi-section-item-padding-normal, var(--gap-lg));
601
+
602
+ // Renamed from --section-element-gap for consistency
603
+ // @deprecated Use --osi-section-item-gap instead
604
+ --section-element-gap: var(--osi-section-item-gap);
592
605
  --metric-item-padding: 10px 12px;
593
606
  --list-item-padding: 10px 12px;
594
607
  }
@@ -639,8 +652,17 @@ $breakpoints: (
639
652
  --osi-card-backdrop-filter: var(--theme-ai-card-backdrop-filter, blur(12px));
640
653
 
641
654
  // Card Border
642
- --osi-card-border: var(--theme-ai-card-border, 1px solid #{$white-05});
643
- --osi-card-border-hover: var(--theme-ai-card-border-hover, 1px solid #{$brand-color-12});
655
+ --osi-card-border: var(--theme-ai-card-border, 1px solid #{$brand-color-20});
656
+ @supports (color: color-mix(in srgb, black 50%, white)) {
657
+ --osi-card-border: var(
658
+ --theme-ai-card-border,
659
+ 1px solid color-mix(in srgb, var(--color-brand, #{$brand-color}) 20%, transparent)
660
+ );
661
+ }
662
+ --osi-card-border-hover: var(
663
+ --theme-ai-card-border-hover,
664
+ 1px solid var(--color-brand, #{$brand-color})
665
+ );
644
666
  --osi-card-border-fullscreen: none;
645
667
 
646
668
  // Card Shadow
@@ -649,11 +671,11 @@ $breakpoints: (
649
671
  --osi-card-shadow-fullscreen: none;
650
672
 
651
673
  // Card Spacing - Padding
652
- --osi-card-padding: var(--card-main-padding, 16px);
653
- --osi-card-padding-top: var(--card-main-padding, 16px);
654
- --osi-card-padding-bottom: var(--card-main-padding, 16px);
655
- --osi-card-padding-left: var(--card-main-padding, 16px);
656
- --osi-card-padding-right: var(--card-main-padding, 16px);
674
+ --osi-card-padding: var(--card-main-padding, 8px);
675
+ --osi-card-padding-top: var(--card-main-padding, 8px);
676
+ --osi-card-padding-bottom: var(--card-main-padding, 8px);
677
+ --osi-card-padding-left: var(--card-main-padding, 8px);
678
+ --osi-card-padding-right: var(--card-main-padding, 8px);
657
679
  --osi-card-padding-mobile: 4px; // Fixed padding - no responsive behavior
658
680
 
659
681
  // Card Spacing - Margins
@@ -663,9 +685,9 @@ $breakpoints: (
663
685
  --osi-card-margin-right: 0;
664
686
 
665
687
  // Card Spacing - Gaps
666
- --osi-card-gap: var(--section-card-gap, 12px);
667
- --osi-card-body-gap: var(--space-3, 12px);
668
- --osi-card-grid-gap: var(--section-card-gap, 12px);
688
+ --osi-card-gap: var(--section-card-gap, 8px);
689
+ --osi-card-body-gap: var(--space-4, 8px);
690
+ --osi-card-grid-gap: var(--section-card-gap, 8px);
669
691
 
670
692
  // Card Border Radius
671
693
  --osi-card-border-radius: var(--card-border-radius);
@@ -766,6 +788,16 @@ $breakpoints: (
766
788
  --osi-section-border: var(--theme-section-border, 1px solid rgba(0, 0, 0, 0.06));
767
789
  --osi-section-border-hover: var(--theme-section-border-hover, 1px solid #{$brand-color-15});
768
790
 
791
+ // Section Border Hover Enhanced (theme-aware grey, amplified by 30%)
792
+ // Light theme: rgba(0, 0, 0, 0.1) → rgba(0, 0, 0, 0.13)
793
+ // Dark theme: rgba(255, 255, 255, 0.1) → rgba(255, 255, 255, 0.13)
794
+ // This is just the color value (not the full border property) for use with border-color
795
+ // Default fallback for light theme
796
+ --osi-section-border-hover-enhanced-color: var(
797
+ --theme-section-border-hover-enhanced-color,
798
+ rgba(0, 0, 0, 0.13)
799
+ );
800
+
769
801
  // Section Shadow
770
802
  --osi-section-shadow: var(--theme-section-box-shadow, var(--shadow-md));
771
803
  --osi-section-shadow-hover: var(
@@ -773,6 +805,15 @@ $breakpoints: (
773
805
  var(--shadow-lg),
774
806
  var(--shadow-glow-sm)
775
807
  );
808
+
809
+ // Section Shadow Hover Enhanced (gentle shadow with cool color, 10% less contrasty than border)
810
+ // Uses a cool blue color (rgb(59, 130, 246) - blue-500)
811
+ // Border is at 0.13 opacity, shadow is 10% less contrasty = 0.13 * 0.9 = 0.117 opacity
812
+ --osi-section-shadow-hover-enhanced: var(
813
+ --theme-section-shadow-hover-enhanced,
814
+ var(--shadow-lg),
815
+ 0 0 16px rgba(59, 130, 246, 0.117)
816
+ );
776
817
  --osi-section-shadow-fullscreen: none;
777
818
 
778
819
  // Section Spacing - Padding
@@ -800,12 +841,28 @@ $breakpoints: (
800
841
  // Section Border Radius
801
842
  --osi-section-border-radius: var(--section-card-border-radius);
802
843
 
803
- // Section Typography
804
- --osi-section-title-font-size: var(--section-title-font-size, 1.1rem);
805
- --osi-section-title-font-weight: var(--section-title-font-weight, 700);
806
- --osi-section-title-letter-spacing: var(--section-title-letter-spacing, -0.02em);
807
- --osi-section-title-line-height: var(--section-title-line-height, 1.3);
808
- --osi-section-title-color: var(--card-text-primary);
844
+ // Section Typography - Using OSI Font Theme Variables
845
+ // Section Title Font Sizes (mapped to heading levels) - Reduced by 2px each
846
+ --osi-section-title-font-size-xs: 0.625rem; // h6: 10px (reduced from 12px)
847
+ --osi-section-title-font-size-sm: 0.75rem; // h5: 12px (reduced from 14px)
848
+ --osi-section-title-font-size-md: 0.875rem; // h4: 14px (reduced from 16px)
849
+ --osi-section-title-font-size-lg: 1.125rem; // h3: 18px (reduced from 20px) - default
850
+ --osi-section-title-font-size-xl: 1.375rem; // h2: 22px (reduced from 24px)
851
+ --osi-section-title-font-size-2xl: 1.75rem; // h1: 28px (reduced from 30px)
852
+
853
+ // Default section title (h3) - Reduced from lg to md for better proportions
854
+ --osi-section-title-font-size: var(--osi-section-title-font-size-md);
855
+
856
+ // Section Title Font Weight - Using OSI Font Weights
857
+ --osi-section-title-font-weight: var(--osi-font-bold); // 700
858
+
859
+ // Section Title Other Properties - Using OSI Theme Variables
860
+ --osi-section-title-letter-spacing: var(--osi-tracking-tight); // -0.025em
861
+ --osi-section-title-line-height: var(--osi-leading-snug); // 1.375
862
+ // Use foreground directly from theme mixins for maximum contrast
863
+ // Theme mixins set --foreground to dark (#1c1c1f) in light theme and white (#ffffff) in dark theme
864
+ // Fallback to dark color for light themes if theme mixin hasn't been called
865
+ --osi-section-title-color: var(--foreground, #1c1c1f);
809
866
  --osi-section-title-margin-bottom: var(--section-title-margin-bottom);
810
867
  --osi-section-title-underline-length: var(--space-8);
811
868
  --osi-section-title-underline-hover-length: var(--space-10);
@@ -815,8 +872,12 @@ $breakpoints: (
815
872
  // Fallback for browsers without color-mix support
816
873
  --osi-section-title-hover-color: var(--color-brand);
817
874
 
818
- --osi-section-description-color: var(--muted-foreground);
819
- --osi-section-description-color-hover: var(--foreground);
875
+ // Section Description Typography - Using OSI Font Scale
876
+ --osi-section-description-font-size: 0.75rem; // 12px (reduced from 14px by 2px)
877
+ --osi-section-description-font-weight: var(--osi-font-normal); // 400
878
+ --osi-section-description-line-height: var(--osi-leading-relaxed); // 1.625
879
+ --osi-section-description-color: var(--osi-muted-foreground);
880
+ --osi-section-description-color-hover: var(--osi-foreground);
820
881
 
821
882
  // Section Accent
822
883
  --osi-section-accent: var(--section-accent, var(--accent, #{$osi-color-brand}));
@@ -878,20 +939,44 @@ $breakpoints: (
878
939
  /// Generate OSI Section Item component tokens (--osi-section-item-*)
879
940
  /// SINGLE SOURCE OF TRUTH for all section item/field styling variables
880
941
  @mixin osi-section-item-tokens() {
881
- // Section Item Background
942
+ // Section Item Background (Single Source of Truth)
943
+ // Background hierarchy: Card → Section → Item
944
+ // - Card background: Used for entire card container (--osi-card-background)
945
+ // - Section background: Used for section wrapper (--osi-section-background)
946
+ // - Item background: Used for individual items/fields (--osi-section-item-background) ← THIS
882
947
  --osi-section-item-background: var(--theme-section-item-background, var(--card-section-bg));
883
948
  --osi-section-item-background-hover: var(
884
949
  --theme-section-item-background-hover,
885
950
  var(--card-section-bg)
886
951
  );
887
952
 
888
- // Section Item Border
953
+ // Background usage guidelines:
954
+ // - Always use --osi-section-item-background for item/field backgrounds
955
+ // - Do NOT use --card-background for item styling (different purpose)
956
+ // - Use --osi-section-item-background-hover for consistent hover states
957
+
958
+ // Section Item Border (Single Source of Truth)
889
959
  --osi-section-item-border: var(--theme-section-item-border, 1px solid rgba(0, 0, 0, 0.06));
890
960
  --osi-section-item-border-hover: var(
891
961
  --theme-section-item-border-hover,
892
962
  1px solid #{$brand-color-08}
893
963
  );
894
964
 
965
+ // Section Item Border Hover Enhanced (50% stronger than section hover)
966
+ // Section border: 0.13 opacity, Section item border: 0.13 × 1.5 = 0.195 opacity
967
+ // Light theme: rgba(0, 0, 0, 0.195), Dark theme: rgba(255, 255, 255, 0.195)
968
+ // This is just the color value (not the full border property) for use with border-color
969
+ --osi-section-item-border-hover-enhanced-color: var(
970
+ --theme-section-item-border-hover-enhanced-color,
971
+ rgba(0, 0, 0, 0.195)
972
+ );
973
+
974
+ // Standardized border width
975
+ --osi-section-item-border-width: var(--border-width-default, 1px);
976
+
977
+ // Standardized border style
978
+ --osi-section-item-border-style: solid;
979
+
895
980
  // Section Item Shadow
896
981
  --osi-section-item-shadow: var(--theme-section-item-box-shadow, var(--shadow-sm));
897
982
  --osi-section-item-shadow-hover: var(
@@ -900,47 +985,100 @@ $breakpoints: (
900
985
  var(--shadow-glow-sm)
901
986
  );
902
987
 
903
- // Section Item Spacing - Padding
904
- --osi-section-item-padding: var(--section-item-padding);
905
- --osi-section-item-padding-top: var(--gap-lg);
906
- --osi-section-item-padding-bottom: var(--gap-lg);
907
- --osi-section-item-padding-left: var(--gap-lg);
908
- --osi-section-item-padding-right: var(--gap-lg);
909
- --osi-section-item-metric-padding: var(--metric-item-padding);
910
- --osi-section-item-list-padding: var(--list-item-padding);
988
+ // Section Item Shadow Hover Enhanced (50% stronger than section hover)
989
+ // Section shadow: 0.117 opacity, Section item shadow: 0.117 × 1.5 = 0.1755 opacity
990
+ // Uses cool blue color (rgb(59, 130, 246) - blue-500)
991
+ --osi-section-item-shadow-hover-enhanced: var(
992
+ --theme-section-item-shadow-hover-enhanced,
993
+ var(--shadow-lg),
994
+ 0 0 16px rgba(59, 130, 246, 0.1755)
995
+ );
911
996
 
912
- // Section Item Spacing - Margins
997
+ // Section Item Spacing - Padding (Single Source of Truth)
998
+ // Base padding value
999
+ --osi-section-item-padding: var(--section-item-padding, 12px);
1000
+ --osi-section-item-padding-top: var(--osi-section-item-padding);
1001
+ --osi-section-item-padding-bottom: var(--osi-section-item-padding);
1002
+ --osi-section-item-padding-left: var(--osi-section-item-padding);
1003
+ --osi-section-item-padding-right: var(--osi-section-item-padding);
1004
+
1005
+ // Responsive padding variants
1006
+ --osi-section-item-padding-compact: 10px;
1007
+ --osi-section-item-padding-normal: 16px;
1008
+ --osi-section-item-padding-spacious: 20px;
1009
+
1010
+ // Specialized padding variants (for backward compatibility)
1011
+ --osi-section-item-metric-padding: var(--metric-item-padding, 10px 12px);
1012
+ --osi-section-item-list-padding: var(--list-item-padding, 10px 12px);
1013
+
1014
+ // Section Item Spacing - Margins (Standardized)
1015
+ // By default, items use padding instead of margins for spacing
1016
+ // Margins should only be used for special layout cases
913
1017
  --osi-section-item-margin-top: 0;
914
1018
  --osi-section-item-margin-bottom: 0;
915
1019
  --osi-section-item-margin-left: 0;
916
1020
  --osi-section-item-margin-right: 0;
917
1021
 
918
- // Section Item Spacing - Gaps
919
- --osi-section-item-gap: var(--section-item-gap);
920
- --osi-section-item-grid-gap: var(--section-item-gap);
921
-
922
- // Section Item Border Radius
1022
+ // Margin variants for special cases
1023
+ --osi-section-item-margin-xs: 2px;
1024
+ --osi-section-item-margin-sm: 4px;
1025
+ --osi-section-item-margin-md: 8px;
1026
+ --osi-section-item-margin-lg: 12px;
1027
+ --osi-section-item-margin-xl: 16px;
1028
+
1029
+ // Usage guidelines:
1030
+ // - Use padding for internal item spacing
1031
+ // - Use margin only for:
1032
+ // * Separating items in lists (margin-bottom on non-last items)
1033
+ // * Special layout requirements
1034
+ // * Negative spacing cases
1035
+
1036
+ // Section Item Spacing - Gaps (Single Source of Truth)
1037
+ // Gap scale (for consistent spacing)
1038
+ --osi-section-item-gap-xs: 2px;
1039
+ --osi-section-item-gap-sm: 4px;
1040
+ --osi-section-item-gap-md: 8px;
1041
+ --osi-section-item-gap: 10px; // Base gap (standard spacing between items)
1042
+ --osi-section-item-gap-lg: 12px;
1043
+ --osi-section-item-gap-xl: 16px;
1044
+
1045
+ // Base gap value (references scale)
1046
+ --osi-section-item-grid-gap: var(--osi-section-item-gap);
1047
+
1048
+ // Section Item Border Radius (Standardized)
923
1049
  --osi-section-item-border-radius: var(--radius-md);
924
1050
 
925
- // Section Item Typography - Label
926
- --osi-section-item-label-font-size: var(--text-sm);
927
- --osi-section-item-label-font-weight: var(--font-weight-medium);
928
- --osi-section-item-label-color: var(--muted-foreground);
929
- --osi-section-item-label-letter-spacing: 0.01em;
1051
+ // Border radius variants for consistency
1052
+ --osi-section-item-border-radius-sm: var(--radius-sm);
1053
+ --osi-section-item-border-radius-md: var(--radius-md);
1054
+ --osi-section-item-border-radius-lg: var(--radius-lg);
1055
+
1056
+ // Section Container Spacing (for section wrappers, not individual items)
1057
+ --osi-section-container-padding: var(--osi-section-item-padding-normal);
1058
+ --osi-section-container-gap: var(--osi-section-item-gap-md);
1059
+ --osi-section-header-margin-bottom: var(--osi-section-item-gap-md);
1060
+
1061
+ // Section Item Typography - Label (Using OSI Font Scale)
1062
+ --osi-section-item-label-font-size: var(--osi-text-sm); // 0.875rem (14px)
1063
+ --osi-section-item-label-font-weight: var(--osi-font-medium); // 500
1064
+ --osi-section-item-label-line-height: var(--osi-leading-tight); // 1.25
1065
+ --osi-section-item-label-letter-spacing: var(--osi-tracking-wider); // 0.05em
1066
+ --osi-section-item-label-color: var(--osi-muted-foreground);
930
1067
  --osi-section-item-label-text-transform: uppercase;
931
1068
 
932
- // Section Item Typography - Value
933
- --osi-section-item-value-font-size: var(--text-base);
934
- --osi-section-item-value-font-weight: var(--font-weight-normal);
935
- --osi-section-item-value-color: var(--foreground);
936
- --osi-section-item-value-letter-spacing: 0;
1069
+ // Section Item Typography - Value (Using OSI Font Scale)
1070
+ --osi-section-item-value-font-size: var(--osi-text-base); // 1rem (16px)
1071
+ --osi-section-item-value-font-weight: var(--osi-font-normal); // 400
1072
+ --osi-section-item-value-line-height: var(--osi-leading-normal); // 1.5
1073
+ --osi-section-item-value-color: var(--osi-foreground);
1074
+ --osi-section-item-value-letter-spacing: var(--osi-tracking-normal); // 0
937
1075
 
938
1076
  // Section Item Icon
939
1077
  --osi-section-item-icon-size: var(--icon-md);
940
- --osi-section-item-icon-color: var(--muted-foreground);
941
- --osi-section-item-icon-color-hover: var(--accent);
1078
+ --osi-section-item-icon-color: var(--osi-muted-foreground);
1079
+ --osi-section-item-icon-color-hover: var(--accent, var(--osi-accent));
942
1080
 
943
- // Section Item Transitions
1081
+ // Section Item Transitions (Standardized)
944
1082
  --osi-section-item-transition: var(
945
1083
  --theme-section-item-transition,
946
1084
  background 220ms cubic-bezier(0.4, 0, 0.2, 1),
@@ -948,6 +1086,28 @@ $breakpoints: (
948
1086
  border-color 220ms cubic-bezier(0.4, 0, 0.2, 1)
949
1087
  );
950
1088
  --osi-section-item-hover-transform: var(--theme-section-item-hover-transform, none);
1089
+
1090
+ // Animation timing (standardized)
1091
+ --osi-section-item-animation-duration: 220ms;
1092
+ --osi-section-item-animation-easing: cubic-bezier(0.4, 0, 0.2, 1);
1093
+ --osi-section-item-stagger-delay: 30ms;
1094
+
1095
+ // Motion distance for animations
1096
+ --osi-motion-distance-sm: 8px;
1097
+
1098
+ // Card min-height variants
1099
+ --osi-section-item-min-height-xs: 70px;
1100
+ --osi-section-item-min-height-sm: 80px;
1101
+ --osi-section-item-min-height-md: 90px;
1102
+ --osi-section-item-min-height-lg: 95px;
1103
+ --osi-section-item-min-height-xl: 110px;
1104
+
1105
+ // Grid column min-widths
1106
+ --osi-section-item-grid-min-xs: 120px;
1107
+ --osi-section-item-grid-min-sm: 160px;
1108
+ --osi-section-item-grid-min-md: 180px;
1109
+ --osi-section-item-grid-min-lg: 250px;
1110
+ --osi-section-item-grid-min-xl: 300px;
951
1111
  }
952
1112
 
953
1113
  /// Generate element type system tokens (Hero, Buttons, Cards, Sections, Section Items)
@@ -1002,7 +1162,8 @@ $breakpoints: (
1002
1162
  --section-hover-transform: none;
1003
1163
  --section-transition: var(--osi-section-transition);
1004
1164
 
1005
- // 5. SECTION ITEMS (aliases for backward compatibility)
1165
+ // 5. SECTION ITEMS (aliases for backward compatibility - DEPRECATED)
1166
+ // @deprecated Use --osi-section-item-* tokens instead. These will be removed in a future version.
1006
1167
  --section-item-border: var(--osi-section-item-border);
1007
1168
  --section-item-border-hover: var(--osi-section-item-border-hover);
1008
1169
  --section-item-background: var(--osi-section-item-background);
@@ -1014,13 +1175,21 @@ $breakpoints: (
1014
1175
  --section-item-hover-transform: var(--osi-section-item-hover-transform);
1015
1176
  --section-item-transition-default: var(--osi-section-item-transition);
1016
1177
  --section-item-transition: var(--osi-section-item-transition);
1178
+ // @deprecated Use --osi-section-item-padding instead
1179
+ --section-item-padding: var(--osi-section-item-padding-normal);
1017
1180
 
1018
- // Legacy card variables (theme-aware)
1181
+ // Legacy card variables (theme-aware) - DEPRECATED: Use --osi-section-item-* tokens instead
1182
+ // @deprecated Use --osi-section-item-border instead
1019
1183
  --card-border: var(--theme-card-border, 1px solid rgba(146, 153, 158, 0.15));
1184
+ // @deprecated Use --osi-section-item-border-hover instead
1020
1185
  --card-border-hover: var(--theme-card-border-hover, #{$brand-color-15});
1186
+ // @deprecated Use --osi-section-item-shadow instead
1021
1187
  --card-box-shadow: var(--theme-card-box-shadow, var(--shadow-md));
1188
+ // @deprecated Use --osi-section-item-shadow-hover instead
1022
1189
  --card-box-shadow-hover: var(--theme-card-box-shadow-hover, var(--shadow-lg));
1023
1190
  --card-hover-transform: none;
1191
+ // @deprecated Use --osi-section-item-padding instead
1192
+ --card-padding: var(--osi-section-item-padding-normal, 12px);
1024
1193
 
1025
1194
  // Entrance animations
1026
1195
  --ai-card-entrance-animation: fadeInUpSoft var(--duration-moderate) var(--ease-out-smooth) 10ms 1
@@ -1060,15 +1229,19 @@ $breakpoints: (
1060
1229
  // Surface tokens - defaults (will be overridden by theme-specific mixins and JavaScript presets)
1061
1230
  // These are fallback values only - actual values come from osi-theme-dark/light mixins or JavaScript presets
1062
1231
  & {
1063
- --theme-ai-card-border: 1px solid rgba(0, 0, 0, 0.08);
1064
- --theme-ai-card-border-hover: 1px solid rgba(255, 121, 0, 0.4);
1232
+ --theme-ai-card-border: 1px solid #{$brand-color-20};
1233
+ @supports (color: color-mix(in srgb, black 50%, white)) {
1234
+ --theme-ai-card-border: 1px solid
1235
+ color-mix(in srgb, var(--color-brand, #{$brand-color}) 20%, transparent);
1236
+ }
1237
+ --theme-ai-card-border-hover: 1px solid var(--color-brand, #{$brand-color});
1065
1238
  --theme-ai-card-background: rgba(255, 255, 255, 0.85);
1066
1239
  --theme-ai-card-background-hover: rgba(255, 255, 255, 0.92);
1067
1240
  --theme-ai-card-box-shadow:
1068
1241
  0 4px 24px -1px rgba(0, 0, 0, 0.1), 0 0 18px rgba(255, 121, 0, 0.15);
1069
1242
  --theme-ai-card-box-shadow-hover:
1070
- 0 20px 40px -5px rgba(0, 0, 0, 0.15), 0 0 24px rgba(255, 121, 0, 0.25),
1071
- 0 0 0 1px rgba(255, 121, 0, 0.15);
1243
+ 0 20px 40px -5px rgba(0, 0, 0, 0.15), 0 0 24px rgba(255, 121, 0, 0.5),
1244
+ 0 0 0 1px rgba(255, 121, 0, 0.3);
1072
1245
  --theme-ai-card-backdrop-filter: blur(12px);
1073
1246
  --theme-ai-card-transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1074
1247
 
@@ -1085,8 +1258,10 @@ $breakpoints: (
1085
1258
 
1086
1259
  --theme-section-border: 1px solid rgba(0, 0, 0, 0.06);
1087
1260
  --theme-section-border-hover: 1px solid rgba(255, 121, 0, 0.15);
1261
+ --theme-section-border-hover-enhanced-color: rgba(0, 0, 0, 0.13);
1088
1262
  --theme-section-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
1089
1263
  --theme-section-box-shadow-hover: 0 2px 4px rgba(0, 0, 0, 0.05);
1264
+ --theme-section-shadow-hover-enhanced: var(--shadow-lg), 0 0 16px rgba(59, 130, 246, 0.117);
1090
1265
  --theme-section-transition:
1091
1266
  border-color 0.22s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.22s cubic-bezier(0.4, 0, 0.2, 1);
1092
1267
  // Flat backgrounds - no color-mix
@@ -1101,6 +1276,9 @@ $breakpoints: (
1101
1276
  --theme-section-item-background-hover: var(--background);
1102
1277
  --theme-section-item-box-shadow: var(--shadow-md, 0 1px 2px rgba(0, 0, 0, 0.04));
1103
1278
  --theme-section-item-box-shadow-hover: var(--shadow-lg, 0 1px 3px rgba(0, 0, 0, 0.05));
1279
+ --theme-section-item-border-hover-enhanced-color: rgba(0, 0, 0, 0.195);
1280
+ --theme-section-item-shadow-hover-enhanced:
1281
+ var(--shadow-lg), 0 0 16px rgba(59, 130, 246, 0.1755);
1104
1282
  --theme-section-item-hover-transform: none;
1105
1283
  --theme-section-item-transition:
1106
1284
  border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), background 0.2s cubic-bezier(0.4, 0, 0.2, 1),
@@ -1137,13 +1315,18 @@ $breakpoints: (
1137
1315
 
1138
1316
  // AI Card surface - transparent with blur effect (matches preset)
1139
1317
  & {
1140
- --theme-ai-card-border: 1px solid rgba(255, 255, 255, 0.08);
1141
- --theme-ai-card-border-hover: 1px solid rgba(255, 121, 0, 0.2);
1318
+ --theme-ai-card-border: 1px solid #{$brand-color-20};
1319
+ @supports (color: color-mix(in srgb, black 50%, white)) {
1320
+ --theme-ai-card-border: 1px solid
1321
+ color-mix(in srgb, var(--color-brand, #{$brand-color}) 20%, transparent);
1322
+ }
1323
+ --theme-ai-card-border-hover: 1px solid var(--color-brand, #{$brand-color});
1142
1324
  --theme-ai-card-background: rgba(20, 20, 20, 0.6);
1143
1325
  --theme-ai-card-background-hover: rgba(25, 25, 25, 0.7);
1144
1326
  --theme-ai-card-box-shadow: 0 4px 24px -1px rgba(0, 0, 0, 0.2);
1145
1327
  --theme-ai-card-box-shadow-hover:
1146
- 0 12px 32px -4px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 121, 0, 0.1);
1328
+ 0 12px 32px -4px rgba(0, 0, 0, 0.3), 0 0 24px rgba(255, 121, 0, 0.5),
1329
+ 0 0 0 1px rgba(255, 121, 0, 0.3);
1147
1330
  --theme-ai-card-backdrop-filter: blur(12px);
1148
1331
  --theme-ai-card-transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1149
1332
 
@@ -1188,17 +1371,22 @@ $breakpoints: (
1188
1371
  // Section (matches preset)
1189
1372
  --theme-section-border: 1px solid rgba(255, 255, 255, 0.1);
1190
1373
  --theme-section-border-hover: 1px solid rgba(255, 255, 255, 0.1);
1374
+ --theme-section-border-hover-enhanced-color: rgba(255, 255, 255, 0.13);
1191
1375
  --theme-section-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
1192
1376
  --theme-section-box-shadow-hover: 0 2px 5px rgba(0, 0, 0, 0.5);
1377
+ --theme-section-shadow-hover-enhanced: var(--shadow-lg), 0 0 16px rgba(59, 130, 246, 0.117);
1193
1378
  --theme-section-transition:
1194
1379
  border-color 0.22s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.22s cubic-bezier(0.4, 0, 0.2, 1);
1195
1380
  // Section Item (matches preset)
1196
1381
  --theme-section-item-border: 1px solid rgba(255, 255, 255, 0.06);
1197
1382
  --theme-section-item-border-hover: 1px solid rgba(255, 121, 0, 0.08);
1383
+ --theme-section-item-border-hover-enhanced-color: rgba(255, 255, 255, 0.195);
1198
1384
  --theme-section-item-background: #202020;
1199
1385
  --theme-section-item-background-hover: #212121;
1200
1386
  --theme-section-item-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
1201
1387
  --theme-section-item-box-shadow-hover: 0 1px 4px rgba(0, 0, 0, 0.3);
1388
+ --theme-section-item-shadow-hover-enhanced:
1389
+ var(--shadow-lg), 0 0 16px rgba(59, 130, 246, 0.1755);
1202
1390
  --theme-section-item-hover-transform: none;
1203
1391
  --theme-section-item-transition:
1204
1392
  background 220ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 220ms cubic-bezier(0.4, 0, 0.2, 1),
@@ -1241,15 +1429,19 @@ $breakpoints: (
1241
1429
  --card-section-card-bg: #f8f8f8;
1242
1430
 
1243
1431
  // AI Card surface - light theme with blur (matches preset)
1244
- --theme-ai-card-border: 1px solid rgba(0, 0, 0, 0.08);
1245
- --theme-ai-card-border-hover: 1px solid rgba(255, 121, 0, 0.2);
1432
+ --theme-ai-card-border: 1px solid #{$brand-color-20};
1433
+ @supports (color: color-mix(in srgb, black 50%, white)) {
1434
+ --theme-ai-card-border: 1px solid
1435
+ color-mix(in srgb, var(--color-brand, #{$brand-color}) 20%, transparent);
1436
+ }
1437
+ --theme-ai-card-border-hover: 1px solid var(--color-brand, #{$brand-color});
1246
1438
  --theme-ai-card-background: rgba(255, 255, 255, 0.85);
1247
1439
  --theme-ai-card-background-hover: rgba(255, 255, 255, 0.88);
1248
1440
  --theme-ai-card-box-shadow:
1249
1441
  0 4px 24px -1px rgba(0, 0, 0, 0.1), 0 0 18px rgba(255, 121, 0, 0.15);
1250
1442
  --theme-ai-card-box-shadow-hover:
1251
- 0 12px 32px -4px rgba(0, 0, 0, 0.12), 0 0 20px rgba(255, 121, 0, 0.18),
1252
- 0 0 0 1px rgba(255, 121, 0, 0.1);
1443
+ 0 12px 32px -4px rgba(0, 0, 0, 0.12), 0 0 20px rgba(255, 121, 0, 0.45),
1444
+ 0 0 0 1px rgba(255, 121, 0, 0.25);
1253
1445
  --theme-ai-card-backdrop-filter: blur(12px);
1254
1446
  --theme-ai-card-transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
1255
1447
 
@@ -75,10 +75,6 @@
75
75
  // Social Media Section
76
76
  --osi-section-social-media-columns: 1;
77
77
  --osi-section-social-media-collapse: 1;
78
-
79
- // Fallback Section
80
- --osi-section-fallback-columns: 1;
81
- --osi-section-fallback-collapse: 1;
82
78
  }
83
79
 
84
80
  // Section type display properties
@@ -134,7 +130,4 @@
134
130
  @if $type == "social-media" {
135
131
  --section-columns: var(--osi-section-social-media-columns, 1);
136
132
  }
137
- @if $type == "fallback" {
138
- --section-columns: var(--osi-section-fallback-columns, 1);
139
- }
140
133
  }