@mcp-elements/css 0.1.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 (44) hide show
  1. package/LICENSE +21 -0
  2. package/base.css +88 -0
  3. package/components/accordion.css +24 -0
  4. package/components/ai-badge.css +17 -0
  5. package/components/alert.css +25 -0
  6. package/components/avatar.css +11 -0
  7. package/components/badge.css +10 -0
  8. package/components/button.css +21 -0
  9. package/components/card.css +20 -0
  10. package/components/chat-bubble.css +47 -0
  11. package/components/chips.css +28 -0
  12. package/components/counter.css +22 -0
  13. package/components/dialog.css +26 -0
  14. package/components/drawer.css +39 -0
  15. package/components/dropdown-menu.css +28 -0
  16. package/components/feedback.css +33 -0
  17. package/components/input.css +16 -0
  18. package/components/loader.css +23 -0
  19. package/components/mcp-app-frame.css +12 -0
  20. package/components/mcp-consent-dialog.css +51 -0
  21. package/components/mcp-resource-browser.css +42 -0
  22. package/components/mcp-scope-inspector.css +49 -0
  23. package/components/mcp-server-status.css +56 -0
  24. package/components/mcp-tool-call.css +96 -0
  25. package/components/mcp-tool-form.css +28 -0
  26. package/components/password-input.css +17 -0
  27. package/components/popover.css +5 -0
  28. package/components/progress.css +8 -0
  29. package/components/prompt-input.css +30 -0
  30. package/components/select.css +52 -0
  31. package/components/separator.css +11 -0
  32. package/components/skeleton.css +10 -0
  33. package/components/source-card.css +28 -0
  34. package/components/streaming-text.css +53 -0
  35. package/components/suggestion-chips.css +23 -0
  36. package/components/switch.css +30 -0
  37. package/components/tabs.css +18 -0
  38. package/components/textarea.css +12 -0
  39. package/components/toast.css +46 -0
  40. package/components/tooltip.css +17 -0
  41. package/package.json +20 -0
  42. package/themes/dark.css +3 -0
  43. package/themes/default.css +3 -0
  44. package/themes/glass.css +113 -0
