tailuicss 1.0.2
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/CHANGELOG.md +83 -0
- package/LICENSE +21 -0
- package/README.md +103 -0
- package/package.json +104 -0
- package/postcss.d.ts +19 -0
- package/postcss.js +2 -0
- package/src/cli/index.js +941 -0
- package/src/config.js +54 -0
- package/src/migrate/backup.js +161 -0
- package/src/migrate/index.js +318 -0
- package/src/migrate/matcher.js +211 -0
- package/src/migrate/patterns.js +277 -0
- package/src/migrate/reporter.js +122 -0
- package/src/migrate/scanner.js +241 -0
- package/src/migrate/transformer.js +74 -0
- package/src/plugin/index.d.ts +32 -0
- package/src/plugin/index.js +53 -0
- package/src/postcss/index.js +120 -0
- package/src/templates/index.js +830 -0
- package/ui/styles/index.css +21 -0
- package/ui/styles/ui.accordion.css +70 -0
- package/ui/styles/ui.alert.css +75 -0
- package/ui/styles/ui.avatar.css +100 -0
- package/ui/styles/ui.badge.css +60 -0
- package/ui/styles/ui.button.css +72 -0
- package/ui/styles/ui.card.css +96 -0
- package/ui/styles/ui.carousel.css +70 -0
- package/ui/styles/ui.dropdown.css +77 -0
- package/ui/styles/ui.file-input.css +74 -0
- package/ui/styles/ui.input.css +85 -0
- package/ui/styles/ui.list.css +81 -0
- package/ui/styles/ui.modal.css +65 -0
- package/ui/styles/ui.progress.css +84 -0
- package/ui/styles/ui.radio.css +68 -0
- package/ui/styles/ui.rate.css +76 -0
- package/ui/styles/ui.select.css +125 -0
- package/ui/styles/ui.textarea.css +68 -0
- package/ui/styles/ui.toast.css +95 -0
- package/ui/styles/ui.toggle.css +84 -0
- package/ui/styles/ui.tooltip.css +62 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* TailUI — Component Styles Entry Point */
|
|
2
|
+
@import "./ui.accordion.css";
|
|
3
|
+
@import "./ui.alert.css";
|
|
4
|
+
@import "./ui.avatar.css";
|
|
5
|
+
@import "./ui.badge.css";
|
|
6
|
+
@import "./ui.button.css";
|
|
7
|
+
@import "./ui.card.css";
|
|
8
|
+
@import "./ui.carousel.css";
|
|
9
|
+
@import "./ui.dropdown.css";
|
|
10
|
+
@import "./ui.file-input.css";
|
|
11
|
+
@import "./ui.input.css";
|
|
12
|
+
@import "./ui.list.css";
|
|
13
|
+
@import "./ui.modal.css";
|
|
14
|
+
@import "./ui.progress.css";
|
|
15
|
+
@import "./ui.radio.css";
|
|
16
|
+
@import "./ui.rate.css";
|
|
17
|
+
@import "./ui.select.css";
|
|
18
|
+
@import "./ui.textarea.css";
|
|
19
|
+
@import "./ui.toast.css";
|
|
20
|
+
@import "./ui.toggle.css";
|
|
21
|
+
@import "./ui.tooltip.css";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Container */
|
|
3
|
+
.ui-accordion {
|
|
4
|
+
@apply border border-gray-200 rounded-xl overflow-hidden divide-y divide-gray-200;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Item */
|
|
8
|
+
.ui-accordion-item {
|
|
9
|
+
@apply bg-white;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Trigger */
|
|
13
|
+
.ui-accordion-trigger {
|
|
14
|
+
@apply w-full flex items-center justify-between px-5 py-4 text-left text-sm font-medium text-gray-800 cursor-pointer transition-colors duration-150 hover:bg-gray-50;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ui-accordion-trigger::after {
|
|
18
|
+
content: '';
|
|
19
|
+
@apply w-2 h-2 border-r-2 border-b-2 border-current rotate-45 transition-transform duration-200 shrink-0 ml-4;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Open state */
|
|
23
|
+
.ui-accordion-item.ui-open .ui-accordion-trigger {
|
|
24
|
+
@apply font-semibold;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ui-accordion-item.ui-open .ui-accordion-trigger::after {
|
|
28
|
+
@apply -rotate-[135deg];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Content */
|
|
32
|
+
.ui-accordion-content {
|
|
33
|
+
@apply px-5 pb-4 text-sm text-gray-600 leading-relaxed;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Flush (no border) */
|
|
37
|
+
.ui-accordion.ui-flush {
|
|
38
|
+
@apply border-none rounded-none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Separated */
|
|
42
|
+
.ui-accordion.ui-separated {
|
|
43
|
+
@apply border-none divide-y-0 space-y-2;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.ui-accordion.ui-separated .ui-accordion-item {
|
|
47
|
+
@apply border border-gray-200 rounded-lg overflow-hidden;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Dark mode */
|
|
51
|
+
[data-theme="dark"] .ui-accordion {
|
|
52
|
+
@apply border-gray-700 divide-gray-700;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
[data-theme="dark"] .ui-accordion-item {
|
|
56
|
+
@apply bg-gray-900;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[data-theme="dark"] .ui-accordion-trigger {
|
|
60
|
+
@apply text-white hover:bg-gray-800;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-theme="dark"] .ui-accordion-content {
|
|
64
|
+
@apply text-gray-400;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[data-theme="dark"] .ui-accordion.ui-separated .ui-accordion-item {
|
|
68
|
+
@apply border-gray-700;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Base */
|
|
3
|
+
.ui-alert {
|
|
4
|
+
@apply flex items-start gap-3 px-4 py-3 rounded-xl border text-sm;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Variants */
|
|
8
|
+
.ui-alert.ui-info {
|
|
9
|
+
@apply bg-blue-50 border-blue-200 text-blue-800;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.ui-alert.ui-success {
|
|
13
|
+
@apply bg-green-50 border-green-200 text-green-800;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ui-alert.ui-warning {
|
|
17
|
+
@apply bg-yellow-50 border-yellow-200 text-yellow-800;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ui-alert.ui-danger {
|
|
21
|
+
@apply bg-red-50 border-red-200 text-red-800;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Slots */
|
|
25
|
+
.ui-alert .ui-title {
|
|
26
|
+
@apply font-semibold;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.ui-alert .ui-message {
|
|
30
|
+
@apply opacity-80;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ui-alert .ui-close {
|
|
34
|
+
@apply ml-auto cursor-pointer opacity-50 hover:opacity-100 transition-opacity;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Outlined variant */
|
|
38
|
+
.ui-alert.ui-outlined {
|
|
39
|
+
@apply bg-transparent;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Filled variant */
|
|
43
|
+
.ui-alert.ui-filled.ui-info {
|
|
44
|
+
@apply bg-blue-600 text-white border-blue-600;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.ui-alert.ui-filled.ui-success {
|
|
48
|
+
@apply bg-green-600 text-white border-green-600;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.ui-alert.ui-filled.ui-warning {
|
|
52
|
+
@apply bg-yellow-500 text-white border-yellow-500;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.ui-alert.ui-filled.ui-danger {
|
|
56
|
+
@apply bg-red-600 text-white border-red-600;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Dark mode */
|
|
60
|
+
[data-theme="dark"] .ui-alert.ui-info {
|
|
61
|
+
@apply bg-blue-900/30 border-blue-800 text-blue-300;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[data-theme="dark"] .ui-alert.ui-success {
|
|
65
|
+
@apply bg-green-900/30 border-green-800 text-green-300;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[data-theme="dark"] .ui-alert.ui-warning {
|
|
69
|
+
@apply bg-yellow-900/30 border-yellow-800 text-yellow-300;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[data-theme="dark"] .ui-alert.ui-danger {
|
|
73
|
+
@apply bg-red-900/30 border-red-800 text-red-300;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Base */
|
|
3
|
+
.ui-avatar {
|
|
4
|
+
@apply inline-flex items-center justify-center rounded-full bg-gray-200 text-gray-600 font-medium overflow-hidden shrink-0;
|
|
5
|
+
width: 2.5rem;
|
|
6
|
+
height: 2.5rem;
|
|
7
|
+
font-size: 0.875rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.ui-avatar img {
|
|
11
|
+
@apply w-full h-full object-cover;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Sizes */
|
|
15
|
+
.ui-avatar.ui-xs {
|
|
16
|
+
width: 1.5rem;
|
|
17
|
+
height: 1.5rem;
|
|
18
|
+
font-size: 0.625rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ui-avatar.ui-sm {
|
|
22
|
+
width: 2rem;
|
|
23
|
+
height: 2rem;
|
|
24
|
+
font-size: 0.75rem;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ui-avatar.ui-lg {
|
|
28
|
+
width: 3.5rem;
|
|
29
|
+
height: 3.5rem;
|
|
30
|
+
font-size: 1.125rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ui-avatar.ui-xl {
|
|
34
|
+
width: 5rem;
|
|
35
|
+
height: 5rem;
|
|
36
|
+
font-size: 1.5rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Square */
|
|
40
|
+
.ui-avatar.ui-square {
|
|
41
|
+
@apply rounded-lg;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Ring / border */
|
|
45
|
+
.ui-avatar.ui-ring {
|
|
46
|
+
@apply ring-2 ring-white;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Status indicator */
|
|
50
|
+
.ui-avatar-status {
|
|
51
|
+
@apply relative inline-flex;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ui-avatar-status::after {
|
|
55
|
+
content: '';
|
|
56
|
+
@apply absolute bottom-0 right-0 w-3 h-3 rounded-full border-2 border-white bg-gray-400;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.ui-avatar-status.ui-online::after {
|
|
60
|
+
@apply bg-green-500;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ui-avatar-status.ui-offline::after {
|
|
64
|
+
@apply bg-gray-400;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.ui-avatar-status.ui-busy::after {
|
|
68
|
+
@apply bg-red-500;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ui-avatar-status.ui-away::after {
|
|
72
|
+
@apply bg-yellow-500;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* Group */
|
|
76
|
+
.ui-avatar-group {
|
|
77
|
+
@apply flex -space-x-2;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.ui-avatar-group .ui-avatar {
|
|
81
|
+
@apply ring-2 ring-white;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Dark mode */
|
|
85
|
+
[data-theme="dark"] .ui-avatar {
|
|
86
|
+
@apply bg-gray-700 text-gray-300;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[data-theme="dark"] .ui-avatar.ui-ring {
|
|
90
|
+
@apply ring-gray-900;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
[data-theme="dark"] .ui-avatar-status::after {
|
|
94
|
+
@apply border-gray-900;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[data-theme="dark"] .ui-avatar-group .ui-avatar {
|
|
98
|
+
@apply ring-gray-900;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Base */
|
|
3
|
+
.ui-badge {
|
|
4
|
+
@apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Variants */
|
|
8
|
+
.ui-badge.ui-primary {
|
|
9
|
+
@apply bg-blue-100 text-blue-800;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.ui-badge.ui-secondary {
|
|
13
|
+
@apply bg-gray-100 text-gray-800;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ui-badge.ui-success {
|
|
17
|
+
@apply bg-green-100 text-green-800;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ui-badge.ui-danger {
|
|
21
|
+
@apply bg-red-100 text-red-800;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.ui-badge.ui-warning {
|
|
25
|
+
@apply bg-yellow-100 text-yellow-800;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Dot indicator */
|
|
29
|
+
.ui-badge.ui-dot::before {
|
|
30
|
+
@apply w-1.5 h-1.5 rounded-full mr-1.5 inline-block;
|
|
31
|
+
content: '';
|
|
32
|
+
background-color: currentColor;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Pill shape (default is already rounded-full) */
|
|
36
|
+
.ui-badge.ui-square {
|
|
37
|
+
@apply rounded-md;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Dark mode */
|
|
41
|
+
[data-theme="dark"] .ui-badge.ui-primary {
|
|
42
|
+
@apply bg-blue-900/50 text-blue-300;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
[data-theme="dark"] .ui-badge.ui-secondary {
|
|
46
|
+
@apply bg-gray-700 text-gray-300;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[data-theme="dark"] .ui-badge.ui-success {
|
|
50
|
+
@apply bg-green-900/50 text-green-300;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
[data-theme="dark"] .ui-badge.ui-danger {
|
|
54
|
+
@apply bg-red-900/50 text-red-300;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
[data-theme="dark"] .ui-badge.ui-warning {
|
|
58
|
+
@apply bg-yellow-900/50 text-yellow-300;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Base */
|
|
3
|
+
.ui-button {
|
|
4
|
+
@apply px-4 py-2 rounded-lg font-medium transition-all duration-200 cursor-pointer inline-flex items-center justify-center gap-2 text-sm;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Primary */
|
|
8
|
+
.ui-button.ui-primary {
|
|
9
|
+
@apply bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 shadow-sm hover:shadow-md;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Secondary */
|
|
13
|
+
.ui-button.ui-secondary {
|
|
14
|
+
@apply bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 border border-gray-200;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Danger */
|
|
18
|
+
.ui-button.ui-danger {
|
|
19
|
+
@apply bg-red-600 text-white hover:bg-red-700 active:bg-red-800 shadow-sm;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Ghost */
|
|
23
|
+
.ui-button.ui-ghost {
|
|
24
|
+
@apply bg-transparent text-gray-600 hover:bg-gray-100 hover:text-gray-900;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Outline */
|
|
28
|
+
.ui-button.ui-outline {
|
|
29
|
+
@apply bg-transparent border-2 border-current hover:bg-gray-50;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Sizes */
|
|
33
|
+
.ui-button.ui-sm {
|
|
34
|
+
@apply text-xs px-3 py-1.5;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ui-button.ui-lg {
|
|
38
|
+
@apply text-base px-6 py-3;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.ui-button.ui-xl {
|
|
42
|
+
@apply text-lg px-8 py-4;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* States */
|
|
46
|
+
.ui-button.ui-disabled {
|
|
47
|
+
@apply opacity-50 cursor-not-allowed pointer-events-none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.ui-button.ui-loading {
|
|
51
|
+
@apply opacity-70 cursor-wait;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Full width */
|
|
55
|
+
.ui-button.ui-full {
|
|
56
|
+
@apply w-full;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Icon only */
|
|
60
|
+
.ui-button.ui-icon {
|
|
61
|
+
@apply p-2 aspect-square;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Dark mode */
|
|
65
|
+
[data-theme="dark"] .ui-button.ui-secondary {
|
|
66
|
+
@apply bg-gray-800 text-gray-100 hover:bg-gray-700 border-gray-700;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[data-theme="dark"] .ui-button.ui-ghost {
|
|
70
|
+
@apply text-gray-400 hover:bg-gray-800 hover:text-gray-100;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Base */
|
|
3
|
+
.ui-card {
|
|
4
|
+
@apply rounded-xl border border-gray-200 bg-white text-gray-800 overflow-hidden;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Elevated */
|
|
8
|
+
.ui-card.ui-elevated {
|
|
9
|
+
@apply shadow-lg;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Outlined */
|
|
13
|
+
.ui-card.ui-outlined {
|
|
14
|
+
@apply border-2 border-gray-300 shadow-none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Flat */
|
|
18
|
+
.ui-card.ui-flat {
|
|
19
|
+
@apply border-none shadow-none bg-gray-50;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Hoverable */
|
|
23
|
+
.ui-hoverable {
|
|
24
|
+
@apply transition-all duration-200;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ui-card.ui-hoverable:hover {
|
|
28
|
+
@apply shadow-2xl -translate-y-1;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Interactive (clickable) */
|
|
32
|
+
.ui-card.ui-interactive {
|
|
33
|
+
@apply cursor-pointer transition-all duration-200 hover:shadow-xl hover:-translate-y-0.5 active:translate-y-0 active:shadow-md;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Slots */
|
|
37
|
+
.ui-header {
|
|
38
|
+
@apply flex items-center justify-between px-5 py-4 border-b border-gray-100 font-semibold;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.ui-body {
|
|
42
|
+
@apply p-5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.ui-footer {
|
|
46
|
+
@apply px-5 py-4 border-t border-gray-100 flex justify-end gap-3;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Sticky header */
|
|
50
|
+
.ui-sticky {
|
|
51
|
+
@apply sticky top-0 bg-inherit z-10;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Card hover → header color change */
|
|
55
|
+
.ui-card.ui-hoverable:hover .ui-header,
|
|
56
|
+
.ui-card.ui-interactive:hover .ui-header {
|
|
57
|
+
@apply text-blue-600;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Compact variant */
|
|
61
|
+
.ui-card.ui-compact .ui-header {
|
|
62
|
+
@apply px-4 py-2 text-sm;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ui-card.ui-compact .ui-body {
|
|
66
|
+
@apply p-4;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.ui-card.ui-compact .ui-footer {
|
|
70
|
+
@apply px-4 py-2;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Responsive footer */
|
|
74
|
+
@media (max-width: 640px) {
|
|
75
|
+
.ui-footer {
|
|
76
|
+
@apply flex-col;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Dark mode */
|
|
81
|
+
[data-theme="dark"] .ui-card {
|
|
82
|
+
@apply bg-gray-900 text-white border-gray-700;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
[data-theme="dark"] .ui-header {
|
|
86
|
+
@apply border-gray-700;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[data-theme="dark"] .ui-footer {
|
|
90
|
+
@apply border-gray-700;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
[data-theme="dark"] .ui-card.ui-flat {
|
|
94
|
+
@apply bg-gray-800;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Container */
|
|
3
|
+
.ui-carousel {
|
|
4
|
+
@apply relative overflow-hidden rounded-xl;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Track */
|
|
8
|
+
.ui-carousel .ui-track {
|
|
9
|
+
@apply flex transition-transform duration-500 ease-out;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Slide */
|
|
13
|
+
.ui-carousel .ui-slide {
|
|
14
|
+
@apply w-full shrink-0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Navigation arrows */
|
|
18
|
+
.ui-carousel .ui-prev,
|
|
19
|
+
.ui-carousel .ui-next {
|
|
20
|
+
@apply absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 flex items-center justify-center rounded-full bg-white/80 text-gray-800 shadow-md cursor-pointer transition-all duration-200 hover:bg-white hover:shadow-lg;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ui-carousel .ui-prev {
|
|
24
|
+
@apply left-3;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ui-carousel .ui-next {
|
|
28
|
+
@apply right-3;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Dots / indicators */
|
|
32
|
+
.ui-carousel .ui-dots {
|
|
33
|
+
@apply absolute bottom-3 left-1/2 -translate-x-1/2 flex gap-2 z-10;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.ui-carousel .ui-dot {
|
|
37
|
+
@apply w-2 h-2 rounded-full bg-white/50 cursor-pointer transition-all duration-200;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.ui-carousel .ui-dot.ui-active {
|
|
41
|
+
@apply bg-white w-6;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Fade variant */
|
|
45
|
+
.ui-carousel.ui-fade .ui-track {
|
|
46
|
+
@apply relative;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.ui-carousel.ui-fade .ui-slide {
|
|
50
|
+
@apply absolute inset-0 opacity-0 transition-opacity duration-500;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ui-carousel.ui-fade .ui-slide.ui-active {
|
|
54
|
+
@apply opacity-100 relative;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Dark mode */
|
|
58
|
+
[data-theme="dark"] .ui-carousel .ui-prev,
|
|
59
|
+
[data-theme="dark"] .ui-carousel .ui-next {
|
|
60
|
+
@apply bg-gray-800/80 text-white hover:bg-gray-800;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-theme="dark"] .ui-carousel .ui-dot {
|
|
64
|
+
@apply bg-gray-600;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[data-theme="dark"] .ui-carousel .ui-dot.ui-active {
|
|
68
|
+
@apply bg-white;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Wrapper */
|
|
3
|
+
.ui-dropdown {
|
|
4
|
+
@apply relative inline-block;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* Trigger */
|
|
8
|
+
.ui-dropdown .ui-trigger {
|
|
9
|
+
@apply cursor-pointer;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Menu */
|
|
13
|
+
.ui-dropdown .ui-menu {
|
|
14
|
+
@apply absolute z-50 mt-1 min-w-[12rem] bg-white border border-gray-200 rounded-xl shadow-lg py-1 opacity-0 invisible transition-all duration-150 origin-top scale-95;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ui-dropdown.ui-open .ui-menu {
|
|
18
|
+
@apply opacity-100 visible scale-100;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Position */
|
|
22
|
+
.ui-dropdown.ui-right .ui-menu {
|
|
23
|
+
@apply right-0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ui-dropdown.ui-up .ui-menu {
|
|
27
|
+
@apply bottom-full top-auto mb-1 mt-0 origin-bottom;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Item */
|
|
31
|
+
.ui-dropdown .ui-menu-item {
|
|
32
|
+
@apply flex items-center gap-2 px-4 py-2 text-sm text-gray-700 cursor-pointer transition-colors duration-100 hover:bg-gray-50;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.ui-dropdown .ui-menu-item.ui-active {
|
|
36
|
+
@apply bg-blue-50 text-blue-700;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ui-dropdown .ui-menu-item.ui-disabled {
|
|
40
|
+
@apply opacity-50 cursor-not-allowed hover:bg-transparent;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.ui-dropdown .ui-menu-item.ui-danger {
|
|
44
|
+
@apply text-red-600 hover:bg-red-50;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Divider */
|
|
48
|
+
.ui-dropdown .ui-divider {
|
|
49
|
+
@apply my-1 border-t border-gray-100;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Header */
|
|
53
|
+
.ui-dropdown .ui-menu-header {
|
|
54
|
+
@apply px-4 py-2 text-xs font-semibold text-gray-400 uppercase tracking-wider;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Dark mode */
|
|
58
|
+
[data-theme="dark"] .ui-dropdown .ui-menu {
|
|
59
|
+
@apply bg-gray-800 border-gray-700;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
[data-theme="dark"] .ui-dropdown .ui-menu-item {
|
|
63
|
+
@apply text-gray-300 hover:bg-gray-700;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
[data-theme="dark"] .ui-dropdown .ui-menu-item.ui-active {
|
|
67
|
+
@apply bg-blue-900/30 text-blue-300;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
[data-theme="dark"] .ui-dropdown .ui-divider {
|
|
71
|
+
@apply border-gray-700;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[data-theme="dark"] .ui-dropdown .ui-menu-header {
|
|
75
|
+
@apply text-gray-500;
|
|
76
|
+
}
|
|
77
|
+
}
|