avo 4.0.0.beta.9 → 4.0.0.beta.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7bb9ffa2cd3c5a806ae93744aabedf20ed7bfbfc7c09b734e1973057c4c300a
4
- data.tar.gz: 273595927329c2794204091e46ca6a27a567f43b3108cecad8daee853312a16e
3
+ metadata.gz: '01000813767705fb54b1c2f153307ed34c57d868b1dda2584b54232e803214fe'
4
+ data.tar.gz: 57c69067ea0028edc7bfccc2818273a85fe984303e22088a7c5bb4f909232fd8
5
5
  SHA512:
6
- metadata.gz: 856ad33301d2f0856386fff262098011987bdb20ff48be5c94a887b3d11617eb23cb0d8678ce5f2c90126c2a040be804c38b8143cdd4fcfe21a022caf0d59f55
7
- data.tar.gz: 3c03d9f202c4cfc0e77521fb29de67e3b21cd36040b2ea9c01b169b475a0a5f2b23551d22b8e7d840c0ee5722bdff4b67cad93b6101c87b2a579987c8e8bf7fd
6
+ metadata.gz: a57bf48232fc5bd63e5b2438fc1b95f49063f69b29afe139e1455390516e07a2dff07cf42954ccbdfbba7ca4d61b8feb1343e73e74f0cdd27b6b448614247be4
7
+ data.tar.gz: f2d4cde61824ce1693361009129f6b96984f443408693400a81ca1b0406236b8792f1b539e0528cb0191cf03aa1e9317f3d75324c5ee5f9314e5b080ed846feb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (4.0.0.beta.9)
4
+ avo (4.0.0.beta.11)
5
5
  actionview (>= 6.1)
6
6
  active_link_to
7
7
  activerecord (>= 6.1)
@@ -233,8 +233,6 @@
233
233
  --color-black: #000;
234
234
  --color-white: #fff;
235
235
  --spacing: 0.25rem;
236
- --breakpoint-xl: 80rem;
237
- --container-xs: 20rem;
238
236
  --container-sm: 24rem;
239
237
  --container-md: 28rem;
240
238
  --container-lg: 32rem;
@@ -259,8 +257,6 @@
259
257
  --text-3xl--line-height: calc(2.25 / 1.875);
260
258
  --text-4xl: 2.25rem;
261
259
  --text-4xl--line-height: calc(2.5 / 2.25);
262
- --text-5xl: 3rem;
263
- --text-5xl--line-height: 1;
264
260
  --font-weight-normal: 400;
265
261
  --font-weight-medium: 500;
266
262
  --font-weight-semibold: 600;
@@ -271,7 +267,6 @@
271
267
  --tracking-wide: 0.025em;
272
268
  --tracking-widest: 0.1em;
273
269
  --leading-tight: 1.25;
274
- --leading-snug: 1.375;
275
270
  --radius-xs: 0.125rem;
276
271
  --radius-sm: 0.25rem;
277
272
  --radius-md: 0.375rem;
@@ -517,9 +512,6 @@
517
512
  .pointer-events-none {
518
513
  pointer-events: none;
519
514
  }
520
- .collapse {
521
- visibility: collapse;
522
- }
523
515
  .invisible {
524
516
  visibility: hidden;
525
517
  }
@@ -573,12 +565,6 @@
573
565
  .end-0 {
574
566
  inset-inline-end: calc(var(--spacing) * 0);
575
567
  }
576
- .end-2 {
577
- inset-inline-end: calc(var(--spacing) * 2);
578
- }
579
- .end-3 {
580
- inset-inline-end: calc(var(--spacing) * 3);
581
- }
582
568
  .end-auto {
583
569
  inset-inline-end: auto;
584
570
  }
@@ -594,36 +580,18 @@
594
580
  .top-1 {
595
581
  top: calc(var(--spacing) * 1);
596
582
  }
597
- .top-1\/2 {
598
- top: calc(1 / 2 * 100%);
599
- }
600
- .top-2 {
601
- top: calc(var(--spacing) * 2);
602
- }
603
583
  .top-3 {
604
584
  top: calc(var(--spacing) * 3);
605
585
  }
606
- .top-auto {
607
- top: auto;
608
- }
609
586
  .top-full {
610
587
  top: 100%;
611
588
  }
612
- .right-3 {
613
- right: calc(var(--spacing) * 3);
614
- }
615
- .-bottom-1\.5 {
616
- bottom: calc(var(--spacing) * -1.5);
617
- }
618
589
  .bottom-0 {
619
590
  bottom: calc(var(--spacing) * 0);
620
591
  }
621
592
  .bottom-full {
622
593
  bottom: 100%;
623
594
  }
624
- .left-auto {
625
- left: auto;
626
- }
627
595
  .z-10 {
628
596
  z-index: 10;
629
597
  }
@@ -666,33 +634,12 @@
666
634
  .col-span-6 {
667
635
  grid-column: span 6 / span 6;
668
636
  }
669
- .col-span-full {
670
- grid-column: 1 / -1;
671
- }
672
637
  .col-start-7 {
673
638
  grid-column-start: 7;
674
639
  }
675
640
  .col-end-13 {
676
641
  grid-column-end: 13;
677
642
  }
678
- .row-span-1 {
679
- grid-row: span 1 / span 1;
680
- }
681
- .row-span-2 {
682
- grid-row: span 2 / span 2;
683
- }
684
- .row-span-3 {
685
- grid-row: span 3 / span 3;
686
- }
687
- .row-span-4 {
688
- grid-row: span 4 / span 4;
689
- }
690
- .row-span-5 {
691
- grid-row: span 5 / span 5;
692
- }
693
- .row-span-6 {
694
- grid-row: span 6 / span 6;
695
- }
696
643
  .float-end {
697
644
  float: inline-end;
698
645
  }
@@ -726,9 +673,6 @@
726
673
  .m-2 {
727
674
  margin: calc(var(--spacing) * 2);
728
675
  }
729
- .-mx-1\.5 {
730
- margin-inline: calc(var(--spacing) * -1.5);
731
- }
732
676
  .-mx-2 {
733
677
  margin-inline: calc(var(--spacing) * -2);
734
678
  }
@@ -792,9 +736,6 @@
792
736
  .-mt-1 {
793
737
  margin-top: calc(var(--spacing) * -1);
794
738
  }
