@fea-ui/styles 0.1.0-alpha.4 → 0.1.0-alpha.7

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@fea-ui/styles",
3
- "version": "0.1.0-alpha.4",
3
+ "version": "0.1.0-alpha.7",
4
4
  "description": "FeaUI Styles - Tailwind CSS styles for FeaUI components",
5
5
  "keywords": [
6
6
  "fea-ui",
@@ -34,17 +34,15 @@
34
34
  "src"
35
35
  ],
36
36
  "scripts": {
37
- "build:css": "bunx @tailwindcss/cli -i src/styles.css -o dist/index.css --minify"
37
+ "build:css": "bunx @tailwindcss/cli -i src/styles.css -o dist/index.css --minify",
38
+ "check": "biome check --write"
38
39
  },
39
40
  "dependencies": {
40
- "tailwindcss": "^4.0.0"
41
+ "tailwindcss": "^4.1.18"
41
42
  },
42
43
  "devDependencies": {
43
44
  "@biomejs/biome": "2.3.10",
44
- "@types/bun": "latest",
45
- "prettier": "^3.7.4",
46
- "prettier-plugin-packagejson": "^2.5.20",
47
- "prettier-plugin-tailwindcss": "^0.7.2"
45
+ "@types/bun": "^1.3.5"
48
46
  },
