@ibis-design/css 1.0.0-alpha.2 → 1.0.0-alpha.4

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.
@@ -77,8 +77,8 @@
77
77
  }
78
78
 
79
79
  .ibis-banner--success {
80
- border-color: var(--color-status-success) var(--opacity-1);
81
- background-color: var(--color-status-success) var(--opacity-1);
80
+ border-color: color-mix(in srgb, var(--color-status-success) var(--opacity-1));
81
+ background-color: color-mix(in srgb, var(--color-status-success) var(--opacity-1));
82
82
  }
83
83
 
84
84
  .ibis-banner--success .ibis-banner__title {
@@ -95,8 +95,8 @@
95
95
  }
96
96
 
97
97
  .ibis-banner--error {
98
- border-color: var(--color-status-error) var(--opacity-1);
99
- background-color: var(--color-status-error) var(--opacity-1);
98
+ border-color: color-mix(in srgb, var(--color-status-error) var(--opacity-1));
99
+ background-color: color-mix(in srgb, var(--color-status-error) var(--opacity-1));
100
100
  }
101
101
 
102
102
  .ibis-banner--error .ibis-banner__title {
@@ -113,8 +113,11 @@
113
113
  }
114
114
 
115
115
  .ibis-banner--default {
116
- border-color: var(--color-interactive-primary-bg-emphasized) var(--opacity-1);
117
- background-color: var(--color-interactive-primary-bg-emphasized) var(--opacity-1);
116
+ border-color: color-mix(in srgb, var(--color-interactive-primary-bg-emphasized) var(--opacity-1));
117
+ background-color: color-mix(
118
+ in srgb,
119
+ var(--color-interactive-primary-bg-emphasized) var(--opacity-1)
120
+ );
118
121
  }
119
122
 
120
123
  .ibis-banner--default .ibis-banner__title {
@@ -6,7 +6,7 @@
6
6
  background-color: var(--color-surface-default);
7
7
  border: var(--border-width-thin) solid var(--border-color-subtle);
8
8
  border-radius: var(--border-radius-lg);
9
- box-shadow: var(--shadow-elevation-sm);
9
+ box-shadow: var(--shadow-elevation-md);
10
10
  overflow: visible;
11
11
  box-sizing: border-box;
12
12
  min-height: 200px;
@@ -9,6 +9,8 @@
9
9
  display: block;
10
10
  width: 100%;
11
11
  cursor: pointer;
12
+ font-size: 0;
13
+ line-height: 0;
12
14
  }
13
15
 
14
16
  /* Hide TextInput's label, help, and error inside the trigger */
@@ -45,6 +47,7 @@
45
47
  /* Default field wrapper radius */
46
48
  .ibis-dropdown__trigger .ibis-input__field-wrapper {
47
49
  border-radius: var(--border-radius-lg);
50
+ padding: var(--spacing-1) var(--spacing-2);
48
51
  transition:
49
52
  border-radius var(--transition-duration-fast) var(--transition-timing-default),
50
53
  border-color var(--transition-duration-fast) var(--transition-timing-default);
@@ -61,7 +64,7 @@
61
64
  .ibis-dropdown__menu {
62
65
  position: absolute;
63
66
  width: 100%;
64
- background-color: var(--color-white);
67
+ background-color: var(--color-surface-default);
65
68
  border: 2px solid var(--color-interactive-primary-indicator);
66
69
  border-radius: 0 0 var(--border-radius-lg) var(--border-radius-lg);
67
70
  border-top: none;
@@ -90,7 +93,7 @@
90
93
  font-family: var(--font-family-sans);
91
94
  font-size: var(--font-size-body-md);
92
95
  font-weight: var(--font-weight-medium);
93
- color: var(--color-surface-inverse);
96
+ color: var(--color-text-primary);
94
97
  text-align: center;
95
98
  transition: background-color var(--transition-duration-fast) var(--transition-timing-default);
96
99
  }
@@ -32,8 +32,8 @@
32
32
  left: 0;
33
33
  margin-top: 0;
34
34
  min-width: 160px;
35
- background: var(--color-white);
36
- border: 2px solid var(--color-surface-inverse);
35
+ background: var(--color-surface-default);
36
+ border: 2px solid var(--color-interactive-primary-indicator);
37
37
  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) var(--border-radius-lg);
38
38
  box-shadow: var(--shadow-elevation-sm);