795
- .-mt-2 {
796
- margin-top: calc(var(--spacing) * -2);
797
- }
798
739
  .-mt-6 {
799
740
  margin-top: calc(var(--spacing) * -6);
800
741
  }
@@ -825,24 +766,12 @@
825
766
  .mt-8 {
826
767
  margin-top: calc(var(--spacing) * 8);
827
768
  }
828
- .mt-auto {
829
- margin-top: auto;
830
- }
831
- .mr-2 {
832
- margin-right: calc(var(--spacing) * 2);
833
- }
834
- .mr-px {
835
- margin-right: 1px;
836
- }
837
769
  .mb-0 {
838
770
  margin-bottom: calc(var(--spacing) * 0);
839
771
  }
840
772
  .mb-1 {
841
773
  margin-bottom: calc(var(--spacing) * 1);
842
774
  }
843
- .mb-1\! {
844
- margin-bottom: calc(var(--spacing) * 1) !important;
845
- }
846
775
  .mb-2 {
847
776
  margin-bottom: calc(var(--spacing) * 2);
848
777
  }
@@ -858,12 +787,6 @@
858
787
  .ml-12 {
859
788
  margin-left: calc(var(--spacing) * 12);
860
789
  }
861
- .ml-\[50\%\] {
862
- margin-left: 50%;
863
- }
864
- .ml-auto {
865
- margin-left: auto;
866
- }
867
790
  .\!hidden {
868
791
  display: none !important;
869
792
  }
@@ -922,18 +845,10 @@
922
845
  width: calc(var(--spacing) * 6);
923
846
  height: calc(var(--spacing) * 6);
924
847
  }
925
- .size-7 {
926
- width: calc(var(--spacing) * 7);
927
- height: calc(var(--spacing) * 7);
928
- }
929
848
  .size-8 {
930
849
  width: calc(var(--spacing) * 8);
931
850
  height: calc(var(--spacing) * 8);
932
851
  }
933
- .size-10 {
934
- width: calc(var(--spacing) * 10);
935
- height: calc(var(--spacing) * 10);
936
- }
937
852
  .size-12 {
938
853
  width: calc(var(--spacing) * 12);
939
854
  height: calc(var(--spacing) * 12);
@@ -948,9 +863,6 @@
948
863
  .h-3 {
949
864
  height: calc(var(--spacing) * 3);
950
865
  }
951
- .h-3\.5 {
952
- height: calc(var(--spacing) * 3.5);
953
- }
954
866
  .h-4 {
955
867
  height: calc(var(--spacing) * 4);
956
868
  }
@@ -1023,24 +935,6 @@
1023
935
  .min-h-64 {
1024
936
  min-height: calc(var(--spacing) * 64);
1025
937
  }
1026
- .min-h-\[8rem\] {
1027
- min-height: 8rem;
1028
- }
1029
- .min-h-\[16rem\] {
1030
- min-height: 16rem;
1031
- }
1032
- .min-h-\[24rem\] {
1033
- min-height: 24rem;
1034
- }
1035
- .min-h-\[32rem\] {
1036
- min-height: 32rem;
1037
- }
1038
- .min-h-\[40rem\] {
1039
- min-height: 40rem;
1040
- }
1041
- .min-h-\[48rem\] {
1042
- min-height: 48rem;
1043
- }
1044
938
  .min-h-dvh {
1045
939
  min-height: 100dvh;
1046
940
  }
@@ -1068,9 +962,6 @@
1068
962
  .w-2xl {
1069
963
  width: var(--container-2xl);
1070
964
  }
1071
- .w-3 {
1072
- width: calc(var(--spacing) * 3);
1073
- }
1074
965
  .w-3\/4 {
1075
966
  width: var(--spacing-3\/4);
1076
967
  }
@@ -1101,18 +992,12 @@
1101
992
  .w-16 {
1102
993
  width: calc(var(--spacing) * 16);
1103
994
  }
1104
- .w-56 {
1105
- width: calc(var(--spacing) * 56);
1106
- }
1107
995
  .w-64 {
1108
996
  width: calc(var(--spacing) * 64);
1109
997
  }
1110
998
  .w-72 {
1111
999
  width: calc(var(--spacing) * 72);
1112
1000
  }
1113
- .w-80 {
1114
- width: calc(var(--spacing) * 80);
1115
- }
1116
1001
  .w-96 {
1117
1002
  width: calc(var(--spacing) * 96);
1118
1003
  }
@@ -1170,27 +1055,18 @@
1170
1055
  .max-w-md {
1171
1056
  max-width: var(--container-md);
1172
1057
  }
1173
- .max-w-screen-xl {
1174
- max-width: var(--breakpoint-xl);
1175
- }
1176
1058
  .max-w-sm {
1177
1059
  max-width: var(--container-sm);
1178
1060
  }
1179
1061
  .max-w-xl {
1180
1062
  max-width: var(--container-xl);
1181
1063
  }
1182
- .max-w-xs {
1183
- max-width: var(--container-xs);
1184
- }
1185
1064
  .min-w-0 {
1186
1065
  min-width: calc(var(--spacing) * 0);
1187
1066
  }
1188
1067
  .min-w-24 {
1189
1068
  min-width: calc(var(--spacing) * 24);
1190
1069
  }
1191
- .min-w-52 {
1192
- min-width: calc(var(--spacing) * 52);
1193
- }
1194
1070
  .min-w-\[1rem\] {
1195
1071
  min-width: 1rem;
1196
1072
  }
@@ -1212,9 +1088,6 @@
1212
1088
  .flex-2 {
1213
1089
  flex: 2;
1214
1090
  }
1215
- .flex-shrink-0 {
1216
- flex-shrink: 0;
1217
- }
1218
1091
  .shrink-0 {
1219
1092
  flex-shrink: 0;
1220
1093
  }
@@ -1232,16 +1105,6 @@
1232
1105
  --tw-border-spacing-y: calc(var(--spacing) * 0);
1233
1106
  border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);
1234
1107
  }
1235
- .origin-top-left {
1236
- transform-origin: 0 0;
1237
- }
1238
- .origin-top-right {
1239
- transform-origin: 100% 0;
1240
- }
1241
- .-translate-x-1\/2 {
1242
- --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
1243
- translate: var(--tw-translate-x) var(--tw-translate-y);
1244
- }
1245
1108
  .translate-x-0 {
1246
1109
  --tw-translate-x: calc(var(--spacing) * 0);
1247
1110
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1250,22 +1113,6 @@
1250
1113
  --tw-translate-x: calc(var(--spacing) * 10);
1251
1114
  translate: var(--tw-translate-x) var(--tw-translate-y);
1252
1115
  }
