@rhavenside/baseline-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +22 -0
  3. package/README.md +272 -0
  4. package/dist/.gitkeep +0 -0
  5. package/dist/baseline.css +4811 -0
  6. package/dist/baseline.css.map +1 -0
  7. package/dist/baseline.min.css +1 -0
  8. package/package.json +59 -0
  9. package/src/base/_base.scss +182 -0
  10. package/src/base/_normalize.scss +186 -0
  11. package/src/base/_reset.scss +24 -0
  12. package/src/baseline.scss +48 -0
  13. package/src/components/_alert.scss +97 -0
  14. package/src/components/_badge.scss +105 -0
  15. package/src/components/_button.scss +200 -0
  16. package/src/components/_card.scss +94 -0
  17. package/src/components/_dropdown.scss +111 -0
  18. package/src/components/_form.scss +324 -0
  19. package/src/components/_modal.scss +157 -0
  20. package/src/components/_nav.scss +211 -0
  21. package/src/components/_progress.scss +65 -0
  22. package/src/components/_spinner.scss +118 -0
  23. package/src/components/_table.scss +182 -0
  24. package/src/components/_tooltip.scss +134 -0
  25. package/src/fonts/.gitkeep +4 -0
  26. package/src/icons/_icons.scss +150 -0
  27. package/src/layout/_container.scss +45 -0
  28. package/src/layout/_flex.scss +174 -0
  29. package/src/layout/_grid-modern.scss +128 -0
  30. package/src/layout/_grid.scss +123 -0
  31. package/src/themes/_dark.scss +122 -0
  32. package/src/themes/_light.scss +7 -0
  33. package/src/tokens/_borders.scss +36 -0
  34. package/src/tokens/_colors.scss +136 -0
  35. package/src/tokens/_forms.scss +170 -0
  36. package/src/tokens/_glassmorphism.scss +60 -0
  37. package/src/tokens/_shadows.scss +24 -0
  38. package/src/tokens/_spacing.scss +31 -0
  39. package/src/tokens/_tokens.scss +14 -0
  40. package/src/tokens/_transitions.scss +42 -0
  41. package/src/tokens/_typography.scss +89 -0
  42. package/src/tokens/_z-index.scss +26 -0
  43. package/src/utilities/_accessibility.scss +76 -0
  44. package/src/utilities/_animations.scss +177 -0
  45. package/src/utilities/_display.scss +89 -0
  46. package/src/utilities/_position.scss +105 -0
  47. package/src/utilities/_spacing.scss +87 -0
  48. package/src/utilities/_text.scss +255 -0
  49. package/src/utilities/_visibility.scss +74 -0
