@basis-ng/styles 0.0.1-alpha.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 (36) hide show
  1. package/package.json +19 -0
  2. package/src/alert.component.css +71 -0
  3. package/src/attached-box.component.css +84 -0
  4. package/src/badge.component.css +58 -0
  5. package/src/bottom-sheet.component.css +49 -0
  6. package/src/button-group.component.css +20 -0
  7. package/src/button.component.css +177 -0
  8. package/src/checkbox.component.css +41 -0
  9. package/src/color-picker.component.css +34 -0
  10. package/src/icon.component.css +5 -0
  11. package/src/index.css +35 -0
  12. package/src/input-group.component.css +110 -0
  13. package/src/input.component.css +70 -0
  14. package/src/label.component.css +74 -0
  15. package/src/menu-group.component.css +18 -0
  16. package/src/menu-item-checkbox.component.css +32 -0
  17. package/src/menu-item-radio.component.css +32 -0
  18. package/src/menu-item.component.css +32 -0
  19. package/src/menu-label.component.css +4 -0
  20. package/src/menu.component.css +32 -0
  21. package/src/option.component.css +35 -0
  22. package/src/range.component.css +39 -0
  23. package/src/row-item.component.css +14 -0
  24. package/src/row.component.css +56 -0
  25. package/src/search.component.css +241 -0
  26. package/src/select.component.css +120 -0
  27. package/src/side-sheet.component.css +59 -0
  28. package/src/spinner.component.css +13 -0
  29. package/src/switch.component.css +68 -0
  30. package/src/tab.component.css +41 -0
  31. package/src/table.component.css +34 -0
  32. package/src/tabs.component.css +18 -0
  33. package/src/textarea.component.css +40 -0
  34. package/src/tooltip.component.css +45 -0
  35. package/src/tree-node.component.css +77 -0
  36. package/src/tree.component.css +7 -0
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@basis-ng/styles",
3
+ "version": "0.0.1-alpha.0",
4
+ "description": "Styles for the @basis-ng/primitives",
5
+ "main": "src/index.css",
6
+ "files": [
7
+ "src"
8
+ ],
9
+ "keywords": [
10
+ "ui",
11
+ "design-system",
12
+ "styles",
13
+ "basis-ng"
14
+ ],
15
+ "license": "MIT",
16
+ "sideEffects": [
17
+ "**/*.css"
18
+ ]
19
+ }
@@ -0,0 +1,71 @@
1
+ b-alert {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 1rem;
5
+ padding: 1rem;
6
+ border-radius: 0.5rem;
7
+ position: relative;
8
+ font-family: 'Geist', sans-serif;
9
+ max-width: var(--max-width, none);
10
+ width: 100%;
11
+ box-sizing: border-box;
12
+
13
+ .icon {
14
+ flex-shrink: 0;
15
+ align-self: flex-start;
16
+ }
17
+
18
+ .content {
19
+ flex-grow: 1;
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: 0.5rem;
23
+
24
+ .title {
25
+ font-weight: bold;
26
+ }
27
+
28
+ .body {
29
+ font-size: 0.875rem;
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: 0.2rem;
33
+ }
34
+ }
35
+
36
+ &.success {
37
+ background-color: var(--success);
38
+ color: var(--success-foreground);
39
+ border: 1px solid var(--success-border-color);
40
+ }
41
+
42
+ &.error {
43
+ background-color: var(--error);
44
+ color: var(--error-foreground);
45
+ border: 1px solid var(--error-border-color);
46
+ }
47
+
48
+ &.warning {
49
+ background-color: var(--warning);
50
+ color: var(--warning-foreground);
51
+ border: 1px solid var(--warning-border-color);
52
+ }
53
+
54
+ &.info {
55
+ background-color: var(--secondary);
56
+ color: var(--secondary-foreground);
57
+ border: 1px solid var(--secondary-border-color);
58
+ }
59
+
60
+ .close-btn {
61
+ align-self: flex-start;
62
+ flex-shrink: 0;
63
+ background: none;
64
+ border: none;
65
+ cursor: pointer;
66
+ color: inherit;
67
+ display: flex;
68
+ align-items: start;
69
+ padding: 0;
70
+ }
71
+ }
@@ -0,0 +1,84 @@
1
+ b-attached-box {
2
+ position: relative;
3
+ cursor: pointer;
4
+
5
+ .b-attached-box-content {
6
+ position: absolute;
7
+ display: flex;
8
+ z-index: 1000;
9
+ opacity: 0;
10
+ transform: scale(var(--scale-from, 0.99))
11
+ var(--translate-from, translateX(-10px));
12
+ transition:
13
+ opacity var(--duration, 0.15s) var(--enter-delay, 0s),
14
+ transform var(--duration, 0.15s) var(--enter-delay, 0s);
15
+ pointer-events: none;
16
+
17
+ &.visible {
18
+ opacity: 1;
19
+ transform: scale(var(--scale-to, 1)) var(--translate-to, translateX(0));
20
+ pointer-events: all;
21
+ }
22
+
23
+ /* Positioning classes */
24
+ &.top-left {
25
+ bottom: calc(100% + var(--gap, 0.5rem));
26
+ left: 0;
27
+ }
28
+
29
+ &.top-center {
30
+ bottom: calc(100% + var(--gap, 0.5rem));
31
+ left: 50%;
32
+ }
33
+
34
+ &.top-right {
35
+ bottom: calc(100% + var(--gap, 0.5rem));
36
+ right: 0;
37
+ }
38
+
39
+ &.bottom-left {
40
+ top: calc(100% + var(--gap, 0.5rem));
41
+ left: 0;
42
+ }
43
+
44
+ &.bottom-center {
45
+ top: calc(100% + var(--gap, 0.5rem));
46
+ left: 50%;
47
+ }
48
+
49
+ &.bottom-right {
50
+ top: calc(100% + var(--gap, 0.5rem));
51
+ right: 0;
52
+ }
53
+
54
+ &.left-top {
55
+ right: calc(100% + var(--gap, 0.5rem));
56
+ top: 0;
57
+ }
58
+
59
+ &.left-center {
60
+ right: calc(100% + var(--gap, 0.5rem));
61
+ top: 50%;
62
+ }
63
+
64
+ &.left-bottom {
65
+ right: calc(100% + var(--gap, 0.5rem));
66
+ bottom: 0;
67
+ }
68
+
69
+ &.right-top {
70
+ left: calc(100% + var(--gap, 0.5rem));
71
+ top: 0;
72
+ }
73
+
74
+ &.right-center {
75
+ left: calc(100% + var(--gap, 0.5rem));
76
+ top: 50%;
77
+ }
78
+
79
+ &.right-bottom {
80
+ left: calc(100% + var(--gap, 0.5rem));
81
+ bottom: 0;
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,58 @@
1
+ span[b-badge] {
2
+ display: inline-flex;
3
+ justify-content: center;
4
+ align-items: center;
5
+ font-size: 0.875rem;
6
+ font-weight: 500;
7
+ border-radius: 9999px;
8
+ box-sizing: border-box;
9
+ transition:
10
+ background-color 0.2s,
11
+ opacity 0.2s;
12
+
13
+ &.primary {
14
+ background-color: var(--primary, #0a0a0a);
15
+ color: var(--primary-foreground, #ffffff);
16
+ border: var(--border-px, 0px) solid var(--primary-border-color, #0a0a0a);
17
+ }
18
+
19
+ &.secondary {
20
+ background-color: color-mix(
21
+ in srgb,
22
+ var(--secondary-foreground, #0a0a0a) 5%,
23
+ var(--secondary, transparent)
24
+ );
25
+ color: var(--secondary-foreground, #0a0a0a);
26
+ }
27
+
28
+ &.ghost {
29
+ background-color: transparent;
30
+ color: var(--secondary-foreground, #0a0a0a);
31
+
32
+ @media (width > 768px) {
33
+ &:hover {
34
+ background-color: color-mix(
35
+ in srgb,
36
+ var(--secondary-foreground, #0a0a0a) 5%,
37
+ var(--secondary, transparent)
38
+ );
39
+ }
40
+ }
41
+ }
42
+
43
+ &.outlined {
44
+ background-color: var(--background, #ffffff);
45
+ border: 1px solid var(--border-color, #ececec);
46
+ color: var(--secondary-foreground, #0a0a0a);
47
+ }
48
+
49
+ &.size-small {
50
+ font-size: 0.75rem;
51
+ padding: 0.2rem 0.6rem;
52
+ }
53
+
54
+ &.size-default {
55
+ font-size: 0.875rem;
56
+ padding: 0.25rem 0.8rem;
57
+ }
58
+ }
@@ -0,0 +1,49 @@
1
+ b-bottom-sheet {
2
+ position: fixed;
3
+ bottom: 0;
4
+ left: 0;
5
+ right: 0;
6
+ background-color: var(--background, #ffffff);
7
+ border-radius: 16px 16px 0 0;
8
+ border: 1px solid var(--border-color, transparent);
9
+ border-bottom: none;
10
+ display: flex;
11
+ flex-direction: column;
12
+ z-index: 1001;
13
+ will-change: transform;
14
+ box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
15
+ touch-action: none;
16
+ user-select: none;
17
+ transition: transform 0.5s cubic-bezier(0.32, 0.72, 0, 1);
18
+ padding-top: 40px;
19
+ box-sizing: border-box;
20
+ overflow: hidden;
21
+ transform: translateY(100%);
22
+
23
+ &.dragging {
24
+ transition: none;
25
+ }
26
+
27
+ .drag-section {
28
+ width: 100%;
29
+ height: 40px;
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ cursor: grab;
34
+ touch-action: none;
35
+ position: absolute;
36
+ top: 0;
37
+
38
+ .drag-indicator {
39
+ width: 20%;
40
+ height: 4px;
41
+ background-color: var(--input-border-color, #e0e0e0);
42
+ border-radius: 2px;
43
+ }
44
+ }
45
+ }
46
+
47
+ html:has(b-bottom-sheet.open) {
48
+ overflow: hidden;
49
+ }
@@ -0,0 +1,20 @@
1
+ b-button-group {
2
+ display: flex;
3
+
4
+ &:not(.spaced) {
5
+ button:not(:last-child) {
6
+ border-right: none !important;
7
+ border-top-right-radius: 0 !important;
8
+ border-bottom-right-radius: 0 !important;
9
+ }
10
+
11
+ button:not(:first-child) {
12
+ border-top-left-radius: 0 !important;
13
+ border-bottom-left-radius: 0 !important;
14
+ }
15
+ }
16
+
17
+ &.spaced {
18
+ gap: 0.5rem;
19
+ }
20
+ }
@@ -0,0 +1,177 @@
1
+ button[b-button] {
2
+ display: flex;
3
+ justify-content: center;
4
+ align-items: center;
5
+ background-color: var(--primary, #0a0a0a);
6
+ border-radius: var(--radius, 0.5rem);
7
+ box-sizing: border-box;
8
+ gap: 0.5rem;
9
+ position: relative;
10
+ overflow: hidden;
11
+ transition:
12
+ background-color 0.2s,
13
+ opacity 0.2s;
14
+ font-size: 100%;
15
+ border: none;
16
+ text-decoration: none;
17
+ font-family: 'Geist', sans-serif;
18
+ --padding-inline-multiple: 1.5;
19
+ --border-px: 0px;
20
+
21
+ &:focus-visible {
22
+ outline: 2px solid var(--primary, #0a0a0a);
23
+ outline-offset: 2px;
24
+ }
25
+
26
+ &.primary,
27
+ &.outlined {
28
+ --border-px: 1px;
29
+ }
30
+
31
+ &.primary {
32
+ background-color: var(--primary, #0a0a0a);
33
+ color: var(--primary-foreground, #ffffff);
34
+ border: var(--border-px) solid var(--primary-border-color, #0a0a0a);
35
+
36
+ @media (width > 768px) {
37
+ &:hover {
38
+ background-color: color-mix(
39
+ in srgb,
40
+ var(--primary-foreground, #ffffff) 5%,
41
+ var(--primary, #0a0a0a)
42
+ );
43
+ }
44
+ }
45
+
46
+ &.toggled {
47
+ background-color: color-mix(
48
+ in srgb,
49
+ var(--primary-foreground, #ffffff) 5%,
50
+ var(--primary, #0a0a0a)
51
+ );
52
+ }
53
+ }
54
+
55
+ &.secondary {
56
+ background-color: var(--secondary);
57
+
58
+ @media (width > 768px) {
59
+ &:hover {
60
+ background-color: color-mix(
61
+ in srgb,
62
+ var(--secondary-foreground, #0a0a0a) 8%,
63
+ var(--secondary, transparent)
64
+ );
65
+ }
66
+ }
67
+
68
+ &.toggled {
69
+ background-color: color-mix(
70
+ in srgb,
71
+ var(--secondary-foreground, #0a0a0a) 8%,
72
+ var(--secondary, transparent)
73
+ );
74
+ }
75
+ }
76
+
77
+ &.ghost {
78
+ background-color: transparent;
79
+
80
+ @media (width > 768px) {
81
+ &:hover {
82
+ background-color: color-mix(
83
+ in srgb,
84
+ var(--secondary-foreground, #0a0a0a) 5%,
85
+ var(--secondary, transparent)
86
+ );
87
+ }
88
+ }
89
+
90
+ &.toggled {
91
+ background-color: color-mix(
92
+ in srgb,
93
+ var(--secondary-foreground, #0a0a0a) 5%,
94
+ var(--secondary, transparent)
95
+ );
96
+ }
97
+ }
98
+
99
+ &.outlined {
100
+ background-color: var(--background, #ffffff);
101
+ border: var(--border-px) solid var(--border-color, #ececec);
102
+
103
+ @media (width > 768px) {
104
+ &:hover {
105
+ background-color: color-mix(
106
+ in srgb,
107
+ var(--secondary-foreground, #0a0a0a) 5%,
108
+ var(--secondary, transparent)
109
+ );
110
+ }
111
+ }
112
+
113
+ &.toggled {
114
+ background-color: color-mix(
115
+ in srgb,
116
+ var(--secondary-foreground, #0a0a0a) 5%,
117
+ var(--secondary, transparent)
118
+ );
119
+ }
120
+ }
121
+
122
+ &.secondary,
123
+ &.ghost,
124
+ &.outlined {
125
+ color: var(--secondary-foreground, #0a0a0a);
126
+ }
127
+
128
+ &:not(:disabled) {
129
+ @media (width > 768px) {
130
+ &:hover {
131
+ cursor: pointer;
132
+ }
133
+ }
134
+
135
+ @media (width >= 768px) {
136
+ &:active {
137
+ transform: scale(0.98);
138
+ }
139
+ }
140
+ }
141
+
142
+ &:disabled {
143
+ opacity: 0.5;
144
+ cursor: not-allowed;
145
+ pointer-events: none;
146
+ }
147
+
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);
160
+ }
161
+ }
162
+
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
+ );
170
+ font-size: 1rem;
171
+ padding: var(--vertical-padding) var(--horizontal-padding);
172
+
173
+ &.equal-padding {
174
+ padding: var(--vertical-padding);
175
+ }
176
+ }
177
+ }
@@ -0,0 +1,41 @@
1
+ input[b-checkbox] {
2
+ appearance: none;
3
+ -webkit-appearance: none;
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ width: 1.3rem;
8
+ height: 1.3rem;
9
+ border: 1px solid var(--border, #d9d9d9);
10
+ border-radius: 0.25rem;
11
+ background-color: var(--background, #ffffff);
12
+ cursor: pointer;
13
+ transition:
14
+ background-color 0.2s,
15
+ border-color 0.2s;
16
+
17
+ &:checked {
18
+ background-color: var(--primary, #0a0a0a);
19
+ border-color: var(--primary, #0a0a0a);
20
+ }
21
+
22
+ &:focus-visible {
23
+ outline: 2px solid var(--primary, #0a0a0a);
24
+ outline-offset: 2px;
25
+ }
26
+
27
+ &::after {
28
+ content: '';
29
+ display: block;
30
+ width: 90%;
31
+ height: 90%;
32
+ background-color: var(--background, #ffffff);
33
+ clip-path: polygon(14% 48%, 19% 43%, 39% 63%, 82% 15%, 87% 20%, 39% 74%);
34
+ opacity: 0;
35
+ transition: opacity 0.2s;
36
+ }
37
+
38
+ &:checked::after {
39
+ opacity: 1;
40
+ }
41
+ }
@@ -0,0 +1,34 @@
1
+ input[b-color-picker] {
2
+ width: 100%;
3
+ position: relative;
4
+ width: 100%;
5
+ height: 2.8rem;
6
+ background: none;
7
+ padding: 0;
8
+ border: 0;
9
+ cursor: pointer;
10
+
11
+ &::-webkit-color-swatch-wrapper {
12
+ width: 100%;
13
+ height: 2.8rem;
14
+ padding: 0;
15
+ }
16
+
17
+ &::-webkit-color-swatch {
18
+ border: 1px solid var(--border-color);
19
+ border-radius: var(--radius);
20
+ }
21
+
22
+ &.show-color {
23
+ &::before {
24
+ content: var(--value);
25
+ display: flex;
26
+ color: var(--text-color);
27
+ position: absolute;
28
+ top: 50%;
29
+ left: 50%;
30
+ transform: translate(-50%, -50%);
31
+ font-family: 'Geist', sans-serif;
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,5 @@
1
+ i[b-icon] {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ }
package/src/index.css ADDED
@@ -0,0 +1,35 @@
1
+ @import './alert.component.css';
2
+ @import './badge.component.css';
3
+ @import './attached-box.component.css';
4
+ @import './badge.component.css';
5
+ @import './bottom-sheet.component.css';
6
+ @import './button-group.component.css';
7
+ @import './button.component.css';
8
+ @import './checkbox.component.css';
9
+ @import './color-picker.component.css';
10
+ @import './icon.component.css';
11
+ @import './input-group.component.css';
12
+ @import './input.component.css';
13
+ @import './label.component.css';
14
+ @import './menu-group.component.css';
15
+ @import './menu-item-checkbox.component.css';
16
+ @import './menu-item-radio.component.css';
17
+ @import './menu-item.component.css';
18
+ @import './menu-label.component.css';
19
+ @import './menu.component.css';
20
+ @import './option.component.css';
21
+ @import './range.component.css';
22
+ @import './row-item.component.css';
23
+ @import './row.component.css';
24
+ @import './search.component.css';
25
+ @import './select.component.css';
26
+ @import './side-sheet.component.css';
27
+ @import './spinner.component.css';
28
+ @import './switch.component.css';
29
+ @import './tab.component.css';
30
+ @import './table.component.css';
31
+ @import './tabs.component.css';
32
+ @import './textarea.component.css';
33
+ @import './tooltip.component.css';
34
+ @import './tree-node.component.css';
35
+ @import './tree.component.css';
@@ -0,0 +1,110 @@
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
+ display: flex;
24
+ align-items: center;
25
+
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;
60
+ }
61
+
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;
68
+ }
69
+
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;
80
+ }
81
+
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;
89
+ }
90
+
91
+ span:first-child,
92
+ & > i:first-child {
93
+ padding-inline: var(--exterior-padding) 0;
94
+ }
95
+
96
+ span:last-child,
97
+ & > i:last-child {
98
+ padding-inline: 0 var(--exterior-padding);
99
+ }
100
+
101
+ button {
102
+ height: 100%;
103
+ max-height: 100%;
104
+ font-size: 0.88rem;
105
+ }
106
+
107
+ button:active {
108
+ transform: scale(1) !important;
109
+ }
110
+ }