1253
- .-translate-y-1\/2 {
1254
- --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1255
- translate: var(--tw-translate-x) var(--tw-translate-y);
1256
- }
1257
- .scale-95 {
1258
- --tw-scale-x: 95%;
1259
- --tw-scale-y: 95%;
1260
- --tw-scale-z: 95%;
1261
- scale: var(--tw-scale-x) var(--tw-scale-y);
1262
- }
1263
- .scale-100 {
1264
- --tw-scale-x: 100%;
1265
- --tw-scale-y: 100%;
1266
- --tw-scale-z: 100%;
1267
- scale: var(--tw-scale-x) var(--tw-scale-y);
1268
- }
1269
1116
  .-rotate-90 {
1270
1117
  rotate: calc(90deg * -1);
1271
1118
  }
@@ -1281,12 +1128,6 @@
1281
1128
  .animate-spin {
1282
1129
  animation: var(--animate-spin);
1283
1130
  }
1284
- .cursor-grab {
1285
- cursor: grab;
1286
- }
1287
- .cursor-grabbing {
1288
- cursor: grabbing;
1289
- }
1290
1131
  .cursor-not-allowed {
1291
1132
  cursor: not-allowed;
1292
1133
  }
@@ -1296,12 +1137,6 @@
1296
1137
  .cursor-wait {
1297
1138
  cursor: wait;
1298
1139
  }
1299
- .list-none {
1300
- list-style-type: none;
1301
- }
1302
- .appearance-none {
1303
- appearance: none;
1304
- }
1305
1140
  .break-before-avoid {
1306
1141
  break-before: avoid;
1307
1142
  }
@@ -1483,9 +1318,6 @@
1483
1318
  margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));
1484
1319
  }
1485
1320
  }
1486
- .gap-y-1 {
1487
- row-gap: calc(var(--spacing) * 1);
1488
- }
1489
1321
  .gap-y-4 {
1490
1322
  row-gap: calc(var(--spacing) * 4);
1491
1323
  }
@@ -1547,12 +1379,6 @@
1547
1379
  .overflow-x-auto {
1548
1380
  overflow-x: auto;
1549
1381
  }
1550
- .overflow-x-scroll {
1551
- overflow-x: scroll;
1552
- }
1553
- .overflow-y-auto {
1554
- overflow-y: auto;
1555
- }
1556
1382
  .overflow-y-scroll {
1557
1383
  overflow-y: scroll;
1558
1384
  }
@@ -1580,9 +1406,6 @@
1580
1406
  .rounded-xl {
1581
1407
  border-radius: var(--radius-xl);
1582
1408
  }
1583
- .rounded-xs {
1584
- border-radius: var(--radius-xs);
1585
- }
1586
1409
  .rounded-s {
1587
1410
  border-start-start-radius: 0.25rem;
1588
1411
  border-end-start-radius: 0.25rem;
@@ -1846,18 +1669,6 @@
1846
1669
  .border-violet-500 {
1847
1670
  border-color: var(--color-violet-500);
1848
1671
  }
1849
- .border-warning\/30 {
1850
- border-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 30%, transparent);
1851
- @supports (color: color-mix(in lab, red, red)) {
1852
- border-color: color-mix(in oklab, var(--color-warning) 30%, transparent);
1853
- }
1854
- }
1855
- .border-warning\/40 {
1856
- border-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 40%, transparent);
1857
- @supports (color: color-mix(in lab, red, red)) {
1858
- border-color: color-mix(in oklab, var(--color-warning) 40%, transparent);
1859
- }
1860
- }
1861
1672
  .border-white {
1862
1673
  border-color: var(--color-white);
1863
1674
  }
@@ -1954,9 +1765,6 @@
1954
1765
  .bg-gray-100 {
1955
1766
  background-color: var(--color-gray-100);
1956
1767
  }
1957
- .bg-gray-100\! {
1958
- background-color: var(--color-gray-100) !important;
1959
- }
1960
1768
  .bg-gray-300 {
1961
1769
  background-color: var(--color-gray-300);
1962
1770
  }
@@ -2029,9 +1837,6 @@
2029
1837
  .bg-red-50 {
2030
1838
  background-color: var(--color-red-50);
2031
1839
  }
2032
- .bg-red-100 {
2033
- background-color: var(--color-red-100);
2034
- }
2035
1840
  .bg-red-400 {
2036
1841
  background-color: var(--color-red-400);
2037
1842
  }
@@ -2086,12 +1891,6 @@
2086
1891
  .bg-violet-500 {
2087
1892
  background-color: var(--color-violet-500);
2088
1893
  }
2089
- .bg-warning\/10 {
2090
- background-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 10%, transparent);
2091
- @supports (color: color-mix(in lab, red, red)) {
2092
- background-color: color-mix(in oklab, var(--color-warning) 10%, transparent);
2093
- }
2094
- }
2095
1894
  .bg-white {
2096
1895
  background-color: var(--color-white);
2097
1896
  }
@@ -2161,9 +1960,6 @@
2161
1960
  .p-2 {
2162
1961
  padding: calc(var(--spacing) * 2);
2163
1962
  }
2164
- .p-3 {
2165
- padding: calc(var(--spacing) * 3);
2166
- }
2167
1963
  .p-4 {
2168
1964
  padding: calc(var(--spacing) * 4);
2169
1965
  }
@@ -2212,9 +2008,6 @@
2212
2008
  .py-8 {
2213
2009
  padding-block: calc(var(--spacing) * 8);
2214
2010
  }
2215
- .py-20 {
2216
- padding-block: calc(var(--spacing) * 20);
2217
- }
2218
2011
  .py-px {
2219
2012
  padding-block: 1px;
2220
2013
  }
@@ -2227,18 +2020,12 @@
2227
2020
  .pe-6 {
2228
2021
  padding-inline-end: calc(var(--spacing) * 6);
2229
2022
  }
2230
- .pe-9 {
2231
- padding-inline-end: calc(var(--spacing) * 9);
2232
- }
2233
2023
  .pt-0 {
2234
2024
  padding-top: calc(var(--spacing) * 0);
2235
2025
  }