@@ -0,0 +1,123 @@
1
+ // ============================================================================
2
+ // Flexbox 12-Column Grid System
3
+ // ============================================================================
4
+
5
+ @use 'sass:math';
6
+ @use '../tokens/tokens' as *;
7
+
8
+ // Row
9
+ .bl-row {
10
+ display: flex;
11
+ flex-wrap: wrap;
12
+ margin-left: calc(var(--spacing-md) * -1);
13
+ margin-right: calc(var(--spacing-md) * -1);
14
+ }
15
+
16
+ // Column Base
17
+ .bl-col {
18
+ flex: 1 0 0%;
19
+ padding-left: var(--spacing-md);
20
+ padding-right: var(--spacing-md);
21
+ }
22
+
23
+ // Column Sizes (1-12)
24
+ @for $i from 1 through 12 {
25
+ .bl-col-#{$i} {
26
+ flex: 0 0 auto;
27
+ width: math.percentage(math.div($i, 12));
28
+ padding-left: var(--spacing-md);
29
+ padding-right: var(--spacing-md);
30
+ }
31
+ }
32
+
33
+ // Responsive Breakpoints
34
+ // Small (sm: 640px)
35
+ @media (min-width: 640px) {
36
+ .bl-col-sm {
37
+ flex: 1 0 0%;
38
+ padding-left: var(--spacing-md);
39
+ padding-right: var(--spacing-md);
40
+ }
41
+
42
+ @for $i from 1 through 12 {
43
+ .bl-col-sm-#{$i} {
44
+ flex: 0 0 auto;
45
+ width: math.percentage(math.div($i, 12));
46
+ padding-left: var(--spacing-md);
47
+ padding-right: var(--spacing-md);
48
+ }
49
+ }
50
+ }
51
+
52
+ // Medium (md: 768px)
53
+ @media (min-width: 768px) {
54
+ .bl-col-md {
55
+ flex: 1 0 0%;
56
+ padding-left: var(--spacing-md);
57
+ padding-right: var(--spacing-md);
58
+ }
59
+
60
+ @for $i from 1 through 12 {
61
+ .bl-col-md-#{$i} {
62
+ flex: 0 0 auto;
63
+ width: math.percentage(math.div($i, 12));
64
+ padding-left: var(--spacing-md);
65
+ padding-right: var(--spacing-md);
66
+ }
67
+ }
68
+ }
69
+
70
+ // Large (lg: 1024px)
71
+ @media (min-width: 1024px) {
72
+ .bl-col-lg {
73
+ flex: 1 0 0%;
74
+ padding-left: var(--spacing-md);
75
+ padding-right: var(--spacing-md);
76
+ }
77
+
78
+ @for $i from 1 through 12 {
79
+ .bl-col-lg-#{$i} {
80
+ flex: 0 0 auto;
81
+ width: math.percentage(math.div($i, 12));
82
+ padding-left: var(--spacing-md);
83
+ padding-right: var(--spacing-md);
84
+ }
85
+ }
86
+ }
87
+
88
+ // Extra Large (xl: 1280px)
89
+ @media (min-width: 1280px) {
90
+ .bl-col-xl {
91
+ flex: 1 0 0%;
92
+ padding-left: var(--spacing-md);
93
+ padding-right: var(--spacing-md);
94
+ }
95
+
96
+ @for $i from 1 through 12 {
97
+ .bl-col-xl-#{$i} {
98
+ flex: 0 0 auto;
99
+ width: math.percentage(math.div($i, 12));
100
+ padding-left: var(--spacing-md);
101
+ padding-right: var(--spacing-md);
102
+ }
103
+ }
104
+ }
105
+
106
+ // 2X Large (2xl: 1536px)
107
+ @media (min-width: 1536px) {
108
+ .bl-col-2xl {
109
+ flex: 1 0 0%;
110
+ padding-left: var(--spacing-md);
111
+ padding-right: var(--spacing-md);
112
+ }
113
+
114
+ @for $i from 1 through 12 {
115
+ .bl-col-2xl-#{$i} {
116
+ flex: 0 0 auto;
117
+ width: math.percentage(math.div($i, 12));
118
+ padding-left: var(--spacing-md);
119
+ padding-right: var(--spacing-md);
120
+ }
121
+ }
122
+ }
123
+
@@ -0,0 +1,122 @@
1
+ // ============================================================================
2
+ // Dark Theme
3
+ // ============================================================================
4
+
5
+ @media (prefers-color-scheme: dark) {
6
+ :root {
7
+ // Neutral Grayscale (inverted)
8
+ --color-gray-50: #030712;
9
+ --color-gray-100: #111827;
10
+ --color-gray-200: #1f2937;
11
+ --color-gray-300: #374151;
12
+ --color-gray-400: #4b5563;
13
+ --color-gray-500: #6b7280;
14
+ --color-gray-600: #9ca3af;
15
+ --color-gray-700: #d1d5db;
16
+ --color-gray-800: #e5e7eb;
17
+ --color-gray-900: #f3f4f6;
18
+ --color-gray-950: #f9fafb;
19
+
20
+ // Semantic Colors (adjusted for dark mode)
21
+ --color-primary: #f3f4f6;
22
+ --color-primary-light: #e5e7eb;
23
+ --color-primary-dark: #d1d5db;
24
+
25
+ --color-secondary: #9ca3af;
26
+ --color-secondary-light: #d1d5db;
27
+ --color-secondary-dark: #6b7280;
28
+
29
+ --color-success: #34d399;
30
+ --color-success-light: #6ee7b7;
31
+ --color-success-dark: #10b981;
32
+
33
+ --color-warning: #fbbf24;
34
+ --color-warning-light: #fcd34d;
35
+ --color-warning-dark: #f59e0b;
36
+
37
+ --color-error: #f87171;
38
+ --color-error-light: #fca5a5;
39
+ --color-error-dark: #ef4444;
40
+
41
+ --color-info: #60a5fa;
42
+ --color-info-light: #93c5fd;
43
+ --color-info-dark: #3b82f6;
44
+
45
+ // Text Colors
46
+ --color-text: #f3f4f6;
47
+ --color-text-muted: #9ca3af;
48
+ --color-text-light: #6b7280;
49
+ --color-text-inverse: #111827;
50
+
51
+ // Background Colors
52
+ --color-bg: #111827;
53
+ --color-bg-alt: #1f2937;
54
+ --color-bg-overlay: rgba(0, 0, 0, 0.7);
55
+
56
+ // Border Colors
57
+ --color-border: #374151;
58
+ --color-border-light: #1f2937;
59
+ --color-border-dark: #4b5563;
60
+ --color-border-focus: #60a5fa;
61
+ }
62
+ }
63
+
64
+ // Manual Dark Theme Toggle (via class)
65
+ .bl-theme-dark,
66
+ [data-theme="dark"] {
67
+ // Neutral Grayscale (inverted)
68
+ --color-gray-50: #030712;
69
+ --color-gray-100: #111827;
70
+ --color-gray-200: #1f2937;
71
+ --color-gray-300: #374151;
72
+ --color-gray-400: #4b5563;
73
+ --color-gray-500: #6b7280;
74
+ --color-gray-600: #9ca3af;
75
+ --color-gray-700: #d1d5db;
76
+ --color-gray-800: #e5e7eb;
77
+ --color-gray-900: #f3f4f6;
78
+ --color-gray-950: #f9fafb;
79
+
80
+ // Semantic Colors (adjusted for dark mode)
81
+ --color-primary: #f3f4f6;
82
+ --color-primary-light: #e5e7eb;
83
+ --color-primary-dark: #d1d5db;
84
+
85
+ --color-secondary: #9ca3af;
86
+ --color-secondary-light: #d1d5db;
87
+ --color-secondary-dark: #6b7280;
88
+
89
+ --color-success: #34d399;
90
+ --color-success-light: #6ee7b7;
91
+ --color-success-dark: #10b981;
92
+
93
+ --color-warning: #fbbf24;
94
+ --color-warning-light: #fcd34d;
95
+ --color-warning-dark: #f59e0b;
96
+
97
+ --color-error: #f87171;
98
+ --color-error-light: #fca5a5;
99
+ --color-error-dark: #ef4444;
100
+
101
+ --color-info: #60a5fa;
102
+ --color-info-light: #93c5fd;
103
+ --color-info-dark: #3b82f6;
104
+
105
+ // Text Colors
106
+ --color-text: #f3f4f6;
107
+ --color-text-muted: #9ca3af;
108
+ --color-text-light: #6b7280;
109
+ --color-text-inverse: #111827;
110
+
111
+ // Background Colors
112
+ --color-bg: #111827;
113
+ --color-bg-alt: #1f2937;
114
+ --color-bg-overlay: rgba(0, 0, 0, 0.7);
115
+
116
+ // Border Colors
117
+ --color-border: #374151;
118
+ --color-border-light: #1f2937;
119
+ --color-border-dark: #4b5563;
120
+ --color-border-focus: #60a5fa;
121
+ }
122
+
@@ -0,0 +1,7 @@
1
+ // ============================================================================
2
+ // Light Theme (Default)
3
+ // ============================================================================
4
+
5
+ // Light theme is already defined in tokens/_colors.scss
6
+ // This file exists for consistency and potential future overrides
7
+
@@ -0,0 +1,36 @@
1
+ // ============================================================================
2
+ // Border Tokens (Technical Design - Max 4px Radius)
3
+ // ============================================================================
4
+
5
+ // Border Widths
6
+ $border-width-none: 0;
7
+ $border-width-thin: 1px;
8
+ $border-width-base: 2px;
9
+ $border-width-thick: 4px;
10
+
11
+ // Border Radius (Technical - Max 4px)
12
+ $border-radius-none: 0;
13
+ $border-radius-sm: 2px;
14
+ $border-radius-md: 4px;
15
+ $border-radius-lg: 4px; // Max 4px
16
+ $border-radius-xl: 4px; // Max 4px
17
+ $border-radius-2xl: 4px; // Max 4px
18
+ $border-radius-full: 9999px; // Keep for special cases like switches
19
+
20
+ // Export as CSS Custom Properties
21
+ :root {
22
+ // Border Widths
23
+ --border-width-none: #{$border-width-none};
24
+ --border-width-thin: #{$border-width-thin};
25
+ --border-width-base: #{$border-width-base};
26
+ --border-width-thick: #{$border-width-thick};
27
+
28
+ // Border Radius (Technical)
29
+ --border-radius-none: #{$border-radius-none};
30
+ --border-radius-sm: #{$border-radius-sm};
31
+ --border-radius-md: #{$border-radius-md};
32
+ --border-radius-lg: #{$border-radius-lg};
33
+ --border-radius-xl: #{$border-radius-xl};
34
+ --border-radius-2xl: #{$border-radius-2xl};
35
+ --border-radius-full: #{$border-radius-full};
36
+ }
@@ -0,0 +1,136 @@
1
+ // ============================================================================
2
+ // Color Tokens (Technical Glass Design)
3
+ // ============================================================================
4
+
5
+ // Base Tone: Dark Graphite
6
+ $color-base: #1A1A1A;
7
+ $color-base-light: #2A2A2A;
8
+ $color-base-dark: #0F0F0F;
9
+
10
+ // Accent: Ice Blue
11
+ $color-accent: #4A9EFF;
12
+ $color-accent-light: #6BB0FF;
13
+ $color-accent-dark: #3A8EEF;
14
+
15
+ // Neutral Grayscale (for glass effects)
16
+ $color-gray-50: #f9fafb;
17
+ $color-gray-100: #f3f4f6;
18
+ $color-gray-200: #e5e7eb;
19
+ $color-gray-300: #d1d5db;
20
+ $color-gray-400: #9ca3af;
21
+ $color-gray-500: #6b7280;
22
+ $color-gray-600: #4b5563;
23
+ $color-gray-700: #374151;
24
+ $color-gray-800: #1f2937;
25
+ $color-gray-900: #111827;
26
+ $color-gray-950: #030712;
27
+
28
+ // Semantic Colors (using accent for primary)
29
+ $color-primary: $color-accent;
30
+ $color-primary-light: $color-accent-light;
31
+ $color-primary-dark: $color-accent-dark;
32
+
33
+ $color-secondary: $color-gray-600;
34
+ $color-secondary-light: $color-gray-500;
35
+ $color-secondary-dark: $color-gray-700;
36
+
37
+ $color-success: #10b981;
38
+ $color-success-light: #34d399;
39
+ $color-success-dark: #059669;
40
+
41
+ $color-warning: #f59e0b;
42
+ $color-warning-light: #fbbf24;
43
+ $color-warning-dark: #d97706;
44
+
45
+ $color-error: #ef4444;
46
+ $color-error-light: #f87171;
47
+ $color-error-dark: #dc2626;
48
+
49
+ $color-info: $color-accent;
50
+ $color-info-light: $color-accent-light;
51
+ $color-info-dark: $color-accent-dark;
52
+
53
+ // Text Colors (high contrast on dark ground)
54
+ $color-text: #ffffff;
55
+ $color-text-muted: rgba(255, 255, 255, 0.7);
56
+ $color-text-light: rgba(255, 255, 255, 0.5);
57
+ $color-text-inverse: #1A1A1A;
58
+
59
+ // Background Colors
60
+ $color-bg: $color-base;
61
+ $color-bg-alt: $color-base-light;
62
+ $color-bg-overlay: rgba(0, 0, 0, 0.3); // Desaturated, not darkened
63
+
64
+ // Border Colors (cool, slightly bright on dark ground)
65
+ $color-border: rgba(255, 255, 255, 0.15);
66
+ $color-border-light: rgba(255, 255, 255, 0.1);
67
+ $color-border-dark: rgba(255, 255, 255, 0.2);
68
+ $color-border-focus: $color-accent;
69
+
70
+ // Export as CSS Custom Properties
71
+ :root {
72
+ // Base Tone
73
+ --color-base: #{$color-base};
74
+ --color-base-light: #{$color-base-light};
75
+ --color-base-dark: #{$color-base-dark};
76
+
77
+ // Accent
78
+ --color-accent: #{$color-accent};
79
+ --color-accent-light: #{$color-accent-light};
80
+ --color-accent-dark: #{$color-accent-dark};
81
+
82
+ // Neutral Grayscale
83
+ --color-gray-50: #{$color-gray-50};
84
+ --color-gray-100: #{$color-gray-100};
85
+ --color-gray-200: #{$color-gray-200};
86
+ --color-gray-300: #{$color-gray-300};
87
+ --color-gray-400: #{$color-gray-400};
88
+ --color-gray-500: #{$color-gray-500};
89
+ --color-gray-600: #{$color-gray-600};
90
+ --color-gray-700: #{$color-gray-700};
91
+ --color-gray-800: #{$color-gray-800};
92
+ --color-gray-900: #{$color-gray-900};
93
+ --color-gray-950: #{$color-gray-950};
94
+
95
+ // Semantic Colors
96
+ --color-primary: #{$color-primary};
97
+ --color-primary-light: #{$color-primary-light};
98
+ --color-primary-dark: #{$color-primary-dark};
99
+
100
+ --color-secondary: #{$color-secondary};
101
+ --color-secondary-light: #{$color-secondary-light};
102
+ --color-secondary-dark: #{$color-secondary-dark};
103
+
104
+ --color-success: #{$color-success};
105
+ --color-success-light: #{$color-success-light};
106
+ --color-success-dark: #{$color-success-dark};
107
+
108
+ --color-warning: #{$color-warning};
109
+ --color-warning-light: #{$color-warning-light};
110
+ --color-warning-dark: #{$color-warning-dark};
111
+
112
+ --color-error: #{$color-error};
113
+ --color-error-light: #{$color-error-light};
114
+ --color-error-dark: #{$color-error-dark};
115
+
116
+ --color-info: #{$color-info};
117
+ --color-info-light: #{$color-info-light};
118
+ --color-info-dark: #{$color-info-dark};
119
+
120
+ // Text Colors
121
+ --color-text: #{$color-text};
122
+ --color-text-muted: #{$color-text-muted};
123
+ --color-text-light: #{$color-text-light};
124
+ --color-text-inverse: #{$color-text-inverse};
125
+
126
+ // Background Colors
127
+ --color-bg: #{$color-bg};
128
+ --color-bg-alt: #{$color-bg-alt};
129
+ --color-bg-overlay: #{$color-bg-overlay};
130
+
131
+ // Border Colors
132
+ --color-border: #{$color-border};
133
+ --color-border-light: #{$color-border-light};
134
+ --color-border-dark: #{$color-border-dark};
135
+ --color-border-focus: #{$color-border-focus};
136
+ }
@@ -0,0 +1,170 @@
1
+ // ============================================================================
2
+ // Form Tokens
3
+ // ============================================================================
4
+
5
+ @use 'spacing' as *;
6
+ @use 'colors' as *;
7
+ @use 'typography' as *;
8
+ @use 'borders' as *;
9
+ @use 'transitions' as *;
10
+
11
+ // Form Input Tokens
12
+ $form-input-padding-x: $spacing-md;
13
+ $form-input-padding-y: $spacing-sm;
14
+ $form-input-padding-x-sm: $spacing-sm;
15
+ $form-input-padding-y-sm: $spacing-xs;
16
+ $form-input-padding-x-lg: $spacing-lg;
17
+ $form-input-padding-y-lg: $spacing-md;
18
+
19
+ $form-input-border-width: $border-width-thin;
20
+ $form-input-border-radius: $border-radius-md;
21
+ $form-input-font-size: $font-size-base;
22
+ $form-input-font-size-sm: $font-size-sm;
23
+ $form-input-font-size-lg: $font-size-lg;
24
+ $form-input-line-height: $line-height-base;
25
+
26
+ $form-input-bg: $color-bg;
27
+ $form-input-bg-disabled: $color-bg-alt;
28
+ $form-input-color: $color-text;
29
+ $form-input-border: $color-border;
30
+ $form-input-border-focus: $color-border-focus;
31
+ $form-input-placeholder-color: $color-text-muted;
32
+
33
+ $form-input-focus-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);
34
+ $form-input-focus-shadow-error: 0 0 0 3px rgba(239, 68, 68, 0.1);
35
+ $form-input-focus-shadow-success: 0 0 0 3px rgba(16, 185, 129, 0.1);
36
+
37
+ $form-input-opacity-disabled: 0.6;
38
+
39
+ // Form Label Tokens
40
+ $form-label-font-size: $font-size-sm;
41
+ $form-label-font-weight: $font-weight-medium;
42
+ $form-label-color: $color-text;
43
+ $form-label-margin-bottom: $spacing-xs;
44
+
45
+ // Form Helper/Error Tokens
46
+ $form-helper-font-size: $font-size-xs;
47
+ $form-helper-color: $color-text-muted;
48
+ $form-error-color: $color-error;
49
+ $form-error-font-size: $font-size-xs;
50
+ $form-helper-margin-top: $spacing-xs;
51
+
52
+ // Form Group Tokens
53
+ $form-group-margin-bottom: $spacing-md;
54
+
55
+ // Checkbox & Radio Tokens
56
+ $form-checkbox-size: 1.25rem;
57
+ $form-checkbox-margin-right: $spacing-sm;
58
+ $form-checkbox-accent-color: $color-primary;
59
+ $form-checkbox-opacity-disabled: 0.6;
60
+
61
+ // Switch Tokens
62
+ $form-switch-width: 3rem;
63
+ $form-switch-height: 1.5rem;
64
+ $form-switch-slider-size: 1.25rem;
65
+ $form-switch-slider-offset: 0.125rem;
66
+ $form-switch-slider-translate: 1.5rem;
67
+ $form-switch-bg: $color-gray-300;
68
+ $form-switch-bg-active: $color-primary;
69
+ $form-switch-slider-bg: #ffffff;
70
+ $form-switch-focus-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);
71
+ $form-switch-opacity-disabled: 0.6;
72
+
73
+ // Textarea Tokens
74
+ $form-textarea-min-height: 100px;
75
+ $form-textarea-resize: vertical;
76
+
77
+ // Range Tokens
78
+ $form-range-height: 0.5rem;
79
+ $form-range-thumb-size: 1.25rem;
80
+ $form-range-bg: $color-gray-200;
81
+ $form-range-thumb-bg: $color-primary;
82
+
83
+ // File Input Tokens
84
+ $form-file-input-padding: $spacing-sm;
85
+ $form-file-input-font-size: $font-size-sm;
86
+ $form-file-input-border-style: dashed;
87
+ $form-file-input-bg: $color-bg-alt;
88
+ $form-file-input-bg-hover: $color-bg;
89
+
90
+ // Export as CSS Custom Properties
91
+ :root {
92
+ // Form Input
93
+ --form-input-padding-x: #{$form-input-padding-x};
94
+ --form-input-padding-y: #{$form-input-padding-y};
95
+ --form-input-padding-x-sm: #{$form-input-padding-x-sm};
96
+ --form-input-padding-y-sm: #{$form-input-padding-y-sm};
97
+ --form-input-padding-x-lg: #{$form-input-padding-x-lg};
98
+ --form-input-padding-y-lg: #{$form-input-padding-y-lg};
99
+
100
+ --form-input-border-width: #{$form-input-border-width};
101
+ --form-input-border-radius: #{$form-input-border-radius};
102
+ --form-input-font-size: #{$form-input-font-size};
103
+ --form-input-font-size-sm: #{$form-input-font-size-sm};
104
+ --form-input-font-size-lg: #{$form-input-font-size-lg};
105
+ --form-input-line-height: #{$form-input-line-height};
106
+
107
+ --form-input-bg: #{$form-input-bg};
108
+ --form-input-bg-disabled: #{$form-input-bg-disabled};
109
+ --form-input-color: #{$form-input-color};
110
+ --form-input-border: #{$form-input-border};
111
+ --form-input-border-focus: #{$form-input-border-focus};
112
+ --form-input-placeholder-color: #{$form-input-placeholder-color};
113
+
114
+ --form-input-focus-shadow: #{$form-input-focus-shadow};
115
+ --form-input-focus-shadow-error: #{$form-input-focus-shadow-error};
116
+ --form-input-focus-shadow-success: #{$form-input-focus-shadow-success};
117
+
118
+ --form-input-opacity-disabled: #{$form-input-opacity-disabled};
119
+
120
+ // Form Label
121
+ --form-label-font-size: #{$form-label-font-size};
122
+ --form-label-font-weight: #{$form-label-font-weight};
123
+ --form-label-color: #{$form-label-color};
124
+ --form-label-margin-bottom: #{$form-label-margin-bottom};
125
+
126
+ // Form Helper/Error
127
+ --form-helper-font-size: #{$form-helper-font-size};
128
+ --form-helper-color: #{$form-helper-color};
129
+ --form-error-color: #{$form-error-color};
130
+ --form-error-font-size: #{$form-error-font-size};
131
+ --form-helper-margin-top: #{$form-helper-margin-top};
132
+
133
+ // Form Group
134
+ --form-group-margin-bottom: #{$form-group-margin-bottom};
135
+
136
+ // Checkbox & Radio
137
+ --form-checkbox-size: #{$form-checkbox-size};
138
+ --form-checkbox-margin-right: #{$form-checkbox-margin-right};
139
+ --form-checkbox-accent-color: #{$form-checkbox-accent-color};
140
+ --form-checkbox-opacity-disabled: #{$form-checkbox-opacity-disabled};
141
+
142
+ // Switch
143
+ --form-switch-width: #{$form-switch-width};
144
+ --form-switch-height: #{$form-switch-height};
145
+ --form-switch-slider-size: #{$form-switch-slider-size};
146
+ --form-switch-slider-offset: #{$form-switch-slider-offset};
147
+ --form-switch-slider-translate: #{$form-switch-slider-translate};
148
+ --form-switch-bg: #{$form-switch-bg};
149
+ --form-switch-bg-active: #{$form-switch-bg-active};
150
+ --form-switch-slider-bg: #{$form-switch-slider-bg};
151
+ --form-switch-focus-shadow: #{$form-switch-focus-shadow};
152
+ --form-switch-opacity-disabled: #{$form-switch-opacity-disabled};
153
+
154
+ // Textarea
155
+ --form-textarea-min-height: #{$form-textarea-min-height};
156
+ --form-textarea-resize: #{$form-textarea-resize};
157
+
158
+ // Range
159
+ --form-range-height: #{$form-range-height};
160
+ --form-range-thumb-size: #{$form-range-thumb-size};
161
+ --form-range-bg: #{$form-range-bg};
162
+ --form-range-thumb-bg: #{$form-range-thumb-bg};
163
+
164
+ // File Input
165
+ --form-file-input-padding: #{$form-file-input-padding};
166
+ --form-file-input-font-size: #{$form-file-input-font-size};
167
+ --form-file-input-border-style: #{$form-file-input-border-style};
168
+ --form-file-input-bg: #{$form-file-input-bg};
169
+ --form-file-input-bg-hover: #{$form-file-input-bg-hover};
170
+ }
@@ -0,0 +1,60 @@
1
+ // ============================================================================
2
+ // Glassmorphism Tokens (Technical Glass Design)
3
+ // ============================================================================
4
+
5
+ // Glass Background Colors (milky, desaturated)
6
+ $glass-bg-light: rgba(255, 255, 255, 0.05);
7
+ $glass-bg-medium: rgba(255, 255, 255, 0.08);
8
+ $glass-bg-heavy: rgba(255, 255, 255, 0.12);
9
+ $glass-bg-etched: rgba(255, 255, 255, 0.15); // For table headers (etched glass)
10
+
11
+ // Backdrop Blur (subtle, reduced)
12
+ $glass-blur-sm: 2px;
13
+ $glass-blur-md: 4px;
14
+ $glass-blur-lg: 6px;
15
+ $glass-blur-xl: 8px;
16
+
17
+ // Glass Borders (cool, slightly bright on dark ground)
18
+ $glass-border-light: rgba(255, 255, 255, 0.1);
19
+ $glass-border-medium: rgba(255, 255, 255, 0.15);
20
+ $glass-border-heavy: rgba(255, 255, 255, 0.2);
21
+
22
+ // Glass Shadows (subtle gray, no colorful glows)
23
+ $glass-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.1);
24
+ $glass-shadow-md: 0 2px 4px rgba(0, 0, 0, 0.15);
25
+ $glass-shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.2);
26
+
27
+ // Technical Border Radius (max 4px)
28
+ $tech-border-radius-none: 0;
29
+ $tech-border-radius-sm: 2px;
30
+ $tech-border-radius-md: 4px;
31
+
32
+ // Export as CSS Custom Properties
33
+ :root {
34
+ // Glass Backgrounds
35
+ --glass-bg-light: #{$glass-bg-light};
36
+ --glass-bg-medium: #{$glass-bg-medium};
37
+ --glass-bg-heavy: #{$glass-bg-heavy};
38
+ --glass-bg-etched: #{$glass-bg-etched};
39
+
40
+ // Backdrop Blur
41
+ --glass-blur-sm: #{$glass-blur-sm};
42
+ --glass-blur-md: #{$glass-blur-md};
43
+ --glass-blur-lg: #{$glass-blur-lg};
44
+ --glass-blur-xl: #{$glass-blur-xl};
45
+
46
+ // Glass Borders
47
+ --glass-border-light: #{$glass-border-light};
48
+ --glass-border-medium: #{$glass-border-medium};
49
+ --glass-border-heavy: #{$glass-border-heavy};
50
+
51
+ // Glass Shadows
52
+ --glass-shadow-sm: #{$glass-shadow-sm};
53
+ --glass-shadow-md: #{$glass-shadow-md};
54
+ --glass-shadow-lg: #{$glass-shadow-lg};
55
+
56
+ // Technical Border Radius
57
+ --tech-border-radius-none: #{$tech-border-radius-none};
58
+ --tech-border-radius-sm: #{$tech-border-radius-sm};
59
+ --tech-border-radius-md: #{$tech-border-radius-md};
60
+ }
@@ -0,0 +1,24 @@
1
+ // ============================================================================
2
+ // Shadow Tokens (Elevation System)
3
+ // ============================================================================
4
+
5
+ // Box Shadows
6
+ $shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
7
+ $shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
8
+ $shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
9
+ $shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
10
+ $shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
11
+ $shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);
12
+ $shadow-none: none;
13
+
14
+ // Export as CSS Custom Properties
15
+ :root {
16
+ --shadow-sm: #{$shadow-sm};
17
+ --shadow-md: #{$shadow-md};
18
+ --shadow-lg: #{$shadow-lg};
19
+ --shadow-xl: #{$shadow-xl};
20
+ --shadow-2xl: #{$shadow-2xl};
21
+ --shadow-inner: #{$shadow-inner};
22
+ --shadow-none: #{$shadow-none};
23
+ }
24
+