@@ -0,0 +1,56 @@
1
+ @layer components {
2
+ .mcpe-mcp-server-status {
3
+ @apply inline-flex items-center gap-2 rounded-full px-3 py-1 text-xs font-medium;
4
+ border: 1px solid transparent;
5
+ }
6
+
7
+ .mcpe-mcp-server-status-dot {
8
+ @apply h-2 w-2 rounded-full shrink-0;
9
+ }
10
+
11
+ /* Connected */
12
+ .mcpe-mcp-server-status-connected {
13
+ background-color: oklch(0.72 0.17 145 / 0.12);
14
+ border-color: oklch(0.72 0.17 145 / 0.3);
15
+ color: oklch(0.72 0.17 145);
16
+ }
17
+ .mcpe-mcp-server-status-connected .mcpe-mcp-server-status-dot {
18
+ background-color: oklch(0.72 0.17 145);
19
+ }
20
+
21
+ /* Connecting */
22
+ .mcpe-mcp-server-status-connecting {
23
+ background-color: oklch(0.82 0.18 85 / 0.12);
24
+ border-color: oklch(0.82 0.18 85 / 0.3);
25
+ color: oklch(0.82 0.18 85);
26
+ }
27
+ .mcpe-mcp-server-status-connecting .mcpe-mcp-server-status-dot {
28
+ background-color: oklch(0.82 0.18 85);
29
+ animation: mcpe-pulse 1.5s ease-in-out infinite;
30
+ }
31
+
32
+ /* Disconnected */
33
+ .mcpe-mcp-server-status-disconnected {
34
+ background-color: oklch(0.5 0 0 / 0.08);
35
+ border-color: oklch(0.5 0 0 / 0.2);
36
+ color: oklch(0.55 0.012 286);
37
+ }
38
+ .mcpe-mcp-server-status-disconnected .mcpe-mcp-server-status-dot {
39
+ background-color: oklch(0.55 0.012 286);
40
+ }
41
+
42
+ /* Error */
43
+ .mcpe-mcp-server-status-error {
44
+ background-color: oklch(0.62 0.22 25 / 0.12);
45
+ border-color: oklch(0.62 0.22 25 / 0.3);
46
+ color: oklch(0.62 0.22 25);
47
+ }
48
+ .mcpe-mcp-server-status-error .mcpe-mcp-server-status-dot {
49
+ background-color: oklch(0.62 0.22 25);
50
+ }
51
+
52
+ @keyframes mcpe-pulse {
53
+ 0%, 100% { opacity: 1; }
54
+ 50% { opacity: 0.4; }
55
+ }
56
+ }
@@ -0,0 +1,96 @@
1
+ @layer components {
2
+ .mcpe-mcp-tool-call {
3
+ @apply rounded-xl p-4 flex flex-col gap-3;
4
+ background-color: var(--color-card);
5
+ border: 1px solid var(--color-border);
6
+ color: var(--color-card-foreground);
7
+ }
8
+
9
+ .mcpe-mcp-tool-call-header {
10
+ @apply flex items-center justify-between;
11
+ }
12
+
13
+ .mcpe-mcp-tool-call-name {
14
+ @apply flex items-center gap-2;
15
+ }
16
+
17
+ .mcpe-mcp-tool-call-icon {
18
+ @apply flex h-7 w-7 items-center justify-center rounded-md font-mono text-xs font-semibold;
19
+ background-color: var(--color-accent);
20
+ color: var(--color-accent-foreground);
21
+ }
22
+
23
+ .mcpe-mcp-tool-call-title {
24
+ @apply font-mono text-sm font-medium;
25
+ }
26
+
27
+ .mcpe-mcp-tool-call-args {
28
+ @apply rounded-md p-3 font-mono text-xs;
29
+ background-color: var(--color-muted);
30
+ border: 1px solid var(--color-border);
31
+ color: var(--color-muted-foreground);
32
+ overflow-x: auto;
33
+ }
34
+
35
+ .mcpe-mcp-tool-call-progress {
36
+ @apply overflow-hidden rounded-full;
37
+ height: 3px;
38
+ background-color: var(--color-muted);
39
+ }
40
+
41
+ .mcpe-mcp-tool-call-progress-bar {
42
+ @apply h-full rounded-full transition-all duration-100;
43
+ background-color: var(--color-primary);
44
+ }
45
+
46
+ .mcpe-mcp-tool-call-result {
47
+ @apply rounded-md p-3 text-sm;
48
+ }
49
+
50
+ .mcpe-mcp-tool-call-result-done {
51
+ background-color: oklch(0.72 0.17 145 / 0.08);
52
+ border: 1px solid oklch(0.72 0.17 145 / 0.25);
53
+ color: oklch(0.72 0.17 145);
54
+ }
55
+
56
+ .mcpe-mcp-tool-call-result-error {
57
+ background-color: oklch(0.62 0.22 25 / 0.08);
58
+ border: 1px solid oklch(0.62 0.22 25 / 0.25);
59
+ color: oklch(0.62 0.22 25);
60
+ }
61
+
62
+ .mcpe-mcp-tool-call-footer {
63
+ @apply flex items-center justify-between;
64
+ }
65
+
66
+ /* Status badges */
67
+ .mcpe-mcp-tool-call-badge {
68
+ @apply inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-medium;
69
+ }
70
+
71
+ .mcpe-mcp-tool-call-badge-idle {
72
+ background-color: var(--color-muted);
73
+ color: var(--color-muted-foreground);
74
+ }
75
+
76
+ .mcpe-mcp-tool-call-badge-pending,
77
+ .mcpe-mcp-tool-call-badge-running {
78
+ background-color: oklch(0.82 0.18 85 / 0.15);
79
+ color: oklch(0.82 0.18 85);
80
+ }
81
+
82
+ .mcpe-mcp-tool-call-badge-done {
83
+ background-color: oklch(0.72 0.17 145 / 0.15);
84
+ color: oklch(0.72 0.17 145);
85
+ }
86
+
87
+ .mcpe-mcp-tool-call-badge-error {
88
+ background-color: oklch(0.62 0.22 25 / 0.15);
89
+ color: oklch(0.62 0.22 25);
90
+ }
91
+
92
+ .mcpe-mcp-tool-call-badge-cancelled {
93
+ background-color: var(--color-muted);
94
+ color: var(--color-muted-foreground);
95
+ }
96
+ }
@@ -0,0 +1,28 @@
1
+ @layer components {
2
+ .mcpe-mcp-tool-form {
3
+ @apply flex flex-col gap-4;
4
+ }
5
+
6
+ .mcpe-mcp-tool-form-field {
7
+ @apply flex flex-col gap-1.5;
8
+ }
9
+
10
+ .mcpe-mcp-tool-form-label {
11
+ @apply text-sm font-medium;
12
+ color: var(--color-foreground);
13
+ }
14
+
15
+ .mcpe-mcp-tool-form-label-required::after {
16
+ content: ' *';
17
+ color: var(--color-destructive);
18
+ }
19
+
20
+ .mcpe-mcp-tool-form-help {
21
+ @apply text-xs;
22
+ color: var(--color-muted-foreground);
23
+ }
24
+
25
+ .mcpe-mcp-tool-form-submit {
26
+ @apply mt-2;
27
+ }
28
+ }
@@ -0,0 +1,17 @@
1
+ @layer components {
2
+ .mcpe-password-input-wrapper {
3
+ @apply relative;
4
+ }
5
+ .mcpe-password-input {
6
+ @apply flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 pr-10 text-base
7
+ shadow-sm transition-colors
8
+ placeholder:text-muted-foreground
9
+ focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring
10
+ disabled:cursor-not-allowed disabled:opacity-50
11
+ md:text-sm;
12
+ }
13
+ .mcpe-password-toggle {
14
+ @apply absolute right-0 top-0 flex h-full items-center px-3 text-muted-foreground
15
+ hover:text-foreground cursor-pointer transition-colors;
16
+ }
17
+ }
@@ -0,0 +1,5 @@
1
+ @layer components {
2
+ .mcpe-popover-content {
3
+ @apply z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none;
4
+ }
5
+ }
@@ -0,0 +1,8 @@
1
+ @layer components {
2
+ .mcpe-progress {
3
+ @apply relative h-2 w-full overflow-hidden rounded-full bg-primary/20;
4
+ }
5
+ .mcpe-progress-indicator {
6
+ @apply h-full w-full flex-1 bg-primary transition-all duration-300 ease-in-out;
7
+ }
8
+ }
@@ -0,0 +1,30 @@
1
+ @layer components {
2
+ .mcpe-prompt-input {
3
+ @apply relative flex flex-col rounded-xl border bg-background shadow-sm
4
+ focus-within:ring-1 focus-within:ring-ring transition-shadow;
5
+ }
6
+ .mcpe-prompt-input-textarea {
7
+ @apply w-full resize-none border-0 bg-transparent px-4 pt-3 pb-2 text-sm
8
+ placeholder:text-muted-foreground focus-visible:outline-none;
9
+ }
10
+ .mcpe-prompt-input-footer {
11
+ @apply flex items-center justify-between px-3 pb-2;
12
+ }
13
+ .mcpe-prompt-input-actions {
14
+ @apply flex items-center gap-1;
15
+ }
16
+ .mcpe-prompt-input-char-count {
17
+ @apply text-xs text-muted-foreground tabular-nums;
18
+ }
19
+ .mcpe-prompt-input-attachments {
20
+ @apply flex flex-wrap gap-1.5 px-3 pb-2;
21
+ }
22
+ .mcpe-prompt-input-attachment {
23
+ @apply inline-flex items-center gap-1 rounded-md bg-secondary px-2 py-0.5 text-xs
24
+ font-medium text-secondary-foreground;
25
+ }
26
+ .mcpe-prompt-input-attachment-remove {
27
+ @apply ml-0.5 inline-flex h-3.5 w-3.5 items-center justify-center rounded-full
28
+ opacity-60 hover:opacity-100 transition-opacity cursor-pointer;
29
+ }
30
+ }
@@ -0,0 +1,52 @@
1
+ @layer components {
2
+ /* Native <select> styling */
3
+ .mcpe-select {
4
+ @apply flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md
5
+ border border-input px-3 py-2 text-sm shadow-sm appearance-none
6
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background
7
+ disabled:cursor-not-allowed disabled:opacity-50;
8
+ background-color: var(--color-background);
9
+ color: var(--color-foreground);
10
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
11
+ background-position: right 0.5rem center;
12
+ background-repeat: no-repeat;
13
+ background-size: 1rem;
14
+ padding-right: 2rem;
15
+ }
16
+ .mcpe-select option {
17
+ background-color: var(--color-background);
18
+ color: var(--color-foreground);
19
+ }
20
+
21
+ .mcpe-select-trigger {
22
+ @apply flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md
23
+ border border-input px-3 py-2 text-sm shadow-sm
24
+ ring-offset-background
25
+ placeholder:text-muted-foreground
26
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background
27
+ disabled:cursor-not-allowed disabled:opacity-50
28
+ [&>span]:line-clamp-1;
29
+ background-color: var(--color-background);
30
+ color: var(--color-foreground);
31
+ }
32
+ .mcpe-select-content {
33
+ @apply relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border
34
+ bg-popover text-popover-foreground shadow-md;
35
+ }
36
+ .mcpe-select-viewport {
37
+ @apply p-1;
38
+ }
39
+ .mcpe-select-item {
40
+ @apply relative flex w-full cursor-default select-none items-center rounded-sm
41
+ py-1.5 pl-2 pr-8 text-sm outline-none transition-colors;
42
+ }
43
+ .mcpe-select-item-active {
44
+ @apply bg-accent text-accent-foreground;
45
+ }
46
+ .mcpe-select-item-selected {
47
+ @apply font-medium;
48
+ }
49
+ .mcpe-select-item[aria-disabled='true'] {
50
+ @apply pointer-events-none opacity-50;
51
+ }
52
+ }
@@ -0,0 +1,11 @@
1
+ @layer components {
2
+ .mcpe-separator {
3
+ @apply shrink-0 bg-border;
4
+ }
5
+ .mcpe-separator-horizontal {
6
+ @apply h-px w-full;
7
+ }
8
+ .mcpe-separator-vertical {
9
+ @apply h-full w-px;
10
+ }
11
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ .mcpe-skeleton {
3
+ @apply animate-pulse rounded-md;
4
+ background-color: var(--color-muted-foreground);
5
+ opacity: 0.18;
6
+ }
7
+ [data-theme='dark'] .mcpe-skeleton {
8
+ opacity: 0.28;
9
+ }
10
+ }
@@ -0,0 +1,28 @@
1
+ @layer components {
2
+ .mcpe-source-cards {
3
+ @apply grid grid-cols-2 gap-2;
4
+ }
5
+ .mcpe-source-card {
6
+ @apply flex gap-3 items-start p-3 rounded-lg border bg-card
7
+ hover:bg-accent/50 transition-colors no-underline;
8
+ }
9
+ .mcpe-source-card-favicon {
10
+ @apply h-4 w-4 rounded shrink-0 mt-0.5;
11
+ }
12
+ .mcpe-source-card-body {
13
+ @apply flex-1 min-w-0;
14
+ }
15
+ .mcpe-source-card-title {
16
+ @apply text-sm font-medium truncate text-foreground transition-colors;
17
+ }
18
+ .mcpe-source-card:hover .mcpe-source-card-title {
19
+ @apply text-primary;
20
+ }
21
+ .mcpe-source-card-domain {
22
+ @apply text-xs text-muted-foreground truncate;
23
+ }
24
+ .mcpe-source-card-index {
25
+ @apply text-xs font-medium text-muted-foreground bg-muted rounded-full
26
+ w-5 h-5 flex items-center justify-center shrink-0;
27
+ }
28
+ }
@@ -0,0 +1,53 @@
1
+ @layer components {
2
+ .mcpe-streaming-text-cursor::after {
3
+ content: '▍';
4
+ @apply ml-0.5 text-primary;
5
+ animation: mcpe-cursor-blink 1s step-end infinite;
6
+ }
7
+ .mcpe-streaming-text-fade-in {
8
+ animation: mcpe-stream-fade-in 0.3s ease both;
9
+ }
10
+ .mcpe-streaming-text-word {
11
+ animation: mcpe-stream-word 0.25s ease both;
12
+ }
13
+ .mcpe-streaming-text-line {
14
+ animation: mcpe-stream-line 0.4s ease both;
15
+ }
16
+ .mcpe-streaming-text-skeleton {
17
+ @apply space-y-2;
18
+ }
19
+ .mcpe-streaming-text-skeleton-line {
20
+ @apply h-4 rounded bg-muted;
21
+ background-size: 200% 100%;
22
+ background-image: linear-gradient(90deg, transparent 25%, oklch(0.5 0 0 / 0.08) 50%, transparent 75%);
23
+ animation: mcpe-skeleton-shimmer 1.5s ease-in-out infinite;
24
+ }
25
+ .mcpe-streaming-text-skeleton-line:last-child {
26
+ @apply w-3/5;
27
+ }
28
+ }
29
+
30
+ @keyframes mcpe-cursor-blink {
31
+ 0%, 100% { opacity: 1; }
32
+ 50% { opacity: 0; }
33
+ }
34
+
35
+ @keyframes mcpe-stream-fade-in {
36
+ from { opacity: 0; transform: translateY(4px); }
37
+ to { opacity: 1; transform: translateY(0); }
38
+ }
39
+
40
+ @keyframes mcpe-stream-word {
41
+ from { opacity: 0; filter: blur(2px); }
42
+ to { opacity: 1; filter: blur(0); }
43
+ }
44
+
45
+ @keyframes mcpe-stream-line {
46
+ from { opacity: 0; transform: translateY(8px); }
47
+ to { opacity: 1; transform: translateY(0); }
48
+ }
49
+
50
+ @keyframes mcpe-skeleton-shimmer {
51
+ 0% { background-position: 200% 0; }
52
+ 100% { background-position: -200% 0; }
53
+ }
@@ -0,0 +1,23 @@
1
+ @layer components {
2
+ .mcpe-suggestion-chips {
3
+ @apply flex gap-2 overflow-x-auto;
4
+ scrollbar-width: none;
5
+ }
6
+ .mcpe-suggestion-chips::-webkit-scrollbar {
7
+ display: none;
8
+ }
9
+ .mcpe-suggestion-chip {
10
+ @apply inline-flex items-center px-3 py-1.5 rounded-full text-sm whitespace-nowrap
11
+ cursor-pointer transition-all active:scale-95 shrink-0
12
+ focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring;
13
+ }
14
+ .mcpe-suggestion-chip-default {
15
+ @apply bg-secondary text-secondary-foreground hover:bg-secondary/80;
16
+ }
17
+ .mcpe-suggestion-chip-primary {
18
+ @apply bg-primary/10 text-primary hover:bg-primary/20;
19
+ }
20
+ .mcpe-suggestion-chip-outline {
21
+ @apply border border-input hover:bg-accent hover:text-accent-foreground;
22
+ }
23
+ }
@@ -0,0 +1,30 @@
1
+ @layer components {
2
+ .mcpe-switch {
3
+ @apply inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full
4
+ border-2 border-transparent shadow-sm transition-colors
5
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background
6
+ disabled:cursor-not-allowed disabled:opacity-50;
7
+ }
8
+ .mcpe-switch[aria-checked='false'] {
9
+ background-color: var(--color-muted-foreground);
10
+ opacity: 0.55;
11
+ }
12
+ .mcpe-switch[aria-checked='true'] {
13
+ @apply bg-primary;
14
+ opacity: 1;
15
+ }
16
+ .mcpe-switch-thumb {
17
+ @apply pointer-events-none block h-4 w-4 rounded-full transition-transform;
18
+ background-color: oklch(1 0 0);
19
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.2), 0 1px 3px 0 rgb(0 0 0 / 0.15);
20
+ }
21
+ [data-theme='dark'] .mcpe-switch[aria-checked='true'] .mcpe-switch-thumb {
22
+ background-color: oklch(0.18 0 0);
23
+ }
24
+ .mcpe-switch[aria-checked='false'] .mcpe-switch-thumb {
25
+ @apply translate-x-0;
26
+ }
27
+ .mcpe-switch[aria-checked='true'] .mcpe-switch-thumb {
28
+ @apply translate-x-4;
29
+ }
30
+ }
@@ -0,0 +1,18 @@
1
+ @layer components {
2
+ .mcpe-tabs-list {
3
+ @apply inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground;
4
+ }
5
+ .mcpe-tabs-trigger {
6
+ @apply inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1
7
+ text-sm font-medium ring-offset-background transition-all cursor-pointer active:scale-[0.98]
8
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2
9
+ disabled:pointer-events-none disabled:opacity-50;
10
+ }
11
+ .mcpe-tabs-trigger-active {
12
+ @apply bg-background text-foreground shadow;
13
+ }
14
+ .mcpe-tabs-content {
15
+ @apply mt-2 ring-offset-background
16
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
17
+ }
18
+ }
@@ -0,0 +1,12 @@
1
+ @layer components {
2
+ .mcpe-textarea {
3
+ @apply flex min-h-[60px] w-full rounded-md border border-input px-3 py-2
4
+ text-base shadow-sm
5
+ placeholder:text-muted-foreground
6
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background
7
+ disabled:cursor-not-allowed disabled:opacity-50
8
+ md:text-sm;
9
+ background-color: var(--color-background);
10
+ color: var(--color-foreground);
11
+ }
12
+ }
@@ -0,0 +1,46 @@
1
+ @layer components {
2
+ .mcpe-toaster {
3
+ @apply fixed z-[100] flex flex-col gap-2 p-4;
4
+ }
5
+ .mcpe-toaster-top-right {
6
+ @apply top-0 right-0;
7
+ }
8
+ .mcpe-toaster-bottom-right {
9
+ @apply bottom-0 right-0;
10
+ }
11
+ .mcpe-toaster-top-left {
12
+ @apply top-0 left-0;
13
+ }
14
+ .mcpe-toaster-bottom-left {
15
+ @apply bottom-0 left-0;
16
+ }
17
+ .mcpe-toast {
18
+ @apply pointer-events-auto relative flex w-full items-center justify-between space-x-2
19
+ overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all
20
+ bg-background text-foreground;
21
+ }
22
+ .mcpe-toast-destructive {
23
+ @apply border-destructive bg-destructive text-destructive-foreground;
24
+ }
25
+ .mcpe-toast-success {
26
+ @apply border-green-500/50 bg-green-500/10 text-green-600;
27
+ }
28
+ .mcpe-toast-title {
29
+ @apply text-sm font-semibold;
30
+ }
31
+ .mcpe-toast-description {
32
+ @apply text-sm opacity-90;
33
+ }
34
+ .mcpe-toast-close {
35
+ @apply absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity
36
+ hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none;
37
+ }
38
+ .mcpe-toast:hover .mcpe-toast-close {
39
+ @apply opacity-100;
40
+ }
41
+ .mcpe-toast-action {
42
+ @apply inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent
43
+ px-3 text-sm font-medium transition-colors hover:bg-secondary
44
+ focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50;
45
+ }
46
+ }
@@ -0,0 +1,17 @@
1
+ @keyframes tooltip-in {
2
+ from {
3
+ opacity: 0;
4
+ transform: scale(0.96);
5
+ }
6
+ to {
7
+ opacity: 1;
8
+ transform: scale(1);
9
+ }
10
+ }
11
+
12
+ @layer components {
13
+ .mcpe-tooltip-content {
14
+ @apply z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground shadow-md;
15
+ animation: tooltip-in 150ms ease-out;
16
+ }
17
+ }
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@mcp-elements/css",
3
+ "version": "0.1.0",
4
+ "exports": {
5
+ "./base.css": "./base.css",
6
+ "./base": "./base.css",
7
+ "./components/*.css": "./components/*.css",
8
+ "./components/*": "./components/*.css",
9
+ "./themes/*.css": "./themes/*.css",
10
+ "./themes/*": "./themes/*.css"
11
+ },
12
+ "files": [
13
+ "base.css",
14
+ "components",
15
+ "themes"
16
+ ],
17
+ "scripts": {
18
+ "clean": "echo 'nothing to clean'"
19
+ }
20
+ }
@@ -0,0 +1,3 @@
1
+ /* Dark theme - activate by adding data-theme="dark" to html element */
2
+ /* Dark theme tokens are already defined in base.css */
3
+ /* This file exists for the CLI theme system */
@@ -0,0 +1,3 @@
1
+ /* Default theme - included in base.css */
2
+ /* This file exists for the CLI theme system */
3
+ @import '../base.css';