2236
2026
  .pt-0\.5 {
2237
2027
  padding-top: calc(var(--spacing) * 0.5);
2238
2028
  }
2239
- .pt-1 {
2240
- padding-top: calc(var(--spacing) * 1);
2241
- }
2242
2029
  .pt-2 {
2243
2030
  padding-top: calc(var(--spacing) * 2);
2244
2031
  }
@@ -2251,9 +2038,6 @@
2251
2038
  .pb-0 {
2252
2039
  padding-bottom: calc(var(--spacing) * 0);
2253
2040
  }
2254
- .pb-0\.5 {
2255
- padding-bottom: calc(var(--spacing) * 0.5);
2256
- }
2257
2041
  .pb-1 {
2258
2042
  padding-bottom: calc(var(--spacing) * 1);
2259
2043
  }
@@ -2300,14 +2084,6 @@
2300
2084
  font-size: var(--text-2xl);
2301
2085
  line-height: var(--tw-leading, var(--text-2xl--line-height));
2302
2086
  }
2303
- .text-3xl {
2304
- font-size: var(--text-3xl);
2305
- line-height: var(--tw-leading, var(--text-3xl--line-height));
2306
- }
2307
- .text-5xl {
2308
- font-size: var(--text-5xl);
2309
- line-height: var(--tw-leading, var(--text-5xl--line-height));
2310
- }
2311
2087
  .text-base {
2312
2088
  font-size: var(--text-base);
2313
2089
  line-height: var(--tw-leading, var(--text-base--line-height));
@@ -2334,10 +2110,6 @@
2334
2110
  .text-\[10px\] {
2335
2111
  font-size: 10px;
2336
2112
  }
2337
- .leading-4 {
2338
- --tw-leading: calc(var(--spacing) * 4);
2339
- line-height: calc(var(--spacing) * 4);
2340
- }
2341
2113
  .leading-5 {
2342
2114
  --tw-leading: calc(var(--spacing) * 5);
2343
2115
  line-height: calc(var(--spacing) * 5);
@@ -2350,10 +2122,6 @@
2350
2122
  --tw-leading: 1;
2351
2123
  line-height: 1;
2352
2124
  }
2353
- .leading-snug {
2354
- --tw-leading: var(--leading-snug);
2355
- line-height: var(--leading-snug);
2356
- }
2357
2125
  .leading-tight {
2358
2126
  --tw-leading: var(--leading-tight);
2359
2127
  line-height: var(--leading-tight);
@@ -2414,9 +2182,6 @@
2414
2182
  .text-amber-700 {
2415
2183
  color: var(--color-amber-700);
2416
2184
  }
2417
- .text-black {
2418
- color: var(--color-black);
2419
- }
2420
2185
  .text-blue-500 {
2421
2186
  color: var(--color-blue-500);
2422
2187
  }
@@ -2582,12 +2347,6 @@
2582
2347
  .text-violet-700 {
2583
2348
  color: var(--color-violet-700);
2584
2349
  }
2585
- .text-warning {
2586
- color: var(--color-warning);
2587
- }
2588
- .text-warning-content {
2589
- color: var(--color-warning-content);
2590
- }
2591
2350
  .text-white {
2592
2351
  color: var(--color-white);
2593
2352
  }
@@ -2621,9 +2380,6 @@
2621
2380
  .underline {
2622
2381
  text-decoration-line: underline;
2623
2382
  }
2624
- .underline-offset-2 {
2625
- text-underline-offset: 2px;
2626
- }
2627
2383
  .scheme-dark {
2628
2384
  color-scheme: dark;
2629
2385
  }
@@ -2636,9 +2392,6 @@
2636
2392
  .opacity-10 {
2637
2393
  opacity: 10%;
2638
2394
  }
2639
- .opacity-40 {
2640
- opacity: 40%;
2641
- }
2642
2395
  .opacity-50 {
2643
2396
  opacity: 50%;
2644
2397
  }
@@ -2670,9 +2423,6 @@
2670
2423
  .outline-blue-500 {
2671
2424
  outline-color: var(--color-blue-500);
2672
2425
  }
2673
- .outline-gray-600 {
2674
- outline-color: var(--color-gray-600);
2675
- }
2676
2426
  .invert {
2677
2427
  --tw-invert: invert(100%);
2678
2428
  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,);
@@ -2689,11 +2439,6 @@
2689
2439
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2690
2440
  transition-duration: var(--tw-duration, var(--default-transition-duration));
2691
2441
  }
2692
- .transition-colors {
2693
- transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
2694
- transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
2695
- transition-duration: var(--tw-duration, var(--default-transition-duration));
2696
- }
2697
2442
  .transition-opacity {
2698
2443
  transition-property: opacity;
2699
2444
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -2908,11 +2653,6 @@
2908
2653
  }
2909
2654
  }
2910
2655
  }
2911
- .last\:mb-0 {
2912
- &:last-child {
2913
- margin-bottom: calc(var(--spacing) * 0);
2914
- }
2915
- }
2916
2656
  .empty\:m-0 {
2917
2657
  &:empty {
2918
2658
  margin: calc(var(--spacing) * 0);
@@ -3043,24 +2783,11 @@
3043
2783
  border-color: var(--color-teal-600);
3044
2784
  }
3045
2785
  }
3046
- .hover\:border-tertiary {
3047
- &:hover {
3048
- border-color: var(--color-tertiary);
3049
- }
3050
- }
3051
2786
  .hover\:border-violet-600 {
3052
2787
  &:hover {
3053
2788
  border-color: var(--color-violet-600);
3054
2789
  }
3055
2790
  }
3056
- .hover\:border-warning\/40 {
3057
- &:hover {
3058
- border-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 40%, transparent);
3059
- @supports (color: color-mix(in lab, red, red)) {
3060
- border-color: color-mix(in oklab, var(--color-warning) 40%, transparent);
3061
- }
3062
- }
3063
- }
3064
2791
  .hover\:border-yellow-600 {
3065
2792
  &:hover {
3066
2793
  border-color: var(--color-yellow-600);
@@ -3199,11 +2926,6 @@
3199
2926
  background-color: var(--color-pink-600);
3200
2927
  }
3201
2928
  }
