adminator-admin-dashboard 2.8.1 → 4.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/CHANGELOG.md +499 -0
  2. package/CLAUDE.md +126 -154
  3. package/README.md +321 -370
  4. package/dist/2026.js +8751 -0
  5. package/dist/2026.js.map +1 -0
  6. package/dist/404.html +36 -16
  7. package/dist/500.html +36 -16
  8. package/dist/assets/static/images/logo.svg +3 -3
  9. package/dist/basic-table.html +152 -699
  10. package/dist/blank.html +42 -507
  11. package/dist/buttons.html +152 -448
  12. package/dist/calendar.html +246 -658
  13. package/dist/charts.html +124 -658
  14. package/dist/chat.html +209 -706
  15. package/dist/compose.html +141 -618
  16. package/dist/datatable.html +467 -991
  17. package/dist/email.html +430 -943
  18. package/dist/forms.html +208 -733
  19. package/dist/google-maps.html +123 -513
  20. package/dist/index.html +436 -1041
  21. package/dist/runtime.js +1299 -0
  22. package/dist/runtime.js.map +1 -0
  23. package/dist/signin.html +92 -92
  24. package/dist/signup.html +106 -91
  25. package/dist/ui.html +268 -897
  26. package/dist/vector-maps.html +132 -511
  27. package/dist/vendor-chartjs.js +14593 -0
  28. package/dist/vendor-chartjs.js.map +1 -0
  29. package/dist/vendor-fullcalendar.js +14793 -0
  30. package/dist/vendor-fullcalendar.js.map +1 -0
  31. package/dist/vendors.js +3758 -0
  32. package/dist/vendors.js.map +1 -0
  33. package/package.json +50 -52
  34. package/src/404.html +35 -15
  35. package/src/500.html +35 -15
  36. package/src/assets/scripts/2026/Shell.js +312 -0
  37. package/src/assets/scripts/2026/calendar.js +123 -0
  38. package/src/assets/scripts/2026/charts.js +259 -0
  39. package/src/assets/scripts/2026/index.js +35 -0
  40. package/src/assets/scripts/2026/init.js +207 -0
  41. package/src/assets/scripts/2026/maps.js +78 -0
  42. package/src/assets/scripts/2026/palette.js +266 -0
  43. package/src/assets/static/images/logo.svg +3 -3
  44. package/src/assets/styles/2026/_animations.scss +14 -0
  45. package/src/assets/styles/2026/_auth.scss +215 -0
  46. package/src/assets/styles/2026/_base.scss +37 -0
  47. package/src/assets/styles/2026/_calendar.scss +380 -0
  48. package/src/assets/styles/2026/_charts.scss +44 -0
  49. package/src/assets/styles/2026/_chat.scss +350 -0
  50. package/src/assets/styles/2026/_components.scss +140 -0
  51. package/src/assets/styles/2026/_dashboard.scss +520 -0
  52. package/src/assets/styles/2026/_data.scss +130 -0
  53. package/src/assets/styles/2026/_dropdowns.scss +128 -0
  54. package/src/assets/styles/2026/_email.scss +599 -0
  55. package/src/assets/styles/2026/_error.scss +98 -0
  56. package/src/assets/styles/2026/_forms.scss +215 -0
  57. package/src/assets/styles/2026/_fullcalendar.scss +134 -0
  58. package/src/assets/styles/2026/_palette.scss +173 -0
  59. package/src/assets/styles/2026/_responsive.scss +229 -0
  60. package/src/assets/styles/2026/_shell.scss +290 -0
  61. package/src/assets/styles/2026/_tokens.scss +80 -0
  62. package/src/assets/styles/2026/_ui.scss +365 -0
  63. package/src/assets/styles/2026/index.scss +23 -0
  64. package/src/basic-table.html +153 -710
  65. package/src/blank.html +42 -517
  66. package/src/buttons.html +152 -458
  67. package/src/calendar.html +246 -668
  68. package/src/charts.html +124 -668
  69. package/src/chat.html +209 -716
  70. package/src/compose.html +142 -629
  71. package/src/datatable.html +466 -1000
  72. package/src/email.html +429 -952
  73. package/src/forms.html +207 -742
  74. package/src/google-maps.html +128 -523
  75. package/src/index.html +438 -1050
  76. package/src/signin.html +92 -92
  77. package/src/signup.html +106 -91
  78. package/src/ui.html +267 -906
  79. package/src/vector-maps.html +133 -522
  80. package/dist/1e59d2330b4c6deb84b3.ttf +0 -0
  81. package/dist/20fd1704ea223900efa9.woff2 +0 -0
  82. package/dist/29b39089170885ae2967.woff +0 -0
  83. package/dist/8b43027f47b20503057d.eot +0 -0
  84. package/dist/9bad94440d49256265a5.eot +0 -0
  85. package/dist/assets/fontawesome-webfont.svg +0 -2671
  86. package/dist/assets/themify.svg +0 -362
  87. package/dist/eda8b94308c6f538f04a.ttf +0 -0
  88. package/dist/f691f37e57f04c152e23.woff +0 -0
  89. package/dist/main.js +0 -61323
  90. package/dist/main.js.map +0 -1
  91. package/src/assets/scripts/app 2.js +0 -645
  92. package/src/assets/scripts/app.js +0 -645
  93. package/src/assets/scripts/charts/chartJS/index.js +0 -148
  94. package/src/assets/scripts/charts/easyPieChart/index.js +0 -200
  95. package/src/assets/scripts/charts/index.js +0 -3
  96. package/src/assets/scripts/charts/sparkline/index.js +0 -208
  97. package/src/assets/scripts/chat/index.js +0 -11
  98. package/src/assets/scripts/components/Chart.js +0 -1390
  99. package/src/assets/scripts/components/Sidebar.js +0 -241
  100. package/src/assets/scripts/constants/colors.js +0 -274
  101. package/src/assets/scripts/datatable/index.js +0 -379
  102. package/src/assets/scripts/datepicker/index.js +0 -302
  103. package/src/assets/scripts/email/index.js +0 -25
  104. package/src/assets/scripts/fullcalendar/index.js +0 -86
  105. package/src/assets/scripts/googleMaps/index.js +0 -93
  106. package/src/assets/scripts/index.js +0 -18
  107. package/src/assets/scripts/masonry/index.js +0 -14
  108. package/src/assets/scripts/popover/index.js +0 -109
  109. package/src/assets/scripts/scrollbar/index.js +0 -10
  110. package/src/assets/scripts/search/index.js +0 -15
  111. package/src/assets/scripts/sidebar/index.js +0 -140
  112. package/src/assets/scripts/skycons/index.js +0 -52
  113. package/src/assets/scripts/ui/index.js +0 -412
  114. package/src/assets/scripts/utils/date.js +0 -242
  115. package/src/assets/scripts/utils/dom.js +0 -349
  116. package/src/assets/scripts/utils/index.js +0 -45
  117. package/src/assets/scripts/utils/theme.js +0 -107
  118. package/src/assets/scripts/vectorMaps/index.js +0 -277
  119. package/src/assets/styles/index.scss +0 -801
  120. package/src/assets/styles/spec/components/easyPieChart.scss +0 -11
  121. package/src/assets/styles/spec/components/footer.scss +0 -4
  122. package/src/assets/styles/spec/components/forms.scss +0 -288
  123. package/src/assets/styles/spec/components/index.scss +0 -9
  124. package/src/assets/styles/spec/components/loader.scss +0 -46
  125. package/src/assets/styles/spec/components/masonry.scss +0 -1
  126. package/src/assets/styles/spec/components/pageContainer.scss +0 -255
  127. package/src/assets/styles/spec/components/progressBar.scss +0 -6
  128. package/src/assets/styles/spec/components/sidebar.scss +0 -642
  129. package/src/assets/styles/spec/components/topbar.scss +0 -455
  130. package/src/assets/styles/spec/generic/base.scss +0 -102
  131. package/src/assets/styles/spec/generic/index.scss +0 -1
  132. package/src/assets/styles/spec/index.scss +0 -4
  133. package/src/assets/styles/spec/screens/chat.scss +0 -147
  134. package/src/assets/styles/spec/screens/email.scss +0 -108
  135. package/src/assets/styles/spec/screens/index.scss +0 -2
  136. package/src/assets/styles/spec/settings/baseColors.scss +0 -103
  137. package/src/assets/styles/spec/settings/borders.scss +0 -6
  138. package/src/assets/styles/spec/settings/breakpoints.scss +0 -26
  139. package/src/assets/styles/spec/settings/fonts.scss +0 -4
  140. package/src/assets/styles/spec/settings/index.scss +0 -4
  141. package/src/assets/styles/spec/settings/materialColors.scss +0 -550
  142. package/src/assets/styles/spec/tools/index.scss +0 -1
  143. package/src/assets/styles/spec/tools/mixins/clearfix.scss +0 -15
  144. package/src/assets/styles/spec/tools/mixins/index.scss +0 -3
  145. package/src/assets/styles/spec/tools/mixins/mediaQueriesRanges.scss +0 -58
  146. package/src/assets/styles/spec/tools/mixins/placeholder.scss +0 -10
  147. package/src/assets/styles/spec/utils/colors.scss +0 -33
  148. package/src/assets/styles/spec/utils/index.scss +0 -2
  149. package/src/assets/styles/spec/utils/layout/helpers/border.scss +0 -78
  150. package/src/assets/styles/spec/utils/layout/helpers/flex.scss +0 -220
  151. package/src/assets/styles/spec/utils/layout/helpers/index.scss +0 -11
  152. package/src/assets/styles/spec/utils/layout/helpers/layout.scss +0 -137
  153. package/src/assets/styles/spec/utils/layout/helpers/lists.scss +0 -23
  154. package/src/assets/styles/spec/utils/layout/helpers/margin.scss +0 -266
  155. package/src/assets/styles/spec/utils/layout/helpers/objects.scss +0 -91
  156. package/src/assets/styles/spec/utils/layout/helpers/padding.scss +0 -147
  157. package/src/assets/styles/spec/utils/layout/helpers/positions.scss +0 -118
  158. package/src/assets/styles/spec/utils/layout/helpers/pseudo.scss +0 -6
  159. package/src/assets/styles/spec/utils/layout/helpers/sizes.scss +0 -157
  160. package/src/assets/styles/spec/utils/layout/helpers/typography.scss +0 -127
  161. package/src/assets/styles/spec/utils/layout/index.scss +0 -3
  162. package/src/assets/styles/spec/utils/layout/mixins/generateResponsive.scss +0 -25
  163. package/src/assets/styles/spec/utils/layout/mixins/index.scss +0 -2
  164. package/src/assets/styles/spec/utils/layout/mixins/mediaQueryCondition.scss +0 -28
  165. package/src/assets/styles/spec/utils/layout/utils/center.scss +0 -54
  166. package/src/assets/styles/spec/utils/layout/utils/gap.scss +0 -229
  167. package/src/assets/styles/spec/utils/layout/utils/index.scss +0 -5
  168. package/src/assets/styles/spec/utils/layout/utils/layers.scss +0 -5
  169. package/src/assets/styles/spec/utils/layout/utils/peers.scss +0 -35
  170. package/src/assets/styles/utils/mobile.scss +0 -954
  171. package/src/assets/styles/utils/theme.css +0 -97
  172. package/src/assets/styles/vendor/datepicker.scss +0 -183
  173. package/src/assets/styles/vendor/font-awesome.css +0 -2337
  174. package/src/assets/styles/vendor/fullcalendar.scss +0 -217
  175. package/src/assets/styles/vendor/index.scss +0 -8
  176. package/src/assets/styles/vendor/jquery.datatables.scss +0 -162
  177. package/src/assets/styles/vendor/perfectScrollbar.scss +0 -4
  178. package/src/assets/styles/vendor/sparkline.scss +0 -6
  179. package/src/assets/styles/vendor/themify-icons.css +0 -1081