39
39
  z-index: var(--z-index-dropdown);
@@ -62,7 +62,7 @@
62
62
  font-family: var(--font-family-sans);
63
63
  font-size: var(--font-size-body-md);
64
64
  font-weight: var(--font-weight-medium);
65
- color: var(--color-surface-inverse);
65
+ color: var(--color-text-primary);
66
66
  text-align: center;
67
67
  transition: background-color var(--transition-duration-fast) var(--transition-timing-default);
68
68
  }
@@ -125,3 +125,8 @@
125
125
  grid-column: 1 / -1;
126
126
  }
127
127
  }
128
+
129
+ /* Allow inputs to stretch full width inside FormLayout */
130
+ .ibis-form-layout .ibis-input {
131
+ max-width: 100%;
132
+ }
@@ -10,10 +10,10 @@
10
10
  height: 100%;
11
11
  min-height: 0;
12
12
  padding: var(--spacing-4) var(--spacing-3);
13
- background-color: var(--color-surface-default);
14
- border-right: var(--border-width-thin) solid var(--border-color-subtle);
13
+ background-color: transparent;
14
+ border-right: none;
15
15
  border-bottom-right-radius: var(--border-radius-xl);
16
- box-shadow: var(--shadow-nav);
16
+ box-shadow: none;
17
17
  box-sizing: border-box;
18
18
  }
19
19
 
@@ -130,10 +130,10 @@
130
130
  height: 100%;
131
131
  min-height: 0;
132
132
  padding: var(--spacing-4) 0;
133
- background-color: var(--color-surface-default);
134
- border-right: var(--border-width-thin) solid var(--border-color-subtle);
133
+ background-color: transparent;
134
+ border-right: none;
135
135
  border-bottom-right-radius: var(--border-radius-xl);
136
- box-shadow: var(--shadow-nav);
136
+ box-shadow: none;
137
137
  box-sizing: border-box;
138
138
  overflow: visible;
139
139
  }
@@ -63,3 +63,9 @@
63
63
  .ibis-switch--disabled .ibis-switch__control {
64
64
  cursor: not-allowed;
65
65
  }
66
+
67
+ .ibis-switch__label {
68
+ font-family: var(--font-family-sans);
69
+ font-size: var(--font-size-md);
70
+ color: var(--color-text-default);
71
+ }
@@ -1,15 +1,11 @@
1
+ /* TextInput component — import via @ibis-design/css/components/textInput.css */
2
+
1
3
  .ibis-input {
2
4
  display: flex;
3
5
  flex-direction: column;
4
6
  gap: var(--spacing-1);
5
7
  width: 100%;
6
8
  max-width: 300px;
7
- max-height: 4rem;
8
- }
9
-
10
- .ibis-input__label {
11
- font-size: var(--font-size-body-md);
12
- color: var(--color-text-secondary);
13
9
  }
14
10
 
15
11
  .ibis-input__label-wrapper {
@@ -18,57 +14,94 @@
18
14
  gap: var(--spacing-1);
19
15
  }
20
16
 
17
+ .ibis-input__label {
18
+ font-family: var(--font-family-sans);
19
+ font-size: var(--font-size-body-md);
20
+ color: var(--color-text-secondary);
21
+ }
22
+
21
23
  .ibis-input__description {
24
+ font-family: var(--font-family-sans);
22
25
  font-size: var(--font-size-body-sm);
23
26
  color: var(--color-text-muted);
24
27
  }
25
28
 
29
+ /* ===== WRAPPER — layout only, no border ===== */
30
+
26
31
  .ibis-input__wrapper {
27
32
  display: flex;
28
33
  align-items: stretch;
29
34
  border-radius: var(--border-radius-lg);
30
35
  overflow: hidden;
31
- background-color: var(--color-surface-muted);
32
36
  }
33
37
 
38
+ /* ===== PREPEND ===== */
39
+
34
40
  .ibis-input__prepend {
35
41
  display: flex;
36
42
  align-items: center;
37
- padding: var(--spacing-0) var(--spacing-3);
43
+ padding: 0 var(--spacing-3);
38
44
  border: var(--border-width-default) solid var(--border-color-default);
39
45
  border-right: none;
40
46
  border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);
41
47
  position: relative;
42
48
  white-space: nowrap;
