@basis-ng/styles 0.0.1-alpha.4 → 0.0.1-alpha.41

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.
package/package.json CHANGED
@@ -1,13 +1,46 @@
1
1
  {
2
2
  "name": "@basis-ng/styles",
3
- "version": "0.0.1-alpha.4",
3
+ "version": "0.0.1-alpha.41",
4
4
  "description": "CSS foundation for @basis-ng/primitives components",
5
5
  "main": "src/index.css",
6
6
  "exports": {
7
- ".": {
8
- "import": "./src/index.css",
9
- "require": "./src/index.css"
10
- }
7
+ ".": "./src/index.css",
8
+ "./alert": "./src/components/alert.component.css",
9
+ "./attached-box": "./src/components/attached-box.component.css",
10
+ "./badge": "./src/components/badge.component.css",
11
+ "./bottom-sheet": "./src/components/bottom-sheet.component.css",
12
+ "./button-group": "./src/components/button-group.component.css",
13
+ "./button": "./src/components/button.component.css",
14
+ "./checkbox": "./src/components/checkbox.component.css",
15
+ "./color-picker": "./src/components/color-picker.component.css",
16
+ "./icon": "./src/components/icon.component.css",
17
+ "./input-group": "./src/components/input-group.component.css",
18
+ "./input": "./src/components/input.component.css",
19
+ "./label": "./src/components/label.component.css",
20
+ "./menu-group": "./src/components/menu-group.component.css",
21
+ "./menu-item-checkbox": "./src/components/menu-item-checkbox.component.css",
22
+ "./menu-item-radio": "./src/components/menu-item-radio.component.css",
23
+ "./menu-item": "./src/components/menu-item.component.css",
24
+ "./menu-label": "./src/components/menu-label.component.css",
25
+ "./menu": "./src/components/menu.component.css",
26
+ "./option": "./src/components/option.component.css",
27
+ "./range": "./src/components/range.component.css",
28
+ "./row-item": "./src/components/row-item.component.css",
29
+ "./row": "./src/components/row.component.css",
30
+ "./search": "./src/components/search.component.css",
31
+ "./select": "./src/components/select.component.css",
32
+ "./select-content": "./src/components/select-content.component.css",
33
+ "./select-option": "./src/components/select-option.component.css",
34
+ "./side-sheet": "./src/components/side-sheet.component.css",
35
+ "./spinner": "./src/components/spinner.component.css",
36
+ "./switch": "./src/components/switch.component.css",
37
+ "./tab": "./src/components/tab.component.css",
38
+ "./table": "./src/components/table.component.css",
39
+ "./tabs": "./src/components/tabs.component.css",
40
+ "./textarea": "./src/components/textarea.component.css",
41
+ "./tooltip": "./src/components/tooltip.component.css",
42
+ "./tree-node": "./src/components/tree-node.component.css",
43
+ "./tree": "./src/components/tree.component.css"
11
44
  },
12
45
  "files": [
13
46
  "src/**/*.css"
@@ -7,15 +7,9 @@ button[b-button] {
7
7
  box-sizing: border-box;
8
8
  gap: 0.5rem;
9
9
  position: relative;
10
- overflow: hidden;
11
- transition:
12
- background-color 0.2s,
13
- opacity 0.2s;
14
- font-size: 100%;
15
10
  border: none;
16
11
  text-decoration: none;
17
12
  font-family: 'Geist', sans-serif;
18
- --padding-inline-multiple: 1.5;
19
13
  --border-px: 0px;
20
14
 
21
15
  &:focus-visible {
@@ -28,6 +22,11 @@ button[b-button] {
28
22
  --border-px: 1px;
29
23
  }
30
24
 
25
+ &.primary,
26
+ &.secondary {
27
+ box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 2px 0px;
28
+ }
29
+
31
30
  &.primary {
32
31
  background-color: var(--primary, #0a0a0a);
33
32
  color: var(--primary-foreground, #ffffff);
@@ -133,8 +132,10 @@ button[b-button] {
133
132
  }
134
133
 
135
134
  @media (width >= 768px) {
136
- &:active {
137
- transform: scale(0.98);
135
+ &.active {
136
+ &:active {
137
+ transform: scale(0.98);
138
+ }
138
139
  }
139
140
  }
140
141
  }
@@ -145,33 +146,36 @@ button[b-button] {
145
146
  pointer-events: none;
146
147
  }
147
148
 
148
- &.size-small {
149
- --vertical-padding: calc(0.5rem - (var(--border-px) * 2));
150
- --horizontal-padding: clamp(
151
- 0.75rem,
152
- calc(0.5rem + var(--radius, 0.5rem) / 2),
153
- 1.25rem
154
- );
155
- font-size: 0.875rem;
156
- padding: var(--vertical-padding) var(--horizontal-padding);
157
-
158
- &.equal-padding {
159
- padding: var(--vertical-padding);
149
+ &.size-1 {
150
+ padding: 0.215rem 0.5rem;
151
+ min-height: 1.714rem;
152
+ font-size: 0.857rem;
153
+
154
+ &.squared {
155
+ width: 1.714rem;
156
+ min-width: 1.714rem;
160
157
  }
161
158
  }
162
159
 
163
- &.size-default {
164
- --vertical-padding: calc(0.9rem - (var(--border-px) * 2));
165
- --horizontal-padding: clamp(
166
- 1rem,
167
- calc(0.75rem + var(--radius, 0.5rem) / 2),
168
- 1.5rem
169
- );
160
+ &.size-2 {
161
+ padding: 0.4rem 0.75rem;
162
+ min-height: 2.286rem;
170
163
  font-size: 1rem;
171
- padding: var(--vertical-padding) var(--horizontal-padding);
172
164
 
173
- &.equal-padding {
174
- padding: var(--vertical-padding);
165
+ &.squared {
166
+ width: 2.286rem;
167
+ min-width: 2.286rem;
168
+ }
169
+ }
170
+
171
+ &.size-3 {
172
+ padding: 0.608rem 1rem;
173
+ min-height: 2.857rem;
174
+ font-size: 1.143rem;
175
+
176
+ &.squared {
177
+ width: 2.857rem;
178
+ min-width: 2.857rem;
175
179
  }
176
180
  }
177
181
  }
@@ -0,0 +1,21 @@
1
+ ul[b-combobox-options] {
2
+ list-style: none;
3
+ padding: 0.2rem;
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ position: relative;
7
+ background: var(--background, #ffffff);
8
+ box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
9
+ border-radius: clamp(0rem, var(--radius, 0.5rem), 0.5rem);
10
+ border: 1px solid
11
+ color-mix(
12
+ in srgb,
13
+ var(--foreground, #798194) 10%,
14
+ var(--background, #ffffff)
15
+ );
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 0.2rem;
19
+ width: 100%;
20
+ overflow-y: auto;
21
+ }
@@ -0,0 +1,62 @@
1
+ b-combobox {
2
+ button {
3
+ display: flex;
4
+ justify-content: space-between !important;
5
+ align-items: center;
6
+ text-align: start;
7
+ padding-right: 0.5rem !important;
8
+ width: 100%;
9
+ gap: 0.3rem !important;
10
+ }
11
+ }
12
+
13
+ .cdk-overlay-pane b-command {
14
+ /* Overlay Animations */
15
+ opacity: 0;
16
+
17
+ &.b-overlay-bottom,
18
+ &.b-overlay-top,
19
+ &.b-overlay-left,
20
+ &.b-overlay-right {
21
+ transition:
22
+ transform 150ms ease-in-out,
23
+ opacity 150ms ease-in-out;
24
+ opacity: 1;
25
+ }
26
+
27
+ &.b-overlay-bottom {
28
+ transform: translateY(5px);
29
+
30
+ &.b-overlay-leave {
31
+ transform: translateY(0);
32
+ opacity: 0;
33
+ }
34
+ }
35
+
36
+ &.b-overlay-top {
37
+ transform: translateY(-5px);
38
+
39
+ &.b-overlay-leave {
40
+ transform: translateY(0);
41
+ opacity: 0;
42
+ }
43
+ }
44
+
45
+ &.b-overlay-left {
46
+ transform: translateX(-5px);
47
+
48
+ &.b-overlay-leave {
49
+ transform: translateX(0);
50
+ opacity: 0;
51
+ }
52
+ }
53
+
54
+ &.b-overlay-right {
55
+ transform: translateX(5px);
56
+
57
+ &.b-overlay-leave {
58
+ transform: translateX(0);
59
+ opacity: 0;
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,13 @@
1
+ ul[b-command-options] {
2
+ list-style: none;
3
+ box-sizing: border-box;
4
+ margin: 0;
5
+ position: relative;
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: 0.25rem;
9
+ width: 100%;
10
+ overflow-y: auto;
11
+ padding: 0;
12
+ scrollbar-width: thin;
13
+ }
@@ -0,0 +1,25 @@
1
+ b-command {
2
+ padding: 0.25rem;
3
+ box-sizing: border-box;
4
+ margin: 0;
5
+ position: relative;
6
+ background: var(--background, #ffffff);
7
+ box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
8
+ border-radius: clamp(0rem, var(--radius, 0.5rem), 0.5rem);
9
+ border: 1px solid
10
+ color-mix(
11
+ in srgb,
12
+ var(--foreground, #798194) 10%,
13
+ var(--background, #ffffff)
14
+ );
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 0.25rem;
18
+ width: 100%;
19
+
20
+ input {
21
+ &:focus-visible {
22
+ outline: none !important;
23
+ }
24
+ }
25
+ }
@@ -1,4 +1,4 @@
1
- b-bottom-sheet {
1
+ b-drawer {
2
2
  position: fixed;
3
3
  bottom: 0;
4
4
  left: 0;
@@ -44,6 +44,6 @@ b-bottom-sheet {
44
44
  }
45
45
  }
46
46
 
47
- html:has(b-bottom-sheet.open) {
47
+ html:has(b-drawer.open) {
48
48
  overflow: hidden;
49
49
  }
@@ -1,110 +1,53 @@
1
1
  b-input-group {
2
- --exterior-padding: clamp(
3
- 1rem,
4
- calc(0.75rem + var(--radius, 0.5rem) / 2),
5
- 1.3rem
6
- );
7
-
8
- width: 100%;
9
- background-color: var(--input-background);
10
- border-radius: var(--radius, 0.5rem);
11
- box-sizing: border-box;
12
- border-width: 1px;
13
- border-style: solid;
14
- border-color: var(--border-color, transparent);
15
- transition:
16
- opacity 0.2s,
17
- padding-top 0.2s,
18
- padding-bottom 0.2s,
19
- background-color 0.2s,
20
- border-color 0.2s;
21
- font-size: 1rem;
22
- color: var(--input-foreground, #798194);
23
2
  display: flex;
24
3
  align-items: center;
4
+ border-radius: var(--radius);
5
+ box-sizing: border-box;
6
+ background-color: var(--input-background);
7
+ border: 1px solid var(--border-color, transparent);
25
8
 
26
- &:has(> *.ng-invalid) {
27
- color: var(--error-foreground, #c40000ab);
28
- background-color: var(--error, #fff0f0);
29
- border-color: var(--error-border-color, #c40000ab);
30
-
31
- i svg {
32
- stroke: var(--error-foreground, #c40000ab);
33
- }
34
-
35
- button {
36
- color: var(--error-foreground, #c40000ab);
37
- background-color: var(--error, #fff0f0);
38
- }
39
- }
40
-
41
- select,
42
- input,
43
- button,
44
- b-label input,
45
- b-label select {
46
- border-radius: 0px !important;
47
- border-width: 0px !important;
48
- }
49
-
50
- &:not(:has(b-label)) select:not(:first-child),
51
- &:not(:has(b-label)) input:not(:first-child),
52
- button:not(:first-child),
53
- b-label:not(:first-child) input,
54
- b-label:not(:first-child) select {
55
- padding-left: 0.8rem !important;
56
- }
57
-
58
- b-label:not(:first-child) label {
59
- left: 0.8rem !important;
9
+ input[b-input] {
10
+ border: none;
11
+ outline-width: 0 !important;
12
+ padding: 0 !important;
13
+ border-radius: 0 !important;
60
14
  }
61
15
 
62
- &:not(:has(b-label)) select:not(:last-child),
63
- &:not(:has(b-label)) input:not(:last-child),
64
- button:not(:last-child),
65
- b-label:not(:last-child) input,
66
- b-label:not(:last-child) select {
67
- padding-right: 0.8rem !important;
16
+ &:has(:focus-visible) {
17
+ outline: 2px solid var(--primary, #0a0a0a);
18
+ outline-offset: 2px;
68
19
  }
69
20
 
70
- input:first-child,
71
- button:first-child,
72
- b-label:first-child input,
73
- b-label:first-child select select:first-child,
74
- input:first-child,
75
- button:first-child,
76
- b-label:first-child input,
77
- b-label:first-child select {
78
- border-top-left-radius: var(--radius) !important;
79
- border-bottom-left-radius: var(--radius) !important;
21
+ &:has(.size-1) {
22
+ padding: 0.357rem 0.5rem;
23
+ height: 1.714rem;
24
+ gap: 0.5rem;
25
+ font-size: 0.857rem;
80
26
  }
81
27
 
82
- select:last-child,
83
- input:last-child,
84
- button:last-child,
85
- b-label:last-child input,
86
- b-label:last-child select {
87
- border-top-right-radius: var(--radius) !important;
88
- border-bottom-right-radius: var(--radius) !important;
28
+ &:has(.size-2) {
29
+ padding: 0.5rem 0.75rem;
30
+ height: 2.286rem;
31
+ gap: 0.75rem;
32
+ font-size: 1rem;
89
33
  }
90
34
 
91
- span:first-child,
92
- & > i:first-child {
93
- padding-inline: var(--exterior-padding) 0;
35
+ &:has(.size-3) {
36
+ padding: 0.786rem 1rem;
37
+ min-height: 2.857rem;
38
+ gap: 1rem;
39
+ font-size: 1.143rem;
94
40
  }
95
41
 
96
- span:last-child,
97
- & > i:last-child {
98
- padding-inline: 0 var(--exterior-padding);
42
+ &:has(button[b-button]:last-child) {
43
+ padding-right: 0.285rem;
99
44
  }
100
45
 
101
- button {
102
- height: 100%;
103
- max-height: 100%;
104
- font-size: 0.88rem;
46
+ &:has(button[b-button]:first-child) {
47
+ padding-left: 0.285rem;
105
48
  }
106
49
 
107
- button:active {
108
- transform: scale(1) !important;
50
+ button[b-button] {
51
+ border-radius: calc(var(--radius) - 0.2rem);
109
52
  }
110
53
  }
@@ -1,23 +1,13 @@
1
1
  input[b-input] {
2
- --horizontal-padding: clamp(
3
- 1rem,
4
- calc(0.75rem + var(--radius, 0.5rem) / 2),
5
- 1.5rem
6
- );
7
-
8
2
  width: 100%;
9
- min-height: 2.8rem;
10
3
  background-color: var(--input-background, #e0e0e0);
11
4
  border-radius: var(--radius, 0.5rem);
12
5
  box-sizing: border-box;
13
- padding: calc(0.9rem - 2px) var(--horizontal-padding);
14
6
  border-width: 1px;
15
7
  border-style: solid;
16
8
  border-color: var(--border-color, transparent);
17
9
  transition:
18
10
  opacity 0.2s,
19
- padding-top 0.2s,
20
- padding-bottom 0.2s,
21
11
  background-color 0.2s,
22
12
  border-color 0.2s;
23
13
  font-size: 1rem;
@@ -58,13 +48,23 @@ input[b-input] {
58
48
  }
59
49
  }
60
50
 
61
- &.label-up {
62
- padding-top: 1.1rem;
63
- padding-bottom: 0.3rem;
64
- }
65
-
66
- &.disabled {
51
+ &:disabled {
67
52
  opacity: 0.5;
68
53
  pointer-events: none;
69
54
  }
55
+
56
+ &.size-1 {
57
+ padding: 0.357rem 0.5rem;
58
+ font-size: 0.857rem;
59
+ }
60
+
61
+ &.size-2 {
62
+ padding: 0.5rem 0.75rem;
63
+ font-size: 1rem;
64
+ }
65
+
66
+ &.size-3 {
67
+ padding: 0.786rem 1rem;
68
+ font-size: 1.143rem;
69
+ }
70
70
  }
@@ -1,9 +1,16 @@
1
- b-menu-item-checkbox {
1
+ button[b-menu-item-checkbox] {
2
2
  --horizontal-padding: clamp(
3
3
  1rem,
4
4
  calc(0.75rem + var(--radius, 0.5rem) / 2),
5
5
  1.5rem
6
6
  );
7
+ background: none;
8
+ color: inherit;
9
+ border: none;
10
+ padding: 0;
11
+ font: inherit;
12
+ cursor: pointer;
13
+ outline: inherit;
7
14
 
8
15
  display: flex;
9
16
  gap: 0.5rem;
@@ -1,9 +1,16 @@
1
- b-menu-item-radio {
1
+ button[b-menu-item-radio] {
2
2
  --horizontal-padding: clamp(
3
3
  1rem,
4
4
  calc(0.75rem + var(--radius, 0.5rem) / 2),
5
5
  1.5rem
6
6
  );
7
+ background: none;
8
+ color: inherit;
9
+ border: none;
10
+ padding: 0;
11
+ font: inherit;
12
+ cursor: pointer;
13
+ outline: inherit;
7
14
 
8
15
  display: flex;
9
16
  gap: 0.5rem;
@@ -15,6 +22,7 @@ b-menu-item-radio {
15
22
  align-items: center;
16
23
 
17
24
  &[aria-checked='true'],
25
+ &.active,
18
26
  &:hover {
19
27
  background-color: var(--input-background);
20
28
  }
@@ -1,9 +1,16 @@
1
- b-menu-item {
1
+ button[b-menu-item] {
2
2
  --horizontal-padding: clamp(
3
3
  1rem,
4
4
  calc(0.75rem + var(--radius, 0.5rem) / 2),
5
5
  1.5rem
6
6
  );
7
+ background: none;
8
+ color: inherit;
9
+ border: none;
10
+ padding: 0;
11
+ font: inherit;
12
+ cursor: pointer;
13
+ outline: inherit;
7
14
 
8
15
  display: flex;
9
16
  gap: 0.5rem;
@@ -8,18 +8,8 @@ b-menu {
8
8
  }
9
9
  }
10
10
 
11
- @keyframes fadeIn {
12
- 0% {
13
- opacity: 0;
14
- }
15
- 100% {
16
- opacity: 1;
17
- }
18
- }
19
-
20
11
  .cdk-overlay-container b-menu {
21
12
  border: 1px solid var(--border-color);
22
- animation: fadeIn 0.2s ease-in;
23
13
  background-color: var(--background);
24
14
 
25
15
  b-menu-item {
@@ -1,35 +1,26 @@
1
- b-option {
2
- margin-bottom: 0.25rem;
3
- cursor: pointer;
1
+ li[b-option] {
2
+ display: flex;
3
+ gap: 0.5rem;
4
4
  padding: 0.5rem 0.75rem;
5
5
  color: var(--foreground, #798194);
6
- transition: 0.1s;
7
- border-radius: calc(var(--radius, 0.5rem) - 0.2rem);
8
-
9
- &::checkmark {
10
- display: none;
11
- }
12
-
13
- &:focus-visible {
14
- outline-width: 0;
15
- }
6
+ box-sizing: border-box;
7
+ cursor: pointer;
8
+ min-width: 100%;
9
+ align-items: center;
10
+ border-radius: clamp(0rem, calc(var(--radius, 0.5rem) - 0.25rem), 0.5rem);
16
11
 
12
+ &:focus,
17
13
  &:hover,
18
- &:focus-visible {
14
+ &.cdk-option-highlighted {
19
15
  background-color: color-mix(
20
16
  in srgb,
21
- var(--foreground, #798194) 5%,
22
- var(--background, #ffffff)
17
+ var(--secondary) 50%,
18
+ var(--background)
23
19
  );
24
20
  }
25
21
 
26
- &:checked {
27
- background-color: var(--primary, #0a0a0a);
28
- color: var(--primary-foreground, #ffffff);
29
- }
30
-
31
- &:disabled {
32
- pointer-events: none;
33
- opacity: 0.5;
22
+ &[aria-selected='true'] {
23
+ background-color: var(--secondary);
24
+ color: var(--secondary-foreground);
34
25
  }
35
26
  }
@@ -0,0 +1,70 @@
1
+ ul[b-select-options] {
2
+ list-style: none;
3
+ padding: 0.2rem;
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ position: relative;
7
+ background: var(--background, #ffffff);
8
+ box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
9
+ border-radius: clamp(0rem, var(--radius), 0.5rem);
10
+ border: 1px solid
11
+ color-mix(
12
+ in srgb,
13
+ var(--foreground, #798194) 10%,
14
+ var(--background, #ffffff)
15
+ );
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 0.2rem;
19
+ width: 100%;
20
+ overflow-y: auto;
21
+
22
+ /* Overlay Animations */
23
+ opacity: 0;
24
+
25
+ &.b-overlay-bottom,
26
+ &.b-overlay-top,
27
+ &.b-overlay-left,
28
+ &.b-overlay-right {
29
+ transition:
30
+ transform 150ms ease-in-out,
31
+ opacity 150ms ease-in-out;
32
+ opacity: 1;
33
+ }
34
+
35
+ &.b-overlay-bottom {
36
+ transform: translateY(5px);
37
+
38
+ &.b-overlay-leave {
39
+ transform: translateY(0);
40
+ opacity: 0;
41
+ }
42
+ }
43
+
44
+ &.b-overlay-top {
45
+ transform: translateY(-5px);
46
+
47
+ &.b-overlay-leave {
48
+ transform: translateY(0);
49
+ opacity: 0;
50
+ }
51
+ }
52
+
53
+ &.b-overlay-left {
54
+ transform: translateX(-5px);
55
+
56
+ &.b-overlay-leave {
57
+ transform: translateX(0);
58
+ opacity: 0;
59
+ }
60
+ }
61
+
62
+ &.b-overlay-right {
63
+ transform: translateX(5px);
64
+
65
+ &.b-overlay-leave {
66
+ transform: translateX(0);
67
+ opacity: 0;
68
+ }
69
+ }
70
+ }
@@ -1,120 +1,11 @@
1
- select[b-select] {
2
- --horizontal-padding: clamp(
3
- 1rem,
4
- calc(0.75rem + var(--radius, 0.5rem) / 2),
5
- 1.5rem
6
- );
7
-
8
- position: relative;
9
- -webkit-appearance: none;
10
- appearance: base-select;
11
- box-sizing: border-box;
12
- width: 100%;
13
- min-height: 2.8rem;
14
- border-radius: var(--radius, 0.5rem);
15
- color: var(--input-foreground, #798194);
16
- border-width: 1px;
17
- border-style: solid;
18
- border-color: var(--border-color, transparent);
19
- cursor: pointer;
20
- transition:
21
- opacity 0.2s,
22
- padding-top 0.2s,
23
- padding-bottom 0.2s,
24
- background-color 0.2s,
25
- border-color 0.2s;
26
- --vertical-padding: calc(0.9rem - 2px);
27
- padding: var(--vertical-padding) var(--horizontal-padding);
28
- font-size: 1rem;
29
- background-color: transparent;
30
- display: flex;
31
- align-items: center;
32
-
33
- &:focus-visible {
34
- outline: 2px solid var(--primary, #0a0a0a);
35
- outline-offset: 2px;
1
+ b-select {
2
+ button {
3
+ display: flex;
4
+ justify-content: space-between !important;
5
+ align-items: center;
6
+ padding-right: 0.5rem !important;
7
+ text-align: start;
8
+ gap: 0.3rem !important;
9
+ width: 100% !important;
36
10
  }
37
-
38
- &::picker(select) {
39
- pointer-events: all;
40
- max-height: 200px;
41
- animation: picker 0.2s ease-in-out;
42
- appearance: base-select;
43
- left: 0;
44
- margin: 0.25rem 0;
45
- padding: 0.25rem 0.25rem 0rem 0.25rem;
46
- background: var(--background, #ffffff);
47
- box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
48
- border-radius: clamp(0rem, var(--radius, 0.5rem), 0.5rem);
49
- border: 1px solid
50
- color-mix(
51
- in srgb,
52
- var(--foreground, #798194) 10%,
53
- var(--background, #ffffff)
54
- );
55
- }
56
-
57
- &::picker-icon {
58
- font-size: 0.9rem;
59
- margin-right: 1px;
60
- }
61
-
62
- &.invalid {
63
- color: var(--error-foreground, #c40000ab);
64
- background-color: var(--error, #fff0f0);
65
- border-color: var(--error-border-color, #c40000ab);
66
-
67
- &::picker-icon {
68
- color: var(--error-foreground, #c40000ab);
69
- }
70
-
71
- &:focus-visible {
72
- outline-color: var(--error-foreground, #c40000ab);
73
- }
74
- }
75
-
76
- &.disabled {
77
- pointer-events: none;
78
- opacity: 0.5;
79
- }
80
- }
81
-
82
- option {
83
- margin-bottom: 0.25rem;
84
- cursor: pointer;
85
- padding: 0.5rem 0.75rem;
86
- color: var(--foreground, #798194);
87
- transition: 0.1s;
88
- border-radius: clamp(0rem, calc(var(--radius, 0.5rem) - 0.2rem), 0.5rem);
89
- }
90
-
91
- option::checkmark {
92
- display: none;
93
- }
94
-
95
- option:focus-visible {
96
- outline-width: 0;
97
- }
98
-
99
- option:hover,
100
- option:focus-visible {
101
- background-color: color-mix(
102
- in srgb,
103
- var(--foreground, #798194) 5%,
104
- var(--background, #ffffff)
105
- );
106
- }
107
-
108
- option:checked {
109
- background-color: var(--primary, #0a0a0a);
110
- color: var(--primary-foreground, #ffffff);
111
- }
112
-
113
- option:disabled {
114
- pointer-events: none;
115
- opacity: 0.5;
116
- }
117
-
118
- selectedoption {
119
- background-color: green;
120
11
  }
@@ -1,4 +1,4 @@
1
- b-side-sheet {
1
+ b-sheet {
2
2
  position: fixed;
3
3
  top: 0;
4
4
  height: 100dvh;
@@ -54,6 +54,6 @@ b-side-sheet {
54
54
  }
55
55
  }
56
56
 
57
- html:has(b-side-sheet.open) {
57
+ html:has(b-sheet.open) {
58
58
  overflow: hidden;
59
59
  }
@@ -1,41 +1,27 @@
1
1
  b-tab {
2
+ padding-inline: 0.857rem;
2
3
  height: 100%;
4
+ font-size: 1rem;
5
+ display: flex;
6
+ align-items: center;
7
+ box-sizing: border-box;
8
+ cursor: pointer;
9
+ border-radius: calc(var(--radius) - 0.2rem);
3
10
 
4
- span {
5
- display: flex;
6
- justify-content: center;
7
- align-items: center;
8
- height: 100%;
9
- padding-inline: var(--button-padding-inline, 1.9rem);
10
- border-radius: var(--radius, 0.5rem);
11
- box-sizing: border-box;
12
- gap: 0.5rem;
13
- position: relative;
14
- overflow: hidden;
15
- transition: 0.2s;
16
- width: 100%;
17
- font-size: 100%;
18
- border: none;
19
- user-select: none;
20
- border: 1px solid transparent;
21
-
22
- &:hover {
23
- cursor: pointer;
24
- }
11
+ &[aria-selected='true'] {
12
+ background-color: var(--primary);
13
+ color: var(--primary-foreground);
14
+ }
25
15
 
26
- &.selected {
27
- background-color: var(--background, #ffffff);
28
- border-color: var(--border-color, transparent);
29
- }
16
+ &:hover:not(.cdk-option-active) {
17
+ background-color: color-mix(in srgb, var(--bg-color), var(--text-color) 5%);
18
+ }
19
+ }
30
20
 
31
- &:not(.selected) {
32
- &.highlighted {
33
- background: color-mix(
34
- in srgb,
35
- var(--foreground, #798194) 10%,
36
- var(--background, #ffffff)
37
- );
38
- }
39
- }
21
+ b-tabs:focus-visible {
22
+ b-tab.cdk-option-active {
23
+ outline: 2px solid var(--text-color);
24
+ outline-offset: 2px;
25
+ z-index: 1;
40
26
  }
41
27
  }
@@ -1,18 +1,11 @@
1
1
  b-tabs {
2
- .tabs {
3
- display: flex;
4
- overflow-x: auto;
5
- height: 2.8rem;
6
- padding: 0.2rem;
7
- background: color-mix(
8
- in srgb,
9
- var(--foreground, #798194) 5%,
10
- var(--background, #ffffff)
11
- );
12
- box-sizing: border-box;
13
- align-items: center;
14
- border-radius: var(--radius, 0.5rem);
15
- border: 1px solid var(--border-color, transparent);
16
- gap: 0.3rem;
17
- }
2
+ display: flex;
3
+ gap: 0.2rem;
4
+ border-radius: var(--radius);
5
+ outline-width: 0;
6
+ border: 1px solid var(--border-color);
7
+ padding: 0.2rem;
8
+ box-sizing: border-box;
9
+ position: relative;
10
+ height: 2.286rem;
18
11
  }
@@ -1,45 +1,72 @@
1
1
  b-tooltip {
2
- display: flex;
2
+ white-space: nowrap;
3
+ background: var(--input-background);
4
+ border-radius: var(--radius);
5
+ border: 1px solid var(--border-color);
6
+ box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
3
7
 
4
- .b-tooltip-content {
5
- padding: 0.5rem;
6
- border-radius: var(--border-radius, 0.5rem);
7
- white-space: nowrap;
8
+ &.size-1 {
9
+ padding: 0.357rem 0.5rem;
10
+ font-size: 0.857rem;
11
+ }
8
12
 
9
- &.primary {
10
- background-color: var(--primary, #0a0a0a);
11
- color: var(--primary-foreground, #ffffff);
12
- border: var(--border-px, 0px) solid var(--primary-border-color, #0a0a0a);
13
- }
13
+ &.size-2 {
14
+ padding: 0.5rem 0.75rem;
15
+ font-size: 1rem;
16
+ }
14
17
 
15
- &.secondary {
16
- background-color: color-mix(
17
- in srgb,
18
- var(--secondary-foreground, #0a0a0a) 5%,
19
- var(--secondary, transparent)
20
- );
21
- color: var(--secondary-foreground, #0a0a0a);
22
- }
18
+ &.size-3 {
19
+ padding: 0.786rem 1rem;
20
+ font-size: 1.143rem;
21
+ }
22
+
23
+ /* Tooltip Animations */
24
+ opacity: 0;
25
+ transform: translateY(0); /* Reset transform */
26
+
27
+ &.b-tooltip-bottom,
28
+ &.b-tooltip-top,
29
+ &.b-tooltip-left,
30
+ &.b-tooltip-right {
31
+ transition:
32
+ transform 150ms ease-in-out,
33
+ opacity 150ms ease-in-out;
34
+ opacity: 1;
35
+ }
23
36
 
24
- &.ghost {
25
- background-color: transparent;
26
- color: var(--secondary-foreground, #0a0a0a);
37
+ &.b-tooltip-bottom {
38
+ transform: translateY(0.5rem);
39
+
40
+ &.b-tooltip-leave {
41
+ transform: translateY(0);
42
+ opacity: 0;
27
43
  }
44
+ }
28
45
 
29
- &.outlined {
30
- background-color: var(--background, #ffffff);
31
- border: 1px solid var(--border-color, #ececec);
32
- color: var(--secondary-foreground, #0a0a0a);
46
+ &.b-tooltip-top {
47
+ transform: translateY(-0.5rem);
48
+
49
+ &.b-tooltip-leave {
50
+ transform: translateY(0);
51
+ opacity: 0;
33
52
  }
53
+ }
34
54
 
35
- &.size-small {
36
- font-size: 0.75rem;
37
- padding: 0.2rem 0.6rem;
55
+ &.b-tooltip-left {
56
+ transform: translateX(-0.5rem);
57
+
58
+ &.b-tooltip-leave {
59
+ transform: translateX(0);
60
+ opacity: 0;
38
61
  }
62
+ }
63
+
64
+ &.b-tooltip-right {
65
+ transform: translateX(0.5rem);
39
66
 
40
- &.size-default {
41
- font-size: 0.875rem;
42
- padding: 0.25rem 0.8rem;
67
+ &.b-tooltip-leave {
68
+ transform: translateX(0);
69
+ opacity: 0;
43
70
  }
44
71
  }
45
72
  }
package/src/index.css CHANGED
@@ -2,7 +2,7 @@
2
2
  @import './components/badge.component.css';
3
3
  @import './components/attached-box.component.css';
4
4
  @import './components/badge.component.css';
5
- @import './components/bottom-sheet.component.css';
5
+ @import './components/drawer.component.css';
6
6
  @import './components/button-group.component.css';
7
7
  @import './components/button.component.css';
8
8
  @import './components/checkbox.component.css';
@@ -17,13 +17,17 @@
17
17
  @import './components/menu-item.component.css';
18
18
  @import './components/menu-label.component.css';
19
19
  @import './components/menu.component.css';
20
- @import './components/option.component.css';
21
20
  @import './components/range.component.css';
22
21
  @import './components/row-item.component.css';
23
22
  @import './components/row.component.css';
24
- @import './components/search.component.css';
25
23
  @import './components/select.component.css';
26
- @import './components/side-sheet.component.css';
24
+ @import './components/select-options.component.css';
25
+ @import './components/combobox.component.css';
26
+ @import './components/combobox-options.component.css';
27
+ @import './components/command.component.css';
28
+ @import './components/command-options.component.css';
29
+ @import './components/option.component.css';
30
+ @import './components/sheet.component.css';
27
31
  @import './components/spinner.component.css';
28
32
  @import './components/switch.component.css';
29
33
  @import './components/tab.component.css';
@@ -33,4 +37,3 @@
33
37
  @import './components/tooltip.component.css';
34
38
  @import './components/tree-node.component.css';
35
39
  @import './components/tree.component.css';
36
-
@@ -1,241 +0,0 @@
1
- b-search {
2
- width: 100%;
3
- position: relative;
4
- border-width: 1px;
5
- border-style: solid;
6
- border-color: var(--border-color, transparent);
7
- transition:
8
- opacity 0.2s,
9
- color 0.2s,
10
- border-color 0.2s;
11
- border-radius: var(--radius, 0.5rem);
12
- overflow: hidden;
13
- box-sizing: border-box;
14
- height: 2.8rem;
15
-
16
- &:has(input:focus-visible),
17
- &:has(select:focus-visible) {
18
- outline: 2px solid var(--primary, #0a0a0a);
19
- outline-offset: 2px;
20
- }
21
-
22
- label {
23
- position: absolute;
24
- z-index: 1;
25
- left: 0.8rem;
26
- top: 50%;
27
- transform: translateY(-50%);
28
- pointer-events: none;
29
- transition:
30
- top 0.2s,
31
- font-size 0.2s,
32
- transform 0.2s;
33
- }
34
-
35
- section {
36
- position: absolute;
37
- top: 50%;
38
- transform: translateY(-50%);
39
- flex: 1;
40
- padding-inline: 0.8rem 0;
41
- width: calc(100% - 3rem);
42
- background-color: color-mix(
43
- in srgb,
44
- var(--foreground, #798194) 5%,
45
- var(--background, #ffffff)
46
- );
47
- border-right-style: solid;
48
- border-right-width: 1px;
49
- border-right-color: var(--border-color, transparent);
50
- display: flex;
51
- gap: 0.8rem;
52
- padding-right: 0.8rem;
53
- box-sizing: border-box;
54
- height: 100%;
55
- transition:
56
- background-color 0.2s,
57
- border-right-color 0.2s;
58
-
59
- &.large {
60
- width: 100%;
61
- border-right: none;
62
- }
63
-
64
- input {
65
- box-sizing: border-box;
66
- font-size: 1rem;
67
- padding: 0.7rem 0;
68
- user-select: none;
69
- border: 0;
70
- background: transparent;
71
- outline: none;
72
- color: var(--input-foreground, #798194);
73
- transition: color 0.2s;
74
- cursor: pointer;
75
- user-select: none;
76
- width: 100%;
77
- font-family: 'Geist', sans-serif;
78
- height: 100%;
79
- transition: color 0.2s;
80
-
81
- &::-webkit-outer-spin-button,
82
- &::-webkit-inner-spin-button {
83
- -webkit-appearance: none;
84
- margin: 0;
85
- }
86
-
87
- &[type='text'],
88
- &[type='number'] {
89
- appearance: textfield;
90
- -moz-appearance: textfield;
91
- }
92
-
93
- &[type='password'] {
94
- font-size: 1.8rem;
95
- }
96
-
97
- &::placeholder {
98
- opacity: 0.5;
99
- }
100
- }
101
-
102
- i {
103
- cursor: pointer;
104
- }
105
- }
106
-
107
- select {
108
- -webkit-appearance: none;
109
- appearance: base-select;
110
- box-sizing: border-box;
111
- width: 100%;
112
- color: var(--input-foreground, #798194);
113
- border: none;
114
- cursor: pointer;
115
- transition:
116
- color 0.2s,
117
- background-color 0.2s;
118
- padding: 0.7rem 2.8rem 0.7rem 0.8rem;
119
- font-size: 1rem;
120
- background-color: var(--background, #ffffff);
121
- outline: none;
122
- font-family: 'Geist', sans-serif;
123
- height: 100%;
124
-
125
- &.no-options {
126
- pointer-events: none;
127
- }
128
-
129
- &::picker(select) {
130
- max-height: 200px;
131
- opacity: 1;
132
- appearance: base-select;
133
- left: 0;
134
- margin: 0.25rem 0;
135
- padding: 0.25rem 0.25rem 0rem 0.25rem;
136
- background: var(--background, #ffffff);
137
- box-shadow: 0 0 0.25rem 0.125rem rgba(1, 1, 1, 0.01);
138
- border-radius: var(--radius, 0.5rem);
139
- border: 1px solid
140
- color-mix(
141
- in srgb,
142
- var(--foreground, #798194) 10%,
143
- var(--background, #ffffff)
144
- );
145
- }
146
-
147
- &::picker-icon {
148
- display: none;
149
- }
150
- }
151
-
152
- .icon-wrapper {
153
- position: absolute;
154
- right: 0;
155
- top: 50%;
156
- transform: translateY(-50%);
157
- cursor: pointer;
158
- display: flex;
159
- height: 100%;
160
- width: 3rem;
161
- justify-content: center;
162
- align-items: center;
163
- pointer-events: none;
164
-
165
- i {
166
- &.select-has-value {
167
- pointer-events: all;
168
- cursor: pointer;
169
-
170
- &.open {
171
- transform: rotate(180deg);
172
- }
173
- }
174
-
175
- &:not(.select-has-value) {
176
- pointer-events: none;
177
- transition: transform 0.2s;
178
- }
179
-
180
- &.searching {
181
- animation: spin 1.7s linear infinite;
182
- }
183
- }
184
- }
185
-
186
- &.invalid {
187
- color: var(--error-foreground, #c40000ab);
188
- border-color: var(--error-foreground, #c40000ab);
189
-
190
- &:has(input:focus-visible),
191
- &:has(select:focus-visible) {
192
- outline-color: var(--error-foreground, #c40000ab);
193
- }
194
-
195
- select {
196
- color: var(--error-foreground, #c40000ab);
197
- background-color: var(--error, #fff0f0);
198
- }
199
-
200
- section {
201
- background-color: var(--error, #fff0f0);
202
- border-right-color: var(--error-foreground, #c40000ab);
203
-
204
- input {
205
- color: var(--error-foreground, #c40000ab);
206
-
207
- &::placeholder {
208
- color: var(--error-foreground, #c40000ab);
209
- }
210
- }
211
- }
212
- }
213
-
214
- &.label-up {
215
- label {
216
- top: 0.344rem;
217
- font-size: 0.7rem;
218
- transform: translateY(0);
219
- }
220
-
221
- section input,
222
- select {
223
- padding-top: 1.1rem;
224
- padding-bottom: 0.3rem;
225
- }
226
- }
227
-
228
- &.disabled {
229
- opacity: 0.5;
230
- pointer-events: none;
231
- }
232
- }
233
-
234
- @keyframes spin {
235
- 0% {
236
- transform: rotate(0deg);
237
- }
238
- 100% {
239
- transform: rotate(360deg);
240
- }
241
- }