3202
- .hover\:bg-primary {
3203
- &:hover {
3204
- background-color: var(--color-primary);
3205
- }
3206
- }
3207
2929
  .hover\:bg-primary-100 {
3208
2930
  &:hover {
3209
2931
  background-color: var(--color-primary-100);
@@ -3304,14 +3026,6 @@
3304
3026
  background-color: var(--color-violet-600);
3305
3027
  }
3306
3028
  }
3307
- .hover\:bg-warning\/20 {
3308
- &:hover {
3309
- background-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 20%, transparent);
3310
- @supports (color: color-mix(in lab, red, red)) {
3311
- background-color: color-mix(in oklab, var(--color-warning) 20%, transparent);
3312
- }
3313
- }
3314
- }
3315
3029
  .hover\:bg-yellow-100 {
3316
3030
  &:hover {
3317
3031
  background-color: var(--color-yellow-100);
@@ -3337,11 +3051,6 @@
3337
3051
  color: var(--color-content);
3338
3052
  }
3339
3053
  }
3340
- .hover\:text-danger-content {
3341
- &:hover {
3342
- color: var(--color-danger-content);
3343
- }
3344
- }
3345
3054
  .hover\:text-gray-600 {
3346
3055
  &:hover {
3347
3056
  color: var(--color-gray-600);
@@ -3368,14 +3077,6 @@
3368
3077
  z-index: 10;
3369
3078
  }
3370
3079
  }
3371
- .focus\:border-warning\/50 {
3372
- &:focus {
3373
- border-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 50%, transparent);
3374
- @supports (color: color-mix(in lab, red, red)) {
3375
- border-color: color-mix(in oklab, var(--color-warning) 50%, transparent);
3376
- }
3377
- }
3378
- }
3379
3080
  .focus\:text-gray-300 {
3380
3081
  &:focus {
3381
3082
  color: var(--color-gray-300);
@@ -3400,14 +3101,6 @@
3400
3101
  --tw-ring-color: var(--color-tertiary);
3401
3102
  }
3402
3103
  }
3403
- .focus\:ring-warning\/50 {
3404
- &:focus {
3405
- --tw-ring-color: color-mix(in srgb, oklch(79.5% 0.184 86.047) 50%, transparent);
3406
- @supports (color: color-mix(in lab, red, red)) {
3407
- --tw-ring-color: color-mix(in oklab, var(--color-warning) 50%, transparent);
3408
- }
3409
- }
3410
- }
3411
3104
  .focus\:outline-hidden {
3412
3105
  &:focus {
3413
3106
  --tw-outline-style: none;
@@ -3418,12 +3111,6 @@
3418
3111
  }
3419
3112
  }
3420
3113
  }
3421
- .focus\:outline-none {
3422
- &:focus {
3423
- --tw-outline-style: none;
3424
- outline-style: none;
3425
- }
3426
- }
3427
3114
  .active\:translate-x-px {
3428
3115
  &:active {
3429
3116
  --tw-translate-x: 1px;
@@ -3436,11 +3123,6 @@
3436
3123
  translate: var(--tw-translate-x) var(--tw-translate-y);
3437
3124
  }
3438
3125
  }
3439
- .active\:cursor-grabbing {
3440
- &:active {
3441
- cursor: grabbing;
3442
- }
3443
- }
3444
3126
  .active\:border-amber-500 {
3445
3127
  &:active {
3446
3128
  border-color: var(--color-amber-500);
@@ -3791,11 +3473,6 @@
3791
3473
  background-color: var(--color-pink-600);
3792
3474
  }
3793
3475
  }
3794
- .active\:bg-primary {
3795
- &:active {
3796
- background-color: var(--color-primary);
3797
- }
3798
- }
3799
3476
  .active\:bg-primary-100 {
3800
3477
  &:active {
3801
3478
  background-color: var(--color-primary-100);
@@ -4202,36 +3879,6 @@
4202
3879
  inset-inline-end: calc(var(--spacing) * 0);
4203
3880
  }
4204
3881
  }
4205
- .sm\:col-span-1 {
4206
- @media (width >= 40rem) {
4207
- grid-column: span 1 / span 1;
4208
- }
4209
- }
4210
- .sm\:col-span-2 {
4211
- @media (width >= 40rem) {
4212
- grid-column: span 2 / span 2;
4213
- }
4214
- }
4215
- .sm\:col-span-3 {
4216
- @media (width >= 40rem) {
4217
- grid-column: span 3 / span 3;
4218
- }
4219
- }
4220
- .sm\:col-span-4 {
4221
- @media (width >= 40rem) {
4222
- grid-column: span 4 / span 4;
4223
- }
4224
- }
4225
- .sm\:col-span-5 {
4226
- @media (width >= 40rem) {
4227
- grid-column: span 5 / span 5;
4228
- }
4229
- }
4230
- .sm\:col-span-6 {
4231
- @media (width >= 40rem) {
4232
- grid-column: span 6 / span 6;
4233
- }
4234
- }
4235
3882
  .sm\:block {
4236
3883
  @media (width >= 40rem) {
4237
3884
  display: block;
@@ -4262,11 +3909,6 @@
4262
3909
  width: auto;
4263
3910
  }
4264
3911
  }
4265
- .sm\:min-w-\[16rem\] {
4266
- @media (width >= 40rem) {
4267
- min-width: 16rem;
4268
- }
4269
- }
4270
3912
  .sm\:grid-flow-col {
4271
3913
  @media (width >= 40rem) {
4272
3914
  grid-auto-flow: column;
@@ -4282,21 +3924,6 @@
4282
3924
  grid-template-columns: repeat(3, minmax(0, 1fr));
4283
3925
  }
4284
3926
  }
4285
- .sm\:grid-cols-4 {
4286
- @media (width >= 40rem) {
4287
- grid-template-columns: repeat(4, minmax(0, 1fr));
4288
- }
4289
- }
4290
- .sm\:grid-cols-5 {
4291
- @media (width >= 40rem) {
4292
- grid-template-columns: repeat(5, minmax(0, 1fr));
4293
- }
4294
- }
4295
- .sm\:grid-cols-6 {
4296
- @media (width >= 40rem) {
4297
- grid-template-columns: repeat(6, minmax(0, 1fr));
4298
- }
4299
- }
4300
3927
  .sm\:flex-row {
4301
3928
  @media (width >= 40rem) {
4302
3929
  flex-direction: row;
@@ -4553,34 +4180,6 @@
4553
4180
  margin-inline-start: calc(var(--spacing) * 0);
4554
4181
  }
4555
4182
  }