49
+ color: var(--color-text-secondary);
50
+ background-color: var(--color-surface-muted);
51
+ transition: border-color var(--transition-duration-fast) var(--transition-timing-default);
43
52
  }
44
53
 
54
+ .ibis-input__wrapper:not(:focus-within):hover .ibis-input__prepend {
55
+ border-color: var(--border-color-strong);
56
+ }
57
+
58
+ .ibis-input__wrapper:focus-within .ibis-input__prepend {
59
+ border-color: var(--border-color-focus);
60
+ }
61
+
62
+ /* ===== FIELD WRAPPER — owns the visible border ===== */
63
+
45
64
  .ibis-input__field-wrapper {
46
65
  display: flex;
47
66
  align-items: center;
48
67
  flex: 1;
68
+ background-color: var(--color-surface-default);
49
69
  border: var(--border-width-default) solid var(--border-color-default);
50
- border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;
70
+ border-radius: var(--border-radius-lg);
71
+ transition: border-color var(--transition-duration-fast) var(--transition-timing-default);
51
72
  }
52
73
 
74
+ /* When prepend is present, remove left radius and border */
53
75
  .ibis-input__wrapper--with-prepend .ibis-input__field-wrapper {
54
76
  border-left: none;
55
77
  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;
56
78
  }
57
79
 
