soltana-ui 0.1.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 (104) hide show
  1. package/README.md +158 -0
  2. package/dist/config/index.d.ts +3 -0
  3. package/dist/config/index.js +7 -0
  4. package/dist/config/register.d.ts +27 -0
  5. package/dist/config/stylesheet.d.ts +13 -0
  6. package/dist/config/types.d.ts +177 -0
  7. package/dist/config/types.js +7 -0
  8. package/dist/config/validation.d.ts +29 -0
  9. package/dist/config/validation.js +59 -0
  10. package/dist/enhancers/accordion.d.ts +19 -0
  11. package/dist/enhancers/carousel.d.ts +21 -0
  12. package/dist/enhancers/collapsible.d.ts +14 -0
  13. package/dist/enhancers/color-picker.d.ts +20 -0
  14. package/dist/enhancers/combobox.d.ts +17 -0
  15. package/dist/enhancers/context-menu.d.ts +19 -0
  16. package/dist/enhancers/date-picker.d.ts +8 -0
  17. package/dist/enhancers/drawer.d.ts +11 -0
  18. package/dist/enhancers/dropdown.d.ts +17 -0
  19. package/dist/enhancers/hover-card.d.ts +15 -0
  20. package/dist/enhancers/index.d.ts +42 -0
  21. package/dist/enhancers/modal.d.ts +16 -0
  22. package/dist/enhancers/scroll-area.d.ts +14 -0
  23. package/dist/enhancers/tabs.d.ts +26 -0
  24. package/dist/enhancers/test-helpers.d.ts +20 -0
  25. package/dist/enhancers/test-utils.d.ts +10 -0
  26. package/dist/enhancers/toast.d.ts +24 -0
  27. package/dist/enhancers/tooltip.d.ts +15 -0
  28. package/dist/enhancers/tree.d.ts +24 -0
  29. package/dist/enhancers/utils/click-away.d.ts +7 -0
  30. package/dist/enhancers/utils/create-overlay-enhancer.d.ts +14 -0
  31. package/dist/enhancers/utils/focus-trap.d.ts +9 -0
  32. package/dist/enhancers/utils/generate-id.d.ts +6 -0
  33. package/dist/enhancers/utils/keyboard-nav.d.ts +21 -0
  34. package/dist/enhancers/utils/position.d.ts +30 -0
  35. package/dist/fonts/index.d.ts +20 -0
  36. package/dist/index.d.ts +9 -0
  37. package/dist/init.d.ts +16 -0
  38. package/dist/plugins/index.d.ts +2 -0
  39. package/dist/plugins/index.js +1 -0
  40. package/dist/plugins/postcss-soltana-treeshake.d.ts +10 -0
  41. package/dist/plugins/postcss-soltana-treeshake.js +149 -0
  42. package/dist/plugins/types.d.ts +9 -0
  43. package/dist/plugins/types.js +4 -0
  44. package/dist/soltana-ui.css +1 -0
  45. package/dist/soltana-ui.js +1702 -0
  46. package/dist/soltana-ui.umd.cjs +1 -0
  47. package/package.json +90 -0
  48. package/src/styles/_variables.scss +348 -0
  49. package/src/styles/base/_accessibility.scss +146 -0
  50. package/src/styles/base/_index.scss +12 -0
  51. package/src/styles/base/_register.scss +84 -0
  52. package/src/styles/base/_relief-system.scss +53 -0
  53. package/src/styles/base/_scrollbar.scss +40 -0
  54. package/src/styles/base/_transitions.scss +75 -0
  55. package/src/styles/base/_typography.scss +442 -0
  56. package/src/styles/components/_alert-dialogs.scss +75 -0
  57. package/src/styles/components/_badges.scss +215 -0
  58. package/src/styles/components/_buttons.scss +293 -0
  59. package/src/styles/components/_callouts.scss +99 -0
  60. package/src/styles/components/_cards.scss +97 -0
  61. package/src/styles/components/_carousels.scss +108 -0
  62. package/src/styles/components/_closes.scss +63 -0
  63. package/src/styles/components/_code.scss +75 -0
  64. package/src/styles/components/_collapsibles.scss +61 -0
  65. package/src/styles/components/_color-pickers.scss +211 -0
  66. package/src/styles/components/_comboboxes.scss +88 -0
  67. package/src/styles/components/_context-menus.scss +82 -0
  68. package/src/styles/components/_date-pickers.scss +165 -0
  69. package/src/styles/components/_feedback.scss +354 -0
  70. package/src/styles/components/_figures.scss +52 -0
  71. package/src/styles/components/_heros.scss +83 -0
  72. package/src/styles/components/_hover-cards.scss +55 -0
  73. package/src/styles/components/_images.scss +71 -0
  74. package/src/styles/components/_index.scss +41 -0
  75. package/src/styles/components/_indicators.scss +403 -0
  76. package/src/styles/components/_inputs.scss +409 -0
  77. package/src/styles/components/_layouts.scss +139 -0
  78. package/src/styles/components/_lists.scss +135 -0
  79. package/src/styles/components/_menus.scss +195 -0
  80. package/src/styles/components/_navigation.scss +325 -0
  81. package/src/styles/components/_overlays.scss +233 -0
  82. package/src/styles/components/_scroll-areas.scss +53 -0
  83. package/src/styles/components/_segmented-controls.scss +75 -0
  84. package/src/styles/components/_tables.scss +137 -0
  85. package/src/styles/components/_toasts.scss +111 -0
  86. package/src/styles/components/_toggles.scss +57 -0
  87. package/src/styles/components/_trees.scss +123 -0
  88. package/src/styles/decorative/_classical.scss +196 -0
  89. package/src/styles/decorative/_index.scss +7 -0
  90. package/src/styles/finishes/_index.scss +55 -0
  91. package/src/styles/index.scss +30 -0
  92. package/src/styles/reliefs/_index.scss +66 -0
  93. package/src/styles/reliefs/_neumorphic-tables.scss +92 -0
  94. package/src/styles/themes/_dark.scss +130 -0
  95. package/src/styles/themes/_index.scss +3 -0
  96. package/src/styles/themes/_light.scss +122 -0
  97. package/src/styles/themes/_sepia.scss +121 -0
  98. package/src/styles/utilities/_index.scss +13 -0
  99. package/src/styles/utilities/_layout.scss +100 -0
  100. package/src/styles/utilities/_mixins.scss +410 -0
  101. package/src/styles/utilities/_responsive.scss +46 -0
  102. package/src/styles/utilities/_sizing.scss +62 -0
  103. package/src/styles/utilities/_spacing.scss +12 -0
  104. package/src/styles/utilities/_visual.scss +436 -0
