From 111ba0f209fc0be0aa2676be219724abfeb92b8f Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 17:45:46 +0100
Subject: [PATCH 1/7] Update README.md
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index b59b3b1..841f4f6 100644
--- a/README.md
+++ b/README.md
@@ -24,14 +24,14 @@
### Step 1: Add the CDN Links
-Include the following lines in your HTML file to load KromaCSS. Ensure the JavaScript file is loaded as a module for proper functionality.
+Include the following lines in your HTML file to load KromaCSS.
```html
-
+
-
-
+
+
```
### Step 2: Add Components
@@ -69,7 +69,7 @@ Each component is designed to be adaptive and responsive, ensuring a seamless ex
## š¦ Latest Version
-- **Version**: 1.0.2
+- **Version**: 1.0.5
- **Release Date**: November 15, 2024
---
From 743769ca1ce7bfaaec79a2fe569c979eeda8411a Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 20:48:40 +0100
Subject: [PATCH 2/7] New Kroma Accordion options
---
demo.html | 2 +-
src/css/bundle.css | 64 ++++++++++++++++++++++++--------
src/css/components/accordion.css | 64 ++++++++++++++++++++++++--------
3 files changed, 97 insertions(+), 33 deletions(-)
diff --git a/demo.html b/demo.html
index 6426716..e8b9f09 100644
--- a/demo.html
+++ b/demo.html
@@ -73,7 +73,7 @@ Alert Component Showcase
Accordion Component Showcase
-
+
diff --git a/src/css/bundle.css b/src/css/bundle.css
index 8cc8d38..fd08737 100644
--- a/src/css/bundle.css
+++ b/src/css/bundle.css
@@ -615,12 +615,22 @@ blockquote {
/* --- accordion.css --- */
/* Base Accordion Container */
.kroma-accordion-container {
+ display: flex;
+ flex-direction: column;
max-width: 100%;
margin: auto;
padding: var(--space-4);
- border-radius: var(--radius-md);
- box-shadow: var(--shadow-md);
+ border-radius: var(--radius-lg);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
background-color: var(--neutral-50);
+ transition: padding 0.3s ease, box-shadow 0.3s ease;
+}
+
+.kroma-accordion-container[data-responsive="auto"] {
+ margin: 2vw auto;
+ padding: clamp(var(--space-3), 2vw, var(--space-6));
+ display: flex;
+ justify-content: center;
}
/* Accordion Item */
@@ -637,31 +647,38 @@ blockquote {
justify-content: space-between;
align-items: center;
width: 100%;
- padding: clamp(var(--space-3), 1vw + var(--space-2), var(--space-5));
+ padding: clamp(var(--space-3), 1.5vw, var(--space-5));
font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);
- font-weight: 500;
+ font-weight: 600;
color: var(--neutral-700);
cursor: pointer;
background-color: var(--neutral-50);
- border: none;
- border-radius: var(--radius-md);
- transition: background-color var(--transition-colors), box-shadow var(--transition-all);
+ border: 1px solid transparent;
+ border-radius: var(--radius-lg);
+ transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.kroma-accordion-header:hover,
.kroma-accordion-header:focus {
background-color: var(--neutral-100);
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
outline: none;
}
+.kroma-accordion-header:focus-visible {
+ border: 1px solid var(--focus-color);
+}
/* Accordion Content */
-.kroma-accordion-content,
-.kroma-accordion-sub-content {
+.kroma-accordion-content {
height: 0;
overflow: hidden;
- transition: height 0.4s ease;
+ transition: height 0.4s ease, padding 0.3s ease;
padding: 0 var(--space-3);
background-color: var(--neutral-50);
}
+.kroma-accordion-content[data-expanded="true"] {
+ height: auto;
+ padding: var(--space-3) var(--space-4);
+}
/* Sub-Item */
.kroma-accordion-sub-item {
@@ -670,17 +687,17 @@ blockquote {
transition: padding 0.3s ease;
}
.kroma-accordion-sub-header {
- padding: clamp(var(--space-2), 1vw + var(--space-1), var(--space-3));
+ padding: clamp(var(--space-2), 1vw, var(--space-4));
font-size: 0.9rem;
- font-weight: 400;
+ font-weight: 500;
color: var(--neutral-500);
cursor: pointer;
background: var(--neutral-50);
border: none;
text-align: left;
width: 100%;
- border-radius: var(--radius-md);
- transition: background-color var(--transition-colors);
+ border-radius: var(--radius-lg);
+ transition: background-color 0.3s ease;
}
.kroma-accordion-sub-header:hover {
background-color: var(--neutral-100);
@@ -700,14 +717,29 @@ blockquote {
/* Responsive Design */
@media (max-width: 768px) {
.kroma-accordion-container {
- padding: var(--space-2);
+ padding: var(--space-3);
+ box-shadow: none;
}
.kroma-accordion-header,
.kroma-accordion-sub-header {
- padding: var(--space-2);
+ padding: var(--space-3);
}
}
+/* Versione Senza Background */
+.kroma-accordion-container[data-background="none"] {
+ background-color: transparent;
+ box-shadow: none;
+}
+.kroma-accordion-container[data-background="none"] .kroma-accordion-header {
+ background-color: transparent;
+ border: none;
+ box-shadow: none;
+}
+.kroma-accordion-container[data-background="none"] .kroma-accordion-content {
+ background-color: transparent;
+}
+
/* --- alert.css --- */
/* Base Alert Styles */
diff --git a/src/css/components/accordion.css b/src/css/components/accordion.css
index 39146f5..b1d6f52 100644
--- a/src/css/components/accordion.css
+++ b/src/css/components/accordion.css
@@ -1,11 +1,21 @@
/* Base Accordion Container */
.kroma-accordion-container {
+ display: flex;
+ flex-direction: column;
max-width: 100%;
margin: auto;
padding: var(--space-4);
- border-radius: var(--radius-md);
- box-shadow: var(--shadow-md);
+ border-radius: var(--radius-lg);
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
background-color: var(--neutral-50);
+ transition: padding 0.3s ease, box-shadow 0.3s ease;
+}
+
+.kroma-accordion-container[data-responsive="auto"] {
+ margin: 2vw auto;
+ padding: clamp(var(--space-3), 2vw, var(--space-6));
+ display: flex;
+ justify-content: center;
}
/* Accordion Item */
@@ -22,31 +32,38 @@
justify-content: space-between;
align-items: center;
width: 100%;
- padding: clamp(var(--space-3), 1vw + var(--space-2), var(--space-5));
+ padding: clamp(var(--space-3), 1.5vw, var(--space-5));
font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);
- font-weight: 500;
+ font-weight: 600;
color: var(--neutral-700);
cursor: pointer;
background-color: var(--neutral-50);
- border: none;
- border-radius: var(--radius-md);
- transition: background-color var(--transition-colors), box-shadow var(--transition-all);
+ border: 1px solid transparent;
+ border-radius: var(--radius-lg);
+ transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.kroma-accordion-header:hover,
.kroma-accordion-header:focus {
background-color: var(--neutral-100);
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
outline: none;
}
+.kroma-accordion-header:focus-visible {
+ border: 1px solid var(--focus-color);
+}
/* Accordion Content */
-.kroma-accordion-content,
-.kroma-accordion-sub-content {
+.kroma-accordion-content {
height: 0;
overflow: hidden;
- transition: height 0.4s ease;
+ transition: height 0.4s ease, padding 0.3s ease;
padding: 0 var(--space-3);
background-color: var(--neutral-50);
}
+.kroma-accordion-content[data-expanded="true"] {
+ height: auto;
+ padding: var(--space-3) var(--space-4);
+}
/* Sub-Item */
.kroma-accordion-sub-item {
@@ -55,17 +72,17 @@
transition: padding 0.3s ease;
}
.kroma-accordion-sub-header {
- padding: clamp(var(--space-2), 1vw + var(--space-1), var(--space-3));
+ padding: clamp(var(--space-2), 1vw, var(--space-4));
font-size: 0.9rem;
- font-weight: 400;
+ font-weight: 500;
color: var(--neutral-500);
cursor: pointer;
background: var(--neutral-50);
border: none;
text-align: left;
width: 100%;
- border-radius: var(--radius-md);
- transition: background-color var(--transition-colors);
+ border-radius: var(--radius-lg);
+ transition: background-color 0.3s ease;
}
.kroma-accordion-sub-header:hover {
background-color: var(--neutral-100);
@@ -85,10 +102,25 @@
/* Responsive Design */
@media (max-width: 768px) {
.kroma-accordion-container {
- padding: var(--space-2);
+ padding: var(--space-3);
+ box-shadow: none;
}
.kroma-accordion-header,
.kroma-accordion-sub-header {
- padding: var(--space-2);
+ padding: var(--space-3);
}
}
+
+/* Versione Senza Background */
+.kroma-accordion-container[data-background="none"] {
+ background-color: transparent;
+ box-shadow: none;
+}
+.kroma-accordion-container[data-background="none"] .kroma-accordion-header {
+ background-color: transparent;
+ border: none;
+ box-shadow: none;
+}
+.kroma-accordion-container[data-background="none"] .kroma-accordion-content {
+ background-color: transparent;
+}
From e1a219507851ad6feb80e4fcd2a5a974334aca5d Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 21:04:11 +0100
Subject: [PATCH 3/7] New palette & variants
---
src/css/bundle.css | 439 +++++++++++++++++++++-----------------
src/css/design-tokens.css | 439 +++++++++++++++++++++-----------------
2 files changed, 480 insertions(+), 398 deletions(-)
diff --git a/src/css/bundle.css b/src/css/bundle.css
index fd08737..f31fce4 100644
--- a/src/css/bundle.css
+++ b/src/css/bundle.css
@@ -9,86 +9,94 @@ License: CC BY-ND 4.0
/* --- design-tokens.css --- */
:root {
/* Colors */
- --neutral-50: #f9fafb; /* Light background */
- --neutral-100: #f1f5f9;
- --neutral-200: #e2e8f0;
- --neutral-300: #cbd5e1; /* Mid-light for subtle contrasts */
- --neutral-400: #94a3b8;
- --neutral-500: #64748b; /* Accent light neutral */
- --neutral-600: #475569;
- --neutral-700: #334155;
- --neutral-800: #1e293b;
- --neutral-900: #0f172a; /* Darkest text on light mode */
+ --neutral-50: #f8fafc;
+ --neutral-100: #eef2f6;
+ --neutral-200: #d9e2ec;
+ --neutral-300: #bcccdc;
+ --neutral-400: #98a6c5;
+ --neutral-500: #667693;
+ --neutral-600: #4a566b;
+ --neutral-700: #354152;
+ --neutral-800: #202c3c;
+ --neutral-900: #131926;
+
/* Primary Variants */
- --primary-bg: rgba(59, 130, 246, 1);
- --primary-light-bg: rgba(59, 130, 246, 0.15);
- --primary-dark-bg: rgba(37, 99, 235, 1);
- --primary-hover: rgba(59, 130, 246, 0.75);
- --primary-hover-bg: rgba(59, 130, 246, 0.9);
+ --primary-bg: rgba(54, 118, 228, 1);
+ --primary-light-bg: rgba(54, 118, 228, 0.12);
+ --primary-dark-bg: rgba(37, 84, 187, 1);
+ --primary-hover: rgba(54, 118, 228, 0.8);
+ --primary-hover-bg: rgba(54, 118, 228, 0.95);
--primary-text: #ffffff;
- --primary-border: rgba(37, 99, 235, 1);
- --primary-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
+ --primary-border: rgba(37, 84, 187, 1);
+ --primary-shadow: 0 3px 8px rgba(54, 118, 228, 0.35);
+
/* Secondary Variants */
- --secondary-bg: rgba(100, 116, 139, 1);
- --secondary-light-bg: rgba(100, 116, 139, 0.15);
- --secondary-dark-bg: rgba(71, 85, 105, 1);
- --secondary-hover: rgba(100, 116, 139, 0.75);
- --secondary-hover-bg: rgba(100, 116, 139, 0.9);
+ --secondary-bg: rgba(84, 98, 120, 1);
+ --secondary-light-bg: rgba(84, 98, 120, 0.12);
+ --secondary-dark-bg: rgba(59, 69, 89, 1);
+ --secondary-hover: rgba(84, 98, 120, 0.8);
+ --secondary-hover-bg: rgba(84, 98, 120, 0.95);
--secondary-text: #ffffff;
- --secondary-border: rgba(71, 85, 105, 1);
- --secondary-shadow: 0 2px 6px rgba(100, 116, 139, 0.3);
+ --secondary-border: rgba(59, 69, 89, 1);
+ --secondary-shadow: 0 3px 8px rgba(84, 98, 120, 0.35);
+
/* Success Variants */
- --success-bg: rgba(16, 185, 129, 1);
- --success-light-bg: rgba(16, 185, 129, 0.15);
- --success-dark-bg: rgba(4, 120, 87, 1);
- --success-hover: rgba(16, 185, 129, 0.75);
- --success-hover-bg: rgba(16, 185, 129, 0.9);
+ --success-bg: rgba(15, 150, 100, 1);
+ --success-light-bg: rgba(15, 150, 100, 0.12);
+ --success-dark-bg: rgba(10, 110, 80, 1);
+ --success-hover: rgba(15, 150, 100, 0.8);
+ --success-hover-bg: rgba(15, 150, 100, 0.95);
--success-text: #ffffff;
- --success-border: rgba(4, 120, 87, 1);
- --success-shadow: 0 2px 6px rgba(16, 185, 129, 0.3);
+ --success-border: rgba(10, 110, 80, 1);
+ --success-shadow: 0 3px 8px rgba(15, 150, 100, 0.35);
+
/* Danger Variants */
- --danger-bg: rgba(239, 68, 68, 1);
- --danger-light-bg: rgba(239, 68, 68, 0.15);
- --danger-dark-bg: rgba(185, 28, 28, 1);
- --danger-hover: rgba(239, 68, 68, 0.75);
- --danger-hover-bg: rgba(239, 68, 68, 0.9);
+ --danger-bg: rgba(220, 50, 50, 1);
+ --danger-light-bg: rgba(220, 50, 50, 0.12);
+ --danger-dark-bg: rgba(180, 30, 30, 1);
+ --danger-hover: rgba(220, 50, 50, 0.8);
+ --danger-hover-bg: rgba(220, 50, 50, 0.95);
--danger-text: #ffffff;
- --danger-border: rgba(185, 28, 28, 1);
- --danger-shadow: 0 2px 6px rgba(239, 68, 68, 0.3);
+ --danger-border: rgba(180, 30, 30, 1);
+ --danger-shadow: 0 3px 8px rgba(220, 50, 50, 0.35);
+
/* Warning Variants */
- --warning-bg: rgba(245, 158, 11, 1);
- --warning-light-bg: rgba(245, 158, 11, 0.15);
- --warning-dark-bg: rgba(202, 138, 4, 1);
- --warning-hover: rgba(245, 158, 11, 0.75);
- --warning-hover-bg: rgba(245, 158, 11, 0.9);
+ --warning-bg: rgba(240, 140, 10, 1);
+ --warning-light-bg: rgba(240, 140, 10, 0.12);
+ --warning-dark-bg: rgba(200, 110, 5, 1);
+ --warning-hover: rgba(240, 140, 10, 0.8);
+ --warning-hover-bg: rgba(240, 140, 10, 0.95);
--warning-text: #ffffff;
- --warning-border: rgba(202, 138, 4, 1);
- --warning-shadow: 0 2px 6px rgba(245, 158, 11, 0.3);
+ --warning-border: rgba(200, 110, 5, 1);
+ --warning-shadow: 0 3px 8px rgba(240, 140, 10, 0.35);
+
/* Info Variants */
- --info-bg: rgba(59, 130, 246, 1);
- --info-light-bg: rgba(59, 130, 246, 0.15);
- --info-dark-bg: rgba(37, 99, 235, 1);
- --info-hover: rgba(59, 130, 246, 0.75);
- --info-hover-bg: rgba(59, 130, 246, 0.9);
+ --info-bg: rgba(50, 100, 230, 1);
+ --info-light-bg: rgba(50, 100, 230, 0.12);
+ --info-dark-bg: rgba(30, 80, 190, 1);
+ --info-hover: rgba(50, 100, 230, 0.8);
+ --info-hover-bg: rgba(50, 100, 230, 0.95);
--info-text: #ffffff;
- --info-border: rgba(37, 99, 235, 1);
- --info-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
+ --info-border: rgba(30, 80, 190, 1);
+ --info-shadow: 0 3px 8px rgba(50, 100, 230, 0.35);
+
/* Accent Variants */
- --accent-bg: rgba(124, 58, 237, 1);
- --accent-light-bg: rgba(124, 58, 237, 0.15);
- --accent-dark-bg: rgba(91, 33, 182, 1);
- --accent-hover: rgba(124, 58, 237, 0.75);
- --accent-hover-bg: rgba(124, 58, 237, 0.9);
+ --accent-bg: rgba(100, 50, 220, 1);
+ --accent-light-bg: rgba(100, 50, 220, 0.12);
+ --accent-dark-bg: rgba(70, 30, 180, 1);
+ --accent-hover: rgba(100, 50, 220, 0.8);
+ --accent-hover-bg: rgba(100, 50, 220, 0.95);
--accent-text: #ffffff;
- --accent-border: rgba(91, 33, 182, 1);
- --accent-shadow: 0 2px 6px rgba(124, 58, 237, 0.3);
+ --accent-border: rgba(70, 30, 180, 1);
+ --accent-shadow: 0 3px 8px rgba(100, 50, 220, 0.35);
+
/* Shadows */
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
@@ -139,86 +147,86 @@ License: CC BY-ND 4.0
/* Dark Mode */
.dark-mode {
/* Neutral Colors for Dark Mode */
- --neutral-50: #121826; /* Dark background */
- --neutral-100: #1a2334;
- --neutral-200: #2b364a;
- --neutral-300: #3b4a62; /* Mid-dark for subtle contrasts */
- --neutral-400: #4a5d7c;
- --neutral-500: #5f728c; /* Accent dark neutral */
- --neutral-600: #718096;
- --neutral-700: #a0aec0;
- --neutral-800: #cbd5e0;
- --neutral-900: #e5eaf0; /* Lightest text on dark mode */
+ --neutral-50: #0f141e;
+ --neutral-100: #161e2b;
+ --neutral-200: #202a3b;
+ --neutral-300: #2c3a50;
+ --neutral-400: #3a4e6b;
+ --neutral-500: #52657e;
+ --neutral-600: #697a91;
+ --neutral-700: #b8c4d4;
+ --neutral-800: #d8e1ec;
+ --neutral-900: #f2f6fb;
/* Primary Variants */
- --primary-bg: rgba(37, 99, 235, 1);
- --primary-light-bg: rgba(37, 99, 235, 0.15);
- --primary-dark-bg: rgba(29, 78, 216, 1);
- --primary-hover: rgba(37, 99, 235, 0.75);
- --primary-hover-bg: rgba(37, 99, 235, 0.9);
- --primary-text: #e0f2fe; /* Light text for contrast */
- --primary-border: rgba(29, 78, 216, 1);
- --primary-shadow: 0 2px 6px rgba(37, 99, 235, 0.3);
+ --primary-bg: rgba(45, 105, 245, 1);
+ --primary-light-bg: rgba(45, 105, 245, 0.12);
+ --primary-dark-bg: rgba(35, 85, 200, 1);
+ --primary-hover: rgba(45, 105, 245, 0.8);
+ --primary-hover-bg: rgba(45, 105, 245, 0.95);
+ --primary-text: #dbeafe;
+ --primary-border: rgba(35, 85, 200, 1);
+ --primary-shadow: 0 4px 12px rgba(45, 105, 245, 0.3);
/* Secondary Variants */
- --secondary-bg: rgba(71, 85, 105, 1);
- --secondary-light-bg: rgba(71, 85, 105, 0.15);
- --secondary-dark-bg: rgba(55, 65, 81, 1);
- --secondary-hover: rgba(71, 85, 105, 0.75);
- --secondary-hover-bg: rgba(71, 85, 105, 0.9);
- --secondary-text: #f1f5f9;
- --secondary-border: rgba(55, 65, 81, 1);
- --secondary-shadow: 0 2px 6px rgba(71, 85, 105, 0.3);
+ --secondary-bg: rgba(80, 95, 120, 1);
+ --secondary-light-bg: rgba(80, 95, 120, 0.12);
+ --secondary-dark-bg: rgba(65, 75, 95, 1);
+ --secondary-hover: rgba(80, 95, 120, 0.8);
+ --secondary-hover-bg: rgba(80, 95, 120, 0.95);
+ --secondary-text: #e2e8f0;
+ --secondary-border: rgba(65, 75, 95, 1);
+ --secondary-shadow: 0 4px 12px rgba(80, 95, 120, 0.3);
/* Success Variants */
- --success-bg: rgba(4, 120, 87, 1);
- --success-light-bg: rgba(4, 120, 87, 0.15);
- --success-dark-bg: rgba(2, 85, 65, 1);
- --success-hover: rgba(4, 120, 87, 0.75);
- --success-hover-bg: rgba(4, 120, 87, 0.9);
- --success-text: #d1fae5;
- --success-border: rgba(2, 85, 65, 1);
- --success-shadow: 0 2px 6px rgba(4, 120, 87, 0.3);
+ --success-bg: rgba(6, 135, 92, 1);
+ --success-light-bg: rgba(6, 135, 92, 0.12);
+ --success-dark-bg: rgba(4, 100, 70, 1);
+ --success-hover: rgba(6, 135, 92, 0.8);
+ --success-hover-bg: rgba(6, 135, 92, 0.95);
+ --success-text: #bde7d8;
+ --success-border: rgba(4, 100, 70, 1);
+ --success-shadow: 0 4px 12px rgba(6, 135, 92, 0.3);
/* Danger Variants */
- --danger-bg: rgba(185, 28, 28, 1);
- --danger-light-bg: rgba(185, 28, 28, 0.15);
- --danger-dark-bg: rgba(153, 27, 27, 1);
- --danger-hover: rgba(185, 28, 28, 0.75);
- --danger-hover-bg: rgba(185, 28, 28, 0.9);
- --danger-text: #fecaca;
- --danger-border: rgba(153, 27, 27, 1);
- --danger-shadow: 0 2px 6px rgba(185, 28, 28, 0.3);
+ --danger-bg: rgba(200, 35, 35, 1);
+ --danger-light-bg: rgba(200, 35, 35, 0.12);
+ --danger-dark-bg: rgba(160, 25, 25, 1);
+ --danger-hover: rgba(200, 35, 35, 0.8);
+ --danger-hover-bg: rgba(200, 35, 35, 0.95);
+ --danger-text: #ffc7c7;
+ --danger-border: rgba(160, 25, 25, 1);
+ --danger-shadow: 0 4px 12px rgba(200, 35, 35, 0.3);
/* Warning Variants */
- --warning-bg: rgba(202, 138, 4, 1);
- --warning-light-bg: rgba(202, 138, 4, 0.15);
- --warning-dark-bg: rgba(161, 98, 7, 1);
- --warning-hover: rgba(202, 138, 4, 0.75);
- --warning-hover-bg: rgba(202, 138, 4, 0.9);
- --warning-text: #fde68a;
- --warning-border: rgba(161, 98, 7, 1);
- --warning-shadow: 0 2px 6px rgba(202, 138, 4, 0.3);
+ --warning-bg: rgba(220, 150, 10, 1);
+ --warning-light-bg: rgba(220, 150, 10, 0.12);
+ --warning-dark-bg: rgba(180, 120, 8, 1);
+ --warning-hover: rgba(220, 150, 10, 0.8);
+ --warning-hover-bg: rgba(220, 150, 10, 0.95);
+ --warning-text: #fde7b5;
+ --warning-border: rgba(180, 120, 8, 1);
+ --warning-shadow: 0 4px 12px rgba(220, 150, 10, 0.3);
/* Info Variants */
- --info-bg: rgba(37, 99, 235, 1);
- --info-light-bg: rgba(37, 99, 235, 0.15);
- --info-dark-bg: rgba(29, 78, 216, 1);
- --info-hover: rgba(37, 99, 235, 0.75);
- --info-hover-bg: rgba(37, 99, 235, 0.9);
- --info-text: #bfdbfe;
- --info-border: rgba(29, 78, 216, 1);
- --info-shadow: 0 2px 6px rgba(37, 99, 235, 0.3);
+ --info-bg: rgba(40, 110, 230, 1);
+ --info-light-bg: rgba(40, 110, 230, 0.12);
+ --info-dark-bg: rgba(30, 85, 200, 1);
+ --info-hover: rgba(40, 110, 230, 0.8);
+ --info-hover-bg: rgba(40, 110, 230, 0.95);
+ --info-text: #c9e7ff;
+ --info-border: rgba(30, 85, 200, 1);
+ --info-shadow: 0 4px 12px rgba(40, 110, 230, 0.3);
/* Accent Variants */
- --accent-bg: rgba(91, 33, 182, 1);
- --accent-light-bg: rgba(91, 33, 182, 0.15);
- --accent-dark-bg: rgba(72, 28, 152, 1);
- --accent-hover: rgba(91, 33, 182, 0.75);
- --accent-hover-bg: rgba(91, 33, 182, 0.9);
- --accent-text: #e9d5ff;
- --accent-border: rgba(72, 28, 152, 1);
- --accent-shadow: 0 2px 6px rgba(91, 33, 182, 0.3);
+ --accent-bg: rgba(100, 50, 200, 1);
+ --accent-light-bg: rgba(100, 50, 200, 0.12);
+ --accent-dark-bg: rgba(80, 40, 160, 1);
+ --accent-hover: rgba(100, 50, 200, 0.8);
+ --accent-hover-bg: rgba(100, 50, 200, 0.95);
+ --accent-text: #e7d1ff;
+ --accent-border: rgba(80, 40, 160, 1);
+ --accent-shadow: 0 4px 12px rgba(100, 50, 200, 0.3);
/* Shadows */
--shadow-sm: 0 1px 2px rgba(255, 255, 255, 0.1);
@@ -228,81 +236,114 @@ License: CC BY-ND 4.0
}
[data-variant="primary"] {
- --variant-bg: var(--primary-bg);
- --variant-light-bg: var(--primary-light-bg);
- --variant-dark-bg: var(--primary-dark-bg);
- --variant-text: var(--primary-text);
- --variant-shadow: var(--primary-shadow);
- --variant-border: var(--primary-border);
- --variant-hover-bg: var(--primary-hover-bg);
- --variant-hover: var(--primary-hover);
- }
-
- [data-variant="secondary"] {
- --variant-bg: var(--secondary-bg);
- --variant-light-bg: var(--secondary-light-bg);
- --variant-dark-bg: var(--secondary-dark-bg);
- --variant-text: var(--secondary-text);
- --variant-shadow: var(--secondary-shadow);
- --variant-border: var(--secondary-border);
- --variant-hover-bg: var(--secondary-hover-bg);
- --variant-hover: var(--secondary-hover);
- }
-
- [data-variant="accent"] {
- --variant-bg: var(--accent-bg);
- --variant-light-bg: var(--accent-light-bg);
- --variant-dark-bg: var(--accent-dark-bg);
- --variant-text: var(--accent-text);
- --variant-shadow: var(--accent-shadow);
- --variant-border: var(--accent-border);
- --variant-hover-bg: var(--accent-hover-bg);
- --variant-hover: var(--accent-hover);
- }
-
- [data-variant="success"] {
- --variant-bg: var(--success-bg);
- --variant-light-bg: var(--success-light-bg);
- --variant-dark-bg: var(--success-dark-bg);
- --variant-text: var(--success-text);
- --variant-shadow: var(--success-shadow);
- --variant-border: var(--success-border);
- --variant-hover-bg: var(--success-hover-bg);
- --variant-hover: var(--success-hover);
- }
-
- [data-variant="info"] {
- --variant-bg: var(--info-bg);
- --variant-light-bg: var(--info-light-bg);
- --variant-dark-bg: var(--info-dark-bg);
- --variant-text: var(--info-text);
- --variant-shadow: var(--info-shadow);
- --variant-border: var(--info-border);
- --variant-hover-bg: var(--info-hover-bg);
- --variant-hover: var(--info-hover);
- }
-
- [data-variant="danger"] {
- --variant-bg: var(--danger-bg);
- --variant-light-bg: var(--danger-light-bg);
- --variant-dark-bg: var(--danger-dark-bg);
- --variant-text: var(--danger-text);
- --variant-shadow: var(--danger-shadow);
- --variant-border: var(--danger-border);
- --variant-hover-bg: var(--danger-hover-bg);
- --variant-hover: var(--danger-hover);
- }
+ --variant-bg: var(--primary-bg); /* Sfondo principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo per contrasto su hover */
+ --variant-dark-bg: var(--primary-dark-bg); /* Bordo e ombre */
+ --variant-text: var(--neutral-900); /* Testo chiaro su sfondo */
+ --variant-shadow: var(--primary-shadow); /* Ombre leggere */
+ --variant-border: var(--primary-border); /* Bordo visibile */
+ --variant-hover-bg: var(--primary-hover-bg); /* Sfondo scuro su hover */
+ --variant-hover: var(--primary-hover); /* Colore per elementi interattivi */
+}
- [data-variant="warning"] {
- --variant-bg: var(--warning-bg);
- --variant-light-bg: var(--warning-light-bg);
- --variant-dark-bg: var(--warning-dark-bg);
- --variant-text: var(--warning-text);
- --variant-shadow: var(--warning-shadow);
- --variant-border: var(--warning-border);
- --variant-hover-bg: var(--warning-hover-bg);
- --variant-hover: var(--warning-hover);
- }
+[data-variant="secondary"] {
+ --variant-bg: var(--secondary-bg); /* Sfondo principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo su hover */
+ --variant-dark-bg: var(--secondary-dark-bg); /* Colore scuro */
+ --variant-text: var(--neutral-800); /* Testo leggibile */
+ --variant-shadow: var(--secondary-shadow); /* Ombre su sfondo */
+ --variant-border: var(--secondary-border); /* Bordo chiaro */
+ --variant-hover-bg: var(--secondary-hover-bg); /* Hover background */
+ --variant-hover: var(--secondary-hover); /* Hover foreground */
+}
+
+[data-variant="accent"] {
+ --variant-bg: var(--accent-bg); /* Sfondo viola principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo chiaro su hover */
+ --variant-dark-bg: var(--accent-dark-bg); /* Dettagli scuri */
+ --variant-text: var(--accent-text); /* Testo molto chiaro */
+ --variant-shadow: var(--accent-shadow); /* Ombre morbide */
+ --variant-border: var(--accent-border); /* Bordo viola intenso */
+ --variant-hover-bg: var(--accent-hover-bg); /* Viola più scuro su hover */
+ --variant-hover: var(--accent-hover); /* Elementi hover interattivi */
+}
+
+[data-variant="success"] {
+ --variant-bg: var(--success-bg); /* Verde scuro principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--success-dark-bg); /* Verde più scuro */
+ --variant-text: var(--success-text); /* Testo verde chiaro */
+ --variant-shadow: var(--success-shadow); /* Ombre leggere */
+ --variant-border: var(--success-border); /* Verde intenso per bordo */
+ --variant-hover-bg: var(--success-hover-bg); /* Hover verde scuro */
+ --variant-hover: var(--success-hover); /* Hover foreground */
+}
+
+[data-variant="info"] {
+ --variant-bg: var(--info-bg); /* Blu acceso principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--info-dark-bg); /* Blu profondo */
+ --variant-text: var(--info-text); /* Testo blu chiaro */
+ --variant-shadow: var(--info-shadow); /* Ombre morbide */
+ --variant-border: var(--info-border); /* Bordo blu intenso */
+ --variant-hover-bg: var(--info-hover-bg); /* Blu più scuro su hover */
+ --variant-hover: var(--info-hover); /* Elementi hover */
+}
+
+[data-variant="danger"] {
+ --variant-bg: var(--danger-bg); /* Rosso acceso principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--danger-dark-bg); /* Rosso profondo */
+ --variant-text: var(--danger-text); /* Testo chiaro */
+ --variant-shadow: var(--danger-shadow); /* Ombre morbide */
+ --variant-border: var(--danger-border); /* Bordo rosso intenso */
+ --variant-hover-bg: var(--danger-hover-bg); /* Rosso più scuro su hover */
+ --variant-hover: var(--danger-hover); /* Hover foreground */
+}
+
+[data-variant="warning"] {
+ --variant-bg: var(--warning-bg); /* Arancione brillante principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo chiaro */
+ --variant-dark-bg: var(--warning-dark-bg); /* Arancione scuro */
+ --variant-text: var(--warning-text); /* Testo chiaro */
+ --variant-shadow: var(--warning-shadow); /* Ombre morbide */
+ --variant-border: var(--warning-border); /* Bordo arancione intenso */
+ --variant-hover-bg: var(--warning-hover-bg); /* Arancione più scuro su hover */
+ --variant-hover: var(--warning-hover); /* Hover foreground */
+}
+
+[data-variant="default"] {
+ --variant-bg: var(--neutral-100); /* Sfondo principale chiaro */
+ --variant-light-bg: var(--neutral-50); /* Sfondo molto chiaro */
+ --variant-dark-bg: var(--neutral-300); /* Sfondo scuro per contrasti */
+ --variant-text: var(--neutral-900); /* Testo scuro */
+ --variant-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Ombra leggera */
+ --variant-border: var(--neutral-200); /* Bordo chiaro */
+ --variant-hover-bg: var(--neutral-200); /* Sfondo scuro su hover */
+ --variant-hover: var(--neutral-700); /* Colore del testo su hover */
+}
+
+[data-variant="dark"] {
+ --variant-bg: var(--neutral-800); /* Sfondo principale scuro */
+ --variant-light-bg: var(--neutral-700); /* Sfondo interattivo più chiaro */
+ --variant-dark-bg: var(--neutral-900); /* Sfondo più scuro */
+ --variant-text: var(--neutral-50); /* Testo chiaro */
+ --variant-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); /* Ombra profonda */
+ --variant-border: var(--neutral-600); /* Bordo scuro */
+ --variant-hover-bg: var(--neutral-600); /* Sfondo chiaro su hover */
+ --variant-hover: var(--neutral-300); /* Colore interattivo su hover */
+}
+
+[data-variant="light"] {
+ --variant-bg: var(--neutral-50); /* Sfondo molto chiaro */
+ --variant-light-bg: var(--neutral-100); /* Sfondo chiaro intermedio */
+ --variant-dark-bg: var(--neutral-200); /* Sfondo scuro per accenti */
+ --variant-text: var(--neutral-700); /* Testo scuro */
+ --variant-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); /* Ombra morbida */
+ --variant-border: var(--neutral-300); /* Bordo leggero */
+ --variant-hover-bg: var(--neutral-200); /* Sfondo scuro su hover */
+ --variant-hover: var(--neutral-500); /* Testo interattivo su hover */
+}
/* --- base.css --- */
*,
diff --git a/src/css/design-tokens.css b/src/css/design-tokens.css
index 696f573..5b30cb7 100644
--- a/src/css/design-tokens.css
+++ b/src/css/design-tokens.css
@@ -1,85 +1,93 @@
:root {
/* Colors */
- --neutral-50: #f9fafb; /* Light background */
- --neutral-100: #f1f5f9;
- --neutral-200: #e2e8f0;
- --neutral-300: #cbd5e1; /* Mid-light for subtle contrasts */
- --neutral-400: #94a3b8;
- --neutral-500: #64748b; /* Accent light neutral */
- --neutral-600: #475569;
- --neutral-700: #334155;
- --neutral-800: #1e293b;
- --neutral-900: #0f172a; /* Darkest text on light mode */
+ --neutral-50: #f8fafc;
+ --neutral-100: #eef2f6;
+ --neutral-200: #d9e2ec;
+ --neutral-300: #bcccdc;
+ --neutral-400: #98a6c5;
+ --neutral-500: #667693;
+ --neutral-600: #4a566b;
+ --neutral-700: #354152;
+ --neutral-800: #202c3c;
+ --neutral-900: #131926;
+
/* Primary Variants */
- --primary-bg: rgba(59, 130, 246, 1);
- --primary-light-bg: rgba(59, 130, 246, 0.15);
- --primary-dark-bg: rgba(37, 99, 235, 1);
- --primary-hover: rgba(59, 130, 246, 0.75);
- --primary-hover-bg: rgba(59, 130, 246, 0.9);
+ --primary-bg: rgba(54, 118, 228, 1);
+ --primary-light-bg: rgba(54, 118, 228, 0.12);
+ --primary-dark-bg: rgba(37, 84, 187, 1);
+ --primary-hover: rgba(54, 118, 228, 0.8);
+ --primary-hover-bg: rgba(54, 118, 228, 0.95);
--primary-text: #ffffff;
- --primary-border: rgba(37, 99, 235, 1);
- --primary-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
+ --primary-border: rgba(37, 84, 187, 1);
+ --primary-shadow: 0 3px 8px rgba(54, 118, 228, 0.35);
+
/* Secondary Variants */
- --secondary-bg: rgba(100, 116, 139, 1);
- --secondary-light-bg: rgba(100, 116, 139, 0.15);
- --secondary-dark-bg: rgba(71, 85, 105, 1);
- --secondary-hover: rgba(100, 116, 139, 0.75);
- --secondary-hover-bg: rgba(100, 116, 139, 0.9);
+ --secondary-bg: rgba(84, 98, 120, 1);
+ --secondary-light-bg: rgba(84, 98, 120, 0.12);
+ --secondary-dark-bg: rgba(59, 69, 89, 1);
+ --secondary-hover: rgba(84, 98, 120, 0.8);
+ --secondary-hover-bg: rgba(84, 98, 120, 0.95);
--secondary-text: #ffffff;
- --secondary-border: rgba(71, 85, 105, 1);
- --secondary-shadow: 0 2px 6px rgba(100, 116, 139, 0.3);
+ --secondary-border: rgba(59, 69, 89, 1);
+ --secondary-shadow: 0 3px 8px rgba(84, 98, 120, 0.35);
+
/* Success Variants */
- --success-bg: rgba(16, 185, 129, 1);
- --success-light-bg: rgba(16, 185, 129, 0.15);
- --success-dark-bg: rgba(4, 120, 87, 1);
- --success-hover: rgba(16, 185, 129, 0.75);
- --success-hover-bg: rgba(16, 185, 129, 0.9);
+ --success-bg: rgba(15, 150, 100, 1);
+ --success-light-bg: rgba(15, 150, 100, 0.12);
+ --success-dark-bg: rgba(10, 110, 80, 1);
+ --success-hover: rgba(15, 150, 100, 0.8);
+ --success-hover-bg: rgba(15, 150, 100, 0.95);
--success-text: #ffffff;
- --success-border: rgba(4, 120, 87, 1);
- --success-shadow: 0 2px 6px rgba(16, 185, 129, 0.3);
+ --success-border: rgba(10, 110, 80, 1);
+ --success-shadow: 0 3px 8px rgba(15, 150, 100, 0.35);
+
/* Danger Variants */
- --danger-bg: rgba(239, 68, 68, 1);
- --danger-light-bg: rgba(239, 68, 68, 0.15);
- --danger-dark-bg: rgba(185, 28, 28, 1);
- --danger-hover: rgba(239, 68, 68, 0.75);
- --danger-hover-bg: rgba(239, 68, 68, 0.9);
+ --danger-bg: rgba(220, 50, 50, 1);
+ --danger-light-bg: rgba(220, 50, 50, 0.12);
+ --danger-dark-bg: rgba(180, 30, 30, 1);
+ --danger-hover: rgba(220, 50, 50, 0.8);
+ --danger-hover-bg: rgba(220, 50, 50, 0.95);
--danger-text: #ffffff;
- --danger-border: rgba(185, 28, 28, 1);
- --danger-shadow: 0 2px 6px rgba(239, 68, 68, 0.3);
+ --danger-border: rgba(180, 30, 30, 1);
+ --danger-shadow: 0 3px 8px rgba(220, 50, 50, 0.35);
+
/* Warning Variants */
- --warning-bg: rgba(245, 158, 11, 1);
- --warning-light-bg: rgba(245, 158, 11, 0.15);
- --warning-dark-bg: rgba(202, 138, 4, 1);
- --warning-hover: rgba(245, 158, 11, 0.75);
- --warning-hover-bg: rgba(245, 158, 11, 0.9);
+ --warning-bg: rgba(240, 140, 10, 1);
+ --warning-light-bg: rgba(240, 140, 10, 0.12);
+ --warning-dark-bg: rgba(200, 110, 5, 1);
+ --warning-hover: rgba(240, 140, 10, 0.8);
+ --warning-hover-bg: rgba(240, 140, 10, 0.95);
--warning-text: #ffffff;
- --warning-border: rgba(202, 138, 4, 1);
- --warning-shadow: 0 2px 6px rgba(245, 158, 11, 0.3);
+ --warning-border: rgba(200, 110, 5, 1);
+ --warning-shadow: 0 3px 8px rgba(240, 140, 10, 0.35);
+
/* Info Variants */
- --info-bg: rgba(59, 130, 246, 1);
- --info-light-bg: rgba(59, 130, 246, 0.15);
- --info-dark-bg: rgba(37, 99, 235, 1);
- --info-hover: rgba(59, 130, 246, 0.75);
- --info-hover-bg: rgba(59, 130, 246, 0.9);
+ --info-bg: rgba(50, 100, 230, 1);
+ --info-light-bg: rgba(50, 100, 230, 0.12);
+ --info-dark-bg: rgba(30, 80, 190, 1);
+ --info-hover: rgba(50, 100, 230, 0.8);
+ --info-hover-bg: rgba(50, 100, 230, 0.95);
--info-text: #ffffff;
- --info-border: rgba(37, 99, 235, 1);
- --info-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
+ --info-border: rgba(30, 80, 190, 1);
+ --info-shadow: 0 3px 8px rgba(50, 100, 230, 0.35);
+
/* Accent Variants */
- --accent-bg: rgba(124, 58, 237, 1);
- --accent-light-bg: rgba(124, 58, 237, 0.15);
- --accent-dark-bg: rgba(91, 33, 182, 1);
- --accent-hover: rgba(124, 58, 237, 0.75);
- --accent-hover-bg: rgba(124, 58, 237, 0.9);
+ --accent-bg: rgba(100, 50, 220, 1);
+ --accent-light-bg: rgba(100, 50, 220, 0.12);
+ --accent-dark-bg: rgba(70, 30, 180, 1);
+ --accent-hover: rgba(100, 50, 220, 0.8);
+ --accent-hover-bg: rgba(100, 50, 220, 0.95);
--accent-text: #ffffff;
- --accent-border: rgba(91, 33, 182, 1);
- --accent-shadow: 0 2px 6px rgba(124, 58, 237, 0.3);
+ --accent-border: rgba(70, 30, 180, 1);
+ --accent-shadow: 0 3px 8px rgba(100, 50, 220, 0.35);
+
/* Shadows */
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
@@ -130,86 +138,86 @@
/* Dark Mode */
.dark-mode {
/* Neutral Colors for Dark Mode */
- --neutral-50: #121826; /* Dark background */
- --neutral-100: #1a2334;
- --neutral-200: #2b364a;
- --neutral-300: #3b4a62; /* Mid-dark for subtle contrasts */
- --neutral-400: #4a5d7c;
- --neutral-500: #5f728c; /* Accent dark neutral */
- --neutral-600: #718096;
- --neutral-700: #a0aec0;
- --neutral-800: #cbd5e0;
- --neutral-900: #e5eaf0; /* Lightest text on dark mode */
+ --neutral-50: #0f141e;
+ --neutral-100: #161e2b;
+ --neutral-200: #202a3b;
+ --neutral-300: #2c3a50;
+ --neutral-400: #3a4e6b;
+ --neutral-500: #52657e;
+ --neutral-600: #697a91;
+ --neutral-700: #b8c4d4;
+ --neutral-800: #d8e1ec;
+ --neutral-900: #f2f6fb;
/* Primary Variants */
- --primary-bg: rgba(37, 99, 235, 1);
- --primary-light-bg: rgba(37, 99, 235, 0.15);
- --primary-dark-bg: rgba(29, 78, 216, 1);
- --primary-hover: rgba(37, 99, 235, 0.75);
- --primary-hover-bg: rgba(37, 99, 235, 0.9);
- --primary-text: #e0f2fe; /* Light text for contrast */
- --primary-border: rgba(29, 78, 216, 1);
- --primary-shadow: 0 2px 6px rgba(37, 99, 235, 0.3);
+ --primary-bg: rgba(45, 105, 245, 1);
+ --primary-light-bg: rgba(45, 105, 245, 0.12);
+ --primary-dark-bg: rgba(35, 85, 200, 1);
+ --primary-hover: rgba(45, 105, 245, 0.8);
+ --primary-hover-bg: rgba(45, 105, 245, 0.95);
+ --primary-text: #dbeafe;
+ --primary-border: rgba(35, 85, 200, 1);
+ --primary-shadow: 0 4px 12px rgba(45, 105, 245, 0.3);
/* Secondary Variants */
- --secondary-bg: rgba(71, 85, 105, 1);
- --secondary-light-bg: rgba(71, 85, 105, 0.15);
- --secondary-dark-bg: rgba(55, 65, 81, 1);
- --secondary-hover: rgba(71, 85, 105, 0.75);
- --secondary-hover-bg: rgba(71, 85, 105, 0.9);
- --secondary-text: #f1f5f9;
- --secondary-border: rgba(55, 65, 81, 1);
- --secondary-shadow: 0 2px 6px rgba(71, 85, 105, 0.3);
+ --secondary-bg: rgba(80, 95, 120, 1);
+ --secondary-light-bg: rgba(80, 95, 120, 0.12);
+ --secondary-dark-bg: rgba(65, 75, 95, 1);
+ --secondary-hover: rgba(80, 95, 120, 0.8);
+ --secondary-hover-bg: rgba(80, 95, 120, 0.95);
+ --secondary-text: #e2e8f0;
+ --secondary-border: rgba(65, 75, 95, 1);
+ --secondary-shadow: 0 4px 12px rgba(80, 95, 120, 0.3);
/* Success Variants */
- --success-bg: rgba(4, 120, 87, 1);
- --success-light-bg: rgba(4, 120, 87, 0.15);
- --success-dark-bg: rgba(2, 85, 65, 1);
- --success-hover: rgba(4, 120, 87, 0.75);
- --success-hover-bg: rgba(4, 120, 87, 0.9);
- --success-text: #d1fae5;
- --success-border: rgba(2, 85, 65, 1);
- --success-shadow: 0 2px 6px rgba(4, 120, 87, 0.3);
+ --success-bg: rgba(6, 135, 92, 1);
+ --success-light-bg: rgba(6, 135, 92, 0.12);
+ --success-dark-bg: rgba(4, 100, 70, 1);
+ --success-hover: rgba(6, 135, 92, 0.8);
+ --success-hover-bg: rgba(6, 135, 92, 0.95);
+ --success-text: #bde7d8;
+ --success-border: rgba(4, 100, 70, 1);
+ --success-shadow: 0 4px 12px rgba(6, 135, 92, 0.3);
/* Danger Variants */
- --danger-bg: rgba(185, 28, 28, 1);
- --danger-light-bg: rgba(185, 28, 28, 0.15);
- --danger-dark-bg: rgba(153, 27, 27, 1);
- --danger-hover: rgba(185, 28, 28, 0.75);
- --danger-hover-bg: rgba(185, 28, 28, 0.9);
- --danger-text: #fecaca;
- --danger-border: rgba(153, 27, 27, 1);
- --danger-shadow: 0 2px 6px rgba(185, 28, 28, 0.3);
+ --danger-bg: rgba(200, 35, 35, 1);
+ --danger-light-bg: rgba(200, 35, 35, 0.12);
+ --danger-dark-bg: rgba(160, 25, 25, 1);
+ --danger-hover: rgba(200, 35, 35, 0.8);
+ --danger-hover-bg: rgba(200, 35, 35, 0.95);
+ --danger-text: #ffc7c7;
+ --danger-border: rgba(160, 25, 25, 1);
+ --danger-shadow: 0 4px 12px rgba(200, 35, 35, 0.3);
/* Warning Variants */
- --warning-bg: rgba(202, 138, 4, 1);
- --warning-light-bg: rgba(202, 138, 4, 0.15);
- --warning-dark-bg: rgba(161, 98, 7, 1);
- --warning-hover: rgba(202, 138, 4, 0.75);
- --warning-hover-bg: rgba(202, 138, 4, 0.9);
- --warning-text: #fde68a;
- --warning-border: rgba(161, 98, 7, 1);
- --warning-shadow: 0 2px 6px rgba(202, 138, 4, 0.3);
+ --warning-bg: rgba(220, 150, 10, 1);
+ --warning-light-bg: rgba(220, 150, 10, 0.12);
+ --warning-dark-bg: rgba(180, 120, 8, 1);
+ --warning-hover: rgba(220, 150, 10, 0.8);
+ --warning-hover-bg: rgba(220, 150, 10, 0.95);
+ --warning-text: #fde7b5;
+ --warning-border: rgba(180, 120, 8, 1);
+ --warning-shadow: 0 4px 12px rgba(220, 150, 10, 0.3);
/* Info Variants */
- --info-bg: rgba(37, 99, 235, 1);
- --info-light-bg: rgba(37, 99, 235, 0.15);
- --info-dark-bg: rgba(29, 78, 216, 1);
- --info-hover: rgba(37, 99, 235, 0.75);
- --info-hover-bg: rgba(37, 99, 235, 0.9);
- --info-text: #bfdbfe;
- --info-border: rgba(29, 78, 216, 1);
- --info-shadow: 0 2px 6px rgba(37, 99, 235, 0.3);
+ --info-bg: rgba(40, 110, 230, 1);
+ --info-light-bg: rgba(40, 110, 230, 0.12);
+ --info-dark-bg: rgba(30, 85, 200, 1);
+ --info-hover: rgba(40, 110, 230, 0.8);
+ --info-hover-bg: rgba(40, 110, 230, 0.95);
+ --info-text: #c9e7ff;
+ --info-border: rgba(30, 85, 200, 1);
+ --info-shadow: 0 4px 12px rgba(40, 110, 230, 0.3);
/* Accent Variants */
- --accent-bg: rgba(91, 33, 182, 1);
- --accent-light-bg: rgba(91, 33, 182, 0.15);
- --accent-dark-bg: rgba(72, 28, 152, 1);
- --accent-hover: rgba(91, 33, 182, 0.75);
- --accent-hover-bg: rgba(91, 33, 182, 0.9);
- --accent-text: #e9d5ff;
- --accent-border: rgba(72, 28, 152, 1);
- --accent-shadow: 0 2px 6px rgba(91, 33, 182, 0.3);
+ --accent-bg: rgba(100, 50, 200, 1);
+ --accent-light-bg: rgba(100, 50, 200, 0.12);
+ --accent-dark-bg: rgba(80, 40, 160, 1);
+ --accent-hover: rgba(100, 50, 200, 0.8);
+ --accent-hover-bg: rgba(100, 50, 200, 0.95);
+ --accent-text: #e7d1ff;
+ --accent-border: rgba(80, 40, 160, 1);
+ --accent-shadow: 0 4px 12px rgba(100, 50, 200, 0.3);
/* Shadows */
--shadow-sm: 0 1px 2px rgba(255, 255, 255, 0.1);
@@ -219,78 +227,111 @@
}
[data-variant="primary"] {
- --variant-bg: var(--primary-bg);
- --variant-light-bg: var(--primary-light-bg);
- --variant-dark-bg: var(--primary-dark-bg);
- --variant-text: var(--primary-text);
- --variant-shadow: var(--primary-shadow);
- --variant-border: var(--primary-border);
- --variant-hover-bg: var(--primary-hover-bg);
- --variant-hover: var(--primary-hover);
- }
-
- [data-variant="secondary"] {
- --variant-bg: var(--secondary-bg);
- --variant-light-bg: var(--secondary-light-bg);
- --variant-dark-bg: var(--secondary-dark-bg);
- --variant-text: var(--secondary-text);
- --variant-shadow: var(--secondary-shadow);
- --variant-border: var(--secondary-border);
- --variant-hover-bg: var(--secondary-hover-bg);
- --variant-hover: var(--secondary-hover);
- }
-
- [data-variant="accent"] {
- --variant-bg: var(--accent-bg);
- --variant-light-bg: var(--accent-light-bg);
- --variant-dark-bg: var(--accent-dark-bg);
- --variant-text: var(--accent-text);
- --variant-shadow: var(--accent-shadow);
- --variant-border: var(--accent-border);
- --variant-hover-bg: var(--accent-hover-bg);
- --variant-hover: var(--accent-hover);
- }
-
- [data-variant="success"] {
- --variant-bg: var(--success-bg);
- --variant-light-bg: var(--success-light-bg);
- --variant-dark-bg: var(--success-dark-bg);
- --variant-text: var(--success-text);
- --variant-shadow: var(--success-shadow);
- --variant-border: var(--success-border);
- --variant-hover-bg: var(--success-hover-bg);
- --variant-hover: var(--success-hover);
- }
-
- [data-variant="info"] {
- --variant-bg: var(--info-bg);
- --variant-light-bg: var(--info-light-bg);
- --variant-dark-bg: var(--info-dark-bg);
- --variant-text: var(--info-text);
- --variant-shadow: var(--info-shadow);
- --variant-border: var(--info-border);
- --variant-hover-bg: var(--info-hover-bg);
- --variant-hover: var(--info-hover);
- }
-
- [data-variant="danger"] {
- --variant-bg: var(--danger-bg);
- --variant-light-bg: var(--danger-light-bg);
- --variant-dark-bg: var(--danger-dark-bg);
- --variant-text: var(--danger-text);
- --variant-shadow: var(--danger-shadow);
- --variant-border: var(--danger-border);
- --variant-hover-bg: var(--danger-hover-bg);
- --variant-hover: var(--danger-hover);
- }
+ --variant-bg: var(--primary-bg); /* Sfondo principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo per contrasto su hover */
+ --variant-dark-bg: var(--primary-dark-bg); /* Bordo e ombre */
+ --variant-text: var(--neutral-900); /* Testo chiaro su sfondo */
+ --variant-shadow: var(--primary-shadow); /* Ombre leggere */
+ --variant-border: var(--primary-border); /* Bordo visibile */
+ --variant-hover-bg: var(--primary-hover-bg); /* Sfondo scuro su hover */
+ --variant-hover: var(--primary-hover); /* Colore per elementi interattivi */
+}
- [data-variant="warning"] {
- --variant-bg: var(--warning-bg);
- --variant-light-bg: var(--warning-light-bg);
- --variant-dark-bg: var(--warning-dark-bg);
- --variant-text: var(--warning-text);
- --variant-shadow: var(--warning-shadow);
- --variant-border: var(--warning-border);
- --variant-hover-bg: var(--warning-hover-bg);
- --variant-hover: var(--warning-hover);
- }
\ No newline at end of file
+[data-variant="secondary"] {
+ --variant-bg: var(--secondary-bg); /* Sfondo principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo su hover */
+ --variant-dark-bg: var(--secondary-dark-bg); /* Colore scuro */
+ --variant-text: var(--neutral-800); /* Testo leggibile */
+ --variant-shadow: var(--secondary-shadow); /* Ombre su sfondo */
+ --variant-border: var(--secondary-border); /* Bordo chiaro */
+ --variant-hover-bg: var(--secondary-hover-bg); /* Hover background */
+ --variant-hover: var(--secondary-hover); /* Hover foreground */
+}
+
+[data-variant="accent"] {
+ --variant-bg: var(--accent-bg); /* Sfondo viola principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo chiaro su hover */
+ --variant-dark-bg: var(--accent-dark-bg); /* Dettagli scuri */
+ --variant-text: var(--accent-text); /* Testo molto chiaro */
+ --variant-shadow: var(--accent-shadow); /* Ombre morbide */
+ --variant-border: var(--accent-border); /* Bordo viola intenso */
+ --variant-hover-bg: var(--accent-hover-bg); /* Viola più scuro su hover */
+ --variant-hover: var(--accent-hover); /* Elementi hover interattivi */
+}
+
+[data-variant="success"] {
+ --variant-bg: var(--success-bg); /* Verde scuro principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--success-dark-bg); /* Verde più scuro */
+ --variant-text: var(--success-text); /* Testo verde chiaro */
+ --variant-shadow: var(--success-shadow); /* Ombre leggere */
+ --variant-border: var(--success-border); /* Verde intenso per bordo */
+ --variant-hover-bg: var(--success-hover-bg); /* Hover verde scuro */
+ --variant-hover: var(--success-hover); /* Hover foreground */
+}
+
+[data-variant="info"] {
+ --variant-bg: var(--info-bg); /* Blu acceso principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--info-dark-bg); /* Blu profondo */
+ --variant-text: var(--info-text); /* Testo blu chiaro */
+ --variant-shadow: var(--info-shadow); /* Ombre morbide */
+ --variant-border: var(--info-border); /* Bordo blu intenso */
+ --variant-hover-bg: var(--info-hover-bg); /* Blu più scuro su hover */
+ --variant-hover: var(--info-hover); /* Elementi hover */
+}
+
+[data-variant="danger"] {
+ --variant-bg: var(--danger-bg); /* Rosso acceso principale */
+ --variant-light-bg: var(--neutral-300); /* Sfondo chiaro */
+ --variant-dark-bg: var(--danger-dark-bg); /* Rosso profondo */
+ --variant-text: var(--danger-text); /* Testo chiaro */
+ --variant-shadow: var(--danger-shadow); /* Ombre morbide */
+ --variant-border: var(--danger-border); /* Bordo rosso intenso */
+ --variant-hover-bg: var(--danger-hover-bg); /* Rosso più scuro su hover */
+ --variant-hover: var(--danger-hover); /* Hover foreground */
+}
+
+[data-variant="warning"] {
+ --variant-bg: var(--warning-bg); /* Arancione brillante principale */
+ --variant-light-bg: var(--neutral-200); /* Sfondo chiaro */
+ --variant-dark-bg: var(--warning-dark-bg); /* Arancione scuro */
+ --variant-text: var(--warning-text); /* Testo chiaro */
+ --variant-shadow: var(--warning-shadow); /* Ombre morbide */
+ --variant-border: var(--warning-border); /* Bordo arancione intenso */
+ --variant-hover-bg: var(--warning-hover-bg); /* Arancione più scuro su hover */
+ --variant-hover: var(--warning-hover); /* Hover foreground */
+}
+
+[data-variant="default"] {
+ --variant-bg: var(--neutral-100); /* Sfondo principale chiaro */
+ --variant-light-bg: var(--neutral-50); /* Sfondo molto chiaro */
+ --variant-dark-bg: var(--neutral-300); /* Sfondo scuro per contrasti */
+ --variant-text: var(--neutral-900); /* Testo scuro */
+ --variant-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Ombra leggera */
+ --variant-border: var(--neutral-200); /* Bordo chiaro */
+ --variant-hover-bg: var(--neutral-200); /* Sfondo scuro su hover */
+ --variant-hover: var(--neutral-700); /* Colore del testo su hover */
+}
+
+[data-variant="dark"] {
+ --variant-bg: var(--neutral-800); /* Sfondo principale scuro */
+ --variant-light-bg: var(--neutral-700); /* Sfondo interattivo più chiaro */
+ --variant-dark-bg: var(--neutral-900); /* Sfondo più scuro */
+ --variant-text: var(--neutral-50); /* Testo chiaro */
+ --variant-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); /* Ombra profonda */
+ --variant-border: var(--neutral-600); /* Bordo scuro */
+ --variant-hover-bg: var(--neutral-600); /* Sfondo chiaro su hover */
+ --variant-hover: var(--neutral-300); /* Colore interattivo su hover */
+}
+
+[data-variant="light"] {
+ --variant-bg: var(--neutral-50); /* Sfondo molto chiaro */
+ --variant-light-bg: var(--neutral-100); /* Sfondo chiaro intermedio */
+ --variant-dark-bg: var(--neutral-200); /* Sfondo scuro per accenti */
+ --variant-text: var(--neutral-700); /* Testo scuro */
+ --variant-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); /* Ombra morbida */
+ --variant-border: var(--neutral-300); /* Bordo leggero */
+ --variant-hover-bg: var(--neutral-200); /* Sfondo scuro su hover */
+ --variant-hover: var(--neutral-500); /* Testo interattivo su hover */
+}
\ No newline at end of file
From f0e093762bda92d77382419cfb8806ff6a6e54d7 Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 21:49:41 +0100
Subject: [PATCH 4/7] Color Palette Component Adjustament
---
src/css/bundle.css | 1511 ++++++++++++------------
src/css/components/accordion.css | 51 +-
src/css/components/alert.css | 32 +-
src/css/components/avatar.css | 34 +-
src/css/components/badge.css | 10 +-
src/css/components/breadcrumbs.css | 9 +-
src/css/components/button.css | 10 +-
src/css/components/calendar.css | 393 +++---
src/css/components/card.css | 78 +-
src/css/components/codeblock.css | 15 +-
src/css/components/command-palette.css | 2 +-
src/css/components/datetime-picker.css | 2 +-
src/css/components/dropdown.css | 30 +-
src/css/components/fab.css | 37 +-
src/css/components/file-upload.css | 2 +-
src/css/components/form.css | 52 +-
src/css/components/hero.css | 360 +++---
src/css/components/hologram.css | 4 +-
src/css/components/modal.css | 36 +-
src/css/components/multiselect.css | 38 +-
src/css/components/stat-metrics.css | 305 +++--
21 files changed, 1545 insertions(+), 1466 deletions(-)
diff --git a/src/css/bundle.css b/src/css/bundle.css
index f31fce4..05bc9a9 100644
--- a/src/css/bundle.css
+++ b/src/css/bundle.css
@@ -662,9 +662,21 @@ blockquote {
margin: auto;
padding: var(--space-4);
border-radius: var(--radius-lg);
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- background-color: var(--neutral-50);
- transition: padding 0.3s ease, box-shadow 0.3s ease;
+ box-shadow: var(--variant-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));
+ background-color: var(--variant-bg, var(--neutral-50));
+ transition: padding 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
+}
+
+.kroma-accordion-container[data-variant="default"],
+.kroma-accordion-container:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-light-bg: var(--neutral-50);
+ --variant-dark-bg: var(--neutral-300);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ --variant-border: var(--neutral-200);
+ --variant-hover-bg: var(--neutral-200);
+ --variant-hover: var(--neutral-700);
}
.kroma-accordion-container[data-responsive="auto"] {
@@ -676,9 +688,6 @@ blockquote {
/* Accordion Item */
.kroma-accordion-item {
- border-bottom: 1px solid var(--neutral-200);
-}
-.kroma-accordion-item:last-child {
border-bottom: none;
}
@@ -691,57 +700,57 @@ blockquote {
padding: clamp(var(--space-3), 1.5vw, var(--space-5));
font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);
font-weight: 600;
- color: var(--neutral-700);
+ color: var(--variant-text, var(--neutral-700));
cursor: pointer;
- background-color: var(--neutral-50);
- border: 1px solid transparent;
+ background-color: var(--variant-bg, var(--neutral-50));
+ border: 1px solid var(--variant-border, transparent);
border-radius: var(--radius-lg);
- transition: background-color 0.3s ease, box-shadow 0.3s ease;
+ transition: background-color 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.kroma-accordion-header:hover,
.kroma-accordion-header:focus {
- background-color: var(--neutral-100);
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
+ background-color: var(--variant-hover-bg, var(--neutral-100));
+ box-shadow: 0 0 8px var(--variant-shadow, rgba(0, 0, 0, 0.1));
outline: none;
}
.kroma-accordion-header:focus-visible {
- border: 1px solid var(--focus-color);
+ border-color: var(--focus-color);
}
/* Accordion Content */
.kroma-accordion-content {
height: 0;
overflow: hidden;
- transition: height 0.4s ease, padding 0.3s ease;
+ transition: height 0.4s ease, padding 0.3s ease, background-color 0.3s ease;
padding: 0 var(--space-3);
- background-color: var(--neutral-50);
+ background-color: var(--variant-light-bg, var(--neutral-50));
}
.kroma-accordion-content[data-expanded="true"] {
height: auto;
padding: var(--space-3) var(--space-4);
+ margin-top: var(--space-3);
}
/* Sub-Item */
.kroma-accordion-sub-item {
- border-top: 1px solid var(--neutral-200);
padding-left: var(--space-4);
- transition: padding 0.3s ease;
+ transition: padding 0.3s ease, border-color 0.3s ease;
}
.kroma-accordion-sub-header {
padding: clamp(var(--space-2), 1vw, var(--space-4));
font-size: 0.9rem;
font-weight: 500;
- color: var(--neutral-500);
+ color: var(--variant-text, var(--neutral-500));
cursor: pointer;
- background: var(--neutral-50);
+ background: var(--variant-light-bg, var(--neutral-50));
border: none;
text-align: left;
width: 100%;
border-radius: var(--radius-lg);
- transition: background-color 0.3s ease;
+ transition: background-color 0.3s ease, color 0.3s ease;
}
.kroma-accordion-sub-header:hover {
- background-color: var(--neutral-100);
+ background-color: var(--variant-hover-bg, var(--neutral-100));
}
/* Variants */
@@ -791,17 +800,29 @@ blockquote {
padding: clamp(var(--space-4), 1vw + var(--space-3), var(--space-6));
margin: var(--space-4) auto;
border-radius: var(--radius-md);
- box-shadow: var(--shadow-md);
+ box-shadow: var(--variant-shadow, var(--shadow-md));
font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
position: relative;
- transition: max-height 0.5s ease-in-out, opacity 0.4s ease-in-out;
+ transition: max-height 0.5s ease-in-out, opacity 0.4s ease-in-out, background-color 0.3s ease;
opacity: 1;
- background-color: var(--neutral-50);
- color: var(--neutral-900);
+ background-color: var(--variant-bg, var(--neutral-50));
+ color: var(--variant-text, var(--neutral-900));
gap: var(--space-3);
+ max-height: 500px;
overflow: hidden;
- max-height: 500px; /* Set an arbitrary large value to allow transition */
- overflow: hidden; /* Prevent overflow during the transition */
+}
+
+.kroma-alert[data-variant="default"],
+.kroma-alert:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: var(--shadow-md);
+ --variant-border: var(--neutral-200);
+ --variant-hover-bg: var(--neutral-200);
+}
+
+.kroma-alert:hover {
+ background-color: var(--variant-hover-bg, var(--neutral-200));
}
/* Variant Styles */
@@ -834,11 +855,6 @@ blockquote {
border-radius: var(--radius-xl);
}
-.kroma-alert[data-shape="circle"] {
- border-radius: var(--radius-full);
- padding: var(--space-4);
-}
-
/* Icon */
.kroma-alert-icon {
font-size: clamp(1.5rem, 2vw, 2rem);
@@ -882,8 +898,7 @@ blockquote {
transition: var(--transition-colors);
}
-.kroma-alert[data-shape="rounded"] .kroma-alert-close,
-.kroma-alert[data-shape="circle"] .kroma-alert-close {
+.kroma-alert[data-shape="rounded"] .kroma-alert-close {
top: var(--space-4);
right: var(--space-4);
}
@@ -924,8 +939,16 @@ blockquote {
font-weight: 500;
position: relative;
transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
- box-shadow: var(--shadow-sm);
- isolation: isolate; /* Prevent nested contexts from affecting styles */
+ box-shadow: var(--variant-shadow, var(--shadow-sm));
+ isolation: isolate;
+}
+
+.kroma-avatar[data-variant="default"],
+.kroma-avatar:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: var(--shadow-sm);
+ --variant-border: var(--neutral-200);
}
/* Avatar Sizes */
@@ -966,6 +989,8 @@ blockquote {
.kroma-avatar[data-variant] {
background-color: var(--variant-bg);
color: var(--variant-text);
+ box-shadow: var(--variant-shadow);
+ border: 1px solid var(--variant-border);
}
/* Ghost Variant */
@@ -976,7 +1001,7 @@ blockquote {
box-shadow: none;
}
-.kroma-avatar[data-variant="ghost"] .avatar-status {
+.kroma-avatar[data-variant="ghost"] .kroma-avatar-status {
background-color: transparent;
border: 2px dashed var(--neutral-400);
}
@@ -992,14 +1017,14 @@ blockquote {
.kroma-avatar img:hover {
transform: scale(1.1);
-} /* Zoom effect on hover */
+}
/* Initials Avatar */
.kroma-avatar-initials {
font-size: inherit;
- font-weight: 700; /* Bold initials for better visibility */
- line-height: 1; /* Prevent misalignment */
- text-transform: uppercase; /* Uniform appearance for initials */
+ font-weight: 700;
+ line-height: 1;
+ text-transform: uppercase;
}
/* Status Indicators */
@@ -1010,7 +1035,7 @@ blockquote {
width: 0.75rem;
height: 0.75rem;
border-radius: 50%;
- border: 2px solid var(--status-border-color, #fff); /* Customizable border color */
+ border: 2px solid var(--status-border-color, #fff);
background-color: var(--status-color, var(--success-bg));
box-shadow: var(--shadow-sm);
}
@@ -1039,9 +1064,9 @@ blockquote {
}
.kroma-avatar-group .kroma-avatar:not(:first-child) {
- margin-left: -0.5rem; /* Overlap effect */
- border: 2px solid var(--group-border-color, #fff); /* Customizable overlap border */
- box-shadow: var(--shadow-sm); /* Slight shadow for depth */
+ margin-left: -0.5rem;
+ border: 2px solid var(--group-border-color, #fff);
+ box-shadow: var(--shadow-sm);
}
/* Pulsing Avatar Effect */
@@ -1078,7 +1103,7 @@ blockquote {
.kroma-avatar[data-disabled="true"] {
opacity: 0.5;
cursor: not-allowed;
- pointer-events: none; /* Prevent interaction */
+ pointer-events: none;
}
/* Bordered Avatar */
@@ -1115,7 +1140,15 @@ blockquote {
text-transform: uppercase;
white-space: nowrap;
transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
- box-shadow: var(--shadow-sm);
+ box-shadow: var(--variant-shadow, var(--shadow-sm));
+}
+
+.kroma-badge[data-variant="default"],
+.kroma-badge:not([data-variant]) {
+ --variant-bg: var(--neutral-700);
+ --variant-text: #ffffff;
+ --variant-shadow: var(--shadow-sm);
+ --variant-light-bg: var(--neutral-500);
}
/* Outline Variant */
@@ -1220,6 +1253,13 @@ blockquote {
transition: color 0.3s ease;
}
+.kroma-breadcrumbs[data-variant="default"],
+.kroma-breadcrumbs:not([data-variant]) {
+ --variant-text: var(--neutral-700);
+ --variant-hover: var(--primary-hover);
+ --variant-separator: var(--neutral-400);
+}
+
/* Breadcrumb Item */
.kroma-breadcrumb-item {
display: inline-flex;
@@ -1271,7 +1311,7 @@ blockquote {
/* Breadcrumb Color Variants */
.kroma-breadcrumbs[data-variant] {
- --variant-text: var(--variant-bg); /* Fallback to --variant-bg for text color */
+ --variant-text: var(--variant-bg);
--variant-hover: var(--variant-hover-bg);
--variant-separator: var(--variant-light-bg);
}
@@ -1312,10 +1352,18 @@ blockquote {
transition: color var(--transition-colors), background-color var(--transition-colors), transform 0.2s;
background: var(--kroma-btn-bg, var(--primary-bg));
color: var(--kroma-btn-color, var(--primary-text));
- box-shadow: var(--shadow-md);
+ box-shadow: var(--variant-shadow, var(--shadow-md));
overflow: hidden;
}
+.kroma-btn[data-variant="default"],
+.kroma-btn:not([data-variant]) {
+ --kroma-btn-bg: var(--neutral-700);
+ --kroma-btn-bg-hover: var(--neutral-800);
+ --kroma-btn-color: #fff;
+ --variant-shadow: var(--shadow-sm);
+}
+
/* Hover and Active States */
.kroma-btn:hover {
background: var(--kroma-btn-bg-hover, var(--primary-hover-bg));
@@ -1515,211 +1563,209 @@ blockquote {
/* --- calendar.css --- */
/* Calendar Container */
.kroma-calendar {
- max-width: 100%;
- width: 100%;
- font-family: var(--font-sans);
- color: var(--neutral-800);
- background-color: var(--neutral-50);
- border-radius: var(--radius-lg);
- box-shadow: var(--shadow-xl);
- padding: var(--space-4);
- overflow: hidden;
- transition: var(--transition-all);
- }
-
- /* Calendar Variant Colors */
- .kroma-calendar {
- --calendar-bg: var(--variant-bg);
- --calendar-text: var(--variant-text);
- --calendar-hover-bg: var(--variant-hover);
- --calendar-selected-bg: var(--variant-light-bg);
- --calendar-today-border: var(--variant-border);
- --calendar-scrollbar: var(--variant-dark-bg);
- }
-
- /* Calendar Header */
- .kroma-calendar-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: var(--space-4);
- background-color: var(--calendar-bg, var(--neutral-200));
- color: var(--calendar-text, var(--neutral-800));
- border-radius: var(--radius-md);
- font-size: clamp(1.5rem, 2.5vw, 1.75rem);
- text-transform: uppercase;
- gap: var(--space-4);
- height: clamp(3rem, 6vw, 4rem);
- }
-
- /* Navigation Icons */
- .kroma-calendar-nav {
- background: none;
- border: none;
- color: var(--neutral-800);
- font-size: clamp(2rem, 4vw, 2.5rem);
- cursor: pointer;
- transition: color var(--transition-colors), transform var(--transition-transform);
- display: flex;
- align-items: center;
- }
-
- .kroma-calendar-nav:hover {
- color: var(--calendar-hover-bg, var(--neutral-600));
- transform: scale(1.2);
- }
-
- /* Month and Year Display */
- .kroma-calendar-month-year {
- font-size: clamp(1.5rem, 3vw, 1.75rem);
- font-weight: bold;
- text-align: center;
- flex-grow: 1;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- /* Month and Year Selectors */
- .kroma-calendar-selectors {
- display: flex;
- gap: var(--space-2);
- margin-top: var(--space-2);
- }
-
- .kroma-calendar-selectors select {
- padding: var(--space-2) var(--space-3);
- font-size: clamp(0.875rem, 1vw, 1rem);
- border-radius: var(--radius-md);
- border: 1px solid var(--neutral-300);
- color: var(--neutral-800);
- background-color: var(--neutral-100);
- outline: none;
- cursor: pointer;
- appearance: none;
- transition: background-color var(--transition-colors), border-color var(--transition-colors);
- }
-
- /* Calendar Body */
- .kroma-calendar-body {
- padding: var(--space-4);
- }
-
- /* Weekday Names and Dates */
- .kroma-calendar-weekdays,
- .kroma-calendar-dates {
- display: grid;
- grid-template-columns: repeat(7, 1fr);
- gap: var(--space-2);
- margin-top: var(--space-2);
- justify-items: center;
- align-items: center;
- }
-
- /* Weekday Styling */
- .kroma-calendar-weekdays div {
- text-align: center;
- font-weight: 600;
- color: var(--neutral-600);
- padding: var(--space-1) 0;
- border-radius: var(--radius-sm);
- }
-
- /* Dates Styling */
- .kroma-calendar-dates button {
- position: relative;
- width: 100%;
- height: clamp(3.5rem, 7vw, 4.5rem);
- max-height: 5rem;
- text-align: center;
- background: none;
- border: none;
- border-radius: var(--radius-md);
- font-size: clamp(0.875rem, 1vw, 1rem);
- color: var(--neutral-800);
- cursor: pointer;
- transition: background-color var(--transition-colors), color var(--transition-colors), box-shadow var(--transition-all);
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- flex-direction: column;
- }
-
- /* Hover and Selected Date Effects */
- .kroma-calendar-dates button:hover {
- background-color: var(--calendar-hover-bg, var(--neutral-300));
- color: var(--calendar-text);
- }
-
- .kroma-calendar-dates button[data-selected="true"] {
- background-color: var(--calendar-selected-bg);
- color: var(--calendar-text);
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- }
-
- .kroma-calendar-dates button[data-today="true"] {
- border: 2px solid var(--calendar-today-border);
- border-radius: var(--radius-md);
- }
-
- /* Disabled Dates */
- .kroma-calendar-dates button[data-disabled="true"] {
- color: var(--neutral-400);
- cursor: not-allowed;
- }
-
- /* Calendar Variant with Items */
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button {
- display: flex;
- flex-direction: column;
- padding: var(--space-1) var(--space-2);
- overflow-y: auto;
- }
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates .date-item {
- font-size: 0.75rem;
- color: var(--neutral-500);
- background-color: var(--neutral-200);
- border-radius: var(--radius-sm);
- padding: 0.125rem var(--space-1);
- margin-top: var(--space-1);
- white-space: nowrap;
- }
-
- /* Scrollbar for Day Cells */
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar {
- width: 6px;
- }
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-thumb {
- background-color: var(--calendar-scrollbar);
- border-radius: var(--radius-md);
+ max-width: 100%;
+ width: 100%;
+ font-family: var(--font-sans);
+ border-radius: var(--radius-lg);
+ box-shadow: var(--shadow-xl);
+ padding: var(--space-4);
+ overflow: hidden;
+ transition: var(--transition-all);
+ background-color: var(--calendar-bg, var(--neutral-100));
+ color: var(--calendar-text, var(--neutral-800));
+}
+
+/* Dynamic Variant Handling */
+.kroma-calendar {
+ --calendar-bg: var(--variant-bg, var(--neutral-100));
+ --calendar-text: var(--variant-text, var(--neutral-800));
+ --calendar-hover-bg: var(--variant-light-bg, var(--neutral-300));
+ --calendar-selected-bg: var(--variant-hover, var(--neutral-200));
+ --calendar-today-border: var(--variant-border, var(--neutral-500));
+ --calendar-scrollbar: var(--variant-dark-bg, var(--neutral-400));
+}
+
+/* Calendar Header */
+.kroma-calendar-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--space-4);
+ background-color: var(--calendar-bg);
+ color: var(--calendar-text);
+ border-radius: var(--radius-md);
+ font-size: clamp(1.5rem, 2.5vw, 1.75rem);
+ text-transform: uppercase;
+ gap: var(--space-4);
+ height: clamp(3.5rem, 7vw, 4.5rem);
+}
+
+/* Navigation Icons */
+.kroma-calendar-nav {
+ background: none;
+ border: none;
+ color: var(--calendar-text);
+ font-size: clamp(2rem, 4vw, 2.5rem);
+ cursor: pointer;
+ transition: color var(--transition-colors), transform var(--transition-transform);
+ display: flex;
+ align-items: center;
+}
+
+.kroma-calendar-nav:hover {
+ color: var(--calendar-hover-bg);
+ transform: scale(1.2);
+}
+
+/* Month and Year Display */
+.kroma-calendar-month-year {
+ font-size: clamp(1.5rem, 3vw, 1.75rem);
+ font-weight: bold;
+ text-align: center;
+ flex-grow: 1;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+/* Month and Year Selectors */
+.kroma-calendar-selectors {
+ display: flex;
+ gap: var(--space-2);
+ margin-top: var(--space-2);
+}
+
+.kroma-calendar-selectors select {
+ padding: var(--space-2) var(--space-3);
+ font-size: clamp(0.875rem, 1vw, 1rem);
+ border-radius: var(--radius-md);
+ border: 1px solid var(--neutral-300);
+ color: var(--neutral-800);
+ background-color: var(--neutral-100);
+ outline: none;
+ cursor: pointer;
+ appearance: none;
+ transition: background-color var(--transition-colors), border-color var(--transition-colors);
+}
+
+/* Calendar Body */
+.kroma-calendar-body {
+ padding: var(--space-4);
+}
+
+/* Weekday Names and Dates */
+.kroma-calendar-weekdays,
+.kroma-calendar-dates {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ gap: var(--space-2);
+ margin-top: var(--space-2);
+ justify-items: center;
+ align-items: center;
+}
+
+/* Weekday Styling */
+.kroma-calendar-weekdays div {
+ text-align: center;
+ font-weight: 600;
+ color: var(--neutral-200);
+ padding: var(--space-1) 0;
+ border-radius: var(--radius-sm);
+}
+
+/* Dates Styling */
+.kroma-calendar-dates button {
+ position: relative;
+ width: 100%;
+ height: clamp(4rem, 8vw, 5rem);
+ text-align: center;
+ background: none;
+ border: none;
+ border-radius: var(--radius-md);
+ font-size: clamp(1rem, 1vw, 1.125rem);
+ color: var(--calendar-text);
+ cursor: pointer;
+ transition: background-color var(--transition-colors), color var(--transition-colors), box-shadow var(--transition-all);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+}
+
+/* Hover and Selected Date Effects */
+.kroma-calendar-dates button:hover {
+ background-color: var(--calendar-hover-bg);
+ color: var(--calendar-text);
+}
+
+.kroma-calendar-dates button[data-selected="true"] {
+ background-color: var(--calendar-selected-bg);
+ color: var(--calendar-text);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.kroma-calendar-dates button[data-today="true"] {
+ border: 2px solid var(--calendar-today-border);
+ border-radius: var(--radius-md);
+}
+
+/* Disabled Dates */
+.kroma-calendar-dates button[data-disabled="true"] {
+ color: var(--neutral-400);
+ cursor: not-allowed;
+}
+
+/* Calendar Variant with Items */
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button {
+ display: flex;
+ flex-direction: column;
+ padding: var(--space-1) var(--space-2);
+ overflow-y: auto;
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates .date-item {
+ font-size: 0.75rem;
+ color: var(--neutral-800);
+ background-color: var(--neutral-200);
+ border-radius: var(--radius-sm);
+ padding: 0.125rem var(--space-1);
+ margin-top: var(--space-1);
+ white-space: nowrap;
+}
+
+/* Scrollbar for Day Cells */
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar {
+ width: 6px;
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-thumb {
+ background-color: var(--calendar-scrollbar);
+ border-radius: var(--radius-md);
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-track {
+ background-color: var(--neutral-200);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ .kroma-calendar {
+ padding: var(--space-2);
}
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-track {
- background-color: var(--neutral-200);
+
+ .kroma-calendar-header {
+ flex-wrap: nowrap;
+ gap: var(--space-2);
+ height: auto;
}
-
- /* Responsive Adjustments */
- @media (max-width: 768px) {
- .kroma-calendar {
- padding: var(--space-2);
- }
-
- .kroma-calendar-header {
- flex-wrap: nowrap;
- gap: var(--space-2);
- height: auto;
- }
-
- .kroma-calendar-weekdays div,
- .kroma-calendar-dates button {
- font-size: clamp(0.75rem, 1.5vw, 0.875rem);
- height: clamp(2.5rem, 10vw, 3rem);
- }
+
+ .kroma-calendar-weekdays div,
+ .kroma-calendar-dates button {
+ font-size: clamp(0.85rem, 1.5vw, 1rem);
+ height: clamp(3rem, 10vw, 4rem);
}
-
+}
+
/* --- card.css --- */
/* Base Card Styles */
@@ -1744,13 +1790,47 @@ blockquote {
box-shadow: var(--card-hover-shadow, var(--shadow-xl));
}
+/* Card Variants */
+.kroma-card {
+ --card-bg: var(--variant-bg, var(--neutral-50));
+ --card-text: var(--variant-text, var(--neutral-900));
+ --card-header-text: var(--variant-text, var(--neutral-800));
+ --card-body-text: var(--variant-text, var(--neutral-700));
+ --card-footer-bg: var(--variant-light-bg, var(--neutral-100));
+ --card-footer-text: var(--variant-text, var(--neutral-900));
+ --card-hover-shadow: var(--variant-shadow, var(--shadow-xl));
+}
+
+/* Outline Style */
+.kroma-card[data-variant="outline"] {
+ background-color: transparent;
+ border: 1px solid var(--variant-border);
+ color: var(--variant-text);
+}
+
+.kroma-card[data-variant="outline"]:hover {
+ box-shadow: var(--card-hover-shadow, var(--shadow-lg));
+}
+
+/* Elevated Variant */
+.kroma-card[data-variant="elevated"] {
+ background-color: var(--variant-bg);
+ box-shadow: var(--shadow-xl);
+}
+
+/* Flat Variant */
+.kroma-card[data-variant="flat"] {
+ background-color: transparent;
+ box-shadow: none;
+}
+
/* Card Header */
.kroma-card-header {
width: 100%;
padding: var(--space-5) var(--space-6);
font-weight: bold;
font-size: 1.25rem;
- color: var(--card-header-text, var(--neutral-800));
+ color: var(--card-header-text);
border-bottom: 1px solid var(--card-header-border, var(--neutral-200));
text-align: center;
}
@@ -1771,7 +1851,7 @@ blockquote {
.kroma-card-body {
padding: var(--space-6);
text-align: center;
- color: var(--card-body-text, var(--neutral-700));
+ color: var(--card-body-text);
font-size: 1rem;
flex: 1 0 auto; /* Ensure body grows to fill available space */
}
@@ -1780,49 +1860,15 @@ blockquote {
.kroma-card-footer {
width: 100%;
padding: var(--space-4) var(--space-6);
- background-color: var(--card-footer-bg, var(--neutral-100));
+ background-color: var(--card-footer-bg);
border-top: 1px solid var(--card-footer-border, var(--neutral-200));
display: flex;
justify-content: center;
gap: var(--space-2);
- color: var(--card-footer-text, var(--neutral-900));
+ color: var(--card-footer-text);
flex-shrink: 0; /* Prevent footer from shrinking */
}
-/* Card Variants */
-.kroma-card[data-variant] {
- --card-bg: var(--variant-bg);
- --card-text: var(--variant-text);
- --card-header-text: var(--variant-text);
- --card-body-text: var(--variant-text);
- --card-footer-bg: var(--variant-light-bg, var(--neutral-200));
- --card-footer-text: var(--variant-text);
- --card-hover-shadow: var(--variant-shadow, var(--shadow-xl));
-}
-
-/* Outline Style */
-.kroma-card[data-variant="outline"] {
- background-color: transparent;
- border: 1px solid var(--variant-border);
- color: var(--variant-text);
-}
-
-.kroma-card[data-variant="outline"]:hover {
- box-shadow: var(--card-hover-shadow, var(--shadow-lg));
-}
-
-/* Elevated Variant */
-.kroma-card[data-variant="elevated"] {
- background-color: var(--variant-bg);
- box-shadow: var(--shadow-xl);
-}
-
-/* Flat Variant */
-.kroma-card[data-variant="flat"] {
- background-color: transparent;
- box-shadow: none;
-}
-
/* Labels */
.kroma-card-label {
position: absolute;
@@ -1866,6 +1912,7 @@ blockquote {
align-self: stretch; /* Stretch footer to align with the card's layout */
}
+/* Scrollable Cards */
.kroma-card-scrollable {
display: flex;
overflow-x: auto;
@@ -1887,7 +1934,6 @@ blockquote {
background-color: var(--neutral-200); /* Scrollbar track color */
}
-/* Scrollable Cards */
.kroma-card-scrollable .kroma-card {
flex: 0 0 auto;
scroll-snap-align: center; /* Center cards in the viewport */
@@ -1943,11 +1989,11 @@ blockquote {
/* --- codeblock.css --- */
/* Base Styling for Code Block */
.kroma-code-block {
- background: var(--variant-bg);
- color: var(--variant-text);
- border: 1px solid var(--variant-border);
+ background: var(--variant-bg, var(--neutral-50));
+ color: var(--variant-text, var(--neutral-900));
+ border: 1px solid var(--variant-border, var(--neutral-200));
border-radius: var(--radius-lg);
- box-shadow: var(--variant-shadow);
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
padding: clamp(var(--space-3), 2vw, var(--space-5));
position: relative;
overflow: hidden;
@@ -1964,6 +2010,7 @@ blockquote {
max-width: 80%;
}
}
+
@media (min-width: 1024px) {
.kroma-code-block {
margin: var(--space-6) auto;
@@ -2038,8 +2085,8 @@ blockquote {
}
.kroma-code-block .kroma-action-btn {
- background: var(--variant-hover-bg);
- color: var(--variant-text);
+ background: var(--variant-hover-bg, var(--neutral-200));
+ color: var(--variant-text, var(--neutral-900));
border: none;
border-radius: var(--radius-md);
padding: clamp(var(--space-2), 1vw, var(--space-3)) var(--space-4);
@@ -2052,7 +2099,7 @@ blockquote {
}
.kroma-code-block .kroma-action-btn:hover {
- background: var(--variant-hover);
+ background: var(--variant-hover, var(--neutral-300));
transform: scale(1.05);
}
@@ -2162,7 +2209,7 @@ blockquote {
.kroma-command-palette .kroma-palette-item:hover,
.kroma-command-palette .kroma-palette-item:focus {
background: var(--palette-item-hover-bg, var(--variant-hover-bg));
- color: var(--neutral-700);
+ color: var(--palette-item-hover-text, var(--neutral-700));
}
.kroma-command-palette .kroma-palette-item[data-active="true"] {
@@ -2354,7 +2401,7 @@ blockquote {
.kroma-quick-select button:hover {
background-color: var(--variant-hover-bg, var(--neutral-400));
color: #fff;
-}
+}
/* Time Selector */
.kroma-time-selector {
@@ -2437,7 +2484,7 @@ blockquote {
/* Dropdown Menu */
.kroma-dropdown-menu {
position: absolute;
- top: calc(100% + var(--space-1)); /* Reduced spacing for closer alignment */
+ top: calc(100% + var(--space-1));
left: 0;
min-width: 150px;
background-color: var(--variant-bg, var(--neutral-50));
@@ -2446,7 +2493,7 @@ blockquote {
border-radius: var(--radius-lg);
padding: var(--space-2) 0;
opacity: 0;
- transform: translateY(-5px); /* Slight offset for a subtle animation effect */
+ transform: translateY(-5px);
transition: opacity 0.3s ease, transform 0.3s ease;
visibility: hidden;
z-index: var(--z-30);
@@ -2456,7 +2503,7 @@ blockquote {
/* Active State for Dropdown */
.kroma-dropdown.kroma-open .kroma-dropdown-menu {
opacity: 1;
- transform: translateY(0); /* Reset translation when active */
+ transform: translateY(0);
visibility: visible;
}
@@ -2475,36 +2522,26 @@ blockquote {
.kroma-dropdown-item:hover,
.kroma-dropdown-item:focus {
- background-color: var(--variant-hover-bg, var(--neutral-200));
- color: var(--variant-hover, var(--primary));
+ background-color: var(--variant-dark-bg, var(--neutral-200));
}
/* Position Variants */
.kroma-dropdown[data-position="top"] .kroma-dropdown-menu {
top: auto;
- bottom: calc(100% + var(--space-1)); /* Reduced spacing for top positioning */
- transform: translateY(5px); /* Subtle animation effect */
+ bottom: calc(100% + var(--space-1));
+ transform: translateY(5px);
}
.kroma-dropdown[data-position="right"] .kroma-dropdown-menu {
top: 0;
- left: calc(100% + var(--space-1)); /* Reduced spacing for right positioning */
- transform: translateX(-5px); /* Subtle animation effect */
+ left: calc(100% + var(--space-1));
+ transform: translateX(-5px);
}
.kroma-dropdown[data-position="left"] .kroma-dropdown-menu {
top: 0;
- right: calc(100% + var(--space-1)); /* Reduced spacing for left positioning */
- transform: translateX(5px); /* Subtle animation effect */
-}
-
-/* Variants Handling */
-.kroma-dropdown[data-variant="dark"] {
- --variant-bg: var(--neutral-900);
- --variant-text: var(--neutral-50);
- --variant-hover-bg: var(--neutral-700);
- --variant-hover: var(--neutral-50);
- --variant-shadow: var(--shadow-lg);
+ right: calc(100% + var(--space-1));
+ transform: translateX(5px);
}
/* Mega Menu */
@@ -2555,19 +2592,19 @@ blockquote {
position: fixed;
bottom: var(--space-8, 2rem);
right: var(--space-8, 2rem);
- display: flex; /* Flexbox ensures centering of children */
- align-items: center; /* Vertically center content */
- justify-content: center; /* Horizontally center content */
- padding: 0; /* Remove default padding for precise centering */
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0;
font-size: 1.5rem;
- width: clamp(3rem, 8vw, 4rem); /* Ensure FAB is always square */
- height: clamp(3rem, 8vw, 4rem); /* Match width for perfect circle */
+ width: clamp(3rem, 8vw, 4rem);
+ height: clamp(3rem, 8vw, 4rem);
background-color: var(--variant-bg, var(--primary));
color: var(--variant-text, #ffffff);
cursor: pointer;
border: none;
box-shadow: var(--shadow-lg, 0 4px 8px rgba(0, 0, 0, 0.2));
- border-radius: var(--radius-full, 50%); /* Circular shape */
+ border-radius: var(--radius-full, 50%);
transition:
background-color var(--transition-colors, 0.2s ease),
transform var(--transition-transform, 0.2s ease),
@@ -2580,10 +2617,10 @@ blockquote {
display: flex;
align-items: center;
justify-content: center;
- width: 100%; /* Icon scales with FAB size */
- height: 100%; /* Icon scales with FAB size */
- font-size: inherit; /* Inherit FAB font size */
- line-height: 1; /* Prevent text alignment issues */
+ width: 100%;
+ height: 100%;
+ font-size: inherit;
+ line-height: 1;
}
/* FAB Hover and Active States */
@@ -2601,7 +2638,7 @@ blockquote {
/* Shape Variants */
.kroma-fab[data-shape="circular"] {
border-radius: var(--radius-full, 50%);
- padding: 0; /* Ensure circular shape is preserved */
+ padding: 0;
}
.kroma-fab[data-shape="square"] {
@@ -2613,6 +2650,19 @@ blockquote {
padding: clamp(0.75rem, 1.5vw, 1rem) clamp(1.5rem, 3vw, 2rem);
}
+/* Size Variants */
+.kroma-fab[data-size="small"] {
+ width: clamp(2.5rem, 6vw, 3rem);
+ height: clamp(2.5rem, 6vw, 3rem);
+ font-size: 1.25rem;
+}
+
+.kroma-fab[data-size="large"] {
+ width: clamp(4rem, 10vw, 5rem);
+ height: clamp(4rem, 10vw, 5rem);
+ font-size: 1.75rem;
+}
+
/* Responsive Adjustments */
@media (max-width: 768px) {
.kroma-fab {
@@ -2806,7 +2856,7 @@ blockquote {
opacity: 1;
transform: translateY(0);
}
-}
+}
/* Responsive Adjustments */
@media (max-width: 768px) {
@@ -2848,7 +2898,9 @@ blockquote {
}
/* Input, Textarea, and Select Base Styles */
-.kroma-input, .kroma-textarea, .kroma-select {
+.kroma-input,
+.kroma-textarea,
+.kroma-select {
font-family: var(--font-sans);
font-size: clamp(0.875rem, 1vw + 0.25rem, 1rem);
padding: var(--space-3) var(--space-4);
@@ -2862,36 +2914,47 @@ blockquote {
}
/* Placeholder Styling */
-.kroma-input::placeholder, .kroma-textarea::placeholder, .kroma-select::placeholder {
+.kroma-input::placeholder,
+.kroma-textarea::placeholder,
+.kroma-select::placeholder {
color: var(--neutral-500);
}
/* Focus and Hover Styles */
-.kroma-input:focus, .kroma-textarea:focus, .kroma-select:focus {
+.kroma-input:focus,
+.kroma-textarea:focus,
+.kroma-select:focus {
outline: none;
border-color: var(--variant-border, var(--neutral-400));
box-shadow: 0px 0px 0px 3px var(--variant-light-bg, var(--neutral-200));
}
-.kroma-input:hover, .kroma-textarea:hover, .kroma-select:hover {
+.kroma-input:hover,
+.kroma-textarea:hover,
+.kroma-select:hover {
border-color: var(--neutral-400);
box-shadow: var(--shadow-md);
}
/* Variants for Input, Textarea, and Select */
-[data-variant] .kroma-input, [data-variant] .kroma-textarea, [data-variant] .kroma-select {
+[data-variant] .kroma-input,
+[data-variant] .kroma-textarea,
+[data-variant] .kroma-select {
background-color: var(--variant-bg);
border-color: var(--variant-border);
color: var(--variant-text);
box-shadow: var(--variant-shadow);
}
-[data-variant] .kroma-input::placeholder, [data-variant] .kroma-textarea::placeholder {
+[data-variant] .kroma-input::placeholder,
+[data-variant] .kroma-textarea::placeholder {
color: var(--variant-text-light, rgba(255, 255, 255, 0.8));
}
/* Disabled State */
-.kroma-input:disabled, .kroma-textarea:disabled, .kroma-select:disabled {
+.kroma-input:disabled,
+.kroma-textarea:disabled,
+.kroma-select:disabled {
color: var(--neutral-700);
background-color: var(--neutral-200);
cursor: not-allowed;
@@ -2899,7 +2962,8 @@ blockquote {
}
/* Readonly State */
-.kroma-input-readonly, .kroma-textarea-readonly {
+.kroma-input-readonly,
+.kroma-textarea-readonly {
background-color: var(--neutral-100);
color: var(--neutral-800);
cursor: default;
@@ -2940,7 +3004,9 @@ blockquote {
}
/* Error State */
-.kroma-input-error, .kroma-textarea-error, .kroma-select-error {
+.kroma-input-error,
+.kroma-textarea-error,
+.kroma-select-error {
border-color: var(--variant-border, var(--danger-border));
box-shadow: 0px 0px 0px 3px var(--variant-light-bg, var(--danger-light-bg));
}
@@ -2953,7 +3019,8 @@ blockquote {
}
/* Checkbox & Radio Groups */
-.kroma-checkbox-group, .kroma-radio-group {
+.kroma-checkbox-group,
+.kroma-radio-group {
display: flex;
gap: var(--space-4);
align-items: center;
@@ -2961,7 +3028,8 @@ blockquote {
}
/* Base Checkbox and Radio Styles */
-.kroma-checkbox, .kroma-radio {
+.kroma-checkbox,
+.kroma-radio {
display: inline-flex;
align-items: center;
gap: var(--space-2);
@@ -2971,14 +3039,16 @@ blockquote {
transition: color var(--transition-colors);
}
-.kroma-checkbox input[type="checkbox"], .kroma-radio input[type="radio"] {
+.kroma-checkbox input[type="checkbox"],
+.kroma-radio input[type="radio"] {
position: absolute;
opacity: 0;
cursor: pointer;
}
/* Checkbox and Radio Icons */
-.kroma-checkbox-icon, .kroma-radio-icon {
+.kroma-checkbox-icon,
+.kroma-radio-icon {
display: inline-flex;
align-items: center;
justify-content: center;
@@ -3001,13 +3071,15 @@ blockquote {
}
/* Hover and Active States */
-.kroma-checkbox:hover .kroma-checkbox-icon, .kroma-radio:hover .kroma-radio-icon {
+.kroma-checkbox:hover .kroma-checkbox-icon,
+.kroma-radio:hover .kroma-radio-icon {
border-color: var(--neutral-400);
box-shadow: var(--shadow-lg);
transform: scale(1.05);
}
-.kroma-checkbox:active .kroma-checkbox-icon, .kroma-radio:active .kroma-radio-icon {
+.kroma-checkbox:active .kroma-checkbox-icon,
+.kroma-radio:active .kroma-radio-icon {
box-shadow: var(--shadow-sm);
transform: scale(0.95);
}
@@ -3041,201 +3113,176 @@ blockquote {
/* --- hero.css --- */
/* Base Hero Styles */
.kroma-hero {
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- text-align: center;
- border-radius: var(--radius-lg);
- color: var(--neutral-900);
- background-color: var(--neutral-50);
- box-shadow: var(--shadow-lg);
- margin: var(--space-4);
- padding: var(--space-4);
- transition: transform 0.3s ease, box-shadow 0.3s ease, background-color var(--transition-colors);
- width: calc(100% - var(--space-8));
- overflow: hidden;
- }
-
- /* Gradient Variants */
- .kroma-hero[data-variant] {
- background: linear-gradient(135deg, var(--variant-light-bg), var(--variant-bg));
- color: var(--variant-text);
- }
-
- /* Specific Variants */
- .kroma-hero[data-variant="primary"] {
- --variant-light-bg: var(--primary-light-bg);
- --variant-bg: var(--primary-bg);
- --variant-text: var(--primary-text);
- }
-
- .kroma-hero[data-variant="secondary"] {
- --variant-light-bg: var(--secondary-light-bg);
- --variant-bg: var(--secondary-bg);
- --variant-text: var(--secondary-text);
- }
-
- .kroma-hero[data-variant="danger"] {
- --variant-light-bg: var(--danger-light-bg);
- --variant-bg: var(--danger-bg);
- --variant-text: var(--danger-text);
- }
-
- .kroma-hero[data-variant="info"] {
- --variant-light-bg: var(--info-light-bg);
- --variant-bg: var(--info-bg);
- --variant-text: var(--info-text);
- }
-
- /* Overlay Effects */
- .kroma-hero[data-overlay]::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: 0;
- border-radius: inherit;
- pointer-events: none;
- }
-
- .kroma-hero[data-overlay="dark"]::before {
- background: rgba(0, 0, 0, 0.5);
- }
-
- .kroma-hero[data-overlay="light"]::before {
- background: rgba(255, 255, 255, 0.5);
- }
-
- .kroma-hero[data-overlay="gradient-dark"]::before {
- background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.2));
- }
-
- .kroma-hero[data-overlay="gradient-light"]::before {
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.2));
- }
-
- /* Hero Content */
- .kroma-hero-content {
- position: relative;
- z-index: 1;
- width: 100%;
- max-width: 90%;
- margin: 0 auto;
- padding: var(--space-4);
- font-size: var(--font-lg);
- }
-
- /* Size Variants */
- .kroma-hero[data-size="sm"] { max-height: 40vh; }
- .kroma-hero[data-size="md"] { max-height: 60vh; }
- .kroma-hero[data-size="lg"] { max-height: 80vh; }
- .kroma-hero[data-size="full"] { max-height: 100vh; }
-
- /* Layout Options */
- .kroma-hero[data-layout="row"] {
- flex-direction: row;
- text-align: left;
- }
-
- .kroma-hero[data-layout="row-reverse"] {
- flex-direction: row-reverse;
- text-align: left;
- }
-
- .kroma-hero[data-layout="column"] {
- flex-direction: column;
- }
-
- /* Content Alignment */
- .kroma-hero[data-alignment="start"] { justify-content: flex-start; }
- .kroma-hero[data-alignment="end"] { justify-content: flex-end; }
- .kroma-hero[data-alignment="center"] { justify-content: center; }
-
- /* Content Width Variants */
- .kroma-hero[data-content-width="narrow"] .kroma-hero-content { max-width: 65ch; }
- .kroma-hero[data-content-width="wide"] .kroma-hero-content { max-width: 100ch; }
-
- /* Spacing Variants */
- .kroma-hero[data-spacing="sm"] { padding: var(--space-3); }
- .kroma-hero[data-spacing="md"] { padding: var(--space-6); }
- .kroma-hero[data-spacing="lg"] { padding: var(--space-8); }
-
- /* Border Radius Variants */
- .kroma-hero[data-radius="none"] { border-radius: 0; }
- .kroma-hero[data-radius="sm"] { border-radius: var(--radius-sm); }
- .kroma-hero[data-radius="lg"] { border-radius: var(--radius-lg); }
-
- /* Shadow Variants */
- .kroma-hero[data-shadow="none"] { box-shadow: none; }
- .kroma-hero[data-shadow="sm"] { box-shadow: var(--shadow-sm); }
- .kroma-hero[data-shadow="xl"] { box-shadow: var(--shadow-xl); }
-
- /* Hover Effects */
- .kroma-hero[data-hover="lift"]:hover {
- transform: translateY(-5px);
- box-shadow: var(--shadow-xl);
- }
-
- .kroma-hero[data-hover="scale"]:hover {
- transform: scale(1.03);
- }
-
- .kroma-hero[data-hover="brightness"]:hover {
- filter: brightness(1.15);
- }
-
- /* Animation Variants */
- .kroma-hero[data-animation="fade"] { animation: heroFade 0.5s ease-in; }
- .kroma-hero[data-animation="slide"] { animation: heroSlide 0.5s ease-out; }
- .kroma-hero[data-animation="scale"] { animation: heroScale 0.5s ease-in-out; }
-
- @keyframes heroFade {
- from { opacity: 0; }
- to { opacity: 1; }
- }
-
- @keyframes heroSlide {
- from { transform: translateY(20px); opacity: 0; }
- to { transform: translateY(0); opacity: 1; }
- }
-
- @keyframes heroScale {
- from { transform: scale(0.9); opacity: 0; }
- to { transform: scale(1); opacity: 1; }
- }
-
- /* Hero Image */
- .kroma-hero[data-image] {
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- }
-
- .kroma-hero[data-image]::before {
- background: none; /* Ensures overlay is only applied on image backgrounds */
- }
-
- /* Responsive Adjustments */
- @media (max-width: 1280px) {
- .kroma-hero-content { max-width: 95%; }
- }
-
- @media (max-width: 1024px) {
- .kroma-hero {
- margin: var(--space-3);
- padding: var(--space-3);
- }
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-radius: var(--radius-lg);
+ color: var(--neutral-900);
+ background-color: var(--neutral-50);
+ box-shadow: var(--shadow-lg);
+ margin: var(--space-4);
+ padding: var(--space-4);
+ transition: transform 0.3s ease, box-shadow 0.3s ease, background-color var(--transition-colors);
+ width: calc(100% - var(--space-8));
+ overflow: hidden;
+}
+
+/* Gradient Variants */
+.kroma-hero[data-variant] {
+ background: linear-gradient(135deg, var(--variant-light-bg), var(--variant-bg));
+ color: var(--variant-text);
+}
+
+/* Overlay Effects */
+.kroma-hero[data-overlay]::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 0;
+ border-radius: inherit;
+ pointer-events: none;
+}
+
+.kroma-hero[data-overlay="dark"]::before {
+ background: rgba(0, 0, 0, 0.5);
+}
+
+.kroma-hero[data-overlay="light"]::before {
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.kroma-hero[data-overlay="gradient-dark"]::before {
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.2));
+}
+
+.kroma-hero[data-overlay="gradient-light"]::before {
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.2));
+}
+
+/* Hero Content */
+.kroma-hero-content {
+ position: relative;
+ z-index: 1;
+ width: 100%;
+ max-width: 90%;
+ margin: 0 auto;
+ padding: var(--space-4);
+ font-size: var(--font-lg);
+}
+
+/* Size Variants */
+.kroma-hero[data-size="sm"] { max-height: 40vh; }
+.kroma-hero[data-size="md"] { max-height: 60vh; }
+.kroma-hero[data-size="lg"] { max-height: 80vh; }
+.kroma-hero[data-size="full"] { max-height: 100vh; }
+
+/* Layout Options */
+.kroma-hero[data-layout="row"] {
+ flex-direction: row;
+ text-align: left;
+}
+
+.kroma-hero[data-layout="row-reverse"] {
+ flex-direction: row-reverse;
+ text-align: left;
+}
+
+.kroma-hero[data-layout="column"] {
+ flex-direction: column;
+}
+
+/* Content Alignment */
+.kroma-hero[data-alignment="start"] { justify-content: flex-start; }
+.kroma-hero[data-alignment="end"] { justify-content: flex-end; }
+.kroma-hero[data-alignment="center"] { justify-content: center; }
+
+/* Content Width Variants */
+.kroma-hero[data-content-width="narrow"] .kroma-hero-content { max-width: 65ch; }
+.kroma-hero[data-content-width="wide"] .kroma-hero-content { max-width: 100ch; }
+
+/* Spacing Variants */
+.kroma-hero[data-spacing="sm"] { padding: var(--space-3); }
+.kroma-hero[data-spacing="md"] { padding: var(--space-6); }
+.kroma-hero[data-spacing="lg"] { padding: var(--space-8); }
+
+/* Border Radius Variants */
+.kroma-hero[data-radius="none"] { border-radius: 0; }
+.kroma-hero[data-radius="sm"] { border-radius: var(--radius-sm); }
+.kroma-hero[data-radius="lg"] { border-radius: var(--radius-lg); }
+
+/* Shadow Variants */
+.kroma-hero[data-shadow="none"] { box-shadow: none; }
+.kroma-hero[data-shadow="sm"] { box-shadow: var(--shadow-sm); }
+.kroma-hero[data-shadow="xl"] { box-shadow: var(--shadow-xl); }
+
+/* Hover Effects */
+.kroma-hero[data-hover="lift"]:hover {
+ transform: translateY(-5px);
+ box-shadow: var(--shadow-xl);
+}
+
+.kroma-hero[data-hover="scale"]:hover {
+ transform: scale(1.03);
+}
+
+.kroma-hero[data-hover="brightness"]:hover {
+ filter: brightness(1.15);
+}
+
+/* Animation Variants */
+.kroma-hero[data-animation="fade"] { animation: heroFade 0.5s ease-in; }
+.kroma-hero[data-animation="slide"] { animation: heroSlide 0.5s ease-out; }
+.kroma-hero[data-animation="scale"] { animation: heroScale 0.5s ease-in-out; }
+
+@keyframes heroFade {
+ from { opacity: 0; }
+ to { opacity: 1; }
+}
+
+@keyframes heroSlide {
+ from { transform: translateY(20px); opacity: 0; }
+ to { transform: translateY(0); opacity: 1; }
+}
+
+@keyframes heroScale {
+ from { transform: scale(0.9); opacity: 0; }
+ to { transform: scale(1); opacity: 1; }
+}
+
+/* Hero Image */
+.kroma-hero[data-image] {
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.kroma-hero[data-image]::before {
+ background: none;
+}
+
+/* Responsive Adjustments */
+@media (max-width: 1280px) {
+ .kroma-hero-content { max-width: 95%; }
+}
+
+@media (max-width: 1024px) {
+ .kroma-hero {
+ margin: var(--space-3);
+ padding: var(--space-3);
}
-
- @media (max-width: 768px) {
- .kroma-hero-content {
- font-size: clamp(0.875rem, 1.5vw, 1rem);
- }
+}
+
+@media (max-width: 768px) {
+ .kroma-hero-content {
+ font-size: clamp(0.875rem, 1.5vw, 1rem);
}
-
+}
+
/* --- hologram.css --- */
/* Base Hologram Overlay Styles */
@@ -3369,10 +3416,10 @@ blockquote {
/* Responsive Adjustments */
@media (max-width: 768px) {
.kroma-hologram-title {
- font-size: clamp(1.5rem, 4vw, 3rem);
+ font-size: clamp(1.5rem, 4vw, 3rem);
}
.kroma-hologram-subtitle {
- font-size: clamp(0.875rem, 2vw, 1.5rem);
+ font-size: clamp(0.875rem, 2vw, 1.5rem);
}
}
@@ -3385,7 +3432,7 @@ blockquote {
left: 0;
width: 100%;
height: 100%;
- background-color: rgba(0, 0, 0, 0.8);
+ background-color: rgba(0, 0, 0, 0.8); /* Semi-transparent backdrop */
display: flex;
justify-content: center;
align-items: center;
@@ -3393,7 +3440,7 @@ blockquote {
opacity: 0;
visibility: hidden;
transition: opacity 0.35s ease, visibility 0.35s ease;
- backdrop-filter: blur(6px);
+ backdrop-filter: blur(6px); /* Smooth backdrop blur */
}
.kroma-modal-overlay.active {
@@ -3403,15 +3450,15 @@ blockquote {
/* Modal Container */
.kroma-modal {
- background-color: var(--variant-bg);
+ background-color: var(--variant-bg, var(--neutral-50));
border-radius: var(--radius-2xl);
- box-shadow: var(--variant-shadow);
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
max-width: clamp(20rem, 50vw, 40rem);
width: 100%;
position: relative;
animation: kroma-modal-appear 0.4s cubic-bezier(0.25, 1, 0.5, 1);
overflow: hidden;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
@keyframes kroma-modal-appear {
@@ -3428,12 +3475,12 @@ blockquote {
/* Modal Header */
.kroma-modal-header {
padding: var(--space-4);
- background-color: var(--variant-light-bg);
- border-bottom: 1px solid var(--variant-border);
+ background-color: var(--variant-light-bg, var(--neutral-100));
+ border-bottom: 1px solid var(--variant-border, var(--neutral-300));
display: flex;
justify-content: space-between;
align-items: center;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-800));
}
.kroma-modal-title {
@@ -3446,12 +3493,12 @@ blockquote {
border: none;
font-size: 1.5rem;
cursor: pointer;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-800));
transition: color 0.2s ease-in-out, transform 0.2s ease;
}
.kroma-modal-close:hover {
- color: var(--variant-hover-bg);
+ color: var(--variant-hover-bg, var(--neutral-700));
transform: scale(1.1);
}
@@ -3460,25 +3507,25 @@ blockquote {
padding: var(--space-4);
overflow-y: auto;
max-height: 60vh;
- scrollbar-color: var(--variant-hover-bg) var(--variant-light-bg);
+ scrollbar-color: var(--variant-hover-bg, var(--neutral-300)) var(--variant-light-bg, var(--neutral-100));
scrollbar-width: thin;
}
.kroma-modal-body::-webkit-scrollbar {
width: 8px;
- background-color: var(--variant-light-bg);
+ background-color: var(--variant-light-bg, var(--neutral-100));
}
.kroma-modal-body::-webkit-scrollbar-thumb {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
border-radius: 4px;
}
/* Modal Footer */
.kroma-modal-footer {
padding: var(--space-4);
- background-color: var(--variant-light-bg);
- border-top: 1px solid var(--variant-border);
+ background-color: var(--variant-light-bg, var(--neutral-100));
+ border-top: 1px solid var(--variant-border, var(--neutral-300));
text-align: right;
}
@@ -3489,9 +3536,9 @@ blockquote {
border-radius: 0;
max-width: none;
max-height: none;
- padding: var(--space-6);
- background-color: var(--neutral-200);
- color: var(--neutral-50);
+ padding: var(--space-6);
+ background-color: var(--neutral-200);
+ color: var(--neutral-50);
}
/* Responsive Adjustments */
@@ -3521,19 +3568,19 @@ blockquote {
display: flex;
align-items: center;
padding: var(--space-2);
- border: 1px solid var(--variant-border);
+ border: 1px solid var(--variant-border, var(--neutral-300));
border-radius: var(--radius-md);
- background-color: var(--variant-bg);
- box-shadow: var(--variant-shadow);
+ background-color: var(--variant-bg, var(--neutral-50));
+ box-shadow: var(--variant-shadow, var(--shadow-md));
cursor: pointer;
transition: border-color var(--transition-colors), box-shadow var(--transition-all);
position: relative;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
.kroma-multiselect-dropdown:focus-within {
- border-color: var(--variant-hover-bg);
- box-shadow: 0 0 0 3px var(--variant-light-bg);
+ border-color: var(--variant-hover-bg, var(--neutral-400));
+ box-shadow: 0 0 0 3px var(--variant-light-bg, var(--neutral-200));
}
/* Search Input */
@@ -3544,13 +3591,13 @@ blockquote {
padding: var(--space-1);
background: transparent;
font-size: 1rem;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
/* Clear Button */
.kroma-clear-selection {
font-size: 1.25rem;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
cursor: pointer;
background: none;
border: none;
@@ -3573,10 +3620,10 @@ blockquote {
top: calc(100% + var(--space-1));
left: 0;
width: 100%;
- border: 1px solid var(--variant-border);
+ border: 1px solid var(--variant-border, var(--neutral-300));
border-radius: var(--radius-md);
- background-color: var(--variant-dark-bg);
- box-shadow: var(--variant-shadow);
+ background-color: var(--variant-dark-bg, var(--neutral-100));
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
max-height: 200px;
overflow-y: auto;
display: none;
@@ -3593,17 +3640,17 @@ blockquote {
padding: var(--space-2);
cursor: pointer;
transition: background-color var(--transition-colors), color var(--transition-colors);
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
.kroma-multiselect-option:hover {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
color: #fff;
}
.kroma-multiselect-option.selected {
- background-color: var(--variant-hover-bg);
- color: var(--variant-text);
+ background-color: var(--variant-hover-bg, var(--neutral-400));
+ color: var(--variant-text, var(--neutral-900));
}
/* Chips for Selected Options */
@@ -3623,7 +3670,7 @@ blockquote {
font-size: 0.875rem;
line-height: 1.2;
color: #fff;
- background-color: var(--variant-bg);
+ background-color: var(--variant-bg, var(--neutral-600));
}
.kroma-chip-remove {
@@ -3636,17 +3683,17 @@ blockquote {
/* Scrollbar Customization */
.kroma-multiselect-options::-webkit-scrollbar {
width: 8px;
- background-color: var(--variant-light-bg);
+ background-color: var(--variant-light-bg, var(--neutral-200));
}
.kroma-multiselect-options::-webkit-scrollbar-thumb {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
border-radius: 4px;
}
/* Placeholder Color */
.kroma-multiselect-search::placeholder {
- color: rgba(255, 255, 255, 0.7);
+ color: var(--variant-text-light, rgba(0, 0, 0, 0.6));
}
/* Responsive Adjustments */
@@ -4877,173 +4924,167 @@ html:has(.kroma-navbar) .kroma-sidebar{
/* --- stat-metrics.css --- */
/* Base Stat Box Styles */
.kroma-stat-box {
- position: relative;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- padding: clamp(var(--space-4), 2vw, var(--space-6));
- border-radius: var(--radius-lg);
- background-color: var(--neutral-50);
- box-shadow: var(--shadow-md);
- transition: background-color var(--transition-colors), transform 0.3s ease, box-shadow 0.3s ease;
- text-align: center;
- width: 100%;
- max-width: 350px;
- gap: clamp(var(--space-2), 2vw, var(--space-4));
- margin: var(--space-4) auto;
- overflow: hidden;
- }
-
- /* Hover and Focus States */
- .kroma-stat-box:hover {
- background-color: var(--neutral-100);
- box-shadow: var(--shadow-lg);
- transform: translateY(-2px);
- }
- .kroma-stat-box:focus-within {
- outline: 2px solid var(--primary);
- }
-
- /* Icon Styling */
- .kroma-stat-box .kroma-icon {
- font-size: clamp(2.5rem, 5vw, 4rem);
- line-height: clamp(2.5rem, 5vw, 4rem);
- color: var(--neutral-800);
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: clamp(var(--space-4), 2vw, var(--space-6));
+ border-radius: var(--radius-lg);
+ background-color: var(--variant-bg, var(--neutral-50));
+ box-shadow: var(--variant-shadow, var(--shadow-md));
+ transition: background-color var(--transition-colors), transform 0.3s ease, box-shadow 0.3s ease;
+ text-align: center;
+ width: 100%;
+ max-width: 350px;
+ gap: clamp(var(--space-2), 2vw, var(--space-4));
+ margin: var(--space-4) auto;
+ overflow: hidden;
+ color: var(--variant-text, var(--neutral-900));
+}
+
+/* Hover and Focus States */
+.kroma-stat-box:hover {
+ background-color: var(--variant-hover-bg, var(--neutral-100));
+ box-shadow: var(--shadow-lg);
+ transform: translateY(-2px);
+}
+.kroma-stat-box:focus-within {
+ outline: 2px solid var(--primary);
+}
+
+/* Icon Styling */
+.kroma-stat-box .kroma-icon {
+ font-size: clamp(2.5rem, 5vw, 4rem);
+ line-height: clamp(2.5rem, 5vw, 4rem);
+ color: var(--variant-text, var(--neutral-800));
+}
+
+/* Title and Value Styling */
+.kroma-stat-box .kroma-title {
+ font-size: clamp(1rem, 2vw + 0.5rem, 1.25rem);
+ line-height: clamp(1rem, 2vw + 0.5rem, 1.25rem);
+ font-weight: 500;
+ color: var(--variant-text, var(--neutral-900));
+}
+
+.kroma-stat-box .kroma-value {
+ font-size: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
+ line-height: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
+ font-weight: 700;
+ margin-bottom: var(--space-2);
+}
+
+/* Change Indicator */
+.kroma-stat-box .kroma-change {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-1);
+ font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
+ line-height: clamp(0.875rem, 1vw + 0.5rem, 1rem);
+ font-weight: 500;
+ margin-top: var(--space-2);
+}
+
+/* Positive and Negative Changes */
+.kroma-stat-box .kroma-change[data-change="positive"] {
+ color: var(--success);
+}
+.kroma-stat-box .kroma-change[data-change="negative"] {
+ color: var(--danger);
+}
+
+/* Layout Variants */
+.kroma-stat-box[data-layout="horizontal"] {
+ flex-direction: row;
+ align-items: center;
+ gap: var(--space-4);
+ text-align: left;
+ padding: clamp(var(--space-3), 1vw, var(--space-4));
+}
+.kroma-stat-box[data-layout="compact"] {
+ padding: var(--space-2);
+ max-width: 250px;
+ gap: var(--space-2);
+}
+.kroma-stat-box[data-layout="expanded"] {
+ padding: clamp(var(--space-6), 3vw, var(--space-8));
+ max-width: 450px;
+ box-shadow: var(--shadow-xl);
+}
+
+/* Alignment Variants */
+.kroma-stat-box[data-alignment="start"] {
+ align-items: flex-start;
+ text-align: left;
+}
+.kroma-stat-box[data-alignment="end"] {
+ align-items: flex-end;
+ text-align: right;
+}
+
+/* Spacing Variants */
+.kroma-stat-box[data-spacing="sm"] {
+ padding: var(--space-2);
+}
+.kroma-stat-box[data-spacing="lg"] {
+ padding: var(--space-8);
+}
+
+/* Shadow Options */
+.kroma-stat-box[data-shadow="none"] {
+ box-shadow: none;
+}
+.kroma-stat-box[data-shadow="sm"] {
+ box-shadow: var(--shadow-sm);
+}
+.kroma-stat-box[data-shadow="lg"] {
+ box-shadow: var(--shadow-lg);
+}
+
+/* Border Radius Options */
+.kroma-stat-box[data-radius="sm"] {
+ border-radius: var(--radius-sm);
+}
+.kroma-stat-box[data-radius="full"] {
+ border-radius: var(--radius-full);
+}
+
+/* Hover Effects */
+.kroma-stat-box[data-hover="lift"]:hover {
+ transform: translateY(-3px);
+ box-shadow: var(--shadow-xl);
+}
+.kroma-stat-box[data-hover="scale"]:hover {
+ transform: scale(1.05);
+}
+.kroma-stat-box[data-hover="brightness"]:hover {
+ filter: brightness(1.1);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ .kroma-stat-box {
+ padding: var(--space-3);
+ max-width: 90%;
}
-
- /* Title and Value Styling */
.kroma-stat-box .kroma-title {
- font-size: clamp(1rem, 2vw + 0.5rem, 1.25rem);
- line-height: clamp(1rem, 2vw + 0.5rem, 1.25rem);
- font-weight: 500;
- color: var(--neutral-900);
+ font-size: clamp(0.875rem, 2vw, 1rem);
}
-
.kroma-stat-box .kroma-value {
- font-size: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
- line-height: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
- font-weight: 700;
- color: var(--neutral-900);
- margin-bottom: var(--space-2);
- }
-
- /* Change Indicator */
- .kroma-stat-box .kroma-change {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: var(--space-1);
- font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
- line-height: clamp(0.875rem, 1vw + 0.5rem, 1rem);
- font-weight: 500;
- margin-top: var(--space-2);
- }
-
- /* Positive and Negative Changes */
- .kroma-stat-box .kroma-change[data-change="positive"] {
- color: var(--success);
- }
- .kroma-stat-box .kroma-change[data-change="negative"] {
- color: var(--danger);
- }
-
- .kroma-stat-box {
- background-color: var(--variant-bg);
- color: var(--variant-text);
- box-shadow: var(--variant-shadow);
+ font-size: clamp(1.5rem, 4vw, 2rem);
}
-
- /* Layout Variants */
.kroma-stat-box[data-layout="horizontal"] {
- flex-direction: row;
- align-items: center;
- gap: var(--space-4);
- text-align: left;
- padding: clamp(var(--space-3), 1vw, var(--space-4));
- }
- .kroma-stat-box[data-layout="compact"] {
- padding: var(--space-2);
- max-width: 250px;
- gap: var(--space-2);
- }
- .kroma-stat-box[data-layout="expanded"] {
- padding: clamp(var(--space-6), 3vw, var(--space-8));
- max-width: 450px;
- box-shadow: var(--shadow-xl);
- }
-
- /* Alignment Variants */
- .kroma-stat-box[data-alignment="start"] {
- align-items: flex-start;
- text-align: left;
- }
- .kroma-stat-box[data-alignment="end"] {
- align-items: flex-end;
- text-align: right;
- }
-
- /* Spacing Variants */
- .kroma-stat-box[data-spacing="sm"] {
- padding: var(--space-2);
- }
- .kroma-stat-box[data-spacing="lg"] {
- padding: var(--space-8);
- }
-
- /* Shadow Options */
- .kroma-stat-box[data-shadow="none"] {
- box-shadow: none;
- }
- .kroma-stat-box[data-shadow="sm"] {
- box-shadow: var(--shadow-sm);
- }
- .kroma-stat-box[data-shadow="lg"] {
- box-shadow: var(--shadow-lg);
- }
-
- /* Border Radius Options */
- .kroma-stat-box[data-radius="sm"] {
- border-radius: var(--radius-sm);
- }
- .kroma-stat-box[data-radius="full"] {
- border-radius: var(--radius-full);
- }
-
- /* Hover Effects */
- .kroma-stat-box[data-hover="lift"]:hover {
- transform: translateY(-3px);
- box-shadow: var(--shadow-xl);
- }
- .kroma-stat-box[data-hover="scale"]:hover {
- transform: scale(1.05);
- }
- .kroma-stat-box[data-hover="brightness"]:hover {
- filter: brightness(1.1);
- }
-
- /* Responsive Adjustments */
- @media (max-width: 768px) {
- .kroma-stat-box {
- padding: var(--space-3);
- max-width: 90%;
- }
- .kroma-stat-box .kroma-title {
- font-size: clamp(0.875rem, 2vw, 1rem);
- }
- .kroma-stat-box .kroma-value {
- font-size: clamp(1.5rem, 4vw, 2rem);
- }
- .kroma-stat-box[data-layout="horizontal"] {
flex-direction: column;
align-items: center;
text-align: center;
- }
- .kroma-stat-box .kroma-change {
+ }
+ .kroma-stat-box .kroma-change {
margin-top: var(--space-1);
- }
}
-
+}
+
/* --- stepper.css --- */
/* Base Stepper Container */
diff --git a/src/css/components/accordion.css b/src/css/components/accordion.css
index b1d6f52..db14cb8 100644
--- a/src/css/components/accordion.css
+++ b/src/css/components/accordion.css
@@ -6,9 +6,21 @@
margin: auto;
padding: var(--space-4);
border-radius: var(--radius-lg);
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
- background-color: var(--neutral-50);
- transition: padding 0.3s ease, box-shadow 0.3s ease;
+ box-shadow: var(--variant-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));
+ background-color: var(--variant-bg, var(--neutral-50));
+ transition: padding 0.3s ease, box-shadow 0.3s ease, background-color 0.3s ease;
+}
+
+.kroma-accordion-container[data-variant="default"],
+.kroma-accordion-container:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-light-bg: var(--neutral-50);
+ --variant-dark-bg: var(--neutral-300);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ --variant-border: var(--neutral-200);
+ --variant-hover-bg: var(--neutral-200);
+ --variant-hover: var(--neutral-700);
}
.kroma-accordion-container[data-responsive="auto"] {
@@ -20,9 +32,6 @@
/* Accordion Item */
.kroma-accordion-item {
- border-bottom: 1px solid var(--neutral-200);
-}
-.kroma-accordion-item:last-child {
border-bottom: none;
}
@@ -35,57 +44,57 @@
padding: clamp(var(--space-3), 1.5vw, var(--space-5));
font-size: clamp(1rem, 1vw + 0.5rem, 1.25rem);
font-weight: 600;
- color: var(--neutral-700);
+ color: var(--variant-text, var(--neutral-700));
cursor: pointer;
- background-color: var(--neutral-50);
- border: 1px solid transparent;
+ background-color: var(--variant-bg, var(--neutral-50));
+ border: 1px solid var(--variant-border, transparent);
border-radius: var(--radius-lg);
- transition: background-color 0.3s ease, box-shadow 0.3s ease;
+ transition: background-color 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}
.kroma-accordion-header:hover,
.kroma-accordion-header:focus {
- background-color: var(--neutral-100);
- box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
+ background-color: var(--variant-hover-bg, var(--neutral-100));
+ box-shadow: 0 0 8px var(--variant-shadow, rgba(0, 0, 0, 0.1));
outline: none;
}
.kroma-accordion-header:focus-visible {
- border: 1px solid var(--focus-color);
+ border-color: var(--focus-color);
}
/* Accordion Content */
.kroma-accordion-content {
height: 0;
overflow: hidden;
- transition: height 0.4s ease, padding 0.3s ease;
+ transition: height 0.4s ease, padding 0.3s ease, background-color 0.3s ease;
padding: 0 var(--space-3);
- background-color: var(--neutral-50);
+ background-color: var(--variant-light-bg, var(--neutral-50));
}
.kroma-accordion-content[data-expanded="true"] {
height: auto;
padding: var(--space-3) var(--space-4);
+ margin-top: var(--space-3);
}
/* Sub-Item */
.kroma-accordion-sub-item {
- border-top: 1px solid var(--neutral-200);
padding-left: var(--space-4);
- transition: padding 0.3s ease;
+ transition: padding 0.3s ease, border-color 0.3s ease;
}
.kroma-accordion-sub-header {
padding: clamp(var(--space-2), 1vw, var(--space-4));
font-size: 0.9rem;
font-weight: 500;
- color: var(--neutral-500);
+ color: var(--variant-text, var(--neutral-500));
cursor: pointer;
- background: var(--neutral-50);
+ background: var(--variant-light-bg, var(--neutral-50));
border: none;
text-align: left;
width: 100%;
border-radius: var(--radius-lg);
- transition: background-color 0.3s ease;
+ transition: background-color 0.3s ease, color 0.3s ease;
}
.kroma-accordion-sub-header:hover {
- background-color: var(--neutral-100);
+ background-color: var(--variant-hover-bg, var(--neutral-100));
}
/* Variants */
diff --git a/src/css/components/alert.css b/src/css/components/alert.css
index f056003..9b272c5 100644
--- a/src/css/components/alert.css
+++ b/src/css/components/alert.css
@@ -6,17 +6,29 @@
padding: clamp(var(--space-4), 1vw + var(--space-3), var(--space-6));
margin: var(--space-4) auto;
border-radius: var(--radius-md);
- box-shadow: var(--shadow-md);
+ box-shadow: var(--variant-shadow, var(--shadow-md));
font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
position: relative;
- transition: max-height 0.5s ease-in-out, opacity 0.4s ease-in-out;
+ transition: max-height 0.5s ease-in-out, opacity 0.4s ease-in-out, background-color 0.3s ease;
opacity: 1;
- background-color: var(--neutral-50);
- color: var(--neutral-900);
+ background-color: var(--variant-bg, var(--neutral-50));
+ color: var(--variant-text, var(--neutral-900));
gap: var(--space-3);
+ max-height: 500px;
overflow: hidden;
- max-height: 500px; /* Set an arbitrary large value to allow transition */
- overflow: hidden; /* Prevent overflow during the transition */
+}
+
+.kroma-alert[data-variant="default"],
+.kroma-alert:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: var(--shadow-md);
+ --variant-border: var(--neutral-200);
+ --variant-hover-bg: var(--neutral-200);
+}
+
+.kroma-alert:hover {
+ background-color: var(--variant-hover-bg, var(--neutral-200));
}
/* Variant Styles */
@@ -49,11 +61,6 @@
border-radius: var(--radius-xl);
}
-.kroma-alert[data-shape="circle"] {
- border-radius: var(--radius-full);
- padding: var(--space-4);
-}
-
/* Icon */
.kroma-alert-icon {
font-size: clamp(1.5rem, 2vw, 2rem);
@@ -97,8 +104,7 @@
transition: var(--transition-colors);
}
-.kroma-alert[data-shape="rounded"] .kroma-alert-close,
-.kroma-alert[data-shape="circle"] .kroma-alert-close {
+.kroma-alert[data-shape="rounded"] .kroma-alert-close {
top: var(--space-4);
right: var(--space-4);
}
diff --git a/src/css/components/avatar.css b/src/css/components/avatar.css
index 3096a36..84f7462 100644
--- a/src/css/components/avatar.css
+++ b/src/css/components/avatar.css
@@ -10,8 +10,16 @@
font-weight: 500;
position: relative;
transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
- box-shadow: var(--shadow-sm);
- isolation: isolate; /* Prevent nested contexts from affecting styles */
+ box-shadow: var(--variant-shadow, var(--shadow-sm));
+ isolation: isolate;
+}
+
+.kroma-avatar[data-variant="default"],
+.kroma-avatar:not([data-variant]) {
+ --variant-bg: var(--neutral-100);
+ --variant-text: var(--neutral-900);
+ --variant-shadow: var(--shadow-sm);
+ --variant-border: var(--neutral-200);
}
/* Avatar Sizes */
@@ -52,6 +60,8 @@
.kroma-avatar[data-variant] {
background-color: var(--variant-bg);
color: var(--variant-text);
+ box-shadow: var(--variant-shadow);
+ border: 1px solid var(--variant-border);
}
/* Ghost Variant */
@@ -62,7 +72,7 @@
box-shadow: none;
}
-.kroma-avatar[data-variant="ghost"] .avatar-status {
+.kroma-avatar[data-variant="ghost"] .kroma-avatar-status {
background-color: transparent;
border: 2px dashed var(--neutral-400);
}
@@ -78,14 +88,14 @@
.kroma-avatar img:hover {
transform: scale(1.1);
-} /* Zoom effect on hover */
+}
/* Initials Avatar */
.kroma-avatar-initials {
font-size: inherit;
- font-weight: 700; /* Bold initials for better visibility */
- line-height: 1; /* Prevent misalignment */
- text-transform: uppercase; /* Uniform appearance for initials */
+ font-weight: 700;
+ line-height: 1;
+ text-transform: uppercase;
}
/* Status Indicators */
@@ -96,7 +106,7 @@
width: 0.75rem;
height: 0.75rem;
border-radius: 50%;
- border: 2px solid var(--status-border-color, #fff); /* Customizable border color */
+ border: 2px solid var(--status-border-color, #fff);
background-color: var(--status-color, var(--success-bg));
box-shadow: var(--shadow-sm);
}
@@ -125,9 +135,9 @@
}
.kroma-avatar-group .kroma-avatar:not(:first-child) {
- margin-left: -0.5rem; /* Overlap effect */
- border: 2px solid var(--group-border-color, #fff); /* Customizable overlap border */
- box-shadow: var(--shadow-sm); /* Slight shadow for depth */
+ margin-left: -0.5rem;
+ border: 2px solid var(--group-border-color, #fff);
+ box-shadow: var(--shadow-sm);
}
/* Pulsing Avatar Effect */
@@ -164,7 +174,7 @@
.kroma-avatar[data-disabled="true"] {
opacity: 0.5;
cursor: not-allowed;
- pointer-events: none; /* Prevent interaction */
+ pointer-events: none;
}
/* Bordered Avatar */
diff --git a/src/css/components/badge.css b/src/css/components/badge.css
index e6b9957..e433cb5 100644
--- a/src/css/components/badge.css
+++ b/src/css/components/badge.css
@@ -14,7 +14,15 @@
text-transform: uppercase;
white-space: nowrap;
transition: background-color 0.3s, color 0.3s, box-shadow 0.3s;
- box-shadow: var(--shadow-sm);
+ box-shadow: var(--variant-shadow, var(--shadow-sm));
+}
+
+.kroma-badge[data-variant="default"],
+.kroma-badge:not([data-variant]) {
+ --variant-bg: var(--neutral-700);
+ --variant-text: #ffffff;
+ --variant-shadow: var(--shadow-sm);
+ --variant-light-bg: var(--neutral-500);
}
/* Outline Variant */
diff --git a/src/css/components/breadcrumbs.css b/src/css/components/breadcrumbs.css
index 8ea3611..6a93a80 100644
--- a/src/css/components/breadcrumbs.css
+++ b/src/css/components/breadcrumbs.css
@@ -12,6 +12,13 @@
transition: color 0.3s ease;
}
+.kroma-breadcrumbs[data-variant="default"],
+.kroma-breadcrumbs:not([data-variant]) {
+ --variant-text: var(--neutral-700);
+ --variant-hover: var(--primary-hover);
+ --variant-separator: var(--neutral-400);
+}
+
/* Breadcrumb Item */
.kroma-breadcrumb-item {
display: inline-flex;
@@ -63,7 +70,7 @@
/* Breadcrumb Color Variants */
.kroma-breadcrumbs[data-variant] {
- --variant-text: var(--variant-bg); /* Fallback to --variant-bg for text color */
+ --variant-text: var(--variant-bg);
--variant-hover: var(--variant-hover-bg);
--variant-separator: var(--variant-light-bg);
}
diff --git a/src/css/components/button.css b/src/css/components/button.css
index a064eda..73a935b 100644
--- a/src/css/components/button.css
+++ b/src/css/components/button.css
@@ -17,10 +17,18 @@
transition: color var(--transition-colors), background-color var(--transition-colors), transform 0.2s;
background: var(--kroma-btn-bg, var(--primary-bg));
color: var(--kroma-btn-color, var(--primary-text));
- box-shadow: var(--shadow-md);
+ box-shadow: var(--variant-shadow, var(--shadow-md));
overflow: hidden;
}
+.kroma-btn[data-variant="default"],
+.kroma-btn:not([data-variant]) {
+ --kroma-btn-bg: var(--neutral-700);
+ --kroma-btn-bg-hover: var(--neutral-800);
+ --kroma-btn-color: #fff;
+ --variant-shadow: var(--shadow-sm);
+}
+
/* Hover and Active States */
.kroma-btn:hover {
background: var(--kroma-btn-bg-hover, var(--primary-hover-bg));
diff --git a/src/css/components/calendar.css b/src/css/components/calendar.css
index 8eaef04..a4e3b06 100644
--- a/src/css/components/calendar.css
+++ b/src/css/components/calendar.css
@@ -1,207 +1,204 @@
/* Calendar Container */
.kroma-calendar {
- max-width: 100%;
- width: 100%;
- font-family: var(--font-sans);
- color: var(--neutral-800);
- background-color: var(--neutral-50);
- border-radius: var(--radius-lg);
- box-shadow: var(--shadow-xl);
- padding: var(--space-4);
- overflow: hidden;
- transition: var(--transition-all);
- }
-
- /* Calendar Variant Colors */
+ max-width: 100%;
+ width: 100%;
+ font-family: var(--font-sans);
+ border-radius: var(--radius-lg);
+ box-shadow: var(--shadow-xl);
+ padding: var(--space-4);
+ overflow: hidden;
+ transition: var(--transition-all);
+ background-color: var(--calendar-bg, var(--neutral-100));
+ color: var(--calendar-text, var(--neutral-800));
+}
+
+/* Dynamic Variant Handling */
+.kroma-calendar {
+ --calendar-bg: var(--variant-bg, var(--neutral-100));
+ --calendar-text: var(--variant-text, var(--neutral-800));
+ --calendar-hover-bg: var(--variant-light-bg, var(--neutral-300));
+ --calendar-selected-bg: var(--variant-hover, var(--neutral-200));
+ --calendar-today-border: var(--variant-border, var(--neutral-500));
+ --calendar-scrollbar: var(--variant-dark-bg, var(--neutral-400));
+}
+
+/* Calendar Header */
+.kroma-calendar-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: var(--space-4);
+ background-color: var(--calendar-bg);
+ color: var(--calendar-text);
+ border-radius: var(--radius-md);
+ font-size: clamp(1.5rem, 2.5vw, 1.75rem);
+ text-transform: uppercase;
+ gap: var(--space-4);
+ height: clamp(3.5rem, 7vw, 4.5rem);
+}
+
+/* Navigation Icons */
+.kroma-calendar-nav {
+ background: none;
+ border: none;
+ color: var(--calendar-text);
+ font-size: clamp(2rem, 4vw, 2.5rem);
+ cursor: pointer;
+ transition: color var(--transition-colors), transform var(--transition-transform);
+ display: flex;
+ align-items: center;
+}
+
+.kroma-calendar-nav:hover {
+ color: var(--calendar-hover-bg);
+ transform: scale(1.2);
+}
+
+/* Month and Year Display */
+.kroma-calendar-month-year {
+ font-size: clamp(1.5rem, 3vw, 1.75rem);
+ font-weight: bold;
+ text-align: center;
+ flex-grow: 1;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+/* Month and Year Selectors */
+.kroma-calendar-selectors {
+ display: flex;
+ gap: var(--space-2);
+ margin-top: var(--space-2);
+}
+
+.kroma-calendar-selectors select {
+ padding: var(--space-2) var(--space-3);
+ font-size: clamp(0.875rem, 1vw, 1rem);
+ border-radius: var(--radius-md);
+ border: 1px solid var(--neutral-300);
+ color: var(--neutral-800);
+ background-color: var(--neutral-100);
+ outline: none;
+ cursor: pointer;
+ appearance: none;
+ transition: background-color var(--transition-colors), border-color var(--transition-colors);
+}
+
+/* Calendar Body */
+.kroma-calendar-body {
+ padding: var(--space-4);
+}
+
+/* Weekday Names and Dates */
+.kroma-calendar-weekdays,
+.kroma-calendar-dates {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ gap: var(--space-2);
+ margin-top: var(--space-2);
+ justify-items: center;
+ align-items: center;
+}
+
+/* Weekday Styling */
+.kroma-calendar-weekdays div {
+ text-align: center;
+ font-weight: 600;
+ color: var(--neutral-200);
+ padding: var(--space-1) 0;
+ border-radius: var(--radius-sm);
+}
+
+/* Dates Styling */
+.kroma-calendar-dates button {
+ position: relative;
+ width: 100%;
+ height: clamp(4rem, 8vw, 5rem);
+ text-align: center;
+ background: none;
+ border: none;
+ border-radius: var(--radius-md);
+ font-size: clamp(1rem, 1vw, 1.125rem);
+ color: var(--calendar-text);
+ cursor: pointer;
+ transition: background-color var(--transition-colors), color var(--transition-colors), box-shadow var(--transition-all);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+}
+
+/* Hover and Selected Date Effects */
+.kroma-calendar-dates button:hover {
+ background-color: var(--calendar-hover-bg);
+ color: var(--calendar-text);
+}
+
+.kroma-calendar-dates button[data-selected="true"] {
+ background-color: var(--calendar-selected-bg);
+ color: var(--calendar-text);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.kroma-calendar-dates button[data-today="true"] {
+ border: 2px solid var(--calendar-today-border);
+ border-radius: var(--radius-md);
+}
+
+/* Disabled Dates */
+.kroma-calendar-dates button[data-disabled="true"] {
+ color: var(--neutral-400);
+ cursor: not-allowed;
+}
+
+/* Calendar Variant with Items */
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button {
+ display: flex;
+ flex-direction: column;
+ padding: var(--space-1) var(--space-2);
+ overflow-y: auto;
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates .date-item {
+ font-size: 0.75rem;
+ color: var(--neutral-800);
+ background-color: var(--neutral-200);
+ border-radius: var(--radius-sm);
+ padding: 0.125rem var(--space-1);
+ margin-top: var(--space-1);
+ white-space: nowrap;
+}
+
+/* Scrollbar for Day Cells */
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar {
+ width: 6px;
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-thumb {
+ background-color: var(--calendar-scrollbar);
+ border-radius: var(--radius-md);
+}
+
+.kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-track {
+ background-color: var(--neutral-200);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
.kroma-calendar {
- --calendar-bg: var(--variant-bg);
- --calendar-text: var(--variant-text);
- --calendar-hover-bg: var(--variant-hover);
- --calendar-selected-bg: var(--variant-light-bg);
- --calendar-today-border: var(--variant-border);
- --calendar-scrollbar: var(--variant-dark-bg);
+ padding: var(--space-2);
}
-
- /* Calendar Header */
+
.kroma-calendar-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: var(--space-4);
- background-color: var(--calendar-bg, var(--neutral-200));
- color: var(--calendar-text, var(--neutral-800));
- border-radius: var(--radius-md);
- font-size: clamp(1.5rem, 2.5vw, 1.75rem);
- text-transform: uppercase;
- gap: var(--space-4);
- height: clamp(3rem, 6vw, 4rem);
- }
-
- /* Navigation Icons */
- .kroma-calendar-nav {
- background: none;
- border: none;
- color: var(--neutral-800);
- font-size: clamp(2rem, 4vw, 2.5rem);
- cursor: pointer;
- transition: color var(--transition-colors), transform var(--transition-transform);
- display: flex;
- align-items: center;
- }
-
- .kroma-calendar-nav:hover {
- color: var(--calendar-hover-bg, var(--neutral-600));
- transform: scale(1.2);
- }
-
- /* Month and Year Display */
- .kroma-calendar-month-year {
- font-size: clamp(1.5rem, 3vw, 1.75rem);
- font-weight: bold;
- text-align: center;
- flex-grow: 1;
- display: flex;
- justify-content: center;
- align-items: center;
- }
-
- /* Month and Year Selectors */
- .kroma-calendar-selectors {
- display: flex;
+ flex-wrap: nowrap;
gap: var(--space-2);
- margin-top: var(--space-2);
- }
-
- .kroma-calendar-selectors select {
- padding: var(--space-2) var(--space-3);
- font-size: clamp(0.875rem, 1vw, 1rem);
- border-radius: var(--radius-md);
- border: 1px solid var(--neutral-300);
- color: var(--neutral-800);
- background-color: var(--neutral-100);
- outline: none;
- cursor: pointer;
- appearance: none;
- transition: background-color var(--transition-colors), border-color var(--transition-colors);
- }
-
- /* Calendar Body */
- .kroma-calendar-body {
- padding: var(--space-4);
- }
-
- /* Weekday Names and Dates */
- .kroma-calendar-weekdays,
- .kroma-calendar-dates {
- display: grid;
- grid-template-columns: repeat(7, 1fr);
- gap: var(--space-2);
- margin-top: var(--space-2);
- justify-items: center;
- align-items: center;
- }
-
- /* Weekday Styling */
- .kroma-calendar-weekdays div {
- text-align: center;
- font-weight: 600;
- color: var(--neutral-600);
- padding: var(--space-1) 0;
- border-radius: var(--radius-sm);
+ height: auto;
}
-
- /* Dates Styling */
+
+ .kroma-calendar-weekdays div,
.kroma-calendar-dates button {
- position: relative;
- width: 100%;
- height: clamp(3.5rem, 7vw, 4.5rem);
- max-height: 5rem;
- text-align: center;
- background: none;
- border: none;
- border-radius: var(--radius-md);
- font-size: clamp(0.875rem, 1vw, 1rem);
- color: var(--neutral-800);
- cursor: pointer;
- transition: background-color var(--transition-colors), color var(--transition-colors), box-shadow var(--transition-all);
- display: flex;
- align-items: center;
- justify-content: center;
- overflow: hidden;
- flex-direction: column;
- }
-
- /* Hover and Selected Date Effects */
- .kroma-calendar-dates button:hover {
- background-color: var(--calendar-hover-bg, var(--neutral-300));
- color: var(--calendar-text);
- }
-
- .kroma-calendar-dates button[data-selected="true"] {
- background-color: var(--calendar-selected-bg);
- color: var(--calendar-text);
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
- }
-
- .kroma-calendar-dates button[data-today="true"] {
- border: 2px solid var(--calendar-today-border);
- border-radius: var(--radius-md);
- }
-
- /* Disabled Dates */
- .kroma-calendar-dates button[data-disabled="true"] {
- color: var(--neutral-400);
- cursor: not-allowed;
- }
-
- /* Calendar Variant with Items */
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button {
- display: flex;
- flex-direction: column;
- padding: var(--space-1) var(--space-2);
- overflow-y: auto;
- }
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates .date-item {
- font-size: 0.75rem;
- color: var(--neutral-500);
- background-color: var(--neutral-200);
- border-radius: var(--radius-sm);
- padding: 0.125rem var(--space-1);
- margin-top: var(--space-1);
- white-space: nowrap;
- }
-
- /* Scrollbar for Day Cells */
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar {
- width: 6px;
- }
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-thumb {
- background-color: var(--calendar-scrollbar);
- border-radius: var(--radius-md);
- }
-
- .kroma-calendar[data-type="with-items"] .kroma-calendar-dates button::-webkit-scrollbar-track {
- background-color: var(--neutral-200);
- }
-
- /* Responsive Adjustments */
- @media (max-width: 768px) {
- .kroma-calendar {
- padding: var(--space-2);
- }
-
- .kroma-calendar-header {
- flex-wrap: nowrap;
- gap: var(--space-2);
- height: auto;
- }
-
- .kroma-calendar-weekdays div,
- .kroma-calendar-dates button {
- font-size: clamp(0.75rem, 1.5vw, 0.875rem);
- height: clamp(2.5rem, 10vw, 3rem);
- }
+ font-size: clamp(0.85rem, 1.5vw, 1rem);
+ height: clamp(3rem, 10vw, 4rem);
}
-
\ No newline at end of file
+}
diff --git a/src/css/components/card.css b/src/css/components/card.css
index 8880901..f4cf062 100644
--- a/src/css/components/card.css
+++ b/src/css/components/card.css
@@ -20,13 +20,47 @@
box-shadow: var(--card-hover-shadow, var(--shadow-xl));
}
+/* Card Variants */
+.kroma-card {
+ --card-bg: var(--variant-bg, var(--neutral-50));
+ --card-text: var(--variant-text, var(--neutral-900));
+ --card-header-text: var(--variant-text, var(--neutral-800));
+ --card-body-text: var(--variant-text, var(--neutral-700));
+ --card-footer-bg: var(--variant-light-bg, var(--neutral-100));
+ --card-footer-text: var(--variant-text, var(--neutral-900));
+ --card-hover-shadow: var(--variant-shadow, var(--shadow-xl));
+}
+
+/* Outline Style */
+.kroma-card[data-variant="outline"] {
+ background-color: transparent;
+ border: 1px solid var(--variant-border);
+ color: var(--variant-text);
+}
+
+.kroma-card[data-variant="outline"]:hover {
+ box-shadow: var(--card-hover-shadow, var(--shadow-lg));
+}
+
+/* Elevated Variant */
+.kroma-card[data-variant="elevated"] {
+ background-color: var(--variant-bg);
+ box-shadow: var(--shadow-xl);
+}
+
+/* Flat Variant */
+.kroma-card[data-variant="flat"] {
+ background-color: transparent;
+ box-shadow: none;
+}
+
/* Card Header */
.kroma-card-header {
width: 100%;
padding: var(--space-5) var(--space-6);
font-weight: bold;
font-size: 1.25rem;
- color: var(--card-header-text, var(--neutral-800));
+ color: var(--card-header-text);
border-bottom: 1px solid var(--card-header-border, var(--neutral-200));
text-align: center;
}
@@ -47,7 +81,7 @@
.kroma-card-body {
padding: var(--space-6);
text-align: center;
- color: var(--card-body-text, var(--neutral-700));
+ color: var(--card-body-text);
font-size: 1rem;
flex: 1 0 auto; /* Ensure body grows to fill available space */
}
@@ -56,49 +90,15 @@
.kroma-card-footer {
width: 100%;
padding: var(--space-4) var(--space-6);
- background-color: var(--card-footer-bg, var(--neutral-100));
+ background-color: var(--card-footer-bg);
border-top: 1px solid var(--card-footer-border, var(--neutral-200));
display: flex;
justify-content: center;
gap: var(--space-2);
- color: var(--card-footer-text, var(--neutral-900));
+ color: var(--card-footer-text);
flex-shrink: 0; /* Prevent footer from shrinking */
}
-/* Card Variants */
-.kroma-card[data-variant] {
- --card-bg: var(--variant-bg);
- --card-text: var(--variant-text);
- --card-header-text: var(--variant-text);
- --card-body-text: var(--variant-text);
- --card-footer-bg: var(--variant-light-bg, var(--neutral-200));
- --card-footer-text: var(--variant-text);
- --card-hover-shadow: var(--variant-shadow, var(--shadow-xl));
-}
-
-/* Outline Style */
-.kroma-card[data-variant="outline"] {
- background-color: transparent;
- border: 1px solid var(--variant-border);
- color: var(--variant-text);
-}
-
-.kroma-card[data-variant="outline"]:hover {
- box-shadow: var(--card-hover-shadow, var(--shadow-lg));
-}
-
-/* Elevated Variant */
-.kroma-card[data-variant="elevated"] {
- background-color: var(--variant-bg);
- box-shadow: var(--shadow-xl);
-}
-
-/* Flat Variant */
-.kroma-card[data-variant="flat"] {
- background-color: transparent;
- box-shadow: none;
-}
-
/* Labels */
.kroma-card-label {
position: absolute;
@@ -142,6 +142,7 @@
align-self: stretch; /* Stretch footer to align with the card's layout */
}
+/* Scrollable Cards */
.kroma-card-scrollable {
display: flex;
overflow-x: auto;
@@ -163,7 +164,6 @@
background-color: var(--neutral-200); /* Scrollbar track color */
}
-/* Scrollable Cards */
.kroma-card-scrollable .kroma-card {
flex: 0 0 auto;
scroll-snap-align: center; /* Center cards in the viewport */
diff --git a/src/css/components/codeblock.css b/src/css/components/codeblock.css
index ca61deb..a756ad2 100644
--- a/src/css/components/codeblock.css
+++ b/src/css/components/codeblock.css
@@ -1,10 +1,10 @@
/* Base Styling for Code Block */
.kroma-code-block {
- background: var(--variant-bg);
- color: var(--variant-text);
- border: 1px solid var(--variant-border);
+ background: var(--variant-bg, var(--neutral-50));
+ color: var(--variant-text, var(--neutral-900));
+ border: 1px solid var(--variant-border, var(--neutral-200));
border-radius: var(--radius-lg);
- box-shadow: var(--variant-shadow);
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
padding: clamp(var(--space-3), 2vw, var(--space-5));
position: relative;
overflow: hidden;
@@ -21,6 +21,7 @@
max-width: 80%;
}
}
+
@media (min-width: 1024px) {
.kroma-code-block {
margin: var(--space-6) auto;
@@ -95,8 +96,8 @@
}
.kroma-code-block .kroma-action-btn {
- background: var(--variant-hover-bg);
- color: var(--variant-text);
+ background: var(--variant-hover-bg, var(--neutral-200));
+ color: var(--variant-text, var(--neutral-900));
border: none;
border-radius: var(--radius-md);
padding: clamp(var(--space-2), 1vw, var(--space-3)) var(--space-4);
@@ -109,6 +110,6 @@
}
.kroma-code-block .kroma-action-btn:hover {
- background: var(--variant-hover);
+ background: var(--variant-hover, var(--neutral-300));
transform: scale(1.05);
}
diff --git a/src/css/components/command-palette.css b/src/css/components/command-palette.css
index 1180ffb..bf4ac4e 100644
--- a/src/css/components/command-palette.css
+++ b/src/css/components/command-palette.css
@@ -102,7 +102,7 @@
.kroma-command-palette .kroma-palette-item:hover,
.kroma-command-palette .kroma-palette-item:focus {
background: var(--palette-item-hover-bg, var(--variant-hover-bg));
- color: var(--neutral-700);
+ color: var(--palette-item-hover-text, var(--neutral-700));
}
.kroma-command-palette .kroma-palette-item[data-active="true"] {
diff --git a/src/css/components/datetime-picker.css b/src/css/components/datetime-picker.css
index 1424804..3283d94 100644
--- a/src/css/components/datetime-picker.css
+++ b/src/css/components/datetime-picker.css
@@ -128,7 +128,7 @@
.kroma-quick-select button:hover {
background-color: var(--variant-hover-bg, var(--neutral-400));
color: #fff;
-}
+}
/* Time Selector */
.kroma-time-selector {
diff --git a/src/css/components/dropdown.css b/src/css/components/dropdown.css
index ca4ea14..65f7d38 100644
--- a/src/css/components/dropdown.css
+++ b/src/css/components/dropdown.css
@@ -16,7 +16,7 @@
/* Dropdown Menu */
.kroma-dropdown-menu {
position: absolute;
- top: calc(100% + var(--space-1)); /* Reduced spacing for closer alignment */
+ top: calc(100% + var(--space-1));
left: 0;
min-width: 150px;
background-color: var(--variant-bg, var(--neutral-50));
@@ -25,7 +25,7 @@
border-radius: var(--radius-lg);
padding: var(--space-2) 0;
opacity: 0;
- transform: translateY(-5px); /* Slight offset for a subtle animation effect */
+ transform: translateY(-5px);
transition: opacity 0.3s ease, transform 0.3s ease;
visibility: hidden;
z-index: var(--z-30);
@@ -35,7 +35,7 @@
/* Active State for Dropdown */
.kroma-dropdown.kroma-open .kroma-dropdown-menu {
opacity: 1;
- transform: translateY(0); /* Reset translation when active */
+ transform: translateY(0);
visibility: visible;
}
@@ -54,36 +54,26 @@
.kroma-dropdown-item:hover,
.kroma-dropdown-item:focus {
- background-color: var(--variant-hover-bg, var(--neutral-200));
- color: var(--variant-hover, var(--primary));
+ background-color: var(--variant-dark-bg, var(--neutral-200));
}
/* Position Variants */
.kroma-dropdown[data-position="top"] .kroma-dropdown-menu {
top: auto;
- bottom: calc(100% + var(--space-1)); /* Reduced spacing for top positioning */
- transform: translateY(5px); /* Subtle animation effect */
+ bottom: calc(100% + var(--space-1));
+ transform: translateY(5px);
}
.kroma-dropdown[data-position="right"] .kroma-dropdown-menu {
top: 0;
- left: calc(100% + var(--space-1)); /* Reduced spacing for right positioning */
- transform: translateX(-5px); /* Subtle animation effect */
+ left: calc(100% + var(--space-1));
+ transform: translateX(-5px);
}
.kroma-dropdown[data-position="left"] .kroma-dropdown-menu {
top: 0;
- right: calc(100% + var(--space-1)); /* Reduced spacing for left positioning */
- transform: translateX(5px); /* Subtle animation effect */
-}
-
-/* Variants Handling */
-.kroma-dropdown[data-variant="dark"] {
- --variant-bg: var(--neutral-900);
- --variant-text: var(--neutral-50);
- --variant-hover-bg: var(--neutral-700);
- --variant-hover: var(--neutral-50);
- --variant-shadow: var(--shadow-lg);
+ right: calc(100% + var(--space-1));
+ transform: translateX(5px);
}
/* Mega Menu */
diff --git a/src/css/components/fab.css b/src/css/components/fab.css
index 6fd2ccc..373d734 100644
--- a/src/css/components/fab.css
+++ b/src/css/components/fab.css
@@ -3,19 +3,19 @@
position: fixed;
bottom: var(--space-8, 2rem);
right: var(--space-8, 2rem);
- display: flex; /* Flexbox ensures centering of children */
- align-items: center; /* Vertically center content */
- justify-content: center; /* Horizontally center content */
- padding: 0; /* Remove default padding for precise centering */
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0;
font-size: 1.5rem;
- width: clamp(3rem, 8vw, 4rem); /* Ensure FAB is always square */
- height: clamp(3rem, 8vw, 4rem); /* Match width for perfect circle */
+ width: clamp(3rem, 8vw, 4rem);
+ height: clamp(3rem, 8vw, 4rem);
background-color: var(--variant-bg, var(--primary));
color: var(--variant-text, #ffffff);
cursor: pointer;
border: none;
box-shadow: var(--shadow-lg, 0 4px 8px rgba(0, 0, 0, 0.2));
- border-radius: var(--radius-full, 50%); /* Circular shape */
+ border-radius: var(--radius-full, 50%);
transition:
background-color var(--transition-colors, 0.2s ease),
transform var(--transition-transform, 0.2s ease),
@@ -28,10 +28,10 @@
display: flex;
align-items: center;
justify-content: center;
- width: 100%; /* Icon scales with FAB size */
- height: 100%; /* Icon scales with FAB size */
- font-size: inherit; /* Inherit FAB font size */
- line-height: 1; /* Prevent text alignment issues */
+ width: 100%;
+ height: 100%;
+ font-size: inherit;
+ line-height: 1;
}
/* FAB Hover and Active States */
@@ -49,7 +49,7 @@
/* Shape Variants */
.kroma-fab[data-shape="circular"] {
border-radius: var(--radius-full, 50%);
- padding: 0; /* Ensure circular shape is preserved */
+ padding: 0;
}
.kroma-fab[data-shape="square"] {
@@ -61,6 +61,19 @@
padding: clamp(0.75rem, 1.5vw, 1rem) clamp(1.5rem, 3vw, 2rem);
}
+/* Size Variants */
+.kroma-fab[data-size="small"] {
+ width: clamp(2.5rem, 6vw, 3rem);
+ height: clamp(2.5rem, 6vw, 3rem);
+ font-size: 1.25rem;
+}
+
+.kroma-fab[data-size="large"] {
+ width: clamp(4rem, 10vw, 5rem);
+ height: clamp(4rem, 10vw, 5rem);
+ font-size: 1.75rem;
+}
+
/* Responsive Adjustments */
@media (max-width: 768px) {
.kroma-fab {
diff --git a/src/css/components/file-upload.css b/src/css/components/file-upload.css
index 476519e..dd5804a 100644
--- a/src/css/components/file-upload.css
+++ b/src/css/components/file-upload.css
@@ -174,7 +174,7 @@
opacity: 1;
transform: translateY(0);
}
-}
+}
/* Responsive Adjustments */
@media (max-width: 768px) {
diff --git a/src/css/components/form.css b/src/css/components/form.css
index f4890df..f3619af 100644
--- a/src/css/components/form.css
+++ b/src/css/components/form.css
@@ -21,7 +21,9 @@
}
/* Input, Textarea, and Select Base Styles */
-.kroma-input, .kroma-textarea, .kroma-select {
+.kroma-input,
+.kroma-textarea,
+.kroma-select {
font-family: var(--font-sans);
font-size: clamp(0.875rem, 1vw + 0.25rem, 1rem);
padding: var(--space-3) var(--space-4);
@@ -35,36 +37,47 @@
}
/* Placeholder Styling */
-.kroma-input::placeholder, .kroma-textarea::placeholder, .kroma-select::placeholder {
+.kroma-input::placeholder,
+.kroma-textarea::placeholder,
+.kroma-select::placeholder {
color: var(--neutral-500);
}
/* Focus and Hover Styles */
-.kroma-input:focus, .kroma-textarea:focus, .kroma-select:focus {
+.kroma-input:focus,
+.kroma-textarea:focus,
+.kroma-select:focus {
outline: none;
border-color: var(--variant-border, var(--neutral-400));
box-shadow: 0px 0px 0px 3px var(--variant-light-bg, var(--neutral-200));
}
-.kroma-input:hover, .kroma-textarea:hover, .kroma-select:hover {
+.kroma-input:hover,
+.kroma-textarea:hover,
+.kroma-select:hover {
border-color: var(--neutral-400);
box-shadow: var(--shadow-md);
}
/* Variants for Input, Textarea, and Select */
-[data-variant] .kroma-input, [data-variant] .kroma-textarea, [data-variant] .kroma-select {
+[data-variant] .kroma-input,
+[data-variant] .kroma-textarea,
+[data-variant] .kroma-select {
background-color: var(--variant-bg);
border-color: var(--variant-border);
color: var(--variant-text);
box-shadow: var(--variant-shadow);
}
-[data-variant] .kroma-input::placeholder, [data-variant] .kroma-textarea::placeholder {
+[data-variant] .kroma-input::placeholder,
+[data-variant] .kroma-textarea::placeholder {
color: var(--variant-text-light, rgba(255, 255, 255, 0.8));
}
/* Disabled State */
-.kroma-input:disabled, .kroma-textarea:disabled, .kroma-select:disabled {
+.kroma-input:disabled,
+.kroma-textarea:disabled,
+.kroma-select:disabled {
color: var(--neutral-700);
background-color: var(--neutral-200);
cursor: not-allowed;
@@ -72,7 +85,8 @@
}
/* Readonly State */
-.kroma-input-readonly, .kroma-textarea-readonly {
+.kroma-input-readonly,
+.kroma-textarea-readonly {
background-color: var(--neutral-100);
color: var(--neutral-800);
cursor: default;
@@ -113,7 +127,9 @@
}
/* Error State */
-.kroma-input-error, .kroma-textarea-error, .kroma-select-error {
+.kroma-input-error,
+.kroma-textarea-error,
+.kroma-select-error {
border-color: var(--variant-border, var(--danger-border));
box-shadow: 0px 0px 0px 3px var(--variant-light-bg, var(--danger-light-bg));
}
@@ -126,7 +142,8 @@
}
/* Checkbox & Radio Groups */
-.kroma-checkbox-group, .kroma-radio-group {
+.kroma-checkbox-group,
+.kroma-radio-group {
display: flex;
gap: var(--space-4);
align-items: center;
@@ -134,7 +151,8 @@
}
/* Base Checkbox and Radio Styles */
-.kroma-checkbox, .kroma-radio {
+.kroma-checkbox,
+.kroma-radio {
display: inline-flex;
align-items: center;
gap: var(--space-2);
@@ -144,14 +162,16 @@
transition: color var(--transition-colors);
}
-.kroma-checkbox input[type="checkbox"], .kroma-radio input[type="radio"] {
+.kroma-checkbox input[type="checkbox"],
+.kroma-radio input[type="radio"] {
position: absolute;
opacity: 0;
cursor: pointer;
}
/* Checkbox and Radio Icons */
-.kroma-checkbox-icon, .kroma-radio-icon {
+.kroma-checkbox-icon,
+.kroma-radio-icon {
display: inline-flex;
align-items: center;
justify-content: center;
@@ -174,13 +194,15 @@
}
/* Hover and Active States */
-.kroma-checkbox:hover .kroma-checkbox-icon, .kroma-radio:hover .kroma-radio-icon {
+.kroma-checkbox:hover .kroma-checkbox-icon,
+.kroma-radio:hover .kroma-radio-icon {
border-color: var(--neutral-400);
box-shadow: var(--shadow-lg);
transform: scale(1.05);
}
-.kroma-checkbox:active .kroma-checkbox-icon, .kroma-radio:active .kroma-radio-icon {
+.kroma-checkbox:active .kroma-checkbox-icon,
+.kroma-radio:active .kroma-radio-icon {
box-shadow: var(--shadow-sm);
transform: scale(0.95);
}
diff --git a/src/css/components/hero.css b/src/css/components/hero.css
index cd90209..678a42b 100644
--- a/src/css/components/hero.css
+++ b/src/css/components/hero.css
@@ -1,197 +1,171 @@
/* Base Hero Styles */
.kroma-hero {
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- text-align: center;
- border-radius: var(--radius-lg);
- color: var(--neutral-900);
- background-color: var(--neutral-50);
- box-shadow: var(--shadow-lg);
- margin: var(--space-4);
- padding: var(--space-4);
- transition: transform 0.3s ease, box-shadow 0.3s ease, background-color var(--transition-colors);
- width: calc(100% - var(--space-8));
- overflow: hidden;
- }
-
- /* Gradient Variants */
- .kroma-hero[data-variant] {
- background: linear-gradient(135deg, var(--variant-light-bg), var(--variant-bg));
- color: var(--variant-text);
- }
-
- /* Specific Variants */
- .kroma-hero[data-variant="primary"] {
- --variant-light-bg: var(--primary-light-bg);
- --variant-bg: var(--primary-bg);
- --variant-text: var(--primary-text);
- }
-
- .kroma-hero[data-variant="secondary"] {
- --variant-light-bg: var(--secondary-light-bg);
- --variant-bg: var(--secondary-bg);
- --variant-text: var(--secondary-text);
- }
-
- .kroma-hero[data-variant="danger"] {
- --variant-light-bg: var(--danger-light-bg);
- --variant-bg: var(--danger-bg);
- --variant-text: var(--danger-text);
- }
-
- .kroma-hero[data-variant="info"] {
- --variant-light-bg: var(--info-light-bg);
- --variant-bg: var(--info-bg);
- --variant-text: var(--info-text);
- }
-
- /* Overlay Effects */
- .kroma-hero[data-overlay]::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: 0;
- border-radius: inherit;
- pointer-events: none;
- }
-
- .kroma-hero[data-overlay="dark"]::before {
- background: rgba(0, 0, 0, 0.5);
- }
-
- .kroma-hero[data-overlay="light"]::before {
- background: rgba(255, 255, 255, 0.5);
- }
-
- .kroma-hero[data-overlay="gradient-dark"]::before {
- background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.2));
- }
-
- .kroma-hero[data-overlay="gradient-light"]::before {
- background: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.2));
- }
-
- /* Hero Content */
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border-radius: var(--radius-lg);
+ color: var(--neutral-900);
+ background-color: var(--neutral-50);
+ box-shadow: var(--shadow-lg);
+ margin: var(--space-4);
+ padding: var(--space-4);
+ transition: transform 0.3s ease, box-shadow 0.3s ease, background-color var(--transition-colors);
+ width: calc(100% - var(--space-8));
+ overflow: hidden;
+}
+
+/* Gradient Variants */
+.kroma-hero[data-variant] {
+ background: linear-gradient(135deg, var(--variant-light-bg), var(--variant-bg));
+ color: var(--variant-text);
+}
+
+/* Overlay Effects */
+.kroma-hero[data-overlay]::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 0;
+ border-radius: inherit;
+ pointer-events: none;
+}
+
+.kroma-hero[data-overlay="dark"]::before {
+ background: rgba(0, 0, 0, 0.5);
+}
+
+.kroma-hero[data-overlay="light"]::before {
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.kroma-hero[data-overlay="gradient-dark"]::before {
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.2));
+}
+
+.kroma-hero[data-overlay="gradient-light"]::before {
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.2));
+}
+
+/* Hero Content */
+.kroma-hero-content {
+ position: relative;
+ z-index: 1;
+ width: 100%;
+ max-width: 90%;
+ margin: 0 auto;
+ padding: var(--space-4);
+ font-size: var(--font-lg);
+}
+
+/* Size Variants */
+.kroma-hero[data-size="sm"] { max-height: 40vh; }
+.kroma-hero[data-size="md"] { max-height: 60vh; }
+.kroma-hero[data-size="lg"] { max-height: 80vh; }
+.kroma-hero[data-size="full"] { max-height: 100vh; }
+
+/* Layout Options */
+.kroma-hero[data-layout="row"] {
+ flex-direction: row;
+ text-align: left;
+}
+
+.kroma-hero[data-layout="row-reverse"] {
+ flex-direction: row-reverse;
+ text-align: left;
+}
+
+.kroma-hero[data-layout="column"] {
+ flex-direction: column;
+}
+
+/* Content Alignment */
+.kroma-hero[data-alignment="start"] { justify-content: flex-start; }
+.kroma-hero[data-alignment="end"] { justify-content: flex-end; }
+.kroma-hero[data-alignment="center"] { justify-content: center; }
+
+/* Content Width Variants */
+.kroma-hero[data-content-width="narrow"] .kroma-hero-content { max-width: 65ch; }
+.kroma-hero[data-content-width="wide"] .kroma-hero-content { max-width: 100ch; }
+
+/* Spacing Variants */
+.kroma-hero[data-spacing="sm"] { padding: var(--space-3); }
+.kroma-hero[data-spacing="md"] { padding: var(--space-6); }
+.kroma-hero[data-spacing="lg"] { padding: var(--space-8); }
+
+/* Border Radius Variants */
+.kroma-hero[data-radius="none"] { border-radius: 0; }
+.kroma-hero[data-radius="sm"] { border-radius: var(--radius-sm); }
+.kroma-hero[data-radius="lg"] { border-radius: var(--radius-lg); }
+
+/* Shadow Variants */
+.kroma-hero[data-shadow="none"] { box-shadow: none; }
+.kroma-hero[data-shadow="sm"] { box-shadow: var(--shadow-sm); }
+.kroma-hero[data-shadow="xl"] { box-shadow: var(--shadow-xl); }
+
+/* Hover Effects */
+.kroma-hero[data-hover="lift"]:hover {
+ transform: translateY(-5px);
+ box-shadow: var(--shadow-xl);
+}
+
+.kroma-hero[data-hover="scale"]:hover {
+ transform: scale(1.03);
+}
+
+.kroma-hero[data-hover="brightness"]:hover {
+ filter: brightness(1.15);
+}
+
+/* Animation Variants */
+.kroma-hero[data-animation="fade"] { animation: heroFade 0.5s ease-in; }
+.kroma-hero[data-animation="slide"] { animation: heroSlide 0.5s ease-out; }
+.kroma-hero[data-animation="scale"] { animation: heroScale 0.5s ease-in-out; }
+
+@keyframes heroFade {
+ from { opacity: 0; }
+ to { opacity: 1; }
+}
+
+@keyframes heroSlide {
+ from { transform: translateY(20px); opacity: 0; }
+ to { transform: translateY(0); opacity: 1; }
+}
+
+@keyframes heroScale {
+ from { transform: scale(0.9); opacity: 0; }
+ to { transform: scale(1); opacity: 1; }
+}
+
+/* Hero Image */
+.kroma-hero[data-image] {
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+.kroma-hero[data-image]::before {
+ background: none;
+}
+
+/* Responsive Adjustments */
+@media (max-width: 1280px) {
+ .kroma-hero-content { max-width: 95%; }
+}
+
+@media (max-width: 1024px) {
+ .kroma-hero {
+ margin: var(--space-3);
+ padding: var(--space-3);
+ }
+}
+
+@media (max-width: 768px) {
.kroma-hero-content {
- position: relative;
- z-index: 1;
- width: 100%;
- max-width: 90%;
- margin: 0 auto;
- padding: var(--space-4);
- font-size: var(--font-lg);
- }
-
- /* Size Variants */
- .kroma-hero[data-size="sm"] { max-height: 40vh; }
- .kroma-hero[data-size="md"] { max-height: 60vh; }
- .kroma-hero[data-size="lg"] { max-height: 80vh; }
- .kroma-hero[data-size="full"] { max-height: 100vh; }
-
- /* Layout Options */
- .kroma-hero[data-layout="row"] {
- flex-direction: row;
- text-align: left;
- }
-
- .kroma-hero[data-layout="row-reverse"] {
- flex-direction: row-reverse;
- text-align: left;
- }
-
- .kroma-hero[data-layout="column"] {
- flex-direction: column;
- }
-
- /* Content Alignment */
- .kroma-hero[data-alignment="start"] { justify-content: flex-start; }
- .kroma-hero[data-alignment="end"] { justify-content: flex-end; }
- .kroma-hero[data-alignment="center"] { justify-content: center; }
-
- /* Content Width Variants */
- .kroma-hero[data-content-width="narrow"] .kroma-hero-content { max-width: 65ch; }
- .kroma-hero[data-content-width="wide"] .kroma-hero-content { max-width: 100ch; }
-
- /* Spacing Variants */
- .kroma-hero[data-spacing="sm"] { padding: var(--space-3); }
- .kroma-hero[data-spacing="md"] { padding: var(--space-6); }
- .kroma-hero[data-spacing="lg"] { padding: var(--space-8); }
-
- /* Border Radius Variants */
- .kroma-hero[data-radius="none"] { border-radius: 0; }
- .kroma-hero[data-radius="sm"] { border-radius: var(--radius-sm); }
- .kroma-hero[data-radius="lg"] { border-radius: var(--radius-lg); }
-
- /* Shadow Variants */
- .kroma-hero[data-shadow="none"] { box-shadow: none; }
- .kroma-hero[data-shadow="sm"] { box-shadow: var(--shadow-sm); }
- .kroma-hero[data-shadow="xl"] { box-shadow: var(--shadow-xl); }
-
- /* Hover Effects */
- .kroma-hero[data-hover="lift"]:hover {
- transform: translateY(-5px);
- box-shadow: var(--shadow-xl);
- }
-
- .kroma-hero[data-hover="scale"]:hover {
- transform: scale(1.03);
- }
-
- .kroma-hero[data-hover="brightness"]:hover {
- filter: brightness(1.15);
- }
-
- /* Animation Variants */
- .kroma-hero[data-animation="fade"] { animation: heroFade 0.5s ease-in; }
- .kroma-hero[data-animation="slide"] { animation: heroSlide 0.5s ease-out; }
- .kroma-hero[data-animation="scale"] { animation: heroScale 0.5s ease-in-out; }
-
- @keyframes heroFade {
- from { opacity: 0; }
- to { opacity: 1; }
- }
-
- @keyframes heroSlide {
- from { transform: translateY(20px); opacity: 0; }
- to { transform: translateY(0); opacity: 1; }
- }
-
- @keyframes heroScale {
- from { transform: scale(0.9); opacity: 0; }
- to { transform: scale(1); opacity: 1; }
- }
-
- /* Hero Image */
- .kroma-hero[data-image] {
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- }
-
- .kroma-hero[data-image]::before {
- background: none; /* Ensures overlay is only applied on image backgrounds */
- }
-
- /* Responsive Adjustments */
- @media (max-width: 1280px) {
- .kroma-hero-content { max-width: 95%; }
- }
-
- @media (max-width: 1024px) {
- .kroma-hero {
- margin: var(--space-3);
- padding: var(--space-3);
- }
- }
-
- @media (max-width: 768px) {
- .kroma-hero-content {
- font-size: clamp(0.875rem, 1.5vw, 1rem);
- }
+ font-size: clamp(0.875rem, 1.5vw, 1rem);
}
-
\ No newline at end of file
+}
diff --git a/src/css/components/hologram.css b/src/css/components/hologram.css
index cdd5b04..a09956f 100644
--- a/src/css/components/hologram.css
+++ b/src/css/components/hologram.css
@@ -129,9 +129,9 @@
/* Responsive Adjustments */
@media (max-width: 768px) {
.kroma-hologram-title {
- font-size: clamp(1.5rem, 4vw, 3rem);
+ font-size: clamp(1.5rem, 4vw, 3rem);
}
.kroma-hologram-subtitle {
- font-size: clamp(0.875rem, 2vw, 1.5rem);
+ font-size: clamp(0.875rem, 2vw, 1.5rem);
}
}
diff --git a/src/css/components/modal.css b/src/css/components/modal.css
index c8ec3f3..30943b2 100644
--- a/src/css/components/modal.css
+++ b/src/css/components/modal.css
@@ -5,7 +5,7 @@
left: 0;
width: 100%;
height: 100%;
- background-color: rgba(0, 0, 0, 0.8);
+ background-color: rgba(0, 0, 0, 0.8); /* Semi-transparent backdrop */
display: flex;
justify-content: center;
align-items: center;
@@ -13,7 +13,7 @@
opacity: 0;
visibility: hidden;
transition: opacity 0.35s ease, visibility 0.35s ease;
- backdrop-filter: blur(6px);
+ backdrop-filter: blur(6px); /* Smooth backdrop blur */
}
.kroma-modal-overlay.active {
@@ -23,15 +23,15 @@
/* Modal Container */
.kroma-modal {
- background-color: var(--variant-bg);
+ background-color: var(--variant-bg, var(--neutral-50));
border-radius: var(--radius-2xl);
- box-shadow: var(--variant-shadow);
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
max-width: clamp(20rem, 50vw, 40rem);
width: 100%;
position: relative;
animation: kroma-modal-appear 0.4s cubic-bezier(0.25, 1, 0.5, 1);
overflow: hidden;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
@keyframes kroma-modal-appear {
@@ -48,12 +48,12 @@
/* Modal Header */
.kroma-modal-header {
padding: var(--space-4);
- background-color: var(--variant-light-bg);
- border-bottom: 1px solid var(--variant-border);
+ background-color: var(--variant-light-bg, var(--neutral-100));
+ border-bottom: 1px solid var(--variant-border, var(--neutral-300));
display: flex;
justify-content: space-between;
align-items: center;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-800));
}
.kroma-modal-title {
@@ -66,12 +66,12 @@
border: none;
font-size: 1.5rem;
cursor: pointer;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-800));
transition: color 0.2s ease-in-out, transform 0.2s ease;
}
.kroma-modal-close:hover {
- color: var(--variant-hover-bg);
+ color: var(--variant-hover-bg, var(--neutral-700));
transform: scale(1.1);
}
@@ -80,25 +80,25 @@
padding: var(--space-4);
overflow-y: auto;
max-height: 60vh;
- scrollbar-color: var(--variant-hover-bg) var(--variant-light-bg);
+ scrollbar-color: var(--variant-hover-bg, var(--neutral-300)) var(--variant-light-bg, var(--neutral-100));
scrollbar-width: thin;
}
.kroma-modal-body::-webkit-scrollbar {
width: 8px;
- background-color: var(--variant-light-bg);
+ background-color: var(--variant-light-bg, var(--neutral-100));
}
.kroma-modal-body::-webkit-scrollbar-thumb {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
border-radius: 4px;
}
/* Modal Footer */
.kroma-modal-footer {
padding: var(--space-4);
- background-color: var(--variant-light-bg);
- border-top: 1px solid var(--variant-border);
+ background-color: var(--variant-light-bg, var(--neutral-100));
+ border-top: 1px solid var(--variant-border, var(--neutral-300));
text-align: right;
}
@@ -109,9 +109,9 @@
border-radius: 0;
max-width: none;
max-height: none;
- padding: var(--space-6);
- background-color: var(--neutral-200);
- color: var(--neutral-50);
+ padding: var(--space-6);
+ background-color: var(--neutral-200);
+ color: var(--neutral-50);
}
/* Responsive Adjustments */
diff --git a/src/css/components/multiselect.css b/src/css/components/multiselect.css
index 1f59030..d1620ae 100644
--- a/src/css/components/multiselect.css
+++ b/src/css/components/multiselect.css
@@ -12,19 +12,19 @@
display: flex;
align-items: center;
padding: var(--space-2);
- border: 1px solid var(--variant-border);
+ border: 1px solid var(--variant-border, var(--neutral-300));
border-radius: var(--radius-md);
- background-color: var(--variant-bg);
- box-shadow: var(--variant-shadow);
+ background-color: var(--variant-bg, var(--neutral-50));
+ box-shadow: var(--variant-shadow, var(--shadow-md));
cursor: pointer;
transition: border-color var(--transition-colors), box-shadow var(--transition-all);
position: relative;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
.kroma-multiselect-dropdown:focus-within {
- border-color: var(--variant-hover-bg);
- box-shadow: 0 0 0 3px var(--variant-light-bg);
+ border-color: var(--variant-hover-bg, var(--neutral-400));
+ box-shadow: 0 0 0 3px var(--variant-light-bg, var(--neutral-200));
}
/* Search Input */
@@ -35,13 +35,13 @@
padding: var(--space-1);
background: transparent;
font-size: 1rem;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
/* Clear Button */
.kroma-clear-selection {
font-size: 1.25rem;
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
cursor: pointer;
background: none;
border: none;
@@ -64,10 +64,10 @@
top: calc(100% + var(--space-1));
left: 0;
width: 100%;
- border: 1px solid var(--variant-border);
+ border: 1px solid var(--variant-border, var(--neutral-300));
border-radius: var(--radius-md);
- background-color: var(--variant-dark-bg);
- box-shadow: var(--variant-shadow);
+ background-color: var(--variant-dark-bg, var(--neutral-100));
+ box-shadow: var(--variant-shadow, var(--shadow-lg));
max-height: 200px;
overflow-y: auto;
display: none;
@@ -84,17 +84,17 @@
padding: var(--space-2);
cursor: pointer;
transition: background-color var(--transition-colors), color var(--transition-colors);
- color: var(--variant-text);
+ color: var(--variant-text, var(--neutral-900));
}
.kroma-multiselect-option:hover {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
color: #fff;
}
.kroma-multiselect-option.selected {
- background-color: var(--variant-hover-bg);
- color: var(--variant-text);
+ background-color: var(--variant-hover-bg, var(--neutral-400));
+ color: var(--variant-text, var(--neutral-900));
}
/* Chips for Selected Options */
@@ -114,7 +114,7 @@
font-size: 0.875rem;
line-height: 1.2;
color: #fff;
- background-color: var(--variant-bg);
+ background-color: var(--variant-bg, var(--neutral-600));
}
.kroma-chip-remove {
@@ -127,17 +127,17 @@
/* Scrollbar Customization */
.kroma-multiselect-options::-webkit-scrollbar {
width: 8px;
- background-color: var(--variant-light-bg);
+ background-color: var(--variant-light-bg, var(--neutral-200));
}
.kroma-multiselect-options::-webkit-scrollbar-thumb {
- background-color: var(--variant-hover-bg);
+ background-color: var(--variant-hover-bg, var(--neutral-300));
border-radius: 4px;
}
/* Placeholder Color */
.kroma-multiselect-search::placeholder {
- color: rgba(255, 255, 255, 0.7);
+ color: var(--variant-text-light, rgba(0, 0, 0, 0.6));
}
/* Responsive Adjustments */
diff --git a/src/css/components/stat-metrics.css b/src/css/components/stat-metrics.css
index 8c3b614..dd260c2 100644
--- a/src/css/components/stat-metrics.css
+++ b/src/css/components/stat-metrics.css
@@ -1,169 +1,162 @@
/* Base Stat Box Styles */
.kroma-stat-box {
- position: relative;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- padding: clamp(var(--space-4), 2vw, var(--space-6));
- border-radius: var(--radius-lg);
- background-color: var(--neutral-50);
- box-shadow: var(--shadow-md);
- transition: background-color var(--transition-colors), transform 0.3s ease, box-shadow 0.3s ease;
- text-align: center;
- width: 100%;
- max-width: 350px;
- gap: clamp(var(--space-2), 2vw, var(--space-4));
- margin: var(--space-4) auto;
- overflow: hidden;
- }
-
- /* Hover and Focus States */
- .kroma-stat-box:hover {
- background-color: var(--neutral-100);
- box-shadow: var(--shadow-lg);
- transform: translateY(-2px);
- }
- .kroma-stat-box:focus-within {
- outline: 2px solid var(--primary);
- }
-
- /* Icon Styling */
- .kroma-stat-box .kroma-icon {
- font-size: clamp(2.5rem, 5vw, 4rem);
- line-height: clamp(2.5rem, 5vw, 4rem);
- color: var(--neutral-800);
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: clamp(var(--space-4), 2vw, var(--space-6));
+ border-radius: var(--radius-lg);
+ background-color: var(--variant-bg, var(--neutral-50));
+ box-shadow: var(--variant-shadow, var(--shadow-md));
+ transition: background-color var(--transition-colors), transform 0.3s ease, box-shadow 0.3s ease;
+ text-align: center;
+ width: 100%;
+ max-width: 350px;
+ gap: clamp(var(--space-2), 2vw, var(--space-4));
+ margin: var(--space-4) auto;
+ overflow: hidden;
+ color: var(--variant-text, var(--neutral-900));
+}
+
+/* Hover and Focus States */
+.kroma-stat-box:hover {
+ background-color: var(--variant-hover-bg, var(--neutral-100));
+ box-shadow: var(--shadow-lg);
+ transform: translateY(-2px);
+}
+.kroma-stat-box:focus-within {
+ outline: 2px solid var(--primary);
+}
+
+/* Icon Styling */
+.kroma-stat-box .kroma-icon {
+ font-size: clamp(2.5rem, 5vw, 4rem);
+ line-height: clamp(2.5rem, 5vw, 4rem);
+ color: var(--variant-text, var(--neutral-800));
+}
+
+/* Title and Value Styling */
+.kroma-stat-box .kroma-title {
+ font-size: clamp(1rem, 2vw + 0.5rem, 1.25rem);
+ line-height: clamp(1rem, 2vw + 0.5rem, 1.25rem);
+ font-weight: 500;
+ color: var(--variant-text, var(--neutral-900));
+}
+
+.kroma-stat-box .kroma-value {
+ font-size: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
+ line-height: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
+ font-weight: 700;
+ margin-bottom: var(--space-2);
+}
+
+/* Change Indicator */
+.kroma-stat-box .kroma-change {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: var(--space-1);
+ font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
+ line-height: clamp(0.875rem, 1vw + 0.5rem, 1rem);
+ font-weight: 500;
+ margin-top: var(--space-2);
+}
+
+/* Positive and Negative Changes */
+.kroma-stat-box .kroma-change[data-change="positive"] {
+ color: var(--success);
+}
+.kroma-stat-box .kroma-change[data-change="negative"] {
+ color: var(--danger);
+}
+
+/* Layout Variants */
+.kroma-stat-box[data-layout="horizontal"] {
+ flex-direction: row;
+ align-items: center;
+ gap: var(--space-4);
+ text-align: left;
+ padding: clamp(var(--space-3), 1vw, var(--space-4));
+}
+.kroma-stat-box[data-layout="compact"] {
+ padding: var(--space-2);
+ max-width: 250px;
+ gap: var(--space-2);
+}
+.kroma-stat-box[data-layout="expanded"] {
+ padding: clamp(var(--space-6), 3vw, var(--space-8));
+ max-width: 450px;
+ box-shadow: var(--shadow-xl);
+}
+
+/* Alignment Variants */
+.kroma-stat-box[data-alignment="start"] {
+ align-items: flex-start;
+ text-align: left;
+}
+.kroma-stat-box[data-alignment="end"] {
+ align-items: flex-end;
+ text-align: right;
+}
+
+/* Spacing Variants */
+.kroma-stat-box[data-spacing="sm"] {
+ padding: var(--space-2);
+}
+.kroma-stat-box[data-spacing="lg"] {
+ padding: var(--space-8);
+}
+
+/* Shadow Options */
+.kroma-stat-box[data-shadow="none"] {
+ box-shadow: none;
+}
+.kroma-stat-box[data-shadow="sm"] {
+ box-shadow: var(--shadow-sm);
+}
+.kroma-stat-box[data-shadow="lg"] {
+ box-shadow: var(--shadow-lg);
+}
+
+/* Border Radius Options */
+.kroma-stat-box[data-radius="sm"] {
+ border-radius: var(--radius-sm);
+}
+.kroma-stat-box[data-radius="full"] {
+ border-radius: var(--radius-full);
+}
+
+/* Hover Effects */
+.kroma-stat-box[data-hover="lift"]:hover {
+ transform: translateY(-3px);
+ box-shadow: var(--shadow-xl);
+}
+.kroma-stat-box[data-hover="scale"]:hover {
+ transform: scale(1.05);
+}
+.kroma-stat-box[data-hover="brightness"]:hover {
+ filter: brightness(1.1);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ .kroma-stat-box {
+ padding: var(--space-3);
+ max-width: 90%;
}
-
- /* Title and Value Styling */
.kroma-stat-box .kroma-title {
- font-size: clamp(1rem, 2vw + 0.5rem, 1.25rem);
- line-height: clamp(1rem, 2vw + 0.5rem, 1.25rem);
- font-weight: 500;
- color: var(--neutral-900);
+ font-size: clamp(0.875rem, 2vw, 1rem);
}
-
.kroma-stat-box .kroma-value {
- font-size: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
- line-height: clamp(1.75rem, 3vw + 0.5rem, 2.5rem);
- font-weight: 700;
- color: var(--neutral-900);
- margin-bottom: var(--space-2);
- }
-
- /* Change Indicator */
- .kroma-stat-box .kroma-change {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: var(--space-1);
- font-size: clamp(0.875rem, 1vw + 0.5rem, 1rem);
- line-height: clamp(0.875rem, 1vw + 0.5rem, 1rem);
- font-weight: 500;
- margin-top: var(--space-2);
- }
-
- /* Positive and Negative Changes */
- .kroma-stat-box .kroma-change[data-change="positive"] {
- color: var(--success);
- }
- .kroma-stat-box .kroma-change[data-change="negative"] {
- color: var(--danger);
- }
-
- .kroma-stat-box {
- background-color: var(--variant-bg);
- color: var(--variant-text);
- box-shadow: var(--variant-shadow);
+ font-size: clamp(1.5rem, 4vw, 2rem);
}
-
- /* Layout Variants */
.kroma-stat-box[data-layout="horizontal"] {
- flex-direction: row;
- align-items: center;
- gap: var(--space-4);
- text-align: left;
- padding: clamp(var(--space-3), 1vw, var(--space-4));
- }
- .kroma-stat-box[data-layout="compact"] {
- padding: var(--space-2);
- max-width: 250px;
- gap: var(--space-2);
- }
- .kroma-stat-box[data-layout="expanded"] {
- padding: clamp(var(--space-6), 3vw, var(--space-8));
- max-width: 450px;
- box-shadow: var(--shadow-xl);
- }
-
- /* Alignment Variants */
- .kroma-stat-box[data-alignment="start"] {
- align-items: flex-start;
- text-align: left;
- }
- .kroma-stat-box[data-alignment="end"] {
- align-items: flex-end;
- text-align: right;
- }
-
- /* Spacing Variants */
- .kroma-stat-box[data-spacing="sm"] {
- padding: var(--space-2);
- }
- .kroma-stat-box[data-spacing="lg"] {
- padding: var(--space-8);
- }
-
- /* Shadow Options */
- .kroma-stat-box[data-shadow="none"] {
- box-shadow: none;
- }
- .kroma-stat-box[data-shadow="sm"] {
- box-shadow: var(--shadow-sm);
- }
- .kroma-stat-box[data-shadow="lg"] {
- box-shadow: var(--shadow-lg);
- }
-
- /* Border Radius Options */
- .kroma-stat-box[data-radius="sm"] {
- border-radius: var(--radius-sm);
- }
- .kroma-stat-box[data-radius="full"] {
- border-radius: var(--radius-full);
- }
-
- /* Hover Effects */
- .kroma-stat-box[data-hover="lift"]:hover {
- transform: translateY(-3px);
- box-shadow: var(--shadow-xl);
- }
- .kroma-stat-box[data-hover="scale"]:hover {
- transform: scale(1.05);
- }
- .kroma-stat-box[data-hover="brightness"]:hover {
- filter: brightness(1.1);
- }
-
- /* Responsive Adjustments */
- @media (max-width: 768px) {
- .kroma-stat-box {
- padding: var(--space-3);
- max-width: 90%;
- }
- .kroma-stat-box .kroma-title {
- font-size: clamp(0.875rem, 2vw, 1rem);
- }
- .kroma-stat-box .kroma-value {
- font-size: clamp(1.5rem, 4vw, 2rem);
- }
- .kroma-stat-box[data-layout="horizontal"] {
flex-direction: column;
align-items: center;
text-align: center;
- }
- .kroma-stat-box .kroma-change {
+ }
+ .kroma-stat-box .kroma-change {
margin-top: var(--space-1);
- }
}
-
\ No newline at end of file
+}
From 46c5dd122c7e86ec0ba6ae5bdfeb3a5b6b5b99e2 Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 22:07:14 +0100
Subject: [PATCH 5/7] Sections Utils
---
demo.html | 66 ++++-----
src/css/base.css | 55 +++++++
src/css/bundle.css | 272 +++++++++++++++++++++++++++++++++--
src/css/utils/colors.css | 24 ++--
src/css/utils/sections.css | 189 ++++++++++++++++++++++++
src/css/utils/typography.css | 1 -
6 files changed, 548 insertions(+), 59 deletions(-)
create mode 100644 src/css/utils/sections.css
diff --git a/demo.html b/demo.html
index e8b9f09..a16124e 100644
--- a/demo.html
+++ b/demo.html
@@ -53,7 +53,7 @@
-
+
Alert Component Showcase
@@ -70,7 +70,7 @@ Alert Component Showcase
-
+
Accordion Component Showcase
@@ -83,7 +83,7 @@
Accordion Component Showcase
-
+
Avatar Component Showcase
@@ -150,7 +150,7 @@ Avatar Component Showcase
-
+
Badge Component Showcase
@@ -183,7 +183,7 @@ Badge Component Showcase
-
+
Breadcrumb Component Showcase
@@ -224,7 +224,7 @@ Breadcrumb Component Showcase
-
+
Button Component Showcase
@@ -271,7 +271,7 @@ Button Component Showcase
-
+
Kroma Card Component Showcase
@@ -352,7 +352,7 @@
Scrollable Cards
-
+
DateTime Picker Component Showcase
@@ -369,7 +369,7 @@ DateTime Picker Component Showcase
-
+
Dropdown Component Showcase
@@ -401,7 +401,7 @@ Dropdown Component Showcase
-
+
Form Showcase
@@ -471,7 +471,7 @@ Form Showcase
-
+
Hero Showcase
@@ -514,7 +514,7 @@
Accent Hero
-
+
Hologram Component Demo
Click the buttons below to view different hologram styles and intensities.
@@ -537,7 +537,7 @@ Hologram Component Demo
-
+
Kroma Modal Component Demo
Click the buttons below to see modals with different styles and configurations.
@@ -609,7 +609,7 @@
Fullscreen Modal
-
+
Kroma MultiSelect Component Demo
Explore the MultiSelect component with different variants and configurations.
@@ -675,7 +675,7 @@ Kroma MultiSelect Component Demo
-
+
Toggle Component Demo
@@ -723,7 +723,7 @@
Toggle Component Demo
-
+
Progress Component Demo
@@ -749,7 +749,7 @@ Progress Component Demo
-
+
Separator Component Demo
@@ -778,7 +778,7 @@ Separator Component Demo
-
+
Skeleton Component Demo
@@ -804,7 +804,7 @@ Skeleton Component Demo
-
+
Table Component Demo
@@ -877,7 +877,7 @@
Table Component Demo
-
+
Tooltip Component Demo
@@ -911,7 +911,7 @@ Tooltip Component Demo
-
+
Tabs Component Demo
@@ -931,7 +931,7 @@
Tabs Component Demo
-
+
Toast Component Demo
Click the buttons below to see toasts with different styles, positions, and configurations.
@@ -962,7 +962,7 @@
Toast Component Demo
-
+
Pagination Component Demo
@@ -998,7 +998,7 @@ Pagination Component Demo
-
+
Stat Box Component Showcase
@@ -1055,7 +1055,7 @@
Stat Box Component Showcase
-
+
Timeline Component Showcase
Explore different styles and variants of the timeline component, including vertical and horizontal timelines.
@@ -1148,7 +1148,7 @@
Default Active Event
-
+
Kroma Rating Component Demo
@@ -1180,7 +1180,7 @@ Kroma Rating Component Demo
-
+
Stepper Component Demo
@@ -1220,7 +1220,7 @@ Stepper Component Demo
-
+
Danger Variant Calendar Demo
@@ -1237,7 +1237,7 @@ Danger Variant Calendar Demo
-
+
Calendar with Events (November 2024)
@@ -1252,7 +1252,7 @@ Calendar with Events (November 2024)
-
+
Kroma File Upload Component Demo
@@ -1291,7 +1291,7 @@ Kroma File Upload Component Demo
-
+
Command Palette Showcase
@@ -1313,7 +1313,7 @@ Command Palette Showcase
-
+
Codeblock Component Showcase
@@ -1328,7 +1328,7 @@
Codeblock Component Showcase
-
+
Date: Fri, 29 Nov 2024 22:11:51 +0100
Subject: [PATCH 6/7] utils scrollbar
---
src/css/bundle.css | 41 +++++++++++++++++++++++++++++++++++++
src/css/utils/scrollbar.css | 38 ++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+)
create mode 100644 src/css/utils/scrollbar.css
diff --git a/src/css/bundle.css b/src/css/bundle.css
index 4b7d438..43b5b61 100644
--- a/src/css/bundle.css
+++ b/src/css/bundle.css
@@ -513,6 +513,47 @@ body.typography-bold {
}
+/* --- scrollbar.css --- */
+html, body {
+ scrollbar-width: thin; /* For Firefox */
+ scrollbar-color: var(--neutral-300) var(--neutral-50); /* Thumb and Track */
+}
+
+/* Webkit-based Browsers */
+html::-webkit-scrollbar, body::-webkit-scrollbar {
+ width: 12px; /* Vertical scrollbar width */
+ height: 12px; /* Horizontal scrollbar height */
+ background-color: var(--neutral-50); /* Track background */
+}
+
+html::-webkit-scrollbar-thumb, body::-webkit-scrollbar-thumb {
+ background-color: var(--neutral-300); /* Thumb color */
+ border-radius: var(--radius-lg); /* Rounded corners for thumb */
+ border: 3px solid var(--neutral-50); /* Creates a spacing effect */
+}
+
+html::-webkit-scrollbar-thumb:hover, body::-webkit-scrollbar-thumb:hover {
+ background-color: var(--neutral-400); /* Slightly darker thumb on hover */
+}
+
+html::-webkit-scrollbar-thumb:active, body::-webkit-scrollbar-thumb:active {
+ background-color: var(--neutral-500); /* Even darker thumb on active */
+}
+
+html::-webkit-scrollbar-track, body::-webkit-scrollbar-track {
+ background-color: var(--neutral-50); /* Track background */
+ border-radius: var(--radius-md);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ html::-webkit-scrollbar, body::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+ }
+}
+
+
/* --- sections.css --- */
/* Base Section Styling */
section {
diff --git a/src/css/utils/scrollbar.css b/src/css/utils/scrollbar.css
new file mode 100644
index 0000000..9b9c8d6
--- /dev/null
+++ b/src/css/utils/scrollbar.css
@@ -0,0 +1,38 @@
+html, body {
+ scrollbar-width: thin; /* For Firefox */
+ scrollbar-color: var(--neutral-300) var(--neutral-50); /* Thumb and Track */
+}
+
+/* Webkit-based Browsers */
+html::-webkit-scrollbar, body::-webkit-scrollbar {
+ width: 12px; /* Vertical scrollbar width */
+ height: 12px; /* Horizontal scrollbar height */
+ background-color: var(--neutral-50); /* Track background */
+}
+
+html::-webkit-scrollbar-thumb, body::-webkit-scrollbar-thumb {
+ background-color: var(--neutral-300); /* Thumb color */
+ border-radius: var(--radius-lg); /* Rounded corners for thumb */
+ border: 3px solid var(--neutral-50); /* Creates a spacing effect */
+}
+
+html::-webkit-scrollbar-thumb:hover, body::-webkit-scrollbar-thumb:hover {
+ background-color: var(--neutral-400); /* Slightly darker thumb on hover */
+}
+
+html::-webkit-scrollbar-thumb:active, body::-webkit-scrollbar-thumb:active {
+ background-color: var(--neutral-500); /* Even darker thumb on active */
+}
+
+html::-webkit-scrollbar-track, body::-webkit-scrollbar-track {
+ background-color: var(--neutral-50); /* Track background */
+ border-radius: var(--radius-md);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ html::-webkit-scrollbar, body::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+ }
+}
From 7c0e082f2948fe140645fa27f4394a59f78019af Mon Sep 17 00:00:00 2001
From: Ohswedd
Date: Fri, 29 Nov 2024 22:13:09 +0100
Subject: [PATCH 7/7] Update package.json
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index de1ef9f..b1bbbb4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "kromacss",
- "version": "1.0.2",
+ "version": "1.0.6",
"description": "A modern, lightweight, and dependency-free CSS framework designed for simplicity, speed, and adaptability.",
"main": "dist/css/main.css",
"module": "dist/js/main.js",