@ibis-design/css 0.9.0 → 1.0.0-alpha.1

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.
@@ -3,29 +3,54 @@
3
3
  display: inline-block;
4
4
  }
5
5
 
6
+ .ibis-dropdown-button .ibis-button {
7
+ white-space: nowrap;
8
+ }
9
+
10
+ .ibis-dropdown-button--open .ibis-button {
11
+ border-bottom-left-radius: 0;
12
+ border-bottom-right-radius: 0;
13
+ transition: border-radius var(--transition-duration-fast) var(--transition-timing-default);
14
+ }
15
+
16
+ /* Caret icon */
6
17
  .ibis-caret {
7
18
  margin-left: 0.25em;
8
19
  width: 1em;
9
20
  height: 1em;
21
+ transition: transform var(--transition-duration-fast) var(--transition-timing-default);
22
+ }
23
+
24
+ .ibis-caret--open {
25
+ transform: rotate(180deg);
10
26
  }
11
27
 
28
+ /* Menu */
12
29
  .ibis-dropdown-menu {
13
30
  position: absolute;
14
31
  top: 100%;
15
32
  left: 0;
16
- margin-top: var(--spacing-1);
33
+ margin-top: 0;
17
34
  min-width: 160px;
18
- background: var(--color-surface-default);
19
- border: 1px solid var(--border-color-strong);
20
- border-radius: var(--border-radius-md);
35
+ background: var(--color-white);
36
+ border: 2px solid var(--color-surface-inverse);
37
+ border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) var(--border-radius-lg);
21
38
  box-shadow: var(--shadow-elevation-sm);
22
39
  z-index: var(--z-index-dropdown);
23
- padding: var(--spacing-1);
40
+ padding: var(--spacing-0);
24
41
  display: flex;
25
42
  flex-direction: column;
43
+ list-style: none;
44
+ overflow: hidden;
45
+ }
46
+
47
+ /* Dividers between items */
48
+ .ibis-dropdown-menu li + li {
49
+ border-top: 1px solid var(--color-interactive-neutral-bg-hover);
26
50
  }
27
51
 