4556
- .kanban-dragging\:flex-1 {
4557
- &:where(.kanban-dragging *) {
4558
- flex: 1;
4559
- }
4560
- }
4561
- .empty\:kanban-dragging\:mx-1 {
4562
- &:empty {
4563
- &:where(.kanban-dragging *) {
4564
- margin-inline: calc(var(--spacing) * 1);
4565
- }
4566
- }
4567
- }
4568
- .empty\:kanban-dragging\:outline-2 {
4569
- &:empty {
4570
- &:where(.kanban-dragging *) {
4571
- outline-style: var(--tw-outline-style);
4572
- outline-width: 2px;
4573
- }
4574
- }
4575
- }
4576
- .empty\:kanban-dragging\:outline-dashed {
4577
- &:empty {
4578
- &:where(.kanban-dragging *) {
4579
- --tw-outline-style: dashed;
4580
- outline-style: dashed;
4581
- }
4582
- }
4583
- }
4584
4183
  .index-missing-resources\:hidden {
4585
4184
  &:where(.index-missing-resources *) {
4586
4185
  display: none;
@@ -14139,21 +13738,6 @@
14139
13738
  inherits: false;
14140
13739
  initial-value: 0;
14141
13740
  }
14142
- @property --tw-scale-x {
14143
- syntax: "*";
14144
- inherits: false;
14145
- initial-value: 1;
14146
- }
14147
- @property --tw-scale-y {
14148
- syntax: "*";
14149
- inherits: false;
14150
- initial-value: 1;
14151
- }
14152
- @property --tw-scale-z {
14153
- syntax: "*";
14154
- inherits: false;
14155
- initial-value: 1;
14156
- }
14157
13741
  @property --tw-rotate-x {
14158
13742
  syntax: "*";
14159
13743
  inherits: false;
@@ -14437,6 +14021,21 @@
14437
14021
  syntax: "*";
14438
14022
  inherits: false;
14439
14023
  }
14024
+ @property --tw-scale-x {
14025
+ syntax: "*";
14026
+ inherits: false;
14027
+ initial-value: 1;
14028
+ }
14029
+ @property --tw-scale-y {
14030
+ syntax: "*";
14031
+ inherits: false;
14032
+ initial-value: 1;
14033
+ }
14034
+ @property --tw-scale-z {
14035
+ syntax: "*";
14036
+ inherits: false;
14037
+ initial-value: 1;
14038
+ }
14440
14039
  @keyframes spin {
14441
14040
  to {
14442
14041
  transform: rotate(360deg);
@@ -14455,9 +14054,6 @@
14455
14054
  --tw-translate-x: 0;
14456
14055
  --tw-translate-y: 0;
14457
14056
  --tw-translate-z: 0;
14458
- --tw-scale-x: 1;
14459
- --tw-scale-y: 1;
14460
- --tw-scale-z: 1;
14461
14057
  --tw-rotate-x: initial;
14462
14058
  --tw-rotate-y: initial;
14463
14059
  --tw-rotate-z: initial;
@@ -14523,6 +14119,9 @@
14523
14119
  --tw-pan-x: initial;
14524
14120
  --tw-pan-y: initial;
14525
14121
  --tw-pinch-zoom: initial;
14122
+ --tw-scale-x: 1;
14123
+ --tw-scale-y: 1;
14124
+ --tw-scale-z: 1;
14526
14125
  }
14527
14126
  }
14528
14127
  }
@@ -1,16 +1,6 @@
1
1
  /* @layer base, components, utilities; */
2
2
  @import "tailwindcss";
3
3
 
4
- /* TODO: Figure out a way to add those dynamically */
5
- @source "../../../tmp/avo/packages/avo-advanced";
6
- @source "../../../tmp/avo/packages/avo-dashboards";
7
- @source "../../../tmp/avo/packages/avo-dynamic_filters";
8
- @source "../../../tmp/avo/packages/avo-kanban";
9
- @source "../../../tmp/avo/packages/avo-menu";
10
- @source "../../../tmp/avo/packages/avo-pro";
11
- @source "../../../tmp/avo/packages/avo-forms";
12
-
13
- /* @config "../../../tailwind.config.js"; */
14
4
 
15
5
  /* We couldn't find a way to implement blocklist in the CSS config */
16
6
  /* blocklist: ['bg-[#{chart_color(index)}]', 'bg-[${color}]'] */
@@ -296,8 +296,11 @@ module Avo
296
296
  end
297
297
 
298
298
  def set_stylesheet_assets_path
299
- @stylesheet_assets_path = "avo/application"
300
- @custom_stylesheet_path = "avo.tailwind" if Avo::TailwindBuilder.custom_build_exists?
299
+ @stylesheet_assets_path = if Avo::TailwindBuilder.custom_build_exists?
300
+ "avo.tailwind"
301
+ else
302
+ "avo/application"
303
+ end
301
304
  end
302
305
 
303
306
  def choose_layout
@@ -18,9 +18,6 @@
18
18
  <%= render partial: "avo/partials/pre_head" %>
19
19
  <%= render Avo::AssetManager::StylesheetComponent.new asset_manager: Avo.asset_manager %>
20
20
  <%= stylesheet_link_tag @stylesheet_assets_path, "data-turbo-track": "reload", as: "style" %>
21
- <% if @custom_stylesheet_path %>
22
- <%= stylesheet_link_tag @custom_stylesheet_path, "data-turbo-track": "reload", as: "style" %>
23
- <% end %>
24
21
 
25
22
  <%= javascript_include_tag "avo/application", "data-turbo-track": "reload", defer: true %>
26
23
 
data/lib/avo/engine.rb CHANGED
@@ -55,10 +55,6 @@ module Avo
55
55
  rescue StandardError => e
56
56
  Rails.logger.warn "Avo: Failed to auto-build Tailwind CSS: #{e.message}"
57
57
  end
58
-
59
- unless Avo::TailwindBuilder.procfile_has_avo_tailwind_watcher?
60
- Rails.logger.info "Avo: For live Tailwind CSS reload in development, add to Procfile.dev: avo_css: bin/rails avo:tailwindcss:watch"
61
- end
62
58
  end
63
59
  end
64
60
 
@@ -1,4 +1,5 @@
1
1
  require "fileutils"
2
+ require "pathname"
2
3
 