58
- .ibis-input__wrapper:not(.ibis-input__wrapper--with-prepend) .ibis-input__field-wrapper {
59
- border-radius: var(--border-radius-lg);
80
+ /* Hover */
81
+ .ibis-input:not(.ibis-input--disabled):not(.ibis-input--invalid)
82
+ .ibis-input__field-wrapper:not(:focus-within):hover {
83
+ border-color: var(--border-color-strong);
84
+ }
85
+
86
+ /* Focus */
87
+ .ibis-input__field-wrapper:focus-within {
88
+ border-color: var(--border-color-focus);
89
+ }
90
+
91
+ .ibis-input--sm .ibis-input__field-wrapper {
92
+ padding: var(--spacing-1) var(--spacing-2);
93
+ }
94
+
95
+ .ibis-input--md .ibis-input__field-wrapper {
96
+ padding: var(--spacing-2);
60
97
  }
61
98
 
62
- .ibis-input__prepend::after {
63
- content: "";
64
- position: absolute;
65
- right: 0;
66
- top: 0;
67
- bottom: 0;
68
- width: 2px;
69
- background-color: var(--border-color-default);
99
+ .ibis-input--lg .ibis-input__field-wrapper {
100
+ padding: var(--spacing-3) var(--spacing-4);
70
101
  }
71
102
 
103
+ /* ===== FIELD ===== */
104
+
72
105
  .ibis-input__field {
73
106
  flex: 1;
74
107
  width: 100%;
@@ -76,74 +109,70 @@
76
109
  border: none;
77
110
  outline: none;
78
111
  background: transparent;
112
+ color: var(--color-text-primary);
113
+ font-family: var(--font-family-sans);
114
+ font-size: var(--font-size-body-md);
79
115
  }
80
116
 
117
+ .ibis-input__field::placeholder {
118
+ color: var(--color-text-muted);
119
+ }
120
+
121
+ /* ===== PREFIX / SUFFIX ===== */
122
+
81
123
  .ibis-input__prefix,
82
124
  .ibis-input__suffix {
83
125
  display: inline-flex;
84
126
  align-items: center;
85
127
  padding: 0 var(--spacing-2);
128
+ color: var(--color-text-muted);
86
129
  }
87
130
 
131
+ /* ===== HELP / ERROR ===== */
132
+
88
133
  .ibis-input__help {
134
+ font-family: var(--font-family-sans);
89
135
  font-size: var(--font-size-body-sm);
90
136
  color: var(--color-text-muted);
91
137
  }
92
138
 
93
139
  .ibis-input__error {
140
+ font-family: var(--font-family-sans);
94
141
  font-size: var(--font-size-body-sm);
95
142
  color: var(--color-status-error);
96
143
  }
97
144
 
98
- .ibis-input--sm .ibis-input__field-wrapper {
99
- padding: var(--spacing-1) var(--spacing-2);
100
- }
101
-
102
- .ibis-input--md .ibis-input__field-wrapper {
103
- padding: var(--spacing-2);
104
- }
105
-
106
- .ibis-input--lg .ibis-input__field-wrapper {
107
- padding: var(--spacing-3) var(--spacing-4);
108
- }
109
-
110
- .ibis-input:not(.ibis-input--disabled):not(.ibis-input--invalid)
111
- .ibis-input__field-wrapper:not(:focus-within):hover {
112
- border-color: var(--border-color-strong);
113
- }
114
-
115
- .ibis-input__field-wrapper:focus-within {
116
- border-color: var(--border-color-focus);
117
- }
145
+ /* ===== INVALID STATE ===== */
118
146
 
119
147
  .ibis-input--invalid .ibis-input__field-wrapper {
120
148
  border-color: var(--color-status-error);
121
- border-width: var(--border-width-thin);
122
149
  }
123
150
 
124
- .ibis-input--invalid:not(.ibis-input--disabled):not(:focus-within)
125
- .ibis-input__field-wrapper:hover {
126
- border-width: var(--border-width-default);
151
+ .ibis-input--invalid:not(.ibis-input--disabled)
152
+ .ibis-input__field-wrapper:not(:focus-within):hover {
153
+ border-color: var(--color-status-error);
127
154
  }
128
155
 
129
156
  .ibis-input--invalid:not(.ibis-input--disabled) .ibis-input__field-wrapper:focus-within {
130
- border-width: var(--border-width-default);
157
+ border-color: var(--color-status-error);
131
158
  }
132
159
 
133
- .ibis-input__wrapper:not(:focus-within):hover .ibis-input__prepend::after {
134
- background-color: var(--border-color-strong);
135
- }
160
+ /* ===== DISABLED STATE ===== */
136
161
 
137
- .ibis-input__wrapper:focus-within .ibis-input__prepend::after {
138
- background-color: var(--border-color-focus);
162
+ .ibis-input--disabled .ibis-input__field-wrapper {
163
+ opacity: var(--opacity-5);
164
+ cursor: not-allowed;
165
+ border-color: var(--border-color-disabled);
166
+ background-color: var(--color-interactive-primary-bg-disabled);
139
167
  }
140
168
 
141
- .ibis-input--invalid .ibis-input__prepend::after {
142
- background-color: var(--color-status-error);
169
+ .ibis-input--disabled .ibis-input__field {
170
+ cursor: not-allowed;
143
171
  }
144
172
 
145
- .ibis-input--disabled .ibis-input__prepend,
146
- .ibis-input--disabled .ibis-input__field-wrapper {
147
- background-color: var(--color-interactive-primary-bg-disabled);
148
- opacity: var(--opacity-5);
173
+ /* ===== LOADING STATE ===== */
174
+
175
+ .ibis-input--loading .ibis-input__field-wrapper {
176
+ opacity: var(--opacity-7);
177
+ pointer-events: none;
149
178
  }
@@ -8,10 +8,8 @@
8
8
  flex-direction: row;
9
9
  align-items: center;
10
10
  justify-content: space-between;
11
- background-color: var(--color-surface-default);
12
- border-bottom: var(--border-width-thin) solid var(--border-color-subtle);
13
- border-radius: 0 0 var(--border-radius-lg) 0;
14
- box-shadow: 0 1px 8px 0 var(--shadow-color-black-soft);
11
+ background-color: transparent;
12
+ border-bottom: none;
15
13
  box-sizing: border-box;
16
14
  padding: 0 var(--spacing-6);
17
15
  gap: var(--spacing-4);
@@ -50,3 +48,14 @@
50
48
  max-width: 100%;
51
49
  width: 100%;
52
50
  }
51
+
52
+ .ib-top-bar__logo {
53
+ display: none; /* hidden on desktop, nav has the logo */
54
+ }
55
+
56
+ @media (max-width: 768px) {
57
+ .ib-top-bar__logo {
58
+ display: flex;
59
+ align-items: center;
60
+ }
61
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibis-design/css",
3
- "version": "1.0.0-alpha.2",
3
+ "version": "1.0.0-alpha.4",
4
4
  "description": "Design tokens, CSS variables, and Tailwind preset for the IBIS design system.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -30,8 +30,5 @@
30
30
  "sd-tailwindcss-transformer": "^2.2.1",
31
31
  "style-dictionary": "^5.4.4",
32
32
  "tsx": "^4.22.4"
33
- },
34
- "dependencies": {
35
- "@ibis-design/css": "^1.0.0-alpha.2"
36
33
  }
37
34
  }