modal.css 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. @keyframes fadeIn {
  2. from {
  3. opacity: 0;
  4. }
  5. to {
  6. opacity: 1;
  7. }
  8. }
  9. @keyframes slideUp {
  10. from {
  11. opacity: 0;
  12. transform: translateY(20px);
  13. }
  14. to {
  15. opacity: 1;
  16. transform: translateY(0);
  17. }
  18. }
  19. [data-component="modal"][data-slot="overlay"] {
  20. position: fixed;
  21. top: 0;
  22. left: 0;
  23. right: 0;
  24. bottom: 0;
  25. z-index: 9999;
  26. display: flex;
  27. align-items: center;
  28. justify-content: center;
  29. background-color: rgba(0, 0, 0, 0.5);
  30. animation: fadeIn 0.2s ease;
  31. @media (prefers-color-scheme: dark) {
  32. background-color: rgba(0, 0, 0, 0.7);
  33. }
  34. [data-slot="content"] {
  35. background-color: var(--color-bg);
  36. border: 1px solid var(--color-border);
  37. border-radius: var(--border-radius-md);
  38. padding: var(--space-6);
  39. min-width: 400px;
  40. max-width: 90vw;
  41. box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
  42. animation: slideUp 0.2s ease;
  43. @media (max-width: 30rem) {
  44. min-width: 300px;
  45. padding: var(--space-4);
  46. }
  47. @media (prefers-color-scheme: dark) {
  48. box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
  49. }
  50. button {
  51. display: inline-flex;
  52. align-items: center;
  53. justify-content: center;
  54. padding: var(--space-3) var(--space-4);
  55. border: 1px solid var(--color-border);
  56. border-radius: var(--border-radius-sm);
  57. background-color: var(--color-bg);
  58. color: var(--color-text);
  59. font-size: var(--font-size-sm);
  60. font-family: var(--font-sans);
  61. font-weight: 500;
  62. line-height: 1;
  63. cursor: pointer;
  64. transition: all 0.15s ease;
  65. &:hover:not(:disabled) {
  66. background-color: var(--color-surface-hover);
  67. border-color: var(--color-accent);
  68. }
  69. &:active:not(:disabled) {
  70. transform: translateY(1px);
  71. }
  72. &:disabled {
  73. opacity: 0.5;
  74. cursor: not-allowed;
  75. transform: none;
  76. }
  77. &[data-color="primary"] {
  78. background-color: var(--color-primary);
  79. border-color: var(--color-primary);
  80. color: var(--color-primary-text);
  81. &:hover:not(:disabled) {
  82. background-color: var(--color-primary-hover);
  83. border-color: var(--color-primary-hover);
  84. }
  85. }
  86. &[data-color="ghost"] {
  87. background-color: transparent;
  88. border-color: transparent;
  89. color: var(--color-text-muted);
  90. &:hover:not(:disabled) {
  91. background-color: var(--color-surface-hover);
  92. border-color: var(--color-border);
  93. color: var(--color-text);
  94. }
  95. }
  96. }
  97. }
  98. [data-slot="title"] {
  99. margin: 0 0 var(--space-4) 0;
  100. font-size: var(--font-size-lg);
  101. font-weight: 600;
  102. color: var(--color-text);
  103. text-align: center;
  104. }
  105. [data-slot="content"][data-variant="black"] {
  106. background-color: #000;
  107. border-color: rgba(255, 255, 255, 0.17);
  108. color: rgba(255, 255, 255, 0.92);
  109. font-family: var(--font-mono);
  110. [data-slot="title"] {
  111. color: rgba(255, 255, 255, 0.92);
  112. font-family: var(--font-mono);
  113. }
  114. }
  115. }