49
47
  "peerDependencies": {
50
48
  "tailwindcss": ">=4.0.0"
@@ -1,48 +1,50 @@
1
1
  .accordion {
2
- @apply bg-card text-card-foreground flex w-full max-w-md flex-col justify-center;
2
+ @apply bg-card text-card-foreground flex w-full max-w-md flex-col justify-center;
3
3
  }
4
4
 
5
5
  .accordion__trigger {
6
- @apply flex w-full items-center justify-between border-b p-3;
6
+ @apply cursor-pointer;
7
7
 
8
- @apply transition-colors motion-reduce:transition-none;
8
+ @apply flex w-full items-center justify-between border-b p-3;
9
9
 
10
- &:hover {
11
- @apply bg-primary/10;
12
- }
10
+ @apply transition-colors motion-reduce:transition-none;
13
11
 
14
- &:focus {
15
- @apply outline-none;
16
- }
12
+ &:hover {
13
+ @apply bg-primary/10;
14
+ }
15
+
16
+ &:focus {
17
+ @apply outline-none;
18
+ }
17
19
  }
18
20
 
19
21
  .accordion__title {
20
- @apply text-left font-medium;
22
+ @apply text-left font-medium;
21
23
  }
22
24
 
23
25
  .accordion__trigger-icon {
24
- @apply text-muted-foreground size-5;
26
+ @apply text-muted-foreground size-5;
25
27
 
26
- @apply transition-transform duration-300 motion-reduce:transition-none;
28
+ @apply transition-transform duration-300 motion-reduce:transition-none;
27
29
 
28
- [data-panel-open] > & {
29
- @apply rotate-180;
30
- }
30
+ [data-panel-open] > & {
31
+ @apply rotate-180;
32
+ }
31
33
  }
32
34
 
33
35
  .accordion__panel {
34
- height: var(--accordion-panel-height);
36
+ height: var(--accordion-panel-height);
35
37
 
36
- @apply overflow-hidden;
38
+ @apply overflow-hidden;
37
39
 
38
- @apply transition-[height] motion-reduce:transition-none;
40
+ @apply transition-[height] motion-reduce:transition-none;
39
41
 
40
- &[data-ending-style],
41
- &[data-starting-style] {
42
- @apply h-0;
43
- }
42
+ &[data-ending-style],
43
+ &[data-starting-style] {
44
+ @apply h-0;
45
+ }
44
46
  }
45
47
 
46
48
  .accordion__content {
47
- @apply p-4;
49
+ @apply p-4;
48
50
  }
@@ -1,50 +1,50 @@
1
1
  /** Base Styling */
2
2
  .alert-dialog__backdrop {
3
- @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
3
+ @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
4
4
 
5
- @apply transition-opacity motion-reduce:transition-none;
5
+ @apply transition-opacity motion-reduce:transition-none;
6
6
 
7
- &[data-starting-style],
8
- &[data-ending-style] {
9
- @apply opacity-0;
10
- }
7
+ &[data-starting-style],
8
+ &[data-ending-style] {
9
+ @apply opacity-0;
10
+ }
11
11
  }
12
12
 
13
13
  .alert-dialog__popup {
14
- @apply bg-popover rounded border p-6 shadow;
14
+ @apply bg-popover rounded border p-6 shadow;
15
15
 
16
- @apply w-full max-w-lg;
16
+ @apply w-full max-w-lg;
17
17
 
18
- @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
18
+ @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
19
19
 
20
- @apply transition-all motion-reduce:transition-none;
20
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
21
21
 
22
- &[data-starting-style],
23
- &[data-ending-style] {
24
- @apply scale-95 opacity-0;
25
- }
22
+ &[data-starting-style],
23
+ &[data-ending-style] {
24
+ @apply scale-95 opacity-0;
25
+ }
26
26
  }
27
27
 
28
28
  .alert-dialog__title {
29
- @apply text-lg font-semibold;
29
+ @apply text-lg font-semibold;
30
30
  }
31
31
 
32
32
  .alert-dialog__description {
33
- @apply text-muted-foreground text-sm;
33
+ @apply text-muted-foreground text-sm;
34
34
  }
35
35
 
36
36
  .alert-dialog__close {
37
- @apply cursor-pointer;
37
+ @apply cursor-pointer;
38
38
 
39
- @apply absolute top-0 right-0 m-2;
39
+ @apply absolute top-0 right-0 m-2;
40
40
 
41
- svg {
42
- @apply text-muted-foreground size-5;
41
+ svg {
42
+ @apply text-muted-foreground size-5;
43
43
 
44
- @apply transition-colors motion-reduce:transition-none;
44
+ @apply transition-colors motion-reduce:transition-none;
45
45
 
46
- &:hover {
47
- @apply text-foreground;
48
- }
49
- }
46
+ &:hover {
47
+ @apply text-foreground;
48
+ }
49
+ }
50
50
  }
@@ -1,16 +1,16 @@
1
1
  /** Base Styling */
2
2
  .button-group {
3
- @apply inline-flex items-center;
3
+ @apply inline-flex items-center;
4
4
  }
5
5
 
6
6
  .button-group .button {
7
- @apply rounded-none;
7
+ @apply rounded-none;
8
8
  }
9
9
 
10
10
  .button-group .button:first-child {
11
- @apply rounded-l;
11
+ @apply rounded-l;
12
12
  }
13
13
 
14
14
  .button-group .button:last-child {
15
- @apply rounded-r;
15
+ @apply rounded-r;
16
16
  }
@@ -1,76 +1,82 @@
1
1
  /** Base Styling */
2
2
  .button {
3
- @apply cursor-pointer;
3
+ @apply cursor-pointer;
4
4
 
5
- @apply inline-flex items-center justify-center gap-2 rounded border font-medium text-nowrap;
5
+ @apply inline-flex items-center justify-center gap-2 rounded border font-medium text-nowrap;
6
6
 
7
- @apply w-fit px-4 py-4;
7
+ @apply w-fit px-4 py-4;
8
8
 
9
- @apply transition-all motion-reduce:transition-none;
9
+ @apply transition-[scale] motion-reduce:transition-none;
10
10
 
11
- @media (hover: hover) {
12
- &:hover:not([data-disabled]) {
13
- @apply brightness-90;
14
- }
15
- }
11
+ &:hover:not([data-disabled]) {
12
+ @apply brightness-90;
13
+ }
16
14
 
17
- &:active {
18
- @apply scale-95;
19
- }
15
+ &:active {
16
+ @apply scale-95;
17
+ }
20
18
 
21
- &:focus-visible {
22
- @apply status-focused;
23
- }
19
+ &:focus-visible {
20
+ @apply status-focused;
21
+ }
24
22
 
25
- &[data-disabled] {
26
- @apply status-disabled;
27
- }
23
+ &[data-disabled] {
24
+ @apply status-disabled;
25
+ }
28
26
 
29
- svg {
30
- @apply size-5 shrink-0;
31
- }
27
+ svg {
28
+ @apply size-5 shrink-0;
29
+ }
32
30
  }
33
31
 
34
32
  .button--sm {
35
- @apply h-8 text-sm;
33
+ @apply h-8 text-sm;
34
+
35
+ svg {
36
+ @apply size-4;
37
+ }
36
38
  }
37
39
 
38
40
  .button--md {
39
- @apply h-10;
41
+ @apply h-10;
40
42
  }
41
43
 
42
44
  .button--lg {
43
- @apply h-12;
45
+ @apply h-12;
44
46
  }
45
47
 
46
48
  .button--primary {
47
- @apply bg-primary text-primary-foreground;
49
+ @apply bg-primary text-primary-foreground;
48
50
  }
49
51
 
50
52
  .button--secondary {
51
- @apply bg-secondary text-secondary-foreground;
53
+ @apply bg-secondary text-secondary-foreground;
52
54
  }
53
55
 
54
56
  .button--outline {
55
- @apply bg-background text-foreground;
57
+ @apply bg-background text-foreground;
56
58
  }
57
59
 
58
60
  .button--danger {
59
- @apply bg-danger text-danger-foreground;
61
+ @apply bg-danger text-danger-foreground;
60
62
  }
61
63
 
62
64
  .button--ghost {
63
- @apply hover:bg-primary/10 border-0 bg-transparent;
65
+ @apply border-0 bg-transparent text-foreground;
66
+
67
+ &:hover:not([data-disabled]) {
68
+ @apply bg-secondary/10;
69
+ }
64
70
  }
65
71
 
66
72
  .button--icon-only {
67
- @apply size-10;
73
+ @apply size-10;
68
74
  }
69
75
 
70
76
  .button--icon-only.button--sm {
71
- @apply size-8;
77
+ @apply size-8;
72
78
  }
73
79
 
74
80
  .button--icon-only.button--lg {
75
- @apply size-12;
81
+ @apply size-12;
76
82
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  @apply size-6 outline-none;
6
6
 
7
- @apply transition-all motion-reduce:transition-none;
7
+ @apply transition-[visibility] motion-reduce:transition-none;
8
8
 
9
9
  &[data-unchecked] {
10
10
  @apply bg-input/50;
@@ -1,40 +1,40 @@
1
1
  /** Base Styling */
2
2
  .chip {
3
- @apply inline-flex items-center justify-center gap-2 rounded-full border px-2 font-medium text-nowrap;
3
+ @apply inline-flex items-center justify-center gap-2 rounded-full border px-2 font-medium text-nowrap;
4
4
  }
5
5
 
6
6
  .chip--sm {
7
- @apply h-4 text-sm;
7
+ @apply h-4 text-sm;
8
8
  }
9
9
 
10
10
  .chip--md {
11
- @apply h-6;
11
+ @apply h-6;
12
12
  }
13
13
 
14
14
  .chip--lg {
15
- @apply h-8;
15
+ @apply h-8;
16
16
  }
17
17
 
18
18
  .chip--primary {
19
- @apply bg-primary text-primary-foreground;
19
+ @apply bg-primary text-primary-foreground;
20
20
  }
21
21
 
22
22
  .chip--secondary {
23
- @apply bg-secondary text-secondary-foreground;
23
+ @apply bg-secondary text-secondary-foreground;
24
24
  }
25
25
 
26
26
  .chip--outline {
27
- @apply bg-transparent;
27
+ @apply bg-transparent;
28
28
  }
29
29
 
30
30
  .chip--danger {
31
- @apply bg-danger text-danger-foreground;
31
+ @apply bg-danger text-danger-foreground;
32
32
  }
33
33
 
34
34
  .chip--ghost {
35
- @apply border-none bg-transparent;
35
+ @apply border-none bg-transparent;
36
36
  }
37
37
 
38
38
  .chip--success {
39
- @apply bg-success text-success-foreground;
39
+ @apply bg-success text-success-foreground;
40
40
  }
@@ -1,4 +1,4 @@
1
1
  /** Base Styling */
2
2
  .container {
3
- @apply mx-auto px-4;
3
+ @apply mx-auto px-4;
4
4
  }
@@ -1,50 +1,50 @@
1
1
  /** Base Styling */
2
2
  .dialog__backdrop {
3
- @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
3
+ @apply fixed inset-0 bg-black/50 opacity-20 backdrop-blur-sm;
4
4
 
5
- @apply transition-opacity motion-reduce:transition-none;
5
+ @apply transition-opacity motion-reduce:transition-none;
6
6
 
7
- &[data-starting-style],
8
- &[data-ending-style] {
9
- @apply opacity-0;
10
- }
7
+ &[data-starting-style],
8
+ &[data-ending-style] {
9
+ @apply opacity-0;
10
+ }
11
11
  }
12
12
 
13
13
  .dialog__popup {
14
- @apply bg-popover rounded border p-6 shadow;
14
+ @apply bg-popover rounded border p-6 shadow;
15
15
 
16
- @apply w-full max-w-lg;
16
+ @apply w-full max-w-lg;
17
17
 
18
- @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
18
+ @apply fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
19
19
 
20
- @apply transition-all motion-reduce:transition-none;
20
+ @apply transition-[scale,opacity] motion-reduce:transition-none;
21
21
 
22
- &[data-starting-style],
23
- &[data-ending-style] {
24
- @apply scale-95 opacity-0;
25
- }
22
+ &[data-starting-style],
23
+ &[data-ending-style] {
24
+ @apply scale-95 opacity-0;
25
+ }
26
26
  }
27
27
 
28
28
  .dialog__title {
29
- @apply text-lg font-semibold;
29
+ @apply text-lg font-semibold;
30
30
  }
31
31
 
32
32
  .dialog__description {
33
- @apply text-muted-foreground text-sm;
33
+ @apply text-muted-foreground text-sm;
34
34
  }
35
35
 
36
36
  .dialog__close {
37
- @apply cursor-pointer;
37
+ @apply cursor-pointer;
38
38
 
39
- @apply absolute top-0 right-0 m-2;
39
+ @apply absolute top-0 right-0 m-2;
40
40
 
41
- svg {
42
- @apply text-muted-foreground size-5;
41
+ svg {
42
+ @apply text-muted-foreground size-5;
43
43
 
44
- @apply transition-colors motion-reduce:transition-none;
44
+ @apply transition-colors motion-reduce:transition-none;
45
45
 
46
- &:hover {
47
- @apply text-foreground;
48
- }
49
- }
46
+ &:hover {
47
+ @apply text-foreground;
48
+ }
49
+ }
50
50
  }
@@ -0,0 +1,84 @@
1
+ .drawer__backdrop {
2
+ @apply fixed inset-0 bg-black/50 opacity-50;
3
+
4
+ @apply transition-opacity motion-reduce:transition-none;
5
+
6
+ &[data-starting-style],
7
+ &[data-ending-style] {
8
+ @apply opacity-0;
9
+ }
10
+ }
11
+
12
+ .drawer__popup {
13
+ @apply box-border fixed p-3;
14
+
15
+ @apply bg-card text-card-foreground shadow;
16
+
17
+ @apply transition-[translate] motion-reduce:transition-none;
18
+ }
19
+
20
+ .drawer__title {
21
+ @apply text-lg font-medium;
22
+ }
23
+
24
+ .drawer__description {
25
+ @apply text-sm text-muted-foreground;
26
+ }
27
+
28
+ .drawer__close {
29
+ @apply cursor-pointer;
30
+
31
+ @apply absolute top-0 end-0 m-3 rounded-full;
32
+
33
+ @apply text-muted-foreground;
34
+
35
+ @apply transition-colors motion-reduce:transition-none;
36
+
37
+ &:hover {
38
+ @apply bg-secondary/10;
39
+ }
40
+
41
+ &:focus {
42
+ @apply outline-none;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Variants
48
+ */
49
+
50
+ .drawer--right.drawer__popup {
51
+ @apply end-0 top-0 w-96 max-w-[calc(100vw-2rem)] h-full rounded-l;
52
+
53
+ &[data-starting-style],
54
+ &[data-ending-style] {
55
+ @apply translate-x-full;
56
+ }
57
+ }
58
+
59
+ .drawer--left.drawer__popup {
60
+ @apply start-0 top-0 w-96 h-full rounded-r max-w-[calc(100vw-2rem)];
61
+
62
+ &[data-starting-style],
63
+ &[data-ending-style] {
64
+ @apply -translate-x-full;
65
+ }
66
+ }
67
+
68
+ .drawer--top.drawer__popup {
69
+ @apply top-0 start-0 w-full h-96 rounded-b;
70
+
71
+ &[data-starting-style],
72
+ &[data-ending-style] {
73
+ @apply -translate-y-full;
74
+ }
75
+ }
76
+
77
+ .drawer--bottom.drawer__popup {
78
+ @apply bottom-0 start-0 w-full h-96 rounded-t;
79
+
80
+ &[data-starting-style],
81
+ &[data-ending-style] {
82
+ @apply translate-y-full;
83
+ }
84
+ }
@@ -1,9 +1,9 @@
1
1
  .fieldset {
2
- @apply flex w-full max-w-md flex-col gap-1;
2
+ @apply flex w-full max-w-md flex-col gap-1;
3
3
  }
4
4
 
5
5
  .fieldset__legend {
6
- @apply border-b pb-4;
6
+ @apply border-b pb-4;
7
7
 
8
- @apply text-lg font-semibold;
8
+ @apply text-lg font-semibold;
9
9
  }
@@ -26,3 +26,5 @@
26
26
  @import "./dialog.css";
27
27
  @import "./alert-dialog.css";
28
28
  @import "./fieldset.css";
29
+ @import "./drawer.css";
30
+ @import "./popover.css";
@@ -1,37 +1,33 @@
1
1
  /** Base Styling */
2
2
  .input {
3
- @apply bg-input text-input-foreground rounded border;
4
- @apply w-full px-3 py-2;
3
+ @apply bg-input text-input-foreground rounded border;
4
+ @apply w-full px-3 py-2;
5
5
 
6
- @apply transition-all motion-reduce:transition-none;
6
+ @apply transition-[brightness] motion-reduce:transition-none;
7
7
 
8
- @media (hover: hover) {
9
- &:hover:not([data-disabled]) {
10
- @apply brightness-90;
11
- }
12
- }
8
+ @media (hover: hover) {
9
+ &:hover:not([data-disabled]) {
10
+ @apply brightness-90;
11
+ }
12
+ }
13
13
 
14
- &:disabled {
15
- @apply status-disabled;
16
- }
14
+ &:disabled {
15
+ @apply status-disabled;
16
+ }
17
17
 
18
- &:valid {
19
- @apply status-valid;
20
- }
21
-
22
- &:invalid:not(:placeholder-shown) {
23
- @apply status-invalid;
24
- }
18
+ &:invalid:not(:placeholder-shown) {
19
+ @apply status-invalid;
20
+ }
25
21
  }
26
22
 
27
23
  .input--sm {
28
- @apply h-8 text-sm;
24
+ @apply h-8 text-sm;
29
25
  }
30
26
 
31
27
  .input--md {
32
- @apply h-10;
28
+ @apply h-10;
33
29
  }
34
30
 
35
31
  .input--lg {
36
- @apply h-12;
32
+ @apply h-12;
37
33
  }
@@ -1,29 +1,29 @@
1
1
  /** Base Styling */
2
2
  .link {
3
- @apply text-link underline-offset-2 transition-colors;
3
+ @apply text-link underline-offset-2 transition-colors;
4
4
 
5
- &:visited {
6
- @apply text-link/70;
7
- }
5
+ &:visited {
6
+ @apply text-link/70;
7
+ }
8
8
 
9
- &:hover {
10
- @apply text-link/80;
11
- }
9
+ &:hover {
10
+ @apply text-link/80;
11
+ }
12
12
 
13
- &[data-active] {
14
- @apply font-semibold;
15
- }
13
+ &[data-active] {
14
+ @apply font-semibold;
15
+ }
16
16
 
17
- &:disabled,
18
- [data-disabled] {
19
- @apply text-muted cursor-not-allowed;
20
- }
17
+ &:disabled,
18
+ [data-disabled] {
19
+ @apply text-muted cursor-not-allowed;
20
+ }
21
21
  }
22
22
 
23
23
  .link--underline {
24
- @apply underline;
24
+ @apply underline;
25
25
  }
26
26
 
27
27
  .link--no-underline {
28
- @apply no-underline;
28
+ @apply no-underline;
29
29
  }
@@ -1,8 +1,8 @@
1
1
  /** Base Styling */
2
2
  .list {
3
- @apply flex flex-col gap-1;
3
+ @apply flex flex-col gap-1;
4
4
  }
5
5
 
6
6
  .list__item {
7
- @apply cursor-pointer;
7
+ @apply cursor-pointer;
8
8
  }
@@ -18,7 +18,7 @@
18
18
  .meter__indicator {
19
19
  @apply block rounded;
20
20
 
21
- @apply transition-all motion-reduce:transition-none;
21
+ @apply transition-[width] motion-reduce:transition-none;
22
22
  }
23
23
 
24
24
  /** Variants */
@@ -1,38 +1,36 @@
1
1
  /** Base Styling */
2
2
  .navbar {
3
- @apply bg-secondary/50 border-border relative z-50 flex h-[var(--navbar-height)] w-full items-center justify-between border-b px-4 py-2;
3
+ @apply bg-secondary/50 border-border relative z-50 flex h-(--navbar-height) w-full items-center justify-between border-b px-4 py-2;
4
4
  }
5
5
 
6
6
  .navbar__container {
7
- @apply mx-auto flex w-full max-w-7xl items-center justify-between;
7
+ @apply mx-auto flex w-full max-w-7xl items-center justify-between;
8
8
  }
9
9
 
10
10
  .navbar__content {
11
- @apply flex items-center gap-2;
11
+ @apply flex items-center gap-2;
12
12
  }
13
13
 
14
14
  .navbar__toggle {
15
- @apply md:hidden;
15
+ @apply md:hidden;
16
+
17
+ svg {
18
+ @apply size-4;
19
+ }
16
20
  }
17
21
 
18
22
  .navbar__list {
19
- @apply hidden md:flex md:items-center md:gap-6;
23
+ @apply hidden md:flex md:items-center md:gap-6;
20
24
  }
21
25
 
22
26
  .navbar__list-item {
23
- @apply list-none;
27
+ @apply list-none;
24
28
  }
25
29
 
26
30
  .navbar__menu {
27
- @apply bg-secondary/50 absolute top-16 left-0 hidden w-full flex-col border border-b py-4 md:hidden;
28
-
29
- @apply transition-[height] motion-reduce:transition-none;
30
-
31
- &[data-expanded="true"] {
32
- @apply flex;
33
- }
31
+ @apply flex flex-col gap-1;
34
32
  }
35
33
 
36
34
  .navbar__menu-item {
37
- @apply w-full list-none px-4 py-2;
35
+ @apply w-full list-none px-4 py-2;
38
36
  }
@@ -0,0 +1,54 @@
1
+ .popover__trigger {
2
+ @apply transition-[scale] motion-reduce:transition-none;
3
+
4
+ &[data-popup-open] {
5
+ @apply scale-95;
6
+ }
7
+ }
8
+
9
+ .popover__positioner {
10
+ width: var(--positioner-width);
11
+ max-width: var(--available-width);
12
+ height: var(--positioner-width);
13
+ }
14
+
15
+ .popover__popup {
16
+ @apply box-border p-3 rounded;
17
+
18
+ @apply bg-popover text-popover-foreground shadow;
19
+
20
+ @apply transition-[transform,scale] motion-reduce:transition-none;
21
+
22
+ &[data-starting-style],
23
+ &[data-ending-style] {
24
+ @apply opacity-0 scale-90;
25
+ }
26
+ }
27
+
28
+ .popover__arrow {
29
+ @apply flex text-popover size-6;
30
+
31
+ &[data-side="top"] {
32
+ @apply -bottom-3 rotate-180;
33
+ }
34
+
35
+ &[data-side="right"] {
36
+ @apply -start-3 rotate-90;
37
+ }
38
+
39
+ &[data-side="bottom"] {
40
+ @apply -top-3;
41
+ }
42
+
43
+ &[data-side="left"] {
44
+ @apply -end-3 -rotate-90;
45
+ }
46
+ }
47
+
48
+ .popover__title {
49
+ @apply text-lg font-medium;
50
+ }
51
+
52
+ .popover__description {
53
+ @apply text-sm text-muted-foreground;
54
+ }
@@ -1,40 +1,40 @@
1
1
  /** Base Styling */
2
2
  .switch {
3
- @apply cursor-pointer;
3
+ @apply cursor-pointer;
4
4
 
5
- @apply bg-secondary/50 relative flex cursor-pointer rounded-full border-2;
5
+ @apply bg-secondary/50 relative flex cursor-pointer rounded-full border-2;
6
6
 
7
- &:active {
8
- @apply bg-secondary;
9
- }
7
+ &:active {
8
+ @apply bg-secondary;
9
+ }
10
10
 
11
- &:focus-visible {
12
- @apply status-focused;
13
- }
11
+ &:focus-visible {
12
+ @apply status-focused;
13
+ }
14
14
 
15
- &[data-disabled] {
16
- @apply status-disabled;
17
- }
15
+ &[data-disabled] {
16
+ @apply status-disabled;
17
+ }
18
18
  }
19
19
 
20
20
  .switch__thumb {
21
- @apply bg-primary aspect-square h-full rounded-full shadow;
21
+ @apply bg-primary aspect-square h-full rounded-full shadow;
22
22
 
23
- @apply transition-[translate] motion-reduce:transition-none;
23
+ @apply transition-[translate] motion-reduce:transition-none;
24
24
 
25
- &[data-checked] {
26
- @apply translate-x-full;
27
- }
25
+ &[data-checked] {
26
+ @apply translate-x-full;
27
+ }
28
28
  }
29
29
 
30
30
  .switch--sm {
31
- @apply h-4 w-7;
31
+ @apply h-4 w-7;
32
32
  }
33
33
 
34
34
  .switch--md {
35
- @apply h-6 w-10;
35
+ @apply h-6 w-10;
36
36
  }
37
37
 
38
38
  .switch--lg {
39
- @apply h-8 w-14;
39
+ @apply h-8 w-14;
40
40
  }
@@ -1,49 +1,49 @@
1
1
  /** Base Styling */
2
2
  .tabs {
3
- @apply bg-card/50 text-secondary-foreground rounded border;
3
+ @apply bg-card/50 text-secondary-foreground rounded border;
4
4
  }
5
5
 
6
6
  .tabs__list {
7
- @apply bg-card relative z-0 flex gap-1 rounded-t border-b px-1;
7
+ @apply bg-card relative z-0 flex gap-1 rounded-t border-b px-1;
8
8
  }
9
9
 
10
10
  .tabs__tab {
11
- @apply m-0 flex appearance-none items-center justify-center border-0 bg-transparent outline-none;
12
- @apply text-muted-foreground break-keep whitespace-nowrap select-none;
13
- @apply h-8 px-2 py-0;
14
-
15
- &[data-active] {
16
- @apply text-foreground;
17
- }
18
-
19
- @media (hover: hover) {
20
- &:hover {
21
- @apply text-foreground;
22
- }
23
- }
24
-
25
- &:focus-visible {
26
- @apply relative;
27
-
28
- &::before {
29
- content: "";
30
- @apply outline-primary absolute inset-x-0 inset-y-1 rounded outline-2 -outline-offset-1;
31
- }
32
- }
11
+ @apply m-0 flex appearance-none items-center justify-center border-0 bg-transparent outline-none;
12
+ @apply text-muted-foreground break-keep whitespace-nowrap select-none;
13
+ @apply h-8 px-2 py-0;
14
+
15
+ &[data-active] {
16
+ @apply text-foreground;
17
+ }
18
+
19
+ @media (hover: hover) {
20
+ &:hover {
21
+ @apply text-foreground;
22
+ }
23
+ }
24
+
25
+ &:focus-visible {
26
+ @apply relative;
27
+
28
+ &::before {
29
+ content: "";
30
+ @apply outline-primary absolute inset-x-0 inset-y-1 rounded outline-2 -outline-offset-1;
31
+ }
32
+ }
33
33
  }
34
34
 
35
35
  .tabs__indicator {
36
- @apply bg-primary absolute bottom-0 left-0 -z-10 h-px;
37
- @apply transition-[translate,width] motion-reduce:transition-none;
36
+ width: var(--active-tab-width);
38
37
 
39
- translate: var(--active-tab-left) -50%;
40
- width: var(--active-tab-width);
38
+ translate: var(--active-tab-left) -50%;
39
+ @apply bg-primary absolute bottom-0 left-0 -z-10 h-px;
40
+ @apply transition-[translate,width] motion-reduce:transition-none;
41
41
  }
42
42
 
43
43
  .tabs__panel {
44
- @apply relative flex h-32 items-center justify-center outline-none;
44
+ @apply relative flex h-32 items-center justify-center outline-none;
45
45
 
46
- &:focus-visible {
47
- @apply status-focused;
48
- }
46
+ &:focus-visible {
47
+ @apply status-focused;
48
+ }
49
49
  }
@@ -1,4 +1,4 @@
1
1
  /** Base Styling */
2
2
  .text {
3
- @apply text-danger;
3
+ @apply text-danger;
4
4
  }
@@ -1,8 +1,8 @@
1
1
  /** Base Styling */
2
2
  .toggle-button {
3
- @apply brightness-50;
3
+ @apply brightness-50;
4
4
 
5
- &[data-pressed] {
6
- @apply brightness-100;
7
- }
5
+ &[data-pressed] {
6
+ @apply brightness-100;
7
+ }
8
8
  }
package/src/styles.css CHANGED
@@ -1,127 +1,126 @@
1
1
  @import "tailwindcss";
2
-
3
2
  @import "./components/index.css" layer(components);
4
3
 
5
4
  :root {
6
- --navbar-height: 4rem;
7
- --radius: 0.625rem;
8
-
9
- --background: oklch(1 0 0);
10
- --foreground: oklch(0.145 0 0);
11
-
12
- --card: oklch(1 0 0);
13
- --card-foreground: oklch(0.145 0 0);
14
- --popover: oklch(1 0 0);
15
- --popover-foreground: oklch(0.145 0 0);
16
- --input: oklch(0.922 0 0);
17
- --input-foreground: oklch(0.205 0 0);
18
- --accordion: oklch(1 0 0);
19
- --accordion-foreground: oklch(0.145 0 0);
20
-
21
- --primary: oklch(0.205 0 0);
22
- --primary-foreground: oklch(0.985 0 0);
23
- --secondary: oklch(0.97 0 0);
24
- --secondary-foreground: oklch(0.205 0 0);
25
- --muted: oklch(0.97 0 0);
26
- --muted-foreground: oklch(0.556 0 0);
27
- --accent: oklch(0.97 0 0);
28
- --accent-foreground: oklch(0.205 0 0);
29
- --danger: oklch(0.577 0.245 27.325);
30
- --danger-foreground: oklch(0.985 0 0);
31
- --success: oklch(0.623 0.17 145);
32
- --success-foreground: oklch(0.985 0 0);
33
-
34
- --border: oklch(0.922 0 0);
35
- --ring: oklch(62% 0.18 250);
36
- --link: oklch(0.205 0 0);
5
+ --navbar-height: 4rem;
6
+ --radius: 0.625rem;
7
+
8
+ --background: oklch(1 0 0);
9
+ --foreground: oklch(0.145 0 0);
10
+
11
+ --card: oklch(1 0 0);
12
+ --card-foreground: oklch(0.145 0 0);
13
+ --popover: oklch(1 0 0);
14
+ --popover-foreground: oklch(0.145 0 0);
15
+ --input: oklch(0.922 0 0);
16
+ --input-foreground: oklch(0.205 0 0);
17
+ --accordion: oklch(1 0 0);
18
+ --accordion-foreground: oklch(0.145 0 0);
19
+
20
+ --primary: oklch(0.205 0 0);
21
+ --primary-foreground: oklch(0.985 0 0);
22
+ --secondary: oklch(0.97 0 0);
23
+ --secondary-foreground: oklch(0.205 0 0);
24
+ --muted: oklch(0.97 0 0);
25
+ --muted-foreground: oklch(0.556 0 0);
26
+ --accent: oklch(0.97 0 0);
27
+ --accent-foreground: oklch(0.205 0 0);
28
+ --danger: oklch(0.577 0.245 27.325);
29
+ --danger-foreground: oklch(0.985 0 0);
30
+ --success: oklch(0.623 0.17 145);
31
+ --success-foreground: oklch(0.985 0 0);
32
+
33
+ --border: oklch(0.922 0 0);
34
+ --ring: oklch(62% 0.18 250);
35
+ --link: oklch(0.205 0 0);
37
36
  }
38
37
 
39
38
  .dark {
40
- --background: oklch(0.145 0 0);
41
- --foreground: oklch(0.985 0 0);
42
-
43
- --card: oklch(0.205 0 0);
44
- --card-foreground: oklch(0.985 0 0);
45
- --popover: oklch(0.205 0 0);
46
- --popover-foreground: oklch(0.985 0 0);
47
- --input: oklch(1 0 0 / 15%);
48
- --input-foreground: oklch(0.985 0 0);
49
- --accordion: oklch(0.205 0 0);
50
- --accordion-foreground: oklch(0.985 0 0);
51
-
52
- --primary: oklch(0.922 0 0);
53
- --primary-foreground: oklch(0.205 0 0);
54
- --secondary: oklch(0.269 0 0);
55
- --secondary-foreground: oklch(0.985 0 0);
56
- --muted: oklch(0.269 0 0);
57
- --muted-foreground: oklch(0.708 0 0);
58
- --danger: oklch(0.704 0.191 22.216);
59
- --danger-foreground: oklch(0.985 0 0);
60
- --success: oklch(0.7017 0.3225 145);
61
- --success-foreground: oklch(0.205 0 0);
62
-
63
- --border: oklch(1 0 0 / 10%);
64
- --ring: oklch(62% 0.18 250);
65
- --link: oklch(0.922 0 0);
39
+ --background: oklch(0.145 0 0);
40
+ --foreground: oklch(0.985 0 0);
41
+
42
+ --card: oklch(0.205 0 0);
43
+ --card-foreground: oklch(0.985 0 0);
44
+ --popover: oklch(0.205 0 0);
45
+ --popover-foreground: oklch(0.985 0 0);
46
+ --input: oklch(1 0 0 / 15%);
47
+ --input-foreground: oklch(0.985 0 0);
48
+ --accordion: oklch(0.205 0 0);
49
+ --accordion-foreground: oklch(0.985 0 0);
50
+
51
+ --primary: oklch(0.922 0 0);
52
+ --primary-foreground: oklch(0.205 0 0);
53
+ --secondary: oklch(0.269 0 0);
54
+ --secondary-foreground: oklch(0.985 0 0);
55
+ --muted: oklch(0.269 0 0);
56
+ --muted-foreground: oklch(0.708 0 0);
57
+ --danger: oklch(0.704 0.191 22.216);
58
+ --danger-foreground: oklch(0.985 0 0);
59
+ --success: oklch(0.7017 0.3225 145);
60
+ --success-foreground: oklch(0.205 0 0);
61
+
62
+ --border: oklch(1 0 0 / 10%);
63
+ --ring: oklch(62% 0.18 250);
64
+ --link: oklch(0.922 0 0);
66
65
  }
67
66
 
68
67
  @theme inline {
69
- --radius: var(--radius);
70
-
71
- --color-background: var(--background);
72
- --color-foreground: var(--foreground);
73
-
74
- --color-card: var(--card);
75
- --color-card-foreground: var(--card-foreground);
76
- --color-popover: var(--popover);
77
- --color-popover-foreground: var(--popover-foreground);
78
- --color-input: var(--input);
79
- --color-input-foreground: var(--input-foreground);
80
- --color-accordion: var(--accordion);
81
- --color-accordion-foreground: var(--accordion-foreground);
82
-
83
- --color-primary: var(--primary);
84
- --color-primary-foreground: var(--primary-foreground);
85
- --color-secondary: var(--secondary);
86
- --color-secondary-foreground: var(--secondary-foreground);
87
- --color-muted: var(--muted);
88
- --color-muted-foreground: var(--muted-foreground);
89
- --color-danger: var(--danger);
90
- --color-danger-foreground: var(--danger-foreground);
91
- --color-success: var(--success);
92
- --color-success-foreground: var(--success-foreground);
93
-
94
- --color-border: var(--border);
95
- --color-ring: var(--ring);
96
- --color-link: var(--link);
97
- }
98
-
99
- @layer base {
100
- * {
101
- @apply border-border outline-ring/50;
102
- }
103
-
104
- body {
105
- @apply bg-background text-foreground;
106
- }
68
+ --radius: var(--radius);
69
+
70
+ --color-background: var(--background);
71
+ --color-foreground: var(--foreground);
72
+
73
+ --color-card: var(--card);
74
+ --color-card-foreground: var(--card-foreground);
75
+ --color-popover: var(--popover);
76
+ --color-popover-foreground: var(--popover-foreground);
77
+ --color-input: var(--input);
78
+ --color-input-foreground: var(--input-foreground);
79
+ --color-accordion: var(--accordion);
80
+ --color-accordion-foreground: var(--accordion-foreground);
81
+
82
+ --color-primary: var(--primary);
83
+ --color-primary-foreground: var(--primary-foreground);
84
+ --color-secondary: var(--secondary);
85
+ --color-secondary-foreground: var(--secondary-foreground);
86
+ --color-muted: var(--muted);
87
+ --color-muted-foreground: var(--muted-foreground);
88
+ --color-danger: var(--danger);
89
+ --color-danger-foreground: var(--danger-foreground);
90
+ --color-success: var(--success);
91
+ --color-success-foreground: var(--success-foreground);
92
+
93
+ --color-border: var(--border);
94
+ --color-ring: var(--ring);
95
+ --color-link: var(--link);
107
96
  }
108
97
 
109
98
  @utility status-focused {
110
- @apply ring-offset-background ring-2 ring-offset-2 outline-none;
99
+ @apply ring-offset-background ring-2 ring-offset-2 outline-none;
111
100
  }
112
101
 
113
102
  @utility status-disabled {
114
- @apply cursor-not-allowed opacity-50;
103
+ @apply cursor-not-allowed opacity-50;
115
104
  }
116
105
 
117
106
  @utility status-pending {
118
- @apply cursor-wait opacity-75;
107
+ @apply cursor-wait opacity-75;
119
108
  }
120
109
 
121
110
  @utility status-valid {
122
- @apply border-success;
111
+ @apply border-success;
123
112
  }
124
113
 
125
114
  @utility status-invalid {
126
- @apply border-danger;
115
+ @apply border-danger;
116
+ }
117
+
118
+ @layer base {
119
+ * {
120
+ @apply border-border outline-ring/50;
121
+ }
122
+
123
+ body {
124
+ @apply bg-background text-foreground;
125
+ }
127
126
  }