@@ -0,0 +1,98 @@
1
+ /* ============ ERROR PAGES (404 / 500) ============ */
2
+
3
+ .error-shell {
4
+ min-height: 100vh;
5
+ display: grid;
6
+ place-items: center;
7
+ padding: 32px;
8
+ background: var(--bg-body);
9
+ position: relative;
10
+ overflow: hidden;
11
+ }
12
+ .error-shell::before {
13
+ content: '';
14
+ position: absolute;
15
+ inset: -20% -10% auto auto;
16
+ width: 60vmax; aspect-ratio: 1;
17
+ background: radial-gradient(circle, color-mix(in oklab, var(--primary) 10%, transparent), transparent 70%);
18
+ pointer-events: none;
19
+ }
20
+ .error-shell::after {
21
+ content: '';
22
+ position: absolute;
23
+ inset: auto auto -20% -10%;
24
+ width: 60vmax; aspect-ratio: 1;
25
+ background: radial-gradient(circle, color-mix(in oklab, var(--purple) 8%, transparent), transparent 70%);
26
+ pointer-events: none;
27
+ }
28
+
29
+ .error-card {
30
+ position: relative;
31
+ background: var(--bg-card);
32
+ border: 1px solid var(--border);
33
+ border-radius: 18px;
34
+ box-shadow: var(--shadow-lg);
35
+ padding: 48px 56px;
36
+ max-width: 540px;
37
+ width: 100%;
38
+ text-align: center;
39
+ animation: rise-in 600ms cubic-bezier(.2,.7,.2,1) both;
40
+ }
41
+ @media (max-width: 600px) {
42
+ .error-card { padding: 32px 24px; }
43
+ }
44
+
45
+ .error-eyebrow {
46
+ font-family: 'JetBrains Mono', monospace;
47
+ font-size: 11px;
48
+ letter-spacing: 0.18em;
49
+ text-transform: uppercase;
50
+ color: var(--t-light);
51
+ margin-bottom: 14px;
52
+ display: block;
53
+ }
54
+ .error-code {
55
+ font-family: 'Inter Tight', sans-serif;
56
+ font-weight: 700;
57
+ font-size: clamp(96px, 16vw, 160px);
58
+ line-height: 0.95;
59
+ letter-spacing: -0.05em;
60
+ background: linear-gradient(135deg, var(--primary), var(--purple));
61
+ -webkit-background-clip: text;
62
+ background-clip: text;
63
+ color: transparent;
64
+ margin-bottom: 8px;
65
+ }
66
+ .error-title {
67
+ font-family: 'Inter Tight', sans-serif;
68
+ font-weight: 700;
69
+ font-size: 24px;
70
+ letter-spacing: -0.022em;
71
+ color: var(--t-base);
72
+ margin: 0 0 10px;
73
+ }
74
+ .error-sub {
75
+ font-size: 14px;
76
+ color: var(--t-muted);
77
+ line-height: 1.6;
78
+ margin: 0 0 24px;
79
+ max-width: 40ch;
80
+ margin-left: auto;
81
+ margin-right: auto;
82
+ }
83
+
84
+ .error-actions {
85
+ display: flex; gap: 10px; justify-content: center; flex-wrap: wrap;
86
+ }
87
+
88
+ .error-meta {
89
+ margin-top: 28px;
90
+ padding-top: 18px;
91
+ border-top: 1px dashed var(--border);
92
+ font-family: 'JetBrains Mono', monospace;
93
+ font-size: 10.5px;
94
+ color: var(--t-light);
95
+ letter-spacing: 0.06em;
96
+ display: flex; gap: 16px; justify-content: center; flex-wrap: wrap;
97
+ }
98
+ .error-meta strong { color: var(--t-muted); font-weight: 600; }
@@ -0,0 +1,215 @@
1
+ /* ============ FORMS ============ */
2
+
3
+ .form-grid {
4
+ display: grid;
5
+ grid-template-columns: repeat(2, minmax(0, 1fr));
6
+ gap: 18px 22px;
7
+ }
8
+ .form-grid .span-2 { grid-column: span 2; }
9
+ @media (max-width: 720px) {
10
+ .form-grid { grid-template-columns: 1fr; }
11
+ .form-grid .span-2 { grid-column: span 1; }
12
+ }
13
+
14
+ .field {
15
+ display: flex; flex-direction: column; gap: 6px;
16
+ min-width: 0;
17
+ }
18
+ .field-label {
19
+ font-size: 12px;
20
+ font-weight: 600;
21
+ color: var(--t-base);
22
+ letter-spacing: -0.005em;
23
+ display: flex; align-items: center; gap: 6px;
24
+ }
25
+ .field-label .req { color: var(--danger); }
26
+ .field-help {
27
+ font-size: 11.5px;
28
+ color: var(--t-muted);
29
+ line-height: 1.45;
30
+ }
31
+ .field-error {
32
+ font-size: 11.5px;
33
+ color: var(--danger);
34
+ display: flex; align-items: center; gap: 4px;
35
+ }
36
+
37
+ .input,
38
+ .select,
39
+ .textarea {
40
+ width: 100%;
41
+ padding: 9px 12px;
42
+ border: 1px solid var(--border);
43
+ border-radius: 8px;
44
+ background: var(--bg-card);
45
+ color: var(--t-base);
46
+ font-size: 13px;
47
+ font-family: inherit;
48
+ outline: 0;
49
+ transition: border-color 180ms, box-shadow 180ms, background 180ms;
50
+ }
51
+ .input::placeholder,
52
+ .textarea::placeholder { color: var(--t-light); }
53
+ .input:focus,
54
+ .select:focus,
55
+ .textarea:focus {
56
+ border-color: var(--primary);
57
+ box-shadow: 0 0 0 3px var(--primary-soft);
58
+ }
59
+ .input:disabled,
60
+ .select:disabled,
61
+ .textarea:disabled {
62
+ background: var(--bg-muted);
63
+ color: var(--t-light);
64
+ cursor: not-allowed;
65
+ }
66
+ .input.is-invalid,
67
+ .select.is-invalid,
68
+ .textarea.is-invalid {
69
+ border-color: var(--danger);
70
+ }
71
+ .input.is-invalid:focus,
72
+ .select.is-invalid:focus,
73
+ .textarea.is-invalid:focus {
74
+ box-shadow: 0 0 0 3px var(--danger-soft);
75
+ }
76
+ .textarea {
77
+ min-height: 96px;
78
+ resize: vertical;
79
+ line-height: 1.5;
80
+ }
81
+
82
+ .select {
83
+ appearance: none; -webkit-appearance: none;
84
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748B' stroke-width='2'><path d='m6 9 6 6 6-6'/></svg>");
85
+ background-repeat: no-repeat;
86
+ background-position: right 10px center;
87
+ padding-right: 32px;
88
+ }
89
+
90
+ .input-icon {
91
+ position: relative;
92
+ }
93
+ .input-icon .ico {
94
+ position: absolute;
95
+ left: 11px; top: 50%; transform: translateY(-50%);
96
+ width: 14px; height: 14px;
97
+ color: var(--t-light);
98
+ pointer-events: none;
99
+ }
100
+ .input-icon .ico svg { width: 100%; height: 100%; stroke: currentColor; stroke-width: 2; fill: none; }
101
+ .input-icon .input { padding-left: 34px; }
102
+
103
+ /* Inline addon (e.g. https://) */
104
+ .input-group {
105
+ display: flex;
106
+ border: 1px solid var(--border);
107
+ border-radius: 8px;
108
+ background: var(--bg-card);
109
+ overflow: hidden;
110
+ transition: border-color 180ms, box-shadow 180ms;
111
+ }
112
+ .input-group:focus-within {
113
+ border-color: var(--primary);
114
+ box-shadow: 0 0 0 3px var(--primary-soft);
115
+ }
116
+ .input-group .addon {
117
+ padding: 0 12px;
118
+ display: grid; place-items: center;
119
+ background: var(--bg-muted);
120
+ color: var(--t-muted);
121
+ font-size: 12px;
122
+ font-family: 'JetBrains Mono', monospace;
123
+ border-right: 1px solid var(--border);
124
+ }
125
+ .input-group .input {
126
+ border: 0;
127
+ border-radius: 0;
128
+ background: transparent;
129
+ }
130
+ .input-group .input:focus { box-shadow: none; }
131
+
132
+ /* Checkbox / radio */
133
+ .check {
134
+ display: inline-flex; align-items: center; gap: 8px;
135
+ cursor: pointer;
136
+ font-size: 13px;
137
+ color: var(--t-base);
138
+ user-select: none;
139
+ }
140
+ .check input { position: absolute; opacity: 0; pointer-events: none; }
141
+ .check .box {
142
+ width: 16px; height: 16px;
143
+ border: 1.5px solid var(--t-light);
144
+ border-radius: 5px;
145
+ display: grid; place-items: center;
146
+ flex-shrink: 0;
147
+ transition: all 160ms;
148
+ background: var(--bg-card);
149
+ }
150
+ .check input:checked + .box {
151
+ background: var(--primary);
152
+ border-color: var(--primary);
153
+ }
154
+ .check input:checked + .box::after {
155
+ content: '';
156
+ width: 4px; height: 8px;
157
+ border: solid #fff;
158
+ border-width: 0 1.8px 1.8px 0;
159
+ transform: rotate(45deg) translate(-1px, -1px);
160
+ }
161
+ .check.radio .box { border-radius: 50%; }
162
+ .check.radio input:checked + .box::after {
163
+ width: 7px; height: 7px;
164
+ border: 0;
165
+ border-radius: 50%;
166
+ background: #fff;
167
+ transform: none;
168
+ }
169
+ .check:hover .box { border-color: var(--primary); }
170
+ .check input:disabled + .box { opacity: 0.5; cursor: not-allowed; }
171
+
172
+ /* Toggle switch */
173
+ .switch {
174
+ display: inline-flex; align-items: center; gap: 10px;
175
+ cursor: pointer;
176
+ font-size: 13px;
177
+ color: var(--t-base);
178
+ user-select: none;
179
+ }
180
+ .switch input { position: absolute; opacity: 0; pointer-events: none; }
181
+ .switch .track {
182
+ width: 34px; height: 20px;
183
+ background: var(--bg-muted);
184
+ border: 1px solid var(--border);
185
+ border-radius: 999px;
186
+ position: relative;
187
+ transition: background 200ms;
188
+ flex-shrink: 0;
189
+ }
190
+ .switch .track::after {
191
+ content: '';
192
+ position: absolute;
193
+ top: 2px; left: 2px;
194
+ width: 14px; height: 14px;
195
+ border-radius: 50%;
196
+ background: #fff;
197
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
198
+ transition: transform 200ms cubic-bezier(.2,.7,.2,1);
199
+ }
200
+ .switch input:checked + .track {
201
+ background: var(--primary);
202
+ border-color: var(--primary);
203
+ }
204
+ .switch input:checked + .track::after {
205
+ transform: translateX(14px);
206
+ }
207
+
208
+ /* Form actions row */
209
+ .form-actions {
210
+ display: flex; gap: 10px; align-items: center;
211
+ padding-top: 18px;
212
+ margin-top: 18px;
213
+ border-top: 1px solid var(--border-soft);
214
+ }
215
+ .form-actions .spacer { flex: 1; }
@@ -0,0 +1,134 @@
1
+ /* ============ FULLCALENDAR — 2026 OVERRIDES ============ */
2
+
3
+ /* Map FC's CSS variables to our tokens so all chrome inherits the theme. */
4
+
5
+ [data-fc] {
6
+ --fc-border-color: var(--border-soft);
7
+ --fc-page-bg-color: var(--bg-card);
8
+ --fc-neutral-bg-color: var(--bg-muted);
9
+ --fc-neutral-text-color: var(--t-muted);
10
+ --fc-today-bg-color: color-mix(in oklab, var(--primary) 10%, transparent);
11
+ --fc-now-indicator-color: var(--danger);
12
+ --fc-event-bg-color: var(--primary);
13
+ --fc-event-border-color: var(--primary);
14
+ --fc-event-text-color: #fff;
15
+ --fc-event-selected-overlay-color: rgb(15 23 42 / 0.06);
16
+ --fc-list-event-hover-bg-color: var(--bg-hover);
17
+ --fc-highlight-color: color-mix(in oklab, var(--primary) 16%, transparent);
18
+ font-family: 'Inter', system-ui, sans-serif;
19
+ height: 100%;
20
+ }
21
+
22
+ /* Day-grid header row (S M T W T F S) */
23
+ .fc .fc-col-header-cell-cushion {
24
+ font-family: 'JetBrains Mono', monospace;
25
+ font-size: 10px;
26
+ letter-spacing: 0.18em;
27
+ text-transform: uppercase;
28
+ color: var(--t-light);
29
+ font-weight: 500;
30
+ padding: 10px 0;
31
+ }
32
+ .fc-theme-standard .fc-scrollgrid,
33
+ .fc-theme-standard td,
34
+ .fc-theme-standard th { border-color: var(--border-soft); }
35
+
36
+ /* Day numbers in month grid */
37
+ .fc .fc-daygrid-day-number {
38
+ font-family: 'Inter Tight', sans-serif;
39
+ font-weight: 600;
40
+ font-size: 12.5px;
41
+ color: var(--t-base);
42
+ padding: 6px 8px;
43
+ }
44
+ .fc .fc-day-other .fc-daygrid-day-number { color: var(--t-light); font-weight: 500; }
45
+ .fc .fc-day-today .fc-daygrid-day-number {
46
+ background: var(--primary);
47
+ color: #fff;
48
+ border-radius: 6px;
49
+ margin: 4px;
50
+ padding: 3px 7px;
51
+ min-width: 22px;
52
+ text-align: center;
53
+ }
54
+
55
+ .fc .fc-day-today { background: transparent; }
56
+ .fc .fc-daygrid-day-frame { padding: 2px 4px; }
57
+
58
+ /* Events — base chip */
59
+ .fc .fc-daygrid-event,
60
+ .fc .fc-timegrid-event {
61
+ border-radius: 5px;
62
+ border: 0;
63
+ border-left: 2px solid transparent;
64
+ font-size: 11px;
65
+ font-weight: 500;
66
+ padding: 2px 6px;
67
+ margin: 1px 4px;
68
+ line-height: 1.3;
69
+ cursor: pointer;
70
+ transition: transform 140ms ease, filter 160ms ease;
71
+ }
72
+ .fc .fc-daygrid-event:hover { transform: translateX(1px); }
73
+ .fc .fc-daygrid-event-dot { display: none; }
74
+ .fc .fc-event-time {
75
+ font-family: 'JetBrains Mono', monospace;
76
+ font-size: 9.5px;
77
+ font-weight: 600;
78
+ margin-right: 4px;
79
+ opacity: 0.85;
80
+ }
81
+
82
+ /* Category colors via classNames — match dashboard cal-chip variants */
83
+ .fc .fc-event.fc-cat-work { background: var(--primary-soft); color: var(--primary); border-left-color: var(--primary); }
84
+ .fc .fc-event.fc-cat-team { background: var(--success-soft); color: var(--success); border-left-color: var(--success); }
85
+ .fc .fc-event.fc-cat-personal { background: var(--purple-soft); color: var(--purple); border-left-color: var(--purple); }
86
+ .fc .fc-event.fc-cat-travel { background: var(--info-soft); color: var(--info); border-left-color: var(--info); }
87
+ .fc .fc-event.fc-cat-finance { background: var(--warning-soft); color: var(--warning); border-left-color: var(--warning); }
88
+ .fc .fc-event.fc-cat-birthday { background: var(--pink-soft); color: var(--pink); border-left-color: var(--pink); }
89
+
90
+ .fc .fc-event.fc-cat-travel .fc-event-time,
91
+ .fc .fc-event.fc-cat-team .fc-event-time,
92
+ .fc .fc-event.fc-cat-work .fc-event-time { color: inherit; }
93
+
94
+ /* "more" link */
95
+ .fc .fc-daygrid-more-link {
96
+ font-size: 10.5px;
97
+ font-weight: 600;
98
+ color: var(--t-muted);
99
+ padding: 2px 6px;
100
+ }
101
+ .fc .fc-daygrid-more-link:hover { color: var(--primary); }
102
+
103
+ /* Time-grid axis */
104
+ .fc .fc-timegrid-axis-cushion,
105
+ .fc .fc-timegrid-slot-label-cushion {
106
+ font-family: 'JetBrains Mono', monospace;
107
+ font-size: 10px;
108
+ color: var(--t-light);
109
+ letter-spacing: 0.04em;
110
+ }
111
+ .fc .fc-timegrid-now-indicator-line { border-color: var(--danger); border-width: 1.5px; }
112
+ .fc .fc-timegrid-now-indicator-arrow { border-color: var(--danger); }
113
+
114
+ /* List view */
115
+ .fc .fc-list-day-cushion {
116
+ background: var(--bg-muted);
117
+ }
118
+ .fc .fc-list-day-text,
119
+ .fc .fc-list-day-side-text {
120
+ color: var(--t-base);
121
+ font-family: 'Inter Tight', sans-serif;
122
+ font-weight: 600;
123
+ font-size: 13px;
124
+ }
125
+ .fc .fc-list-event-time,
126
+ .fc .fc-list-event-title {
127
+ font-size: 13px;
128
+ color: var(--t-base);
129
+ }
130
+ .fc .fc-list-event-dot { border-color: var(--primary); }
131
+ .fc .fc-list-empty {
132
+ background: var(--bg-card);
133
+ color: var(--t-muted);
134
+ }
@@ -0,0 +1,173 @@
1
+ /* ============ COMMAND PALETTE (⌘K) ============ */
2
+
3
+ .palette-backdrop {
4
+ position: fixed; inset: 0;
5
+ background: rgb(15 23 42 / 0.55);
6
+ backdrop-filter: blur(4px);
7
+ z-index: 200;
8
+ display: none;
9
+ align-items: flex-start;
10
+ justify-content: center;
11
+ padding: 12vh 16px 16px;
12
+ animation: palette-fade 160ms ease both;
13
+ }
14
+
15
+ body.has-palette-open .palette-backdrop {
16
+ display: flex;
17
+ }
18
+
19
+ @keyframes palette-fade {
20
+ from { opacity: 0; }
21
+ to { opacity: 1; }
22
+ }
23
+
24
+ .palette-modal {
25
+ width: 100%;
26
+ max-width: 560px;
27
+ max-height: 70vh;
28
+ background: var(--bg-card);
29
+ border: 1px solid var(--border);
30
+ border-radius: 14px;
31
+ box-shadow: var(--shadow-lg);
32
+ display: flex;
33
+ flex-direction: column;
34
+ overflow: hidden;
35
+ animation: palette-rise 200ms cubic-bezier(.2,.7,.2,1) both;
36
+ }
37
+
38
+ @keyframes palette-rise {
39
+ from { opacity: 0; transform: translateY(-8px) scale(0.98); }
40
+ to { opacity: 1; transform: translateY(0) scale(1); }
41
+ }
42
+
43
+ .palette-input-row {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 12px;
47
+ padding: 14px 16px;
48
+ border-bottom: 1px solid var(--border-soft);
49
+ }
50
+
51
+ .palette-icon {
52
+ width: 18px; height: 18px;
53
+ color: var(--t-muted);
54
+ flex-shrink: 0;
55
+ }
56
+
57
+ .palette-input {
58
+ flex: 1;
59
+ background: transparent;
60
+ border: 0;
61
+ outline: 0;
62
+ font-size: 15px;
63
+ color: var(--t-base);
64
+ font-family: inherit;
65
+ padding: 4px 0;
66
+ min-width: 0;
67
+ }
68
+ .palette-input::placeholder { color: var(--t-light); }
69
+
70
+ .palette-esc {
71
+ font-family: 'JetBrains Mono', monospace;
72
+ font-size: 10px;
73
+ padding: 3px 7px;
74
+ border-radius: 5px;
75
+ background: var(--bg-muted);
76
+ color: var(--t-muted);
77
+ border: 1px solid var(--border);
78
+ flex-shrink: 0;
79
+ text-transform: lowercase;
80
+ letter-spacing: 0.04em;
81
+ }
82
+
83
+ .palette-results {
84
+ flex: 1;
85
+ overflow-y: auto;
86
+ padding: 6px;
87
+ }
88
+ .palette-results::-webkit-scrollbar { width: 4px; }
89
+ .palette-results::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
90
+
91
+ .palette-result {
92
+ display: grid;
93
+ grid-template-columns: 28px 1fr auto;
94
+ gap: 12px;
95
+ align-items: center;
96
+ padding: 9px 12px;
97
+ border-radius: 8px;
98
+ cursor: pointer;
99
+ transition: background 120ms;
100
+ }
101
+ .palette-result:hover { background: var(--bg-hover); }
102
+ .palette-result.is-selected {
103
+ background: var(--primary-soft);
104
+ color: var(--primary);
105
+ }
106
+
107
+ .palette-result-icon {
108
+ width: 28px; height: 28px;
109
+ display: grid; place-items: center;
110
+ border-radius: 6px;
111
+ background: var(--bg-muted);
112
+ color: var(--t-muted);
113
+ flex-shrink: 0;
114
+ }
115
+ .palette-result.is-selected .palette-result-icon {
116
+ background: color-mix(in oklab, var(--primary) 14%, transparent);
117
+ color: var(--primary);
118
+ }
119
+ .palette-result-icon svg { width: 14px; height: 14px; }
120
+
121
+ .palette-result-label {
122
+ font-size: 13.5px;
123
+ font-weight: 500;
124
+ color: var(--t-base);
125
+ white-space: nowrap;
126
+ overflow: hidden;
127
+ text-overflow: ellipsis;
128
+ min-width: 0;
129
+ }
130
+ .palette-result.is-selected .palette-result-label { color: var(--primary); font-weight: 600; }
131
+
132
+ .palette-result-section {
133
+ font-family: 'JetBrains Mono', monospace;
134
+ font-size: 10px;
135
+ color: var(--t-light);
136
+ letter-spacing: 0.04em;
137
+ text-transform: uppercase;
138
+ flex-shrink: 0;
139
+ }
140
+ .palette-result.is-selected .palette-result-section { color: var(--primary); opacity: 0.8; }
141
+
142
+ .palette-empty {
143
+ padding: 32px 16px;
144
+ text-align: center;
145
+ color: var(--t-muted);
146
+ font-size: 13px;
147
+ }
148
+
149
+ .palette-foot {
150
+ display: flex;
151
+ gap: 18px;
152
+ padding: 10px 16px;
153
+ border-top: 1px solid var(--border-soft);
154
+ background: var(--bg-card);
155
+ font-size: 11px;
156
+ color: var(--t-muted);
157
+ }
158
+ .palette-foot kbd {
159
+ font-family: 'JetBrains Mono', monospace;
160
+ font-size: 9.5px;
161
+ padding: 1.5px 5px;
162
+ border-radius: 4px;
163
+ background: var(--bg-muted);
164
+ color: var(--t-muted);
165
+ border: 1px solid var(--border);
166
+ margin-right: 4px;
167
+ letter-spacing: 0.04em;
168
+ }
169
+
170
+ @media (max-width: 600px) {
171
+ .palette-backdrop { padding-top: 6vh; }
172
+ .palette-foot { flex-wrap: wrap; gap: 10px; font-size: 10px; }
173
+ }