28
- .ibis-dropdown-menu :global(.ibis-dropdown-menu__item) {
52
+ /* Menu items */
53
+ .ibis-dropdown-menu .ibis-dropdown-menu__item {
29
54
  all: unset;
30
55
  display: flex;
31
56
  align-items: center;
@@ -37,38 +62,34 @@
37
62
  font-family: var(--font-family-sans);
38
63
  font-size: var(--font-size-body-md);
39
64
  font-weight: var(--font-weight-medium);
40
- color: var(--color-text-primary);
65
+ color: var(--color-surface-inverse);
41
66
  text-align: center;
42
67
  transition: background-color var(--transition-duration-fast) var(--transition-timing-default);
43
68
  }
44
69
 
45
- .ibis-dropdown-menu :global(.ibis-dropdown-menu__item:hover) {
70
+ .ibis-dropdown-menu .ibis-dropdown-menu__item:hover {
46
71
  background-color: var(--color-interactive-primary-bg-menu-hover);
47
- color: var(--color-text-on-primary);
72
+ color: var(--color-white);
48
73
  }
49
74
 
50
- .ibis-dropdown-menu :global(.ibis-dropdown-menu__item--selected) {
75
+ .ibis-dropdown-menu .ibis-dropdown-menu__item--selected {
51
76
  background-color: var(--color-interactive-primary-bg-menu-selected);
52
- color: var(--color-text-on-primary);
77
+ color: var(--color-white);
53
78
  font-weight: var(--font-weight-bold);
54
79
  }
55
80
 
56
- .ibis-dropdown-menu :global(.ibis-dropdown-menu__item--selected:hover) {
81
+ .ibis-dropdown-menu .ibis-dropdown-menu__item--selected:hover {
57
82
  background-color: var(--color-interactive-primary-bg-menu-selected-hover);
58
- color: var(--color-text-on-primary);
59
- }
60
-
61
- .ibis-caret {
62
- margin-left: 0.25em;
63
- width: 1em;
64
- height: 1em;
65
- transition: transform var(--transition-duration-fast) var(--transition-timing-default);
83
+ color: var(--color-white);
66
84
  }
67
85
 
68
- .ibis-caret--open {
69
- transform: rotate(180deg);
86
+ .ibis-dropdown-menu :global(.ibis-dropdown-menu__item:focus) {
87
+ outline: none;
88
+ background-color: var(--color-interactive-neutral-bg-hover);
70
89
  }
71
90
 
72
- .ibis-dropdown-button .ibis-button {
73
- white-space: nowrap;
91
+ /* Disabled */
92
+ .ibis-dropdown-button:has(.ibis-button:disabled) {
93
+ cursor: not-allowed;
94
+ opacity: var(--opacity-5);
74
95
  }
@@ -0,0 +1,88 @@
1
+ /* Form Layout — import via @ibis-design/css/components/formLayout.css */
2
+
3
+ .ibis-form-layout {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ width: 100%;
8
+ padding: var(--spacing-8) var(--spacing-6);
9
+ box-sizing: border-box;
10
+ min-height: 100%;
11
+ }
12
+
13
+ .ibis-form-layout__inner {
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: var(--spacing-6);
17
+ width: 100%;
18
+ max-width: 640px;
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ /* Card variant */
23
+ .ibis-form-layout__inner--card {
24
+ background-color: var(--color-surface-default);
25
+ border: var(--border-width-thin) solid var(--border-color-subtle);
26
+ border-radius: var(--border-radius-xl);
27
+ box-shadow: var(--shadow-elevation-sm);
28
+ padding: var(--spacing-8);
29
+ }
30
+
31
+ /* Plain variant */
32
+ .ibis-form-layout__inner--plain {
33
+ background-color: transparent;
34
+ padding: 0;
35
+ }
36
+
37
+ .ibis-form-layout__header {
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: var(--spacing-2);
41
+ }
42
+
43
+ .ibis-form-layout__title {
44
+ font-family: var(--font-family-heading);
45
+ font-size: var(--font-size-heading-h3);
46
+ font-weight: var(--font-weight-bold);
47
+ color: var(--color-text-primary);
48
+ margin: 0;
49
+ }
50
+
51
+ .ibis-form-layout__subtitle {
52
+ font-family: var(--font-family-sans);
53
+ font-size: var(--font-size-body-md);
54
+ color: var(--color-text-secondary);
55
+ margin: 0;
56
+ }
57
+
58
+ .ibis-form-layout__body {
59
+ display: flex;
60
+ flex-direction: column;
61
+ gap: var(--spacing-6);
62
+ }
63
+
64
+ .ibis-form-layout__section {
65
+ display: flex;
66
+ flex-direction: column;
67
+ gap: var(--spacing-4);
68
+ }
69
+
70
+ .ibis-form-layout__section-label {
71
+ font-family: var(--font-family-sans);
72
+ font-size: var(--font-size-body-sm);
73
+ font-weight: var(--font-weight-medium);
74
+ color: var(--color-text-muted);
75
+ margin: 0;
76
+ padding-bottom: var(--spacing-2);
77
+ border-bottom: var(--border-width-thin) solid var(--border-color-subtle);
78
+ }
79
+
80
+ .ibis-form-layout__footer {
81
+ display: flex;
82
+ flex-direction: row;
83
+ align-items: center;
84
+ justify-content: flex-end;
85
+ gap: var(--spacing-3);
86
+ padding-top: var(--spacing-4);
87
+ border-top: var(--border-width-thin) solid var(--border-color-subtle);
88
+ }
@@ -0,0 +1,32 @@
1
+ /* Bottom navigation bar — import via @ibis-design/css/components/navBottom.css */
2
+
3
+ .ib-nav-bottom {
4
+ position: fixed;
5
+ bottom: 0;
6
+ left: 0;
7
+ right: 0;
8
+ width: 100%;
9
+ display: flex;
10
+ flex-direction: row;
11
+ align-items: center;
12
+ justify-content: space-around;
13
+ background-color: var(--color-surface-default);
14
+ border-top: var(--border-width-thin) solid var(--border-color-default);
15
+ box-shadow: var(--shadow-elevation-md);
16
+ padding: var(--spacing-2) var(--spacing-4);
17
+ padding-bottom: calc(var(--spacing-2) + env(safe-area-inset-bottom));
18
+ z-index: var(--z-index-sticky);
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ .ib-nav-bottom-icon {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ transition: transform var(--transition-duration-normal) var(--transition-timing-default);
27
+ transform: scale(1);
28
+ }
29
+
30
+ .ib-nav-bottom-icon--selected {
31
+ transform: scale(1.15);
32
+ }
@@ -44,8 +44,8 @@
44
44
 
45
45
  .ib-nav-button-label {
46
46
  font-family: var(--font-family-sans);
47
- font-weight: var(--font-weight-normal);
48
- font-size: var(--font-size-body-md);
47
+ font-weight: var(--font-weight-extralight);
48
+ font-size: var(--font-size-body-sm);
49
49
  text-align: left;
50
50
  margin-left: var(--spacing-1);
51
51
  }
@@ -69,7 +69,7 @@
69
69
 
70
70
  .ib-nav-button-bottom-label {
71
71
  font-family: var(--font-family-sans);
72
- font-weight: var(--font-weight-normal);
72
+ font-weight: var(--font-weight-extralight);
73
73
  font-size: var(--font-size-body-sm);
74
74
  color: var(--color-text-primary);
75
75
  text-align: center;
@@ -84,7 +84,7 @@
84
84
 
85
85
  .ib-nav-button--md {
86
86
  padding: var(--spacing-2) var(--spacing-4);
87
- font-size: var(--font-size-body-md);
87
+ font-size: var(--font-size-body-sm);
88
88
  border-radius: var(--border-radius-md);
89
89
  }
90
90
 
@@ -119,7 +119,7 @@
119
119
 
120
120
  .ib-nav-button--primary-selected {
121
121
  background: var(--color-interactive-primary-bg-selected);
122
- color: var(--color-interactive-primary-fg);
122
+ color: var(--color-interactive-primary-bg-menu-selected);
123
123
  border: none;
124
124
  }
125
125
 
@@ -0,0 +1,168 @@
1
+ /* Nav Drawer — import via @ibis-design/css/components/navDrawer.css */
2
+
3
+ .ib-nav-drawer {
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ height: 100dvh;
8
+ width: 360px;
9
+ display: flex;
10
+ flex-direction: column;
11
+ background-color: var(--color-surface-default);
12
+ border-right: var(--border-width-thin) solid var(--border-color-subtle);
13
+ border-bottom-right-radius: var(--border-radius-lg);
14
+ box-shadow: 1px 0 8px 0 var(--shadow-color-black-soft);
15
+ z-index: var(--z-index-sticky);
16
+ box-sizing: border-box;
17
+ padding: var(--spacing-4) 0;
18
+ }
19
+
20
+ .ib-nav-drawer__top {
21
+ display: flex;
22
+ flex-direction: row;
23
+ align-items: center;
24
+ justify-content: space-between;
25
+ width: 100%;
26
+ padding: 0 var(--spacing-4);
27
+ box-sizing: border-box;
28
+ margin-bottom: var(--spacing-6);
29
+ }
30
+
31
+ .ib-nav-drawer__logo {
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: flex-start;
35
+ }
36
+
37
+ .ib-nav-drawer__logo-placeholder {
38
+ width: 40px;
39
+ height: 40px;
40
+ border-radius: var(--border-radius-full);
41
+ background: var(--gradient-brand-primary);
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ color: var(--color-text-inverse);
46
+ font-family: var(--font-family-heading);
47
+ font-weight: var(--font-weight-bold);
48
+ font-size: var(--font-size-body-lg);
49
+ }
50
+
51
+ .ib-nav-drawer-logo-image {
52
+ height: 48px;
53
+ width: auto;
54
+ object-fit: contain;
55
+ }
56
+
57
+ .ib-nav-drawer__toggle {
58
+ all: unset;
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ width: 28px;
63
+ height: 28px;
64
+ border-radius: var(--border-radius-md);
65
+ color: var(--color-text-muted);
66
+ cursor: pointer;
67
+ transition:
68
+ background-color var(--transition-duration-fast) var(--transition-timing-default),
69
+ color var(--transition-duration-fast) var(--transition-timing-default);
70
+ }
71
+
72
+ .ib-nav-drawer__toggle:hover {
73
+ background-color: var(--color-interactive-neutral-bg-hover);
74
+ color: var(--color-text-primary);
75
+ }
76
+
77
+ .ib-nav-drawer__toggle svg {
78
+ width: 16px;
79
+ height: 16px;
80
+ }
81
+
82
+ .ib-nav-drawer__section {
83
+ display: flex;
84
+ flex-direction: column;
85
+ gap: var(--spacing-2);
86
+ flex: 1;
87
+ width: 100%;
88
+ padding: 0 var(--spacing-4);
89
+ box-sizing: border-box;
90
+ overflow-y: auto;
91
+ }
92
+
93
+ .ib-nav-drawer__section-label {
94
+ font-family: var(--font-family-sans);
95
+ font-size: var(--font-size-body-sm);
96
+ font-weight: var(--font-weight-medium);
97
+ color: var(--color-text-muted);
98
+ padding: 0 var(--spacing-2);
99
+ }
100
+
101
+ .ib-nav-drawer__nav {
102
+ display: flex;
103
+ flex-direction: column;
104
+ gap: var(--spacing-2);
105
+ width: 100%;
106
+ }
107
+
108
+ .ib-nav-drawer__bottom {
109
+ display: flex;
110
+ flex-direction: column;
111
+ gap: var(--spacing-2);
112
+ width: 100%;
113
+ padding: 0 var(--spacing-4);
114
+ box-sizing: border-box;
115
+ border-top: var(--border-width-thin) solid var(--border-color-subtle);
116
+ padding-top: var(--spacing-4);
117
+ margin-top: var(--spacing-4);
118
+ }
119
+
120
+ .ib-nav-drawer__actions {
121
+ display: flex;
122
+ flex-direction: column;
123
+ gap: var(--spacing-2);
124
+ width: 100%;
125
+ }
126
+
127
+ .ib-nav-drawer__footer {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: var(--spacing-1);
131
+ padding: var(--spacing-3) var(--spacing-2) 0;
132
+ }
133
+
134
+ .ib-nav-drawer__footer span {
135
+ font-family: var(--font-family-sans);
136
+ font-size: var(--font-size-body-xs);
137
+ color: var(--color-text-muted);
138
+ }
139
+
140
+ .ib-nav-drawer-icon {
141
+ display: flex;
142
+ align-items: center;
143
+ justify-content: center;
144
+ transition: transform var(--transition-duration-normal) var(--transition-timing-default);
145
+ transform: scale(1);
146
+ }
147
+
148
+ .ib-nav-drawer-icon--selected {
149
+ transform: scale(1.1);
150
+ }
151
+
152
+ :global(.ib-nav-signout:not(:disabled):hover) {
153
+ background-color: color-mix(
154
+ in srgb,
155
+ var(--color-status-error) calc(var(--opacity-5) * 100%),
156
+ transparent
157
+ );
158
+ }
159
+
160
+ /* Start off-screen to the left, slide in when open
161
+ :global(.ib-nav-drawer) {
162
+ transition: transform var(--transition-duration-slow) var(--transition-timing-in-out);
163
+ transform: translateX(-100%);
164
+ }
165
+
166
+ :global(.ib-nav-drawer--visible) {
167
+ transform: translateX(0);
168
+ } */
@@ -0,0 +1,135 @@
1
+ /* Nav Rail — import via @ibis-design/css/components/navRail.css */
2
+
3
+ .ib-nav-rail {
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ height: 100dvh;
8
+ width: 72px;
9
+ display: flex;
10
+ flex-direction: column;
11
+ align-items: center;
12
+ background-color: var(--color-surface-default);
13
+ border-right: var(--border-width-thin) solid var(--border-color-subtle);
14
+ border-bottom-right-radius: var(--border-radius-lg);
15
+ box-shadow: 1px 0 8px 0 var(--shadow-color-black-soft);
16
+ z-index: var(--z-index-sticky);
17
+ box-sizing: border-box;
18
+ padding: var(--spacing-4) 0;
19
+ }
20
+
21
+ .ib-nav-rail__top {
22
+ display: flex;
23
+ flex-direction: column;
24
+ align-items: center;
25
+ gap: var(--spacing-3);
26
+ width: 100%;
27
+ padding: 0 var(--spacing-2);
28
+ box-sizing: border-box;
29
+ margin-bottom: var(--spacing-4);
30
+ }
31
+
32
+ .ib-nav-rail__logo {
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ width: 100%;
37
+ }
38
+
39
+ .ib-nav-rail__logo-placeholder {
40
+ width: 40px;
41
+ height: 40px;
42
+ border-radius: var(--border-radius-full);
43
+ background: var(--gradient-brand-primary);
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ color: var(--color-text-inverse);
48
+ font-family: var(--font-family-heading);
49
+ font-weight: var(--font-weight-bold);
50
+ font-size: var(--font-size-body-lg);
51
+ }
52
+
53
+ .ib-nav-rail-logo-image {
54
+ width: 40px;
55
+ height: 40px;
56
+ object-fit: contain;
57
+ }
58
+
59
+ .ib-nav-rail__toggle {
60
+ all: unset;
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ width: 28px;
65
+ height: 28px;
66
+ border-radius: var(--border-radius-md);
67
+ color: var(--color-text-muted);
68
+ cursor: pointer;
69
+ transition:
70
+ background-color var(--transition-duration-fast) var(--transition-timing-default),
71
+ color var(--transition-duration-fast) var(--transition-timing-default);
72
+ }
73
+
74
+ .ib-nav-rail__toggle:hover {
75
+ background-color: var(--color-interactive-neutral-bg-hover);
76
+ color: var(--color-text-primary);
77
+ }
78
+
79
+ .ib-nav-rail__toggle svg {
80
+ width: 16px;
81
+ height: 16px;
82
+ }
83
+
84
+ .ib-nav-rail__nav {
85
+ display: flex;
86
+ flex-direction: column;
87
+ align-items: center;
88
+ gap: var(--spacing-1);
89
+ flex: 1;
90
+ width: 100%;
91
+ padding: 0 var(--spacing-2);
92
+ box-sizing: border-box;
93
+ }
94
+
95
+ .ib-nav-rail__actions {
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ gap: var(--spacing-1);
100
+ width: 100%;
101
+ padding: 0 var(--spacing-2);
102
+ box-sizing: border-box;
103
+ border-top: var(--border-width-thin) solid var(--border-color-subtle);
104
+ padding-top: var(--spacing-3);
105
+ margin-top: var(--spacing-3);
106
+ }
107
+
108
+ .ib-nav-rail-icon {
109
+ display: flex;
110
+ align-items: center;
111
+ justify-content: center;
112
+ transition: transform var(--transition-duration-normal) var(--transition-timing-default);
113
+ transform: scale(1);
114
+ }
115
+
116
+ .ib-nav-rail-icon--selected {
117
+ transform: scale(1.1);
118
+ }
119
+
120
+ :global(.ib-nav-signout:not(:disabled):hover) {
121
+ background-color: color-mix(
122
+ in srgb,
123
+ var(--color-status-error) calc(var(--opacity-5) * 100%),
124
+ transparent
125
+ );
126
+ }
127
+
128
+ /* Slide out to the left when drawer opens
129
+ :global(.ib-nav-rail) {
130
+ transition: transform var(--transition-duration-slow) var(--transition-timing-in-out);
131
+ }
132
+
133
+ :global(.ib-nav-rail--hidden) {
134
+ transform: translateX(-100%);
135
+ } */