3
4
  module Avo
4
5
  class TailwindBuilder
@@ -23,16 +24,11 @@ module Avo
23
24
  Rails.root.join("app", "assets", "builds", "avo.tailwind.css").exist?
24
25
  end
25
26
 
26
- def self.procfile_has_avo_tailwind_watcher?
27
- path = Rails.root.join("Procfile.dev")
28
- return false unless path.exist?
29
-
30
- File.read(path).include?("avo:tailwindcss")
31
- end
32
-
33
27
  def build
34
28
  return true unless self.class.tailwindcss_available?
35
29
 
30
+ ensure_node_modules
31
+ run_engine_css_prebuilds
36
32
  generate_input_file
37
33
  success = run_tailwindcss("--minify")
38
34
  log_build_failure unless success
@@ -40,33 +36,44 @@ module Avo
40
36
  end
41
37
 
42
38
  def watch
43
- return unless self.class.tailwindcss_available?
39
+ return true unless self.class.tailwindcss_available?
44
40
 
41
+ ensure_node_modules
42
+ run_engine_css_prebuilds
45
43
  generate_input_file
46
- signature = host_avo_stylesheets_signature
44
+ run_tailwindcss("--watch")
45
+ end
47
46
 
48
- pid = spawn_tailwindcss("--minify", "--watch")
47
+ private
48
+
49
+ def run_engine_css_prebuilds
50
+ roots = [Avo::Engine.root] + Avo.plugin_manager.engines.map { |e| e[:klass]&.root }.compact
49
51
 
50
- begin
51
- loop do
52
- _, status = Process.waitpid2(pid, Process::WNOHANG)
53
- break if status
52
+ roots.uniq.each do |root|
53
+ next unless root.directory?
54
54
 
55
- new_signature = host_avo_stylesheets_signature
56
- if new_signature != signature
57
- signature = new_signature
58
- generate_input_file
59
- end
55
+ prebuild = root.join("bin", "prebuild_css")
56
+ next unless prebuild.exist?
60
57
 
61
- sleep 1
58
+ Dir.chdir(root) do
59
+ Kernel.system("ruby", prebuild.to_s)
62
60
  end
63
- rescue Interrupt
64
- Process.kill("TERM", pid)
65
- raise
66
61
  end
67
62
  end
68
63
 
69
- private
64
+ def ensure_node_modules
65
+ engine_root = Avo::Engine.root
66
+ package_json = engine_root.join("package.json")
67
+ node_modules = engine_root.join("node_modules")
68
+
69
+ return unless package_json.exist?
70
+ return if node_modules.directory?
71
+
72
+ # Avo's stylesheet imports include CSS from npm packages. When running from source (or in some
73
+ # packaging setups), `node_modules/` may not exist yet, so Tailwind's CSS resolver fails.
74
+ success = Dir.chdir(engine_root) { Kernel.system("yarn", "install", "--frozen-lockfile") }
75
+ warn "[Avo] `yarn install` failed; Tailwind build may fail." unless success
76
+ end
70
77
 
71
78
  def tmp_input_dir
72
79
  Rails.root.join("tmp", "avo")
@@ -84,9 +91,12 @@ module Avo
84
91
  FileUtils.mkdir_p(tmp_input_dir)
85
92
 
86
93
  lines = []
87
- # Input lives under tmp/avo/; without `source("../../")` Tailwind v4 only scans near this file, so
94
+ # Input lives under tmp/avo/; without `@source "../../"` Tailwind v4 only scans near this file, so
88
95
  # classes in app/views/**/*.erb (and the rest of the app) are never detected.
89
- lines << %(@import "tailwindcss" source("../../");)
96
+ lines << %(@import "tailwindcss";)
97
+ lines << %(@source "../../";)
98
+
99
+ append_plugin_engine_tailwind_sources(lines)
90
100
  collect_host_avo_stylesheets.each do |path|
91
101
  lines << %(@import "#{path}";)
92
102
  end
@@ -94,6 +104,41 @@ module Avo
94
104
  File.write(input_path, lines.join("\n") + "\n")
95
105
  end
96
106
 
107
+ def append_plugin_engine_tailwind_sources(lines)
108
+ # Include Avo itself (the core engine) in Tailwind's scan paths.
109
+ lines << %(@source "#{relative_to_tmp(Avo::Engine.root)}";)
110
+ append_engine_stylesheets(lines, Avo::Engine.root)
111
+
112
+ Avo.plugin_manager.engines.each do |entry|
113
+ root = entry[:klass].root
114
+ next unless root&.directory?
115
+
116
+ lines << %(@source "#{relative_to_tmp(root)}";)
117
+ append_engine_stylesheets(lines, root)
118
+ end
119
+ end
120
+
121
+ def append_engine_stylesheets(lines, engine_root)
122
+ stylesheets_root = engine_root.join("app", "assets", "stylesheets")
123
+ return unless stylesheets_root.directory?
124
+
125
+ # Some engines ship `app/assets/stylesheets/application.css` directly (no namespace folder).
126
+ root_application = stylesheets_root.join("application.css")
127
+ lines << %(@import "#{relative_to_tmp(root_application)}";) if root_application.exist?
128
+
129
+ # Most engines namespace their assets under `app/assets/stylesheets/<namespace>/application.css`.
130
+ Dir.children(stylesheets_root).sort.each do |entry|
131
+ next if entry.start_with?(".")
132
+
133
+ namespaced_application = stylesheets_root.join(entry, "application.css")
134
+ lines << %(@import "#{relative_to_tmp(namespaced_application)}";) if namespaced_application.exist?
135
+ end
136
+ end
137
+
138
+ def relative_to_tmp(absolute)
139
+ Pathname.new(absolute).expand_path.relative_path_from(tmp_input_dir.expand_path).to_s.tr("\\", "/")
140
+ end
141
+
97
142
  def collect_host_avo_stylesheets
98
143
  base = Rails.root.join("app", "assets", "stylesheets", "avo")
99
144
  return [] unless Dir.exist?(base)
@@ -102,11 +147,7 @@ module Avo
102
147
  .glob(base.join("**", "*.css"))
103
148
  .select { |path| File.file?(path) }
104
149
  .sort
105
- .map { |path| Pathname.new(path).relative_path_from(tmp_input_dir).to_s.tr("\\", "/") }
106
- end
107
-
108
- def host_avo_stylesheets_signature
109
- collect_host_avo_stylesheets.join("\n")
150
+ .map { |path| relative_to_tmp(path) }
110
151
  end