@@ -0,0 +1,130 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Dark Theme
3
+ // ---------------------------------------------------------------------------
4
+ // Deep navy surfaces with warm ivory text and gold accents.
5
+ // Default theme — applied to :root by initSoltana().
6
+ // ---------------------------------------------------------------------------
7
+
8
+ @use '../variables' as *;
9
+ @use '../base/register' as *;
10
+
11
+ @include register-theme('dark', $include-root: true) {
12
+ color-scheme: dark;
13
+
14
+ // =========================================================================
15
+ // SEMANTIC TOKENS
16
+ // =========================================================================
17
+
18
+ // Surface colors — deep midnight navy (7→13→18→26→34% L)
19
+ --surface-bg: #08091a;
20
+ --surface-1: #101330;
21
+ --surface-2: #1a1e48;
22
+ --surface-3: #262d5c;
23
+ --surface-4: #333c72;
24
+
25
+ // Text colors — warm ivory hierarchy
26
+ --text-primary: #f5f0e6;
27
+ --text-secondary: #c5b99b;
28
+ --text-tertiary: #978b77;
29
+ --text-muted: #897d69;
30
+ --text-inverse: #08091a;
31
+
32
+ // Border colors — neutral alpha for seamless neumorphic blending
33
+ --border-default: rgb(255 255 255 / 6%);
34
+ --border-subtle: rgb(255 255 255 / 3%);
35
+ --border-strong: rgb(255 255 255 / 10%);
36
+
37
+ // Accent colors — seed tokens (user-overridable)
38
+ --accent-primary: #d4a843;
39
+ --accent-primary-hover: color-mix(in oklch, var(--accent-primary), white 15%);
40
+ --accent-primary-active: color-mix(in oklch, var(--accent-primary), black 25%);
41
+ --accent-secondary: #a855f7;
42
+ --accent-secondary-hover: color-mix(in oklch, var(--accent-secondary), white 15%);
43
+ --accent-secondary-active: color-mix(in oklch, var(--accent-secondary), black 25%);
44
+
45
+ // Decorative accent (ornaments, highlights)
46
+ --accent-decorative: #d4a843;
47
+ --accent-decorative-hover: color-mix(in oklch, var(--accent-decorative), white 15%);
48
+ --accent-decorative-subtle: color-mix(in srgb, var(--accent-decorative) 10%, transparent);
49
+ --border-decorative: color-mix(in srgb, var(--accent-decorative) 20%, transparent);
50
+ --border-decorative-strong: color-mix(in srgb, var(--accent-decorative) 35%, transparent);
51
+
52
+ // Semantic colors — jewel-toned
53
+ --color-success: #10b981;
54
+ --color-success-subtle: rgb(16 185 129 / 12%);
55
+ --color-success-text: #34d399;
56
+ --color-warning: #fcd34d;
57
+ --color-warning-subtle: rgb(252 211 77 / 12%);
58
+ --color-warning-text: #fde68a;
59
+ --color-error: #ef4444;
60
+ --color-error-subtle: rgb(239 68 68 / 12%);
61
+ --color-error-text: #f87171;
62
+ --color-info: #3b82f6;
63
+ --color-info-subtle: rgb(59 130 246 / 12%);
64
+ --color-info-text: #60a5fa;
65
+
66
+ // Interactive states — derived from accent-primary
67
+ --state-hover: color-mix(in srgb, var(--accent-primary) 8%, transparent);
68
+ --state-active: color-mix(in srgb, var(--accent-primary) 14%, transparent);
69
+ --state-focus-ring: color-mix(in srgb, var(--accent-primary) 40%, transparent);
70
+ --state-disabled-bg: #1a1e48;
71
+ --state-disabled-text: #897d69;
72
+
73
+ // =========================================================================
74
+ // CHANNEL TOKENS — consumed by _relief-system.scss to derive primitives
75
+ // These are a valid low-level API: components and reliefs use
76
+ // rgb(var(--shadow-color) / <alpha>) to build contextual shadows.
77
+ // =========================================================================
78
+
79
+ --shadow-color: 0 0 0;
80
+ --highlight-color: 255 255 255;
81
+
82
+ // --accent-glow is a JS-only bridge token consumed by runtime registration;
83
+ // not referenced in SCSS.
84
+ --accent-glow: color-mix(in srgb, var(--accent-primary) 15%, transparent);
85
+ --channel-sheen-color: 255 255 255;
86
+ --channel-tint-color: 212 168 67;
87
+
88
+ // =========================================================================
89
+ // BRIDGE TOKENS — per-theme overrides
90
+ // Shared defaults in _relief-system.scss; tokens like --mesh-color-* use
91
+ // var() indirection in :root and resolve correctly for all themes without
92
+ // per-theme declarations. Explicit declarations here for parity with
93
+ // light/sepia.
94
+ // =========================================================================
95
+
96
+ --glass-opacity: 0.5;
97
+ --mesh-color-1: var(--accent-primary);
98
+ --mesh-color-2: var(--accent-secondary);
99
+ --mesh-color-3: var(--accent-decorative);
100
+ --surface-deep: var(--surface-2);
101
+ --neu-shadow: rgb(var(--shadow-color) / 65%);
102
+ --neu-light: rgb(var(--highlight-color) / 12%);
103
+
104
+ // =========================================================================
105
+ // COMPONENT TOKENS
106
+ // =========================================================================
107
+
108
+ @include component-tokens(
109
+ $input-bg: rgb(255 255 255 / 4%),
110
+ $card-bg: rgb(16 19 48 / 60%),
111
+ $tooltip-bg: #08091a,
112
+ $tooltip-text: #f5f0e6,
113
+ $code-bg: #262d5c,
114
+ $input-border: rgb(255 255 255 / 8%),
115
+ $input-placeholder: #897d69,
116
+ $card-border: rgb(255 255 255 / 6%),
117
+ $scrollbar-thumb: rgb(255 255 255 / 12%),
118
+ $scrollbar-track: rgb(255 255 255 / 3%),
119
+ $toast-bg: #101330,
120
+ $toast-text: #f5f0e6,
121
+ $drawer-bg: #101330,
122
+ $popover-bg: #101330,
123
+ $popover-border: rgb(255 255 255 / 8%),
124
+ $kbd-bg: #1a1e48,
125
+ $kbd-border: rgb(255 255 255 / 12%)
126
+ );
127
+
128
+ // Icon data URIs — colors chosen for contrast against accent-primary bg
129
+ --icon-select-chevron: #{icon-chevron(#c5b99b)};
130
+ }
@@ -0,0 +1,3 @@
1
+ @forward 'dark';
2
+ @forward 'light';
3
+ @forward 'sepia';
@@ -0,0 +1,122 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Light Theme
3
+ // ---------------------------------------------------------------------------
4
+ // Cool white surfaces with blue-gray undertones, slate accents, and
5
+ // muted gold decorative highlights.
6
+ // ---------------------------------------------------------------------------
7
+
8
+ @use '../variables' as *;
9
+ @use '../base/register' as *;
10
+
11
+ @include register-theme('light') {
12
+ color-scheme: light;
13
+
14
+ // =========================================================================
15
+ // SEMANTIC TOKENS
16
+ // =========================================================================
17
+
18
+ // Surface colors — cool marble with subtle blue-gray undertones
19
+ --surface-bg: #f6f7fa;
20
+ --surface-1: #fff;
21
+ --surface-2: #eef0f5;
22
+ --surface-3: #e2e5ed;
23
+ --surface-4: #d5d9e4;
24
+
25
+ // Text colors — cool slate hierarchy
26
+ --text-primary: #1e2128;
27
+ --text-secondary: #3a3f4c;
28
+ --text-tertiary: #5c6375;
29
+ --text-muted: #6b7280;
30
+ --text-inverse: #eef0f5;
31
+
32
+ // Border colors — cool silver tints
33
+ --border-default: rgb(85 97 120 / 12%);
34
+ --border-subtle: rgb(85 97 120 / 7%);
35
+ --border-strong: rgb(85 97 120 / 20%);
36
+
37
+ // Accent colors — seed tokens (user-overridable)
38
+ --accent-primary: #576378;
39
+ --accent-primary-hover: color-mix(in oklch, var(--accent-primary), black 15%);
40
+ --accent-primary-active: color-mix(in oklch, var(--accent-primary), black 25%);
41
+ --accent-secondary: #6b21a8;
42
+ --accent-secondary-hover: color-mix(in oklch, var(--accent-secondary), black 15%);
43
+ --accent-secondary-active: color-mix(in oklch, var(--accent-secondary), black 25%);
44
+
45
+ // Decorative accent (ornaments, highlights)
46
+ --accent-decorative: #755a00;
47
+ --accent-decorative-hover: color-mix(in oklch, var(--accent-decorative), black 15%);
48
+ --accent-decorative-subtle: color-mix(in srgb, var(--accent-decorative) 12%, transparent);
49
+ --border-decorative: color-mix(in srgb, var(--accent-decorative) 25%, transparent);
50
+ --border-decorative-strong: color-mix(in srgb, var(--accent-decorative) 40%, transparent);
51
+
52
+ // Semantic colors — high contrast for marble background
53
+ --color-success: #0d6b4e;
54
+ --color-success-subtle: rgb(13 107 78 / 8%);
55
+ --color-success-text: #065f46;
56
+ --color-warning: #855c0a;
57
+ --color-warning-subtle: rgb(133 92 10 / 8%);
58
+ --color-warning-text: #6b4a08;
59
+ --color-error: #991b1b;
60
+ --color-error-subtle: rgb(153 27 27 / 8%);
61
+ --color-error-text: #7f1d1d;
62
+ --color-info: #1e40af;
63
+ --color-info-subtle: rgb(30 64 175 / 8%);
64
+ --color-info-text: #1e3a8a;
65
+
66
+ // Interactive states — derived from accent-primary
67
+ --state-hover: color-mix(in srgb, var(--accent-primary) 6%, transparent);
68
+ --state-active: color-mix(in srgb, var(--accent-primary) 12%, transparent);
69
+ --state-focus-ring: color-mix(in srgb, var(--accent-primary) 35%, transparent);
70
+ --state-disabled-bg: #e2e5ed;
71
+ --state-disabled-text: #6b7280;
72
+
73
+ // =========================================================================
74
+ // CHANNEL TOKENS — consumed by _relief-system.scss to derive primitives
75
+ // =========================================================================
76
+
77
+ --shadow-color: 0 0 0;
78
+ --highlight-color: 255 255 255;
79
+ --accent-glow: color-mix(in srgb, var(--accent-primary) 10%, transparent);
80
+ --channel-sheen-color: 0 0 0;
81
+ --channel-tint-color: 87 99 120;
82
+
83
+ // =========================================================================
84
+ // BRIDGE TOKENS — per-theme overrides
85
+ // Shared defaults in _relief-system.scss
86
+ // =========================================================================
87
+
88
+ --glass-opacity: 0.35;
89
+ --mesh-color-1: var(--accent-secondary);
90
+ --mesh-color-2: var(--color-info);
91
+ --mesh-color-3: var(--color-success);
92
+ --surface-deep: var(--surface-3);
93
+ --neu-shadow: rgb(var(--shadow-color) / 35%);
94
+ --neu-light: rgb(var(--highlight-color) / 88%);
95
+
96
+ // =========================================================================
97
+ // COMPONENT TOKENS
98
+ // =========================================================================
99
+
100
+ @include component-tokens(
101
+ $input-bg: #fff,
102
+ $card-bg: rgb(255 255 255 / 78%),
103
+ $tooltip-bg: #1e2128,
104
+ $tooltip-text: #eef0f5,
105
+ $code-bg: #eef0f5,
106
+ $input-border: rgb(85 97 120 / 14%),
107
+ $input-placeholder: #6b7280,
108
+ $card-border: rgb(85 97 120 / 10%),
109
+ $scrollbar-thumb: rgb(85 97 120 / 15%),
110
+ $scrollbar-track: rgb(85 97 120 / 3%),
111
+ $toast-bg: #fff,
112
+ $toast-text: #1e2128,
113
+ $drawer-bg: #fff,
114
+ $popover-bg: #fff,
115
+ $popover-border: rgb(85 97 120 / 14%),
116
+ $kbd-bg: #eef0f5,
117
+ $kbd-border: rgb(85 97 120 / 20%)
118
+ );
119
+
120
+ // Icon data URIs — colors chosen for contrast against accent-primary bg
121
+ --icon-select-chevron: #{icon-chevron(#3a3f4c)};
122
+ }
@@ -0,0 +1,121 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Sepia Theme
3
+ // ---------------------------------------------------------------------------
4
+ // Warm champagne surfaces with espresso text and brown accents.
5
+ // ---------------------------------------------------------------------------
6
+
7
+ @use '../variables' as *;
8
+ @use '../base/register' as *;
9
+
10
+ @include register-theme('sepia') {
11
+ color-scheme: light;
12
+
13
+ // =========================================================================
14
+ // SEMANTIC TOKENS
15
+ // =========================================================================
16
+
17
+ // Surface colors — deeper champagne with amber undertones
18
+ --surface-bg: #e8dcc0;
19
+ --surface-1: #f2e8d2;
20
+ --surface-2: #ddd0b0;
21
+ --surface-3: #d0c098;
22
+ --surface-4: #c4b088;
23
+
24
+ // Text colors — rich espresso hierarchy (higher contrast than light)
25
+ --text-primary: #1c1408;
26
+ --text-secondary: #3a2c12;
27
+ --text-tertiary: #5a4b30;
28
+ --text-muted: #6f6045;
29
+ --text-inverse: #f2e8d2;
30
+
31
+ // Border colors — warm bronze tints
32
+ --border-default: rgb(94 63 27 / 18%);
33
+ --border-subtle: rgb(94 63 27 / 10%);
34
+ --border-strong: rgb(94 63 27 / 28%);
35
+
36
+ // Accent colors — seed tokens (user-overridable)
37
+ --accent-primary: #6a4518;
38
+ --accent-primary-hover: color-mix(in oklch, var(--accent-primary), black 15%);
39
+ --accent-primary-active: color-mix(in oklch, var(--accent-primary), black 25%);
40
+ --accent-secondary: #6b21a8;
41
+ --accent-secondary-hover: color-mix(in oklch, var(--accent-secondary), black 15%);
42
+ --accent-secondary-active: color-mix(in oklch, var(--accent-secondary), black 25%);
43
+
44
+ // Decorative accent (ornaments, highlights)
45
+ --accent-decorative: #654a00;
46
+ --accent-decorative-hover: color-mix(in oklch, var(--accent-decorative), black 15%);
47
+ --accent-decorative-subtle: color-mix(in srgb, var(--accent-decorative) 10%, transparent);
48
+ --border-decorative: color-mix(in srgb, var(--accent-decorative) 22%, transparent);
49
+ --border-decorative-strong: color-mix(in srgb, var(--accent-decorative) 38%, transparent);
50
+
51
+ // Semantic colors — warm-shifted, distinct from light
52
+ --color-success: #1a7854;
53
+ --color-success-subtle: rgb(26 120 84 / 12%);
54
+ --color-success-text: #0e5538;
55
+ --color-warning: #8b5e14;
56
+ --color-warning-subtle: rgb(139 94 20 / 12%);
57
+ --color-warning-text: #744d10;
58
+ --color-error: #a02020;
59
+ --color-error-subtle: rgb(160 32 32 / 10%);
60
+ --color-error-text: #882020;
61
+ --color-info: #2a5098;
62
+ --color-info-subtle: rgb(42 80 152 / 10%);
63
+ --color-info-text: #1e3a8a;
64
+
65
+ // Interactive states — derived from accent-primary
66
+ --state-hover: color-mix(in srgb, var(--accent-primary) 8%, transparent);
67
+ --state-active: color-mix(in srgb, var(--accent-primary) 14%, transparent);
68
+ --state-focus-ring: color-mix(in srgb, var(--accent-primary) 38%, transparent);
69
+ --state-disabled-bg: #d0c098;
70
+ --state-disabled-text: #6f6045;
71
+
72
+ // =========================================================================
73
+ // CHANNEL TOKENS — consumed by _relief-system.scss to derive primitives
74
+ // =========================================================================
75
+
76
+ --shadow-color: 0 0 0;
77
+ --highlight-color: 242 232 210;
78
+ --accent-glow: color-mix(in srgb, var(--accent-primary) 12%, transparent);
79
+ --channel-sheen-color: 0 0 0;
80
+ --channel-tint-color: 106 69 24;
81
+
82
+ // =========================================================================
83
+ // BRIDGE TOKENS — per-theme overrides
84
+ // Shared defaults in _relief-system.scss
85
+ // =========================================================================
86
+
87
+ --glass-opacity: 0.35;
88
+ --mesh-color-1: var(--color-error);
89
+ --mesh-color-2: var(--color-info);
90
+ --mesh-color-3: color-mix(in oklch, var(--color-error), var(--color-info));
91
+ --surface-deep: var(--surface-3);
92
+ --neu-shadow: rgb(var(--shadow-color) / 45%);
93
+ --neu-light: rgb(var(--highlight-color) / 82%);
94
+
95
+ // =========================================================================
96
+ // COMPONENT TOKENS
97
+ // =========================================================================
98
+
99
+ @include component-tokens(
100
+ $input-bg: #f2e8d2,
101
+ $card-bg: rgb(242 232 210 / 68%),
102
+ $tooltip-bg: #1c1408,
103
+ $tooltip-text: #f2e8d2,
104
+ $code-bg: #ddd0b0,
105
+ $input-border: rgb(94 63 27 / 16%),
106
+ $input-placeholder: #6f6045,
107
+ $card-border: rgb(94 63 27 / 12%),
108
+ $scrollbar-thumb: rgb(94 63 27 / 22%),
109
+ $scrollbar-track: rgb(94 63 27 / 5%),
110
+ $toast-bg: #f2e8d2,
111
+ $toast-text: #1c1408,
112
+ $drawer-bg: #f2e8d2,
113
+ $popover-bg: #f2e8d2,
114
+ $popover-border: rgb(94 63 27 / 18%),
115
+ $kbd-bg: #ddd0b0,
116
+ $kbd-border: rgb(94 63 27 / 28%)
117
+ );
118
+
119
+ // Icon data URIs — colors chosen for contrast against accent-primary bg
120
+ --icon-select-chevron: #{icon-chevron(#3a2c12)};
121
+ }
@@ -0,0 +1,13 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Utilities Index
3
+ // ---------------------------------------------------------------------------
4
+ // Optional general-purpose utility classes (layout, spacing, sizing, visual).
5
+ // Not part of the 3-tier configuration model. Consumers using the SCSS source
6
+ // can exclude this module by omitting `@use 'utilities'` from their entry point.
7
+ // ---------------------------------------------------------------------------
8
+
9
+ @forward 'layout';
10
+ @forward 'spacing';
11
+ @forward 'sizing';
12
+ @forward 'visual';
13
+ @forward 'responsive';
@@ -0,0 +1,100 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Layout Utilities
3
+ // ---------------------------------------------------------------------------
4
+ // Display, flexbox, grid, positioning, and overflow utilities.
5
+ // ---------------------------------------------------------------------------
6
+
7
+ @use '../variables' as *;
8
+ @use 'mixins' as gen;
9
+
10
+ // ============================================================================
11
+ // DISPLAY
12
+ // ============================================================================
13
+
14
+ @include gen.generate-display;
15
+
16
+ // ============================================================================
17
+ // FLEXBOX
18
+ // ============================================================================
19
+
20
+ @include gen.generate-flex-direction;
21
+ @include gen.generate-flex-wrap;
22
+ @include gen.generate-flex-sizing;
23
+ @include gen.generate-alignment;
24
+
25
+ // ============================================================================
26
+ // GRID
27
+ // ============================================================================
28
+
29
+ @include gen.generate-grid;
30
+
31
+ // ============================================================================
32
+ // POSITIONING
33
+ // ============================================================================
34
+
35
+ @include gen.generate-position;
36
+
37
+ // ============================================================================
38
+ // TEXT ALIGN
39
+ // ============================================================================
40
+
41
+ @include gen.generate-text-align;
42
+
43
+ // ============================================================================
44
+ // OVERFLOW
45
+ // ============================================================================
46
+
47
+ @include gen.generate-overflow;
48
+
49
+ // ============================================================================
50
+ // ASPECT RATIO
51
+ // ============================================================================
52
+
53
+ $aspect-ratios: (
54
+ auto: auto,
55
+ square: '1 / 1',
56
+ video: '16 / 9',
57
+ photo: '4 / 3',
58
+ portrait: '3 / 4',
59
+ wide: '21 / 9',
60
+ );
61
+
62
+ @each $name, $val in $aspect-ratios {
63
+ .aspect-#{$name} {
64
+ aspect-ratio: #{$val};
65
+ }
66
+ }
67
+
68
+ // ============================================================================
69
+ // Z-INDEX
70
+ // ============================================================================
71
+
72
+ @each $key, $val in $z-indices {
73
+ .z-#{$key} {
74
+ z-index: $val;
75
+ }
76
+ }
77
+
78
+ // ============================================================================
79
+ // ORDER
80
+ // ============================================================================
81
+
82
+ @include gen.generate-order;
83
+
84
+ // ============================================================================
85
+ // CONTAINER
86
+ // ============================================================================
87
+
88
+ .container {
89
+ width: 100%;
90
+ margin-left: auto;
91
+ margin-right: auto;
92
+ padding-left: 1rem;
93
+ padding-right: 1rem;
94
+
95
+ @each $key, $val in $breakpoints {
96
+ @media (min-width: #{$val}) {
97
+ max-width: $val;
98
+ }
99
+ }
100
+ }