11/* Command Palette Base */
2- .command-palette {
3- display : none;
4- position : fixed;
5- top : 0 ;
6- left : 0 ;
7- width : 100vw ;
8- height : 100vh ;
9- background : rgba (0 , 0 , 0 , 0.5 );
10- backdrop-filter : blur (4px );
11- z-index : var (--z-50 );
12- align-items : center;
13- justify-content : center;
14- transition : opacity 0.3s ease, transform 0.3s ease;
2+ .kroma-command-palette {
3+ display : none;
4+ position : fixed;
5+ inset : 0 ; /* Shorthand for top: 0, right: 0, bottom: 0, left: 0 */
6+ background : rgba (0 , 0 , 0 , 0.5 ); /* Semi-transparent backdrop */
7+ backdrop-filter : blur (4px ); /* Blur effect for the backdrop */
8+ z-index : var (--z-50 ); /* Ensure it appears on top */
9+ align-items : center;
10+ justify-content : center;
11+ opacity : 0 ; /* Initial hidden state */
12+ transform : scale (0.95 ); /* Initial zoom effect */
13+ transition : opacity 0.3s ease, transform 0.3s ease;
14+ }
15+
16+ .kroma-command-palette .kroma-open {
17+ display : flex; /* Flexbox for centering */
18+ opacity : 1 ; /* Fade-in effect */
19+ transform : scale (1 ); /* Reset scale */
20+ }
21+
22+ /* Palette Modal */
23+ .kroma-command-palette .kroma-palette-modal {
24+ width : clamp (320px , 85% , 600px ); /* Responsive width */
25+ background : var (--palette-bg , var (--neutral-50 )); /* Background color */
26+ color : var (--palette-text , var (--neutral-900 )); /* Text color */
27+ border-radius : var (--radius-lg ); /* Rounded corners */
28+ box-shadow : var (--shadow-xl ); /* Shadow for modal */
29+ padding : var (--space-4 ); /* Internal spacing */
30+ overflow : hidden;
31+ display : flex;
32+ flex-direction : column;
33+ gap : var (--space-3 ); /* Space between elements */
34+ animation : kroma-fadeIn 0.3s ease; /* Entry animation */
35+ }
36+
37+ /* Palette Header */
38+ .kroma-command-palette .kroma-palette-header {
39+ display : flex;
40+ align-items : center;
41+ gap : var (--space-2 ); /* Space between header elements */
42+ padding-bottom : var (--space-3 );
43+ border-bottom : 1px solid var (--palette-header-border , var (--neutral-200 ));
44+ }
45+
46+ .kroma-command-palette .kroma-palette-header input {
47+ width : 100% ;
48+ font-size : clamp (1rem , 1.2vw , 1.125rem ); /* Responsive font size */
49+ padding : var (--space-3 ); /* Internal spacing */
50+ border : none;
51+ outline : none;
52+ border-radius : var (--radius-md );
53+ background : var (--palette-input-bg , var (--neutral-100 ));
54+ color : var (--palette-input-text , var (--neutral-900 ));
55+ transition : background-color 0.3s ease, color 0.3s ease;
56+ }
57+
58+ .kroma-command-palette .kroma-palette-header input ::placeholder {
59+ color : var (--neutral-400 ); /* Placeholder text color */
60+ }
61+
62+ .kroma-command-palette .kroma-palette-header input : focus {
63+ background : var (--palette-input-focus-bg , var (--neutral-200 ));
64+ color : var (--palette-input-focus-text , var (--neutral-900 ));
65+ }
66+
67+ /* Palette List */
68+ .kroma-command-palette .kroma-palette-list {
69+ display : flex;
70+ flex-direction : column;
71+ max-height : 300px ; /* Maximum height for scrolling */
72+ overflow-y : auto; /* Vertical scrolling */
73+ gap : var (--space-2 ); /* Space between items */
74+ scrollbar-width : thin; /* Thin scrollbar */
75+ scrollbar-color : var (--palette-scrollbar-thumb , var (--neutral-300 )) var (--palette-scrollbar-track , var (--neutral-100 ));
76+ }
77+
78+ .kroma-command-palette .kroma-palette-list ::-webkit-scrollbar {
79+ width : 6px ; /* Scrollbar width */
80+ }
81+
82+ .kroma-command-palette .kroma-palette-list ::-webkit-scrollbar-thumb {
83+ background-color : var (--palette-scrollbar-thumb , var (--neutral-300 ));
84+ border-radius : var (--radius-md ); /* Rounded scrollbar */
85+ }
86+
87+ .kroma-command-palette .kroma-palette-list ::-webkit-scrollbar-track {
88+ background-color : var (--palette-scrollbar-track , var (--neutral-100 ));
89+ }
90+
91+ /* Palette Item */
92+ .kroma-command-palette .kroma-palette-item {
93+ padding : var (--space-3 );
94+ font-size : clamp (0.875rem , 1vw , 1rem ); /* Responsive font size */
95+ border-radius : var (--radius-md ); /* Rounded corners */
96+ color : var (--palette-item-text , var (--neutral-800 )); /* Text color */
97+ background : var (--palette-item-bg , var (--neutral-100 )); /* Background color */
98+ cursor : pointer;
99+ transition : background-color 0.3s ease, color 0.3s ease;
100+ }
101+
102+ .kroma-command-palette .kroma-palette-item : hover ,
103+ .kroma-command-palette .kroma-palette-item : focus {
104+ background : var (--palette-item-hover-bg , var (--variant-hover-bg ));
105+ color : var (--neutral-700 );
106+ }
107+
108+ .kroma-command-palette .kroma-palette-item [data-active = "true" ] {
109+ background : var (--palette-item-active-bg , var (--variant-bg ));
110+ color : var (--palette-item-active-text , var (--variant-text ));
111+ }
112+
113+ /* No Results Message */
114+ .kroma-command-palette .kroma-no-results {
115+ text-align : center;
116+ color : var (--neutral-600 ); /* Subtle color for "No Results" */
117+ font-size : clamp (0.875rem , 1vw , 1rem ); /* Responsive font size */
118+ padding : var (--space-3 );
119+ }
120+
121+ /* Palette Footer */
122+ .kroma-command-palette .kroma-palette-footer {
123+ display : flex;
124+ justify-content : flex-end;
125+ padding-top : var (--space-3 );
126+ border-top : 1px solid var (--palette-footer-border , var (--neutral-200 ));
127+ font-size : 0.875rem ;
128+ color : var (--neutral-600 );
129+ }
130+
131+ /* Variants */
132+ .kroma-command-palette [data-variant ] {
133+ --palette-bg : var (--variant-bg );
134+ --palette-text : var (--variant-text );
135+ --palette-header-border : var (--variant-border );
136+ --palette-input-bg : var (--neutral-50 );
137+ --palette-input-focus-bg : var (--variant-hover-bg );
138+ --palette-input-focus-text : var (--variant-text );
139+ --palette-item-hover-bg : var (--variant-hover-bg );
140+ --palette-item-hover-text : var (--neutral-50 );
141+ --palette-item-active-bg : var (--variant-bg );
142+ --palette-item-active-text : var (--variant-text );
143+ --palette-footer-border : var (--variant-border );
144+ }
145+
146+ /* Responsive Adjustments */
147+ @media (max-width : 768px ) {
148+ .kroma-command-palette .kroma-palette-modal {
149+ width : 95% ; /* Full width for smaller screens */
15150 }
16-
17- .command-palette .open {
18- display : flex;
151+ }
152+
153+ /* Fade In Animation */
154+ @keyframes kroma-fadeIn {
155+ from {
156+ opacity : 0 ;
157+ transform : scale (0.95 );
158+ }
159+ to {
19160 opacity : 1 ;
20161 transform : scale (1 );
21162 }
22-
23- .command-palette .palette-modal {
24- width : clamp (320px , 85% , 600px );
25- background : var (--palette-bg , var (--neutral-50 ));
26- color : var (--palette-text , var (--neutral-900 ));
27- border-radius : var (--radius-lg );
28- box-shadow : var (--shadow-xl );
29- padding : var (--space-4 );
30- overflow : hidden;
31- display : flex;
32- flex-direction : column;
33- gap : var (--space-3 );
34- animation : fadeIn 0.3s ease;
35- }
36-
37- /* Palette Header */
38- .command-palette .palette-header {
39- display : flex;
40- align-items : center;
41- padding-bottom : var (--space-3 );
42- border-bottom : 1px solid var (--palette-header-border , var (--neutral-200 ));
43- }
44-
45- .command-palette .palette-header input {
46- width : 100% ;
47- font-size : clamp (1rem , 1.2vw , 1.125rem );
48- padding : var (--space-3 );
49- border : none;
50- outline : none;
51- border-radius : var (--radius-md );
52- background : var (--palette-input-bg , var (--neutral-100 ));
53- color : var (--palette-input-text , var (--neutral-900 ));
54- transition : background-color 0.3s ease, color 0.3s ease;
55- }
56-
57- .command-palette .palette-header input ::placeholder {
58- color : var (--neutral-400 );
59- }
60-
61- .command-palette .palette-header input : focus {
62- background : var (--palette-input-focus-bg , var (--neutral-200 ));
63- color : var (--palette-input-focus-text , var (--neutral-900 ));
64- }
65-
66- /* Palette List */
67- .command-palette .palette-list {
68- display : flex;
69- flex-direction : column;
70- max-height : 300px ;
71- overflow-y : auto;
72- scrollbar-width : thin;
73- gap : var (--space-2 );
74- }
75-
76- /* Palette Item */
77- .command-palette .palette-item {
78- padding : var (--space-3 );
79- font-size : clamp (0.875rem , 1vw , 1rem );
80- border-radius : var (--radius-md );
81- color : var (--palette-item-text , var (--neutral-800 ));
82- background : var (--palette-item-bg , var (--neutral-100 ));
83- cursor : pointer;
84- transition : background-color 0.3s ease, color 0.3s ease;
85- }
86-
87- .command-palette .palette-item : hover ,
88- .command-palette .palette-item : focus {
89- background : var (--palette-item-hover-bg , var (--variant-hover-bg ));
90- color : var (--palette-item-hover-text , var (--neutral-50 ));
91- }
92-
93- .command-palette .palette-item [data-active = "true" ] {
94- background : var (--palette-item-active-bg , var (--variant-bg ));
95- color : var (--palette-item-active-text , var (--variant-text ));
96- }
97-
98- /* No Results */
99- .command-palette .no-results {
100- text-align : center;
101- color : var (--neutral-600 );
102- font-size : 0.875rem ;
103- padding : var (--space-3 );
104- }
105-
106- /* Palette Footer */
107- .command-palette .palette-footer {
108- display : flex;
109- justify-content : flex-end;
110- padding-top : var (--space-3 );
111- border-top : 1px solid var (--palette-footer-border , var (--neutral-200 ));
112- font-size : 0.875rem ;
113- color : var (--neutral-600 );
114- }
115-
116- /* Variants */
117- .command-palette [data-variant ] {
118- --palette-bg : var (--variant-bg );
119- --palette-text : var (--variant-text );
120- --palette-header-border : var (--variant-border );
121- --palette-input-bg : var (--neutral-50 ); /* Ensures a solid background for inputs */
122- --palette-input-text : var (--neutral-900 ); /* Text remains readable */
123- --palette-input-focus-bg : var (--variant-hover-bg );
124- --palette-input-focus-text : var (--variant-text );
125- --palette-item-bg : var (--neutral-100 ); /* Neutral background for items */
126- --palette-item-text : var (--neutral-800 ); /* Ensures text is readable */
127- --palette-item-hover-bg : var (--variant-hover-bg ); /* Bold hover background */
128- --palette-item-hover-text : var (--neutral-50 ); /* Contrasting text on hover */
129- --palette-item-active-bg : var (--variant-bg );
130- --palette-item-active-text : var (--variant-text );
131- --palette-footer-border : var (--variant-border );
132- }
133-
134- /* Responsive Adjustments */
135- @media (max-width : 768px ) {
136- .command-palette .palette-modal {
137- width : 95% ;
138- }
139- }
140-
163+ }
0 commit comments