llms-py 2.0.14__py3-none-any.whl → 2.0.16__py3-none-any.whl

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 (63) hide show
  1. llms/__init__.py +2 -0
  2. llms/__main__.py +9 -0
  3. llms/__pycache__/__init__.cpython-312.pyc +0 -0
  4. llms/__pycache__/__init__.cpython-313.pyc +0 -0
  5. llms/__pycache__/__init__.cpython-314.pyc +0 -0
  6. llms/__pycache__/__main__.cpython-312.pyc +0 -0
  7. llms/__pycache__/__main__.cpython-314.pyc +0 -0
  8. llms/__pycache__/llms.cpython-312.pyc +0 -0
  9. llms/__pycache__/main.cpython-312.pyc +0 -0
  10. llms/__pycache__/main.cpython-313.pyc +0 -0
  11. llms/__pycache__/main.cpython-314.pyc +0 -0
  12. {llms_py-2.0.14.data/data → llms}/index.html +5 -1
  13. llms/llms.json +1102 -0
  14. llms.py → llms/main.py +252 -14
  15. llms/ui/Analytics.mjs +1483 -0
  16. llms/ui/Brand.mjs +34 -0
  17. {llms_py-2.0.14.data/data → llms}/ui/ChatPrompt.mjs +58 -36
  18. {llms_py-2.0.14.data/data → llms}/ui/Main.mjs +205 -5
  19. llms/ui/ModelSelector.mjs +60 -0
  20. llms/ui/ProviderIcon.mjs +29 -0
  21. {llms_py-2.0.14.data/data → llms}/ui/Sidebar.mjs +20 -4
  22. {llms_py-2.0.14.data/data → llms}/ui/ai.mjs +1 -1
  23. {llms_py-2.0.14.data/data → llms}/ui/app.css +211 -64
  24. llms/ui/lib/chart.js +14 -0
  25. llms/ui/lib/charts.mjs +20 -0
  26. llms/ui/lib/color.js +14 -0
  27. llms/ui/lib/vue.mjs +18369 -0
  28. {llms_py-2.0.14.data/data → llms}/ui/tailwind.input.css +1 -1
  29. llms/ui/threadStore.mjs +524 -0
  30. {llms_py-2.0.14.data/data → llms}/ui/utils.mjs +36 -0
  31. {llms_py-2.0.14.dist-info → llms_py-2.0.16.dist-info}/METADATA +8 -35
  32. llms_py-2.0.16.dist-info/RECORD +56 -0
  33. llms_py-2.0.16.dist-info/entry_points.txt +2 -0
  34. llms_py-2.0.14.data/data/llms.json +0 -447
  35. llms_py-2.0.14.data/data/requirements.txt +0 -1
  36. llms_py-2.0.14.data/data/ui/Brand.mjs +0 -23
  37. llms_py-2.0.14.data/data/ui/ModelSelector.mjs +0 -29
  38. llms_py-2.0.14.data/data/ui/threadStore.mjs +0 -273
  39. llms_py-2.0.14.dist-info/RECORD +0 -40
  40. llms_py-2.0.14.dist-info/entry_points.txt +0 -2
  41. {llms_py-2.0.14.data/data → llms}/ui/App.mjs +0 -0
  42. {llms_py-2.0.14.data/data → llms}/ui/Avatar.mjs +0 -0
  43. {llms_py-2.0.14.data/data → llms}/ui/ProviderStatus.mjs +0 -0
  44. {llms_py-2.0.14.data/data → llms}/ui/Recents.mjs +0 -0
  45. {llms_py-2.0.14.data/data → llms}/ui/SettingsDialog.mjs +0 -0
  46. {llms_py-2.0.14.data/data → llms}/ui/SignIn.mjs +0 -0
  47. {llms_py-2.0.14.data/data → llms}/ui/SystemPromptEditor.mjs +0 -0
  48. {llms_py-2.0.14.data/data → llms}/ui/SystemPromptSelector.mjs +0 -0
  49. {llms_py-2.0.14.data/data → llms}/ui/Welcome.mjs +0 -0
  50. {llms_py-2.0.14.data/data → llms}/ui/fav.svg +0 -0
  51. {llms_py-2.0.14.data/data → llms}/ui/lib/highlight.min.mjs +0 -0
  52. {llms_py-2.0.14.data/data → llms}/ui/lib/idb.min.mjs +0 -0
  53. {llms_py-2.0.14.data/data → llms}/ui/lib/marked.min.mjs +0 -0
  54. {llms_py-2.0.14.data/data → llms}/ui/lib/servicestack-client.mjs +0 -0
  55. {llms_py-2.0.14.data/data → llms}/ui/lib/servicestack-vue.mjs +0 -0
  56. {llms_py-2.0.14.data/data → llms}/ui/lib/vue-router.min.mjs +0 -0
  57. {llms_py-2.0.14.data/data → llms}/ui/lib/vue.min.mjs +0 -0
  58. {llms_py-2.0.14.data/data → llms}/ui/markdown.mjs +0 -0
  59. {llms_py-2.0.14.data/data → llms}/ui/typography.css +0 -0
  60. {llms_py-2.0.14.data/data → llms}/ui.json +0 -0
  61. {llms_py-2.0.14.dist-info → llms_py-2.0.16.dist-info}/WHEEL +0 -0
  62. {llms_py-2.0.14.dist-info → llms_py-2.0.16.dist-info}/licenses/LICENSE +0 -0
  63. {llms_py-2.0.14.dist-info → llms_py-2.0.16.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,11 @@
1
1
  import { onMounted, inject } from 'vue'
2
2
  import { useRouter } from 'vue-router'
3
+ import { useFormatters } from '@servicestack/vue'
3
4
  import { useThreadStore } from './threadStore.mjs'
4
5
  import Brand from './Brand.mjs'
6
+ import { statsTitle, formatCost } from './utils.mjs'
7
+
8
+ const { humanifyNumber, humanifyMs } = useFormatters()
5
9
 
6
10
  // Thread Item Component
7
11
  const ThreadItem = {
@@ -17,7 +21,11 @@ const ThreadItem = {
17
21
  {{ thread.title }}
18
22
  </div>
19
23
  <div class="text-xs text-gray-500 truncate">
20
- {{ formatRelativeTime(thread.updatedAt) }} • {{ thread.messages.length }} messages
24
+ <span>{{ formatRelativeTime(thread.updatedAt) }} • {{ thread.messages.length }} msgs</span>
25
+ <span v-if="thread.stats?.inputTokens" :title="statsTitle(thread.stats)">
26
+ &#8226; {{ humanifyNumber(thread.stats.inputTokens + thread.stats.outputTokens) }} toks
27
+ {{ thread.stats.cost ? ' ' + formatCost(thread.stats.cost) : '' }}
28
+ </span>
21
29
  </div>
22
30
  <div v-if="thread.model" class="text-xs text-blue-600 truncate">
23
31
  {{ thread.model }}
@@ -66,7 +74,10 @@ const ThreadItem = {
66
74
  }
67
75
 
68
76
  return {
69
- formatRelativeTime
77
+ formatRelativeTime,
78
+ humanifyNumber,
79
+ statsTitle,
80
+ formatCost,
70
81
  }
71
82
  }
72
83
  }
@@ -153,7 +164,7 @@ const Sidebar = {
153
164
  },
154
165
  template: `
155
166
  <div class="flex flex-col h-full bg-gray-50 border-r border-gray-200">
156
- <Brand @home="goToInitialState" @new="createNewThread" />
167
+ <Brand @home="goToInitialState" @new="createNewThread" @analytics="goToAnalytics" />
157
168
  <!-- Thread List -->
158
169
  <div class="flex-1 overflow-y-auto">
159
170
  <div v-if="isLoading" class="p-4 text-center text-gray-500">
@@ -219,6 +230,10 @@ const Sidebar = {
219
230
  router.push(`${ai.base}/`)
220
231
  }
221
232
 
233
+ const goToAnalytics = () => {
234
+ router.push(`${ai.base}/analytics`)
235
+ }
236
+
222
237
  return {
223
238
  threadStore,
224
239
  threads,
@@ -228,7 +243,8 @@ const Sidebar = {
228
243
  selectThread,
229
244
  deleteThread,
230
245
  createNewThread,
231
- goToInitialState
246
+ goToInitialState,
247
+ goToAnalytics,
232
248
  }
233
249
  }
234
250
  }
@@ -6,7 +6,7 @@ const headers = { 'Accept': 'application/json' }
6
6
  const prefsKey = 'llms.prefs'
7
7
 
8
8
  export const o = {
9
- version: '2.0.14',
9
+ version: '2.0.16',
10
10
  base,
11
11
  prefsKey,
12
12
  welcome: 'Welcome to llms.py',
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.15 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -68,6 +68,7 @@
68
68
  --color-violet-700: oklch(49.1% 0.27 292.581);
69
69
  --color-violet-800: oklch(43.2% 0.232 292.759);
70
70
  --color-violet-900: oklch(38% 0.189 293.745);
71
+ --color-purple-100: oklch(94.6% 0.033 307.174);
71
72
  --color-purple-200: oklch(90.2% 0.063 306.703);
72
73
  --color-purple-400: oklch(71.4% 0.203 305.504);
73
74
  --color-purple-500: oklch(62.7% 0.265 303.9);
@@ -120,6 +121,7 @@
120
121
  --font-weight-normal: 400;
121
122
  --font-weight-medium: 500;
122
123
  --font-weight-semibold: 600;
124
+ --font-weight-bold: 700;
123
125
  --font-weight-extrabold: 800;
124
126
  --tracking-wider: 0.05em;
125
127
  --radius-sm: 0.25rem;
@@ -245,7 +247,9 @@
245
247
  ::placeholder {
246
248
  color: currentcolor;
247
249
  @supports (color: color-mix(in lab, red, red)) {
248
- color: color-mix(in oklab, currentcolor 50%, transparent);
250
+ & {
251
+ color: color-mix(in oklab, currentcolor 50%, transparent);
252
+ }
249
253
  }
250
254
  }
251
255
  }
@@ -268,6 +272,9 @@
268
272
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
269
273
  padding-block: 0;
270
274
  }
275
+ ::-webkit-calendar-picker-indicator {
276
+ line-height: 1;
277
+ }
271
278
  :-moz-ui-invalid {
272
279
  box-shadow: none;
273
280
  }
@@ -294,6 +301,9 @@
294
301
  .invisible {
295
302
  visibility: hidden;
296
303
  }
304
+ .visible {
305
+ visibility: visible;
306
+ }
297
307
  .sr-only {
298
308
  position: absolute;
299
309
  width: 1px;
@@ -301,7 +311,7 @@
301
311
  padding: 0;
302
312
  margin: -1px;
303
313
  overflow: hidden;
304
- clip: rect(0, 0, 0, 0);
314
+ clip-path: inset(50%);
305
315
  white-space: nowrap;
306
316
  border-width: 0;
307
317
  }
@@ -338,6 +348,9 @@
338
348
  .right-2 {
339
349
  right: calc(var(--spacing) * 2);
340
350
  }
351
+ .bottom-2 {
352
+ bottom: calc(var(--spacing) * 2);
353
+ }
341
354
  .left-0 {
342
355
  left: calc(var(--spacing) * 0);
343
356
  }
@@ -389,6 +402,9 @@
389
402
  .mx-2 {
390
403
  margin-inline: calc(var(--spacing) * 2);
391
404
  }
405
+ .mx-4 {
406
+ margin-inline: calc(var(--spacing) * 4);
407
+ }
392
408
  .mx-auto {
393
409
  margin-inline: auto;
394
410
  }
@@ -458,6 +474,9 @@
458
474
  .mb-4 {
459
475
  margin-bottom: calc(var(--spacing) * 4);
460
476
  }
477
+ .mb-6 {
478
+ margin-bottom: calc(var(--spacing) * 6);
479
+ }
461
480
  .-ml-px {
462
481
  margin-left: -1px;
463
482
  }
@@ -559,6 +578,15 @@
559
578
  .h-16 {
560
579
  height: calc(var(--spacing) * 16);
561
580
  }
581
+ .h-40 {
582
+ height: calc(var(--spacing) * 40);
583
+ }
584
+ .h-80 {
585
+ height: calc(var(--spacing) * 80);
586
+ }
587
+ .h-96 {
588
+ height: calc(var(--spacing) * 96);
589
+ }
562
590
  .h-\[37px\] {
563
591
  height: 37px;
564
592
  }
@@ -757,12 +785,18 @@
757
785
  .resize {
758
786
  resize: both;
759
787
  }
788
+ .resize-none {
789
+ resize: none;
790
+ }
760
791
  .appearance-none {
761
792
  appearance: none;
762
793
  }
763
794
  .grid-cols-1 {
764
795
  grid-template-columns: repeat(1, minmax(0, 1fr));
765
796
  }
797
+ .grid-cols-2 {
798
+ grid-template-columns: repeat(2, minmax(0, 1fr));
799
+ }
766
800
  .grid-cols-3 {
767
801
  grid-template-columns: repeat(3, minmax(0, 1fr));
768
802
  }
@@ -808,6 +842,9 @@
808
842
  .gap-6 {
809
843
  gap: calc(var(--spacing) * 6);
810
844
  }
845
+ .gap-8 {
846
+ gap: calc(var(--spacing) * 8);
847
+ }
811
848
  .space-y-1 {
812
849
  :where(& > :not(:last-child)) {
813
850
  --tw-space-y-reverse: 0;
@@ -978,9 +1015,15 @@
978
1015
  .border-blue-200 {
979
1016
  border-color: var(--color-blue-200);
980
1017
  }
1018
+ .border-blue-300 {
1019
+ border-color: var(--color-blue-300);
1020
+ }
981
1021
  .border-blue-400 {
982
1022
  border-color: var(--color-blue-400);
983
1023
  }
1024
+ .border-blue-500 {
1025
+ border-color: var(--color-blue-500);
1026
+ }
984
1027
  .border-blue-600 {
985
1028
  border-color: var(--color-blue-600);
986
1029
  }
@@ -1020,7 +1063,17 @@
1020
1063
  .bg-black\/40 {
1021
1064
  background-color: color-mix(in srgb, #000 40%, transparent);
1022
1065
  @supports (color: color-mix(in lab, red, red)) {
1023
- background-color: color-mix(in oklab, var(--color-black) 40%, transparent);
1066
+ & {
1067
+ background-color: color-mix(in oklab, var(--color-black) 40%, transparent);
1068
+ }
1069
+ }
1070
+ }
1071
+ .bg-black\/50 {
1072
+ background-color: color-mix(in srgb, #000 50%, transparent);
1073
+ @supports (color: color-mix(in lab, red, red)) {
1074
+ & {
1075
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
1076
+ }
1024
1077
  }
1025
1078
  }
1026
1079
  .bg-blue-50 {
@@ -1050,7 +1103,9 @@
1050
1103
  .bg-gray-500\/75 {
1051
1104
  background-color: color-mix(in srgb, oklch(55.1% 0.027 264.364) 75%, transparent);
1052
1105
  @supports (color: color-mix(in lab, red, red)) {
1053
- background-color: color-mix(in oklab, var(--color-gray-500) 75%, transparent);
1106
+ & {
1107
+ background-color: color-mix(in oklab, var(--color-gray-500) 75%, transparent);
1108
+ }
1054
1109
  }
1055
1110
  }
1056
1111
  .bg-gray-600 {
@@ -1062,12 +1117,17 @@
1062
1117
  .bg-gray-900\/80 {
1063
1118
  background-color: color-mix(in srgb, oklch(21% 0.034 264.665) 80%, transparent);
1064
1119
  @supports (color: color-mix(in lab, red, red)) {
1065
- background-color: color-mix(in oklab, var(--color-gray-900) 80%, transparent);
1120
+ & {
1121
+ background-color: color-mix(in oklab, var(--color-gray-900) 80%, transparent);
1122
+ }
1066
1123
  }
1067
1124
  }
1068
1125
  .bg-green-50 {
1069
1126
  background-color: var(--color-green-50);
1070
1127
  }
1128
+ .bg-green-100 {
1129
+ background-color: var(--color-green-100);
1130
+ }
1071
1131
  .bg-green-600 {
1072
1132
  background-color: var(--color-green-600);
1073
1133
  }
@@ -1083,6 +1143,9 @@
1083
1143
  .bg-indigo-700 {
1084
1144
  background-color: var(--color-indigo-700);
1085
1145
  }
1146
+ .bg-purple-100 {
1147
+ background-color: var(--color-purple-100);
1148
+ }
1086
1149
  .bg-purple-600 {
1087
1150
  background-color: var(--color-purple-600);
1088
1151
  }
@@ -1098,6 +1161,14 @@
1098
1161
  .bg-sky-600 {
1099
1162
  background-color: var(--color-sky-600);
1100
1163
  }
1164
+ .bg-slate-400\/10 {
1165
+ background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 10%, transparent);
1166
+ @supports (color: color-mix(in lab, red, red)) {
1167
+ & {
1168
+ background-color: color-mix(in oklab, var(--color-slate-400) 10%, transparent);
1169
+ }
1170
+ }
1171
+ }
1101
1172
  .bg-white {
1102
1173
  background-color: var(--color-white);
1103
1174
  }
@@ -1194,9 +1265,6 @@
1194
1265
  .pt-2 {
1195
1266
  padding-top: calc(var(--spacing) * 2);
1196
1267
  }
1197
- .pt-3 {
1198
- padding-top: calc(var(--spacing) * 3);
1199
- }
1200
1268
  .pt-4 {
1201
1269
  padding-top: calc(var(--spacing) * 4);
1202
1270
  }
@@ -1227,6 +1295,9 @@
1227
1295
  .pr-10 {
1228
1296
  padding-right: calc(var(--spacing) * 10);
1229
1297
  }
1298
+ .pr-12 {
1299
+ padding-right: calc(var(--spacing) * 12);
1300
+ }
1230
1301
  .pb-1 {
1231
1302
  padding-bottom: calc(var(--spacing) * 1);
1232
1303
  }
@@ -1318,6 +1389,10 @@
1318
1389
  .text-\[11px\] {
1319
1390
  font-size: 11px;
1320
1391
  }
1392
+ .leading-5 {
1393
+ --tw-leading: calc(var(--spacing) * 5);
1394
+ line-height: calc(var(--spacing) * 5);
1395
+ }
1321
1396
  .leading-6 {
1322
1397
  --tw-leading: calc(var(--spacing) * 6);
1323
1398
  line-height: calc(var(--spacing) * 6);
@@ -1326,6 +1401,10 @@
1326
1401
  --tw-leading: calc(var(--spacing) * 7);
1327
1402
  line-height: calc(var(--spacing) * 7);
1328
1403
  }
1404
+ .font-bold {
1405
+ --tw-font-weight: var(--font-weight-bold);
1406
+ font-weight: var(--font-weight-bold);
1407
+ }
1329
1408
  .font-extrabold {
1330
1409
  --tw-font-weight: var(--font-weight-extrabold);
1331
1410
  font-weight: var(--font-weight-extrabold);
@@ -1373,6 +1452,9 @@
1373
1452
  .text-blue-700 {
1374
1453
  color: var(--color-blue-700);
1375
1454
  }
1455
+ .text-blue-800 {
1456
+ color: var(--color-blue-800);
1457
+ }
1376
1458
  .text-cyan-600 {
1377
1459
  color: var(--color-cyan-600);
1378
1460
  }
@@ -1388,7 +1470,9 @@
1388
1470
  .text-gray-500\/80 {
1389
1471
  color: color-mix(in srgb, oklch(55.1% 0.027 264.364) 80%, transparent);
1390
1472
  @supports (color: color-mix(in lab, red, red)) {
1391
- color: color-mix(in oklab, var(--color-gray-500) 80%, transparent);
1473
+ & {
1474
+ color: color-mix(in oklab, var(--color-gray-500) 80%, transparent);
1475
+ }
1392
1476
  }
1393
1477
  }
1394
1478
  .text-gray-600 {
@@ -1397,6 +1481,9 @@
1397
1481
  .text-gray-700 {
1398
1482
  color: var(--color-gray-700);
1399
1483
  }
1484
+ .text-gray-800 {
1485
+ color: var(--color-gray-800);
1486
+ }
1400
1487
  .text-gray-900 {
1401
1488
  color: var(--color-gray-900);
1402
1489
  }
@@ -1430,6 +1517,9 @@
1430
1517
  .text-purple-600 {
1431
1518
  color: var(--color-purple-600);
1432
1519
  }
1520
+ .text-purple-800 {
1521
+ color: var(--color-purple-800);
1522
+ }
1433
1523
  .text-red-400 {
1434
1524
  color: var(--color-red-400);
1435
1525
  }
@@ -1460,7 +1550,9 @@
1460
1550
  .text-white\/70 {
1461
1551
  color: color-mix(in srgb, #fff 70%, transparent);
1462
1552
  @supports (color: color-mix(in lab, red, red)) {
1463
- color: color-mix(in oklab, var(--color-white) 70%, transparent);
1553
+ & {
1554
+ color: color-mix(in oklab, var(--color-white) 70%, transparent);
1555
+ }
1464
1556
  }
1465
1557
  }
1466
1558
  .text-yellow-400 {
@@ -1545,7 +1637,9 @@
1545
1637
  .ring-black\/5 {
1546
1638
  --tw-ring-color: color-mix(in srgb, #000 5%, transparent);
1547
1639
  @supports (color: color-mix(in lab, red, red)) {
1548
- --tw-ring-color: color-mix(in oklab, var(--color-black) 5%, transparent);
1640
+ & {
1641
+ --tw-ring-color: color-mix(in oklab, var(--color-black) 5%, transparent);
1642
+ }
1549
1643
  }
1550
1644
  }
1551
1645
  .ring-indigo-500 {
@@ -1554,7 +1648,9 @@
1554
1648
  .inset-ring-gray-900\/5 {
1555
1649
  --tw-inset-ring-color: color-mix(in srgb, oklch(21% 0.034 264.665) 5%, transparent);
1556
1650
  @supports (color: color-mix(in lab, red, red)) {
1557
- --tw-inset-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);
1651
+ & {
1652
+ --tw-inset-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);
1653
+ }
1558
1654
  }
1559
1655
  }
1560
1656
  .outline {
@@ -1571,6 +1667,14 @@
1571
1667
  --tw-blur: blur(8px);
1572
1668
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1573
1669
  }
1670
+ .invert {
1671
+ --tw-invert: invert(100%);
1672
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1673
+ }
1674
+ .invert-0 {
1675
+ --tw-invert: invert(0%);
1676
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1677
+ }
1574
1678
  .filter {
1575
1679
  filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
1576
1680
  }
@@ -1579,7 +1683,7 @@
1579
1683
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
1580
1684
  }
1581
1685
  .transition {
1582
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
1686
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
1583
1687
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1584
1688
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1585
1689
  }
@@ -1798,11 +1902,20 @@
1798
1902
  @media (hover: hover) {
1799
1903
  background-color: color-mix(in srgb, #000 10%, transparent);
1800
1904
  @supports (color: color-mix(in lab, red, red)) {
1801
- background-color: color-mix(in oklab, var(--color-black) 10%, transparent);
1905
+ & {
1906
+ background-color: color-mix(in oklab, var(--color-black) 10%, transparent);
1907
+ }
1802
1908
  }
1803
1909
  }
1804
1910
  }
1805
1911
  }
1912
+ .hover\:bg-blue-50 {
1913
+ &:hover {
1914
+ @media (hover: hover) {
1915
+ background-color: var(--color-blue-50);
1916
+ }
1917
+ }
1918
+ }
1806
1919
  .hover\:bg-blue-100 {
1807
1920
  &:hover {
1808
1921
  @media (hover: hover) {
@@ -1838,6 +1951,13 @@
1838
1951
  }
1839
1952
  }
1840
1953
  }
1954
+ .hover\:bg-green-50 {
1955
+ &:hover {
1956
+ @media (hover: hover) {
1957
+ background-color: var(--color-green-50);
1958
+ }
1959
+ }
1960
+ }
1841
1961
  .hover\:bg-green-100 {
1842
1962
  &:hover {
1843
1963
  @media (hover: hover) {
@@ -1901,12 +2021,26 @@
1901
2021
  }
1902
2022
  }
1903
2023
  }
2024
+ .hover\:bg-slate-400\/20 {
2025
+ &:hover {
2026
+ @media (hover: hover) {
2027
+ background-color: color-mix(in srgb, oklch(70.4% 0.04 256.788) 20%, transparent);
2028
+ @supports (color: color-mix(in lab, red, red)) {
2029
+ & {
2030
+ background-color: color-mix(in oklab, var(--color-slate-400) 20%, transparent);
2031
+ }
2032
+ }
2033
+ }
2034
+ }
2035
+ }
1904
2036
  .hover\:bg-white\/20 {
1905
2037
  &:hover {
1906
2038
  @media (hover: hover) {
1907
2039
  background-color: color-mix(in srgb, #fff 20%, transparent);
1908
2040
  @supports (color: color-mix(in lab, red, red)) {
1909
- background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
2041
+ & {
2042
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
2043
+ }
1910
2044
  }
1911
2045
  }
1912
2046
  }
@@ -1988,6 +2122,13 @@
1988
2122
  }
1989
2123
  }
1990
2124
  }
2125
+ .hover\:text-green-600 {
2126
+ &:hover {
2127
+ @media (hover: hover) {
2128
+ color: var(--color-green-600);
2129
+ }
2130
+ }
2131
+ }
1991
2132
  .hover\:text-green-800 {
1992
2133
  &:hover {
1993
2134
  @media (hover: hover) {
@@ -2037,6 +2178,13 @@
2037
2178
  }
2038
2179
  }
2039
2180
  }
2181
+ .hover\:text-red-800 {
2182
+ &:hover {
2183
+ @media (hover: hover) {
2184
+ color: var(--color-red-800);
2185
+ }
2186
+ }
2187
+ }
2040
2188
  .hover\:text-red-900 {
2041
2189
  &:hover {
2042
2190
  @media (hover: hover) {
@@ -2058,13 +2206,6 @@
2058
2206
  }
2059
2207
  }
2060
2208
  }
2061
- .hover\:opacity-70 {
2062
- &:hover {
2063
- @media (hover: hover) {
2064
- opacity: 70%;
2065
- }
2066
- }
2067
- }
2068
2209
  .hover\:shadow {
2069
2210
  &:hover {
2070
2211
  @media (hover: hover) {
@@ -2103,6 +2244,11 @@
2103
2244
  border-color: var(--color-red-500);
2104
2245
  }
2105
2246
  }
2247
+ .focus\:border-transparent {
2248
+ &:focus {
2249
+ border-color: transparent;
2250
+ }
2251
+ }
2106
2252
  .focus\:bg-indigo-500 {
2107
2253
  &:focus {
2108
2254
  background-color: var(--color-indigo-500);
@@ -2118,6 +2264,12 @@
2118
2264
  color: var(--color-white);
2119
2265
  }
2120
2266
  }
2267
+ .focus\:ring-0 {
2268
+ &:focus {
2269
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, hsl(var(--ring)));
2270
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2271
+ }
2272
+ }
2121
2273
  .focus\:ring-1 {
2122
2274
  &:focus {
2123
2275
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, hsl(var(--ring)));
@@ -2203,30 +2355,19 @@
2203
2355
  outline-style: none;
2204
2356
  }
2205
2357
  }
2206
- .focus-visible\:outline-black {
2207
- &:focus-visible {
2208
- outline-color: var(--color-black);
2209
- }
2210
- }
2211
- .focus-visible\:outline-none {
2212
- &:focus-visible {
2213
- --tw-outline-style: none;
2214
- outline-style: none;
2215
- }
2216
- }
2217
2358
  .disabled\:cursor-not-allowed {
2218
2359
  &:disabled {
2219
2360
  cursor: not-allowed;
2220
2361
  }
2221
2362
  }
2222
- .disabled\:border-slate-200 {
2363
+ .disabled\:border-gray-200 {
2223
2364
  &:disabled {
2224
- border-color: var(--color-slate-200);
2365
+ border-color: var(--color-gray-200);
2225
2366
  }
2226
2367
  }
2227
- .disabled\:bg-\[\#D7D7D7\] {
2368
+ .disabled\:border-slate-200 {
2228
2369
  &:disabled {
2229
- background-color: #D7D7D7;
2370
+ border-color: var(--color-slate-200);
2230
2371
  }
2231
2372
  }
2232
2373
  .disabled\:bg-blue-400 {
@@ -2269,11 +2410,6 @@
2269
2410
  background-color: var(--color-slate-50);
2270
2411
  }
2271
2412
  }
2272
- .disabled\:text-\[\#f4f4f4\] {
2273
- &:disabled {
2274
- color: #f4f4f4;
2275
- }
2276
- }
2277
2413
  .disabled\:text-gray-400 {
2278
2414
  &:disabled {
2279
2415
  color: var(--color-gray-400);
@@ -2367,15 +2503,6 @@
2367
2503
  }
2368
2504
  }
2369
2505
  }
2370
- .disabled\:hover\:opacity-100 {
2371
- &:disabled {
2372
- &:hover {
2373
- @media (hover: hover) {
2374
- opacity: 100%;
2375
- }
2376
- }
2377
- }
2378
- }
2379
2506
  .has-focus-visible\:outline-2 {
2380
2507
  &:has(*:focus-visible) {
2381
2508
  outline-style: var(--tw-outline-style);
@@ -2561,6 +2688,16 @@
2561
2688
  grid-template-columns: repeat(2, minmax(0, 1fr));
2562
2689
  }
2563
2690
  }
2691
+ .md\:grid-cols-4 {
2692
+ @media (width >= 48rem) {
2693
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2694
+ }
2695
+ }
2696
+ .md\:grid-cols-5 {
2697
+ @media (width >= 48rem) {
2698
+ grid-template-columns: repeat(5, minmax(0, 1fr));
2699
+ }
2700
+ }
2564
2701
  .md\:rounded-lg {
2565
2702
  @media (width >= 48rem) {
2566
2703
  border-radius: var(--radius-lg);
@@ -2596,6 +2733,11 @@
2596
2733
  display: none;
2597
2734
  }
2598
2735
  }
2736
+ .lg\:inline {
2737
+ @media (width >= 64rem) {
2738
+ display: inline;
2739
+ }
2740
+ }
2599
2741
  .lg\:table-cell {
2600
2742
  @media (width >= 64rem) {
2601
2743
  display: table-cell;
@@ -2611,6 +2753,11 @@
2611
2753
  max-width: var(--breakpoint-md);
2612
2754
  }
2613
2755
  }
2756
+ .lg\:grid-cols-2 {
2757
+ @media (width >= 64rem) {
2758
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2759
+ }
2760
+ }
2614
2761
  .lg\:flex-col {
2615
2762
  @media (width >= 64rem) {
2616
2763
  flex-direction: column;
@@ -2795,11 +2942,6 @@
2795
2942
  background-color: transparent;
2796
2943
  }
2797
2944
  }
2798
- .dark\:bg-white {
2799
- &:where(.dark, .dark *) {
2800
- background-color: var(--color-white);
2801
- }
2802
- }
2803
2945
  .dark\:bg-yellow-200 {
2804
2946
  &:where(.dark, .dark *) {
2805
2947
  background-color: var(--color-yellow-200);
@@ -2940,6 +3082,18 @@
2940
3082
  --tw-ring-offset-color: var(--color-green-900);
2941
3083
  }
2942
3084
  }
3085
+ .dark\:invert {
3086
+ &:where(.dark, .dark *) {
3087
+ --tw-invert: invert(100%);
3088
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
3089
+ }
3090
+ }
3091
+ .dark\:invert-0 {
3092
+ &:where(.dark, .dark *) {
3093
+ --tw-invert: invert(0%);
3094
+ filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
3095
+ }
3096
+ }
2943
3097
  .dark\:file\:bg-violet-900 {
2944
3098
  &:where(.dark, .dark *) {
2945
3099
  &::file-selector-button {
@@ -3260,13 +3414,6 @@
3260
3414
  }
3261
3415
  }
3262
3416
  }
3263
- .dark\:focus-visible\:outline-white {
3264
- &:where(.dark, .dark *) {
3265
- &:focus-visible {
3266
- outline-color: var(--color-white);
3267
- }
3268
- }
3269
- }
3270
3417
  .dark\:disabled\:border-slate-700 {
3271
3418
  &:where(.dark, .dark *) {
3272
3419
  &:disabled {