111
152
 
112
153
  def run_tailwindcss(*args)
@@ -124,20 +165,6 @@ module Avo
124
165
  end
125
166
  end
126
167
 
127
- def spawn_tailwindcss(*args)
128
- require "tailwindcss/ruby"
129
-
130
- FileUtils.mkdir_p(output_path.dirname)
131
-
132
- Process.spawn(
133
- Tailwindcss::Ruby.executable,
134
- "-i", input_path.to_s,
135
- "-o", output_path.to_s,
136
- *args,
137
- chdir: Rails.root.to_s
138
- )
139
- end
140
-
141
168
  def log_build_failure
142
169
  message = "[Avo] avo:tailwindcss build failed."
143
170
  Rails.logger.warn(message) if defined?(Rails) && Rails.logger
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "4.0.0.beta.9" unless const_defined?(:VERSION)
2
+ VERSION = "4.0.0.beta.11" unless const_defined?(:VERSION)
3
3
  end
@@ -32,9 +32,6 @@ task "avo:build-assets" do
32
32
  puts "Running `yarn install`"
33
33
  system "yarn"
34
34
 
35
- puts "Running `bundle exec rails avo:sym_link`"
36
- system "bundle exec rails avo:sym_link"
37
-
38
35
  puts "Running `yarn build`"
39
36
  system "yarn build"
40
37
  end
@@ -79,47 +76,6 @@ task "avo:gem_paths" do
79
76
  puts result
80
77
  end
81
78
 
82
- desc "Symlinks all Avo gems to tmp/avo/packages"
83
- task "avo:sym_link" do
84
- puts "Running avo:sym_link"
85
- base_path = Rails.root.join("tmp", "avo", "build-assets").to_s.gsub("/spec/dummy", "")
86
-
87
- remove_directory_if_exists base_path
88
-
89
- packages_path = "#{base_path}/packages"
90
-
91
- if Dir.exist?(packages_path)
92
- `rm -rf #{packages_path}/*`
93
- else
94
- `mkdir -p #{packages_path}`
95
- `touch #{packages_path}/.keep`
96
- end
97
-
98
- gem_paths = `bundle list --paths 2>/dev/null`.split("\n")
99
- ["avo-advanced", "avo-pro", "avo-dynamic_filters", "avo-dashboards", "avo-menu", "avo-kanban", "avo-forms"].each do |gem|
100
- path = gem_paths.find { |gem_path| gem_path.include?("/#{gem}-") }
101
-
102
- # If path is nil we check if package is defined outside of root (on release process it is)
103
- if path.nil?
104
- next if !Dir.exist?("../#{gem}")
105
-
106
- path = File.expand_path("../#{gem}")
107
- end
108
-
109
- puts "[Avo->] Linking #{gem} to #{path}"
110
- symlink_path path, "#{packages_path}/#{gem}"
111
- end
112
-
113
- application_css_path = Avo::Engine.root.join("app", "assets", "stylesheets", "application.css")
114
- raise "[Avo->] Failed to find #{application_css_path}." unless File.exist?(application_css_path.to_s)
115
-
116
- dest_css_path = "#{base_path}/application.css"
117
- remove_file_if_exists dest_css_path
118
-
119
- puts "[Avo->] Linking application.css to #{application_css_path}"
120
- symlink_path application_css_path, dest_css_path
121
- end
122
-
123
79
  def remove_file_if_exists(path)
124
80
  `rm #{path}` if File.exist?(path) || File.symlink?(path)
125
81
  end
@@ -142,10 +98,10 @@ task "avo:yarn_install" do
142
98
  `yarn add tailwindcss@^4.0.0 @tailwindcss/typography@^0.5.16 @tailwindcss/container-queries@^0.1.1 --cwd #{Avo::Engine.root}`
143
99
  end
144
100
 
145
- desc "Build Avo custom Tailwind CSS"
101
+ desc "Build Avo custom Tailwind CSS (requires tailwindcss-ruby gem; outputs app/assets/builds/avo.tailwind.css)"
146
102
  task "avo:tailwindcss:build" => :environment do
147
103
  unless Avo::TailwindBuilder.tailwindcss_available?
148
- puts "[Avo->] tailwindcss-rails not found; skipping avo:tailwindcss:build"
104
+ puts "[Avo->] tailwindcss-ruby not found; skipping avo:tailwindcss:build"
149
105
  next
150
106
  end
151
107
 
@@ -155,12 +111,15 @@ task "avo:tailwindcss:build" => :environment do
155
111
  end
156
112
  end
157
113
 
158
- desc "Watch and rebuild Avo custom Tailwind CSS on changes"
114
+ desc "Watch Avo custom Tailwind CSS (requires tailwindcss-ruby gem; outputs app/assets/builds/avo.tailwind.css)"
159
115
  task "avo:tailwindcss:watch" => :environment do
160
116
  unless Avo::TailwindBuilder.tailwindcss_available?
161
- abort "[Avo->] tailwindcss-rails not found; add tailwindcss-rails to your Gemfile to use avo:tailwindcss:watch"
117
+ puts "[Avo->] tailwindcss-ruby not found; skipping avo:tailwindcss:watch"
118
+ next
162
119
  end
163
120
 
164
- puts "[Avo->] Watching Avo Tailwind CSS extension..."
165
- Avo::TailwindBuilder.watch
121
+ puts "[Avo->] Watching Avo Tailwind CSS extension (avo.tailwind)..."
122
+ unless Avo::TailwindBuilder.watch
123
+ abort "[Avo->] avo:tailwindcss:watch failed"
124
+ end
166
125
  end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.beta.9
4
+ version: 4.0.0.beta.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
8
8
  - Mihai Marin
9
9
  - Paul Bob
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 1980-01-02 00:00:00.000000000 Z
13
+ date: 2026-04-07 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: activerecord
@@ -1158,7 +1159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1158
1159
  - !ruby/object:Gem::Version
1159
1160
  version: '0'
1160
1161
  requirements: []
1161
- rubygems_version: 3.6.9
1162
+ rubygems_version: 3.5.22
1163
+ signing_key:
1162
1164
  specification_version: 4
1163
1165
  summary: Admin panel framework and Content Management System for Ruby on Rails.
1164
1166
  test_files: []