datacontract-cli 0.10.23__py3-none-any.whl → 0.10.40__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 (84) hide show
  1. datacontract/__init__.py +13 -0
  2. datacontract/api.py +12 -5
  3. datacontract/catalog/catalog.py +5 -3
  4. datacontract/cli.py +119 -13
  5. datacontract/data_contract.py +145 -67
  6. datacontract/engines/data_contract_checks.py +366 -60
  7. datacontract/engines/data_contract_test.py +50 -4
  8. datacontract/engines/fastjsonschema/check_jsonschema.py +37 -19
  9. datacontract/engines/fastjsonschema/s3/s3_read_files.py +3 -2
  10. datacontract/engines/soda/check_soda_execute.py +27 -3
  11. datacontract/engines/soda/connections/athena.py +79 -0
  12. datacontract/engines/soda/connections/duckdb_connection.py +65 -6
  13. datacontract/engines/soda/connections/kafka.py +4 -2
  14. datacontract/engines/soda/connections/oracle.py +50 -0
  15. datacontract/export/avro_converter.py +20 -3
  16. datacontract/export/bigquery_converter.py +1 -1
  17. datacontract/export/dbt_converter.py +36 -7
  18. datacontract/export/dqx_converter.py +126 -0
  19. datacontract/export/duckdb_type_converter.py +57 -0
  20. datacontract/export/excel_exporter.py +923 -0
  21. datacontract/export/exporter.py +3 -0
  22. datacontract/export/exporter_factory.py +17 -1
  23. datacontract/export/great_expectations_converter.py +55 -5
  24. datacontract/export/{html_export.py → html_exporter.py} +31 -20
  25. datacontract/export/markdown_converter.py +134 -5
  26. datacontract/export/mermaid_exporter.py +110 -0
  27. datacontract/export/odcs_v3_exporter.py +193 -149
  28. datacontract/export/protobuf_converter.py +163 -69
  29. datacontract/export/rdf_converter.py +2 -2
  30. datacontract/export/sodacl_converter.py +9 -1
  31. datacontract/export/spark_converter.py +31 -4
  32. datacontract/export/sql_converter.py +6 -2
  33. datacontract/export/sql_type_converter.py +124 -8
  34. datacontract/imports/avro_importer.py +63 -12
  35. datacontract/imports/csv_importer.py +111 -57
  36. datacontract/imports/excel_importer.py +1112 -0
  37. datacontract/imports/importer.py +16 -3
  38. datacontract/imports/importer_factory.py +17 -0
  39. datacontract/imports/json_importer.py +325 -0
  40. datacontract/imports/odcs_importer.py +2 -2
  41. datacontract/imports/odcs_v3_importer.py +367 -151
  42. datacontract/imports/protobuf_importer.py +264 -0
  43. datacontract/imports/spark_importer.py +117 -13
  44. datacontract/imports/sql_importer.py +32 -16
  45. datacontract/imports/unity_importer.py +84 -38
  46. datacontract/init/init_template.py +1 -1
  47. datacontract/integration/entropy_data.py +126 -0
  48. datacontract/lint/resolve.py +112 -23
  49. datacontract/lint/schema.py +24 -15
  50. datacontract/lint/urls.py +17 -3
  51. datacontract/model/data_contract_specification/__init__.py +1 -0
  52. datacontract/model/odcs.py +13 -0
  53. datacontract/model/run.py +3 -0
  54. datacontract/output/junit_test_results.py +3 -3
  55. datacontract/schemas/datacontract-1.1.0.init.yaml +1 -1
  56. datacontract/schemas/datacontract-1.2.0.init.yaml +91 -0
  57. datacontract/schemas/datacontract-1.2.0.schema.json +2029 -0
  58. datacontract/schemas/datacontract-1.2.1.init.yaml +91 -0
  59. datacontract/schemas/datacontract-1.2.1.schema.json +2058 -0
  60. datacontract/schemas/odcs-3.0.2.schema.json +2382 -0
  61. datacontract/schemas/odcs-3.1.0.schema.json +2809 -0
  62. datacontract/templates/datacontract.html +54 -3
  63. datacontract/templates/datacontract_odcs.html +685 -0
  64. datacontract/templates/index.html +5 -2
  65. datacontract/templates/partials/server.html +2 -0
  66. datacontract/templates/style/output.css +319 -145
  67. {datacontract_cli-0.10.23.dist-info → datacontract_cli-0.10.40.dist-info}/METADATA +711 -433
  68. datacontract_cli-0.10.40.dist-info/RECORD +121 -0
  69. {datacontract_cli-0.10.23.dist-info → datacontract_cli-0.10.40.dist-info}/WHEEL +1 -1
  70. {datacontract_cli-0.10.23.dist-info → datacontract_cli-0.10.40.dist-info/licenses}/LICENSE +1 -1
  71. datacontract/export/csv_type_converter.py +0 -36
  72. datacontract/integration/datamesh_manager.py +0 -72
  73. datacontract/lint/lint.py +0 -142
  74. datacontract/lint/linters/description_linter.py +0 -35
  75. datacontract/lint/linters/field_pattern_linter.py +0 -34
  76. datacontract/lint/linters/field_reference_linter.py +0 -48
  77. datacontract/lint/linters/notice_period_linter.py +0 -55
  78. datacontract/lint/linters/quality_schema_linter.py +0 -52
  79. datacontract/lint/linters/valid_constraints_linter.py +0 -100
  80. datacontract/model/data_contract_specification.py +0 -327
  81. datacontract_cli-0.10.23.dist-info/RECORD +0 -113
  82. /datacontract/{lint/linters → output}/__init__.py +0 -0
  83. {datacontract_cli-0.10.23.dist-info → datacontract_cli-0.10.40.dist-info}/entry_points.txt +0 -0
  84. {datacontract_cli-0.10.23.dist-info → datacontract_cli-0.10.40.dist-info}/top_level.txt +0 -0
@@ -1,113 +1,5 @@
1
- *, ::before, ::after {
2
- --tw-border-spacing-x: 0;
3
- --tw-border-spacing-y: 0;
4
- --tw-translate-x: 0;
5
- --tw-translate-y: 0;
6
- --tw-rotate: 0;
7
- --tw-skew-x: 0;
8
- --tw-skew-y: 0;
9
- --tw-scale-x: 1;
10
- --tw-scale-y: 1;
11
- --tw-pan-x: ;
12
- --tw-pan-y: ;
13
- --tw-pinch-zoom: ;
14
- --tw-scroll-snap-strictness: proximity;
15
- --tw-gradient-from-position: ;
16
- --tw-gradient-via-position: ;
17
- --tw-gradient-to-position: ;
18
- --tw-ordinal: ;
19
- --tw-slashed-zero: ;
20
- --tw-numeric-figure: ;
21
- --tw-numeric-spacing: ;
22
- --tw-numeric-fraction: ;
23
- --tw-ring-inset: ;
24
- --tw-ring-offset-width: 0px;
25
- --tw-ring-offset-color: #fff;
26
- --tw-ring-color: rgb(59 130 246 / 0.5);
27
- --tw-ring-offset-shadow: 0 0 #0000;
28
- --tw-ring-shadow: 0 0 #0000;
29
- --tw-shadow: 0 0 #0000;
30
- --tw-shadow-colored: 0 0 #0000;
31
- --tw-blur: ;
32
- --tw-brightness: ;
33
- --tw-contrast: ;
34
- --tw-grayscale: ;
35
- --tw-hue-rotate: ;
36
- --tw-invert: ;
37
- --tw-saturate: ;
38
- --tw-sepia: ;
39
- --tw-drop-shadow: ;
40
- --tw-backdrop-blur: ;
41
- --tw-backdrop-brightness: ;
42
- --tw-backdrop-contrast: ;
43
- --tw-backdrop-grayscale: ;
44
- --tw-backdrop-hue-rotate: ;
45
- --tw-backdrop-invert: ;
46
- --tw-backdrop-opacity: ;
47
- --tw-backdrop-saturate: ;
48
- --tw-backdrop-sepia: ;
49
- --tw-contain-size: ;
50
- --tw-contain-layout: ;
51
- --tw-contain-paint: ;
52
- --tw-contain-style: ;
53
- }
54
-
55
- ::backdrop {
56
- --tw-border-spacing-x: 0;
57
- --tw-border-spacing-y: 0;
58
- --tw-translate-x: 0;
59
- --tw-translate-y: 0;
60
- --tw-rotate: 0;
61
- --tw-skew-x: 0;
62
- --tw-skew-y: 0;
63
- --tw-scale-x: 1;
64
- --tw-scale-y: 1;
65
- --tw-pan-x: ;
66
- --tw-pan-y: ;
67
- --tw-pinch-zoom: ;
68
- --tw-scroll-snap-strictness: proximity;
69
- --tw-gradient-from-position: ;
70
- --tw-gradient-via-position: ;
71
- --tw-gradient-to-position: ;
72
- --tw-ordinal: ;
73
- --tw-slashed-zero: ;
74
- --tw-numeric-figure: ;
75
- --tw-numeric-spacing: ;
76
- --tw-numeric-fraction: ;
77
- --tw-ring-inset: ;
78
- --tw-ring-offset-width: 0px;
79
- --tw-ring-offset-color: #fff;
80
- --tw-ring-color: rgb(59 130 246 / 0.5);
81
- --tw-ring-offset-shadow: 0 0 #0000;
82
- --tw-ring-shadow: 0 0 #0000;
83
- --tw-shadow: 0 0 #0000;
84
- --tw-shadow-colored: 0 0 #0000;
85
- --tw-blur: ;
86
- --tw-brightness: ;
87
- --tw-contrast: ;
88
- --tw-grayscale: ;
89
- --tw-hue-rotate: ;
90
- --tw-invert: ;
91
- --tw-saturate: ;
92
- --tw-sepia: ;
93
- --tw-drop-shadow: ;
94
- --tw-backdrop-blur: ;
95
- --tw-backdrop-brightness: ;
96
- --tw-backdrop-contrast: ;
97
- --tw-backdrop-grayscale: ;
98
- --tw-backdrop-hue-rotate: ;
99
- --tw-backdrop-invert: ;
100
- --tw-backdrop-opacity: ;
101
- --tw-backdrop-saturate: ;
102
- --tw-backdrop-sepia: ;
103
- --tw-contain-size: ;
104
- --tw-contain-layout: ;
105
- --tw-contain-paint: ;
106
- --tw-contain-style: ;
107
- }
108
-
109
1
  /*
110
- ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
2
+ ! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
111
3
  */
112
4
 
113
5
  /*
@@ -550,10 +442,152 @@ video {
550
442
 
551
443
  /* Make elements with the HTML hidden attribute stay hidden by default */
552
444
 
553
- [hidden]:where(:not([hidden="until-found"])) {
445
+ [hidden] {
554
446
  display: none;
555
447
  }
556
448
 
449
+ *, ::before, ::after {
450
+ --tw-border-spacing-x: 0;
451
+ --tw-border-spacing-y: 0;
452
+ --tw-translate-x: 0;
453
+ --tw-translate-y: 0;
454
+ --tw-rotate: 0;
455
+ --tw-skew-x: 0;
456
+ --tw-skew-y: 0;
457
+ --tw-scale-x: 1;
458
+ --tw-scale-y: 1;
459
+ --tw-pan-x: ;
460
+ --tw-pan-y: ;
461
+ --tw-pinch-zoom: ;
462
+ --tw-scroll-snap-strictness: proximity;
463
+ --tw-gradient-from-position: ;
464
+ --tw-gradient-via-position: ;
465
+ --tw-gradient-to-position: ;
466
+ --tw-ordinal: ;
467
+ --tw-slashed-zero: ;
468
+ --tw-numeric-figure: ;
469
+ --tw-numeric-spacing: ;
470
+ --tw-numeric-fraction: ;
471
+ --tw-ring-inset: ;
472
+ --tw-ring-offset-width: 0px;
473
+ --tw-ring-offset-color: #fff;
474
+ --tw-ring-color: rgb(59 130 246 / 0.5);
475
+ --tw-ring-offset-shadow: 0 0 #0000;
476
+ --tw-ring-shadow: 0 0 #0000;
477
+ --tw-shadow: 0 0 #0000;
478
+ --tw-shadow-colored: 0 0 #0000;
479
+ --tw-blur: ;
480
+ --tw-brightness: ;
481
+ --tw-contrast: ;
482
+ --tw-grayscale: ;
483
+ --tw-hue-rotate: ;
484
+ --tw-invert: ;
485
+ --tw-saturate: ;
486
+ --tw-sepia: ;
487
+ --tw-drop-shadow: ;
488
+ --tw-backdrop-blur: ;
489
+ --tw-backdrop-brightness: ;
490
+ --tw-backdrop-contrast: ;
491
+ --tw-backdrop-grayscale: ;
492
+ --tw-backdrop-hue-rotate: ;
493
+ --tw-backdrop-invert: ;
494
+ --tw-backdrop-opacity: ;
495
+ --tw-backdrop-saturate: ;
496
+ --tw-backdrop-sepia: ;
497
+ --tw-contain-size: ;
498
+ --tw-contain-layout: ;
499
+ --tw-contain-paint: ;
500
+ --tw-contain-style: ;
501
+ }
502
+
503
+ ::backdrop {
504
+ --tw-border-spacing-x: 0;
505
+ --tw-border-spacing-y: 0;
506
+ --tw-translate-x: 0;
507
+ --tw-translate-y: 0;
508
+ --tw-rotate: 0;
509
+ --tw-skew-x: 0;
510
+ --tw-skew-y: 0;
511
+ --tw-scale-x: 1;
512
+ --tw-scale-y: 1;
513
+ --tw-pan-x: ;
514
+ --tw-pan-y: ;
515
+ --tw-pinch-zoom: ;
516
+ --tw-scroll-snap-strictness: proximity;
517
+ --tw-gradient-from-position: ;
518
+ --tw-gradient-via-position: ;
519
+ --tw-gradient-to-position: ;
520
+ --tw-ordinal: ;
521
+ --tw-slashed-zero: ;
522
+ --tw-numeric-figure: ;
523
+ --tw-numeric-spacing: ;
524
+ --tw-numeric-fraction: ;
525
+ --tw-ring-inset: ;
526
+ --tw-ring-offset-width: 0px;
527
+ --tw-ring-offset-color: #fff;
528
+ --tw-ring-color: rgb(59 130 246 / 0.5);
529
+ --tw-ring-offset-shadow: 0 0 #0000;
530
+ --tw-ring-shadow: 0 0 #0000;
531
+ --tw-shadow: 0 0 #0000;
532
+ --tw-shadow-colored: 0 0 #0000;
533
+ --tw-blur: ;
534
+ --tw-brightness: ;
535
+ --tw-contrast: ;
536
+ --tw-grayscale: ;
537
+ --tw-hue-rotate: ;
538
+ --tw-invert: ;
539
+ --tw-saturate: ;
540
+ --tw-sepia: ;
541
+ --tw-drop-shadow: ;
542
+ --tw-backdrop-blur: ;
543
+ --tw-backdrop-brightness: ;
544
+ --tw-backdrop-contrast: ;
545
+ --tw-backdrop-grayscale: ;
546
+ --tw-backdrop-hue-rotate: ;
547
+ --tw-backdrop-invert: ;
548
+ --tw-backdrop-opacity: ;
549
+ --tw-backdrop-saturate: ;
550
+ --tw-backdrop-sepia: ;
551
+ --tw-contain-size: ;
552
+ --tw-contain-layout: ;
553
+ --tw-contain-paint: ;
554
+ --tw-contain-style: ;
555
+ }
556
+
557
+ .container {
558
+ width: 100%;
559
+ }
560
+
561
+ @media (min-width: 640px) {
562
+ .container {
563
+ max-width: 640px;
564
+ }
565
+ }
566
+
567
+ @media (min-width: 768px) {
568
+ .container {
569
+ max-width: 768px;
570
+ }
571
+ }
572
+
573
+ @media (min-width: 1024px) {
574
+ .container {
575
+ max-width: 1024px;
576
+ }
577
+ }
578
+
579
+ @media (min-width: 1280px) {
580
+ .container {
581
+ max-width: 1280px;
582
+ }
583
+ }
584
+
585
+ @media (min-width: 1536px) {
586
+ .container {
587
+ max-width: 1536px;
588
+ }
589
+ }
590
+
557
591
  .sr-only {
558
592
  position: absolute;
559
593
  width: 1px;
@@ -635,12 +669,12 @@ video {
635
669
  margin-bottom: 0.5rem;
636
670
  }
637
671
 
638
- .-ml-0\.5 {
639
- margin-left: -0.125rem;
672
+ .-ml-0 {
673
+ margin-left: -0px;
640
674
  }
641
675
 
642
- .mb-2 {
643
- margin-bottom: 0.5rem;
676
+ .-ml-0\.5 {
677
+ margin-left: -0.125rem;
644
678
  }
645
679
 
646
680
  .mb-3 {
@@ -651,6 +685,10 @@ video {
651
685
  margin-bottom: 1.5rem;
652
686
  }
653
687
 
688
+ .ml-3 {
689
+ margin-left: 0.75rem;
690
+ }
691
+
654
692
  .mr-1 {
655
693
  margin-right: 0.25rem;
656
694
  }
@@ -798,6 +836,11 @@ video {
798
836
  width: 2rem;
799
837
  }
800
838
 
839
+ .w-fit {
840
+ width: -moz-fit-content;
841
+ width: fit-content;
842
+ }
843
+
801
844
  .w-full {
802
845
  width: 100%;
803
846
  }
@@ -900,6 +943,12 @@ video {
900
943
  margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));
901
944
  }
902
945
 
946
+ .space-x-4 > :not([hidden]) ~ :not([hidden]) {
947
+ --tw-space-x-reverse: 0;
948
+ margin-right: calc(1rem * var(--tw-space-x-reverse));
949
+ margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
950
+ }
951
+
903
952
  .space-x-6 > :not([hidden]) ~ :not([hidden]) {
904
953
  --tw-space-x-reverse: 0;
905
954
  margin-right: calc(1.5rem * var(--tw-space-x-reverse));
@@ -912,6 +961,18 @@ video {
912
961
  margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
913
962
  }
914
963
 
964
+ .space-y-1 > :not([hidden]) ~ :not([hidden]) {
965
+ --tw-space-y-reverse: 0;
966
+ margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
967
+ margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
968
+ }
969
+
970
+ .space-y-4 > :not([hidden]) ~ :not([hidden]) {
971
+ --tw-space-y-reverse: 0;
972
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
973
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
974
+ }
975
+
915
976
  .space-y-6 > :not([hidden]) ~ :not([hidden]) {
916
977
  --tw-space-y-reverse: 0;
917
978
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
@@ -926,17 +987,17 @@ video {
926
987
 
927
988
  .divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
928
989
  --tw-divide-opacity: 1;
929
- border-color: rgb(243 244 246 / var(--tw-divide-opacity, 1));
990
+ border-color: rgb(243 244 246 / var(--tw-divide-opacity));
930
991
  }
931
992
 
932
993
  .divide-gray-200 > :not([hidden]) ~ :not([hidden]) {
933
994
  --tw-divide-opacity: 1;
934
- border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1));
995
+ border-color: rgb(229 231 235 / var(--tw-divide-opacity));
935
996
  }
936
997
 
937
998
  .divide-gray-300 > :not([hidden]) ~ :not([hidden]) {
938
999
  --tw-divide-opacity: 1;
939
- border-color: rgb(209 213 219 / var(--tw-divide-opacity, 1));
1000
+ border-color: rgb(209 213 219 / var(--tw-divide-opacity));
940
1001
  }
941
1002
 
942
1003
  .overflow-hidden {
@@ -983,42 +1044,57 @@ video {
983
1044
 
984
1045
  .bg-blue-50 {
985
1046
  --tw-bg-opacity: 1;
986
- background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
1047
+ background-color: rgb(239 246 255 / var(--tw-bg-opacity));
987
1048
  }
988
1049
 
989
1050
  .bg-gray-100 {
990
1051
  --tw-bg-opacity: 1;
991
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
1052
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity));
992
1053
  }
993
1054
 
994
1055
  .bg-gray-50 {
995
1056
  --tw-bg-opacity: 1;
996
- background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
1057
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity));
997
1058
  }
998
1059
 
999
1060
  .bg-gray-500 {
1000
1061
  --tw-bg-opacity: 1;
1001
- background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1));
1062
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity));
1063
+ }
1064
+
1065
+ .bg-green-50 {
1066
+ --tw-bg-opacity: 1;
1067
+ background-color: rgb(240 253 244 / var(--tw-bg-opacity));
1002
1068
  }
1003
1069
 
1004
1070
  .bg-indigo-100 {
1005
1071
  --tw-bg-opacity: 1;
1006
- background-color: rgb(224 231 255 / var(--tw-bg-opacity, 1));
1072
+ background-color: rgb(224 231 255 / var(--tw-bg-opacity));
1007
1073
  }
1008
1074
 
1009
1075
  .bg-indigo-600 {
1010
1076
  --tw-bg-opacity: 1;
1011
- background-color: rgb(79 70 229 / var(--tw-bg-opacity, 1));
1077
+ background-color: rgb(79 70 229 / var(--tw-bg-opacity));
1078
+ }
1079
+
1080
+ .bg-purple-50 {
1081
+ --tw-bg-opacity: 1;
1082
+ background-color: rgb(250 245 255 / var(--tw-bg-opacity));
1083
+ }
1084
+
1085
+ .bg-red-50 {
1086
+ --tw-bg-opacity: 1;
1087
+ background-color: rgb(254 242 242 / var(--tw-bg-opacity));
1012
1088
  }
1013
1089
 
1014
1090
  .bg-white {
1015
1091
  --tw-bg-opacity: 1;
1016
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
1092
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1017
1093
  }
1018
1094
 
1019
1095
  .bg-yellow-50 {
1020
1096
  --tw-bg-opacity: 1;
1021
- background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));
1097
+ background-color: rgb(254 252 232 / var(--tw-bg-opacity));
1022
1098
  }
1023
1099
 
1024
1100
  .bg-opacity-75 {
@@ -1072,6 +1148,11 @@ video {
1072
1148
  padding-right: 1.5rem;
1073
1149
  }
1074
1150
 
1151
+ .py-0 {
1152
+ padding-top: 0px;
1153
+ padding-bottom: 0px;
1154
+ }
1155
+
1075
1156
  .py-0\.5 {
1076
1157
  padding-top: 0.125rem;
1077
1158
  padding-bottom: 0.125rem;
@@ -1092,6 +1173,16 @@ video {
1092
1173
  padding-bottom: 0.5rem;
1093
1174
  }
1094
1175
 
1176
+ .py-3 {
1177
+ padding-top: 0.75rem;
1178
+ padding-bottom: 0.75rem;
1179
+ }
1180
+
1181
+ .py-4 {
1182
+ padding-top: 1rem;
1183
+ padding-bottom: 1rem;
1184
+ }
1185
+
1095
1186
  .py-5 {
1096
1187
  padding-top: 1.25rem;
1097
1188
  padding-bottom: 1.25rem;
@@ -1190,12 +1281,16 @@ video {
1190
1281
  font-weight: 500;
1191
1282
  }
1192
1283
 
1284
+ .font-normal {
1285
+ font-weight: 400;
1286
+ }
1287
+
1193
1288
  .font-semibold {
1194
1289
  font-weight: 600;
1195
1290
  }
1196
1291
 
1197
- .font-normal {
1198
- font-weight: 400;
1292
+ .uppercase {
1293
+ text-transform: uppercase;
1199
1294
  }
1200
1295
 
1201
1296
  .italic {
@@ -1214,49 +1309,93 @@ video {
1214
1309
  line-height: 1.75rem;
1215
1310
  }
1216
1311
 
1312
+ .tracking-wider {
1313
+ letter-spacing: 0.05em;
1314
+ }
1315
+
1217
1316
  .text-blue-600 {
1218
1317
  --tw-text-opacity: 1;
1219
- color: rgb(37 99 235 / var(--tw-text-opacity, 1));
1318
+ color: rgb(37 99 235 / var(--tw-text-opacity));
1319
+ }
1320
+
1321
+ .text-blue-700 {
1322
+ --tw-text-opacity: 1;
1323
+ color: rgb(29 78 216 / var(--tw-text-opacity));
1324
+ }
1325
+
1326
+ .text-blue-800 {
1327
+ --tw-text-opacity: 1;
1328
+ color: rgb(30 64 175 / var(--tw-text-opacity));
1220
1329
  }
1221
1330
 
1222
1331
  .text-gray-400 {
1223
1332
  --tw-text-opacity: 1;
1224
- color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1333
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1225
1334
  }
1226
1335
 
1227
1336
  .text-gray-500 {
1228
1337
  --tw-text-opacity: 1;
1229
- color: rgb(107 114 128 / var(--tw-text-opacity, 1));
1338
+ color: rgb(107 114 128 / var(--tw-text-opacity));
1230
1339
  }
1231
1340
 
1232
1341
  .text-gray-600 {
1233
1342
  --tw-text-opacity: 1;
1234
- color: rgb(75 85 99 / var(--tw-text-opacity, 1));
1343
+ color: rgb(75 85 99 / var(--tw-text-opacity));
1344
+ }
1345
+
1346
+ .text-gray-700 {
1347
+ --tw-text-opacity: 1;
1348
+ color: rgb(55 65 81 / var(--tw-text-opacity));
1235
1349
  }
1236
1350
 
1237
1351
  .text-gray-800 {
1238
1352
  --tw-text-opacity: 1;
1239
- color: rgb(31 41 55 / var(--tw-text-opacity, 1));
1353
+ color: rgb(31 41 55 / var(--tw-text-opacity));
1240
1354
  }
1241
1355
 
1242
1356
  .text-gray-900 {
1243
1357
  --tw-text-opacity: 1;
1244
- color: rgb(17 24 39 / var(--tw-text-opacity, 1));
1358
+ color: rgb(17 24 39 / var(--tw-text-opacity));
1359
+ }
1360
+
1361
+ .text-green-600 {
1362
+ --tw-text-opacity: 1;
1363
+ color: rgb(22 163 74 / var(--tw-text-opacity));
1364
+ }
1365
+
1366
+ .text-green-700 {
1367
+ --tw-text-opacity: 1;
1368
+ color: rgb(21 128 61 / var(--tw-text-opacity));
1369
+ }
1370
+
1371
+ .text-purple-800 {
1372
+ --tw-text-opacity: 1;
1373
+ color: rgb(107 33 168 / var(--tw-text-opacity));
1374
+ }
1375
+
1376
+ .text-red-800 {
1377
+ --tw-text-opacity: 1;
1378
+ color: rgb(153 27 27 / var(--tw-text-opacity));
1245
1379
  }
1246
1380
 
1247
1381
  .text-sky-500 {
1248
1382
  --tw-text-opacity: 1;
1249
- color: rgb(14 165 233 / var(--tw-text-opacity, 1));
1383
+ color: rgb(14 165 233 / var(--tw-text-opacity));
1250
1384
  }
1251
1385
 
1252
1386
  .text-white {
1253
1387
  --tw-text-opacity: 1;
1254
- color: rgb(255 255 255 / var(--tw-text-opacity, 1));
1388
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1255
1389
  }
1256
1390
 
1257
1391
  .text-yellow-600 {
1258
1392
  --tw-text-opacity: 1;
1259
- color: rgb(202 138 4 / var(--tw-text-opacity, 1));
1393
+ color: rgb(202 138 4 / var(--tw-text-opacity));
1394
+ }
1395
+
1396
+ .text-yellow-800 {
1397
+ --tw-text-opacity: 1;
1398
+ color: rgb(133 77 14 / var(--tw-text-opacity));
1260
1399
  }
1261
1400
 
1262
1401
  .shadow {
@@ -1289,30 +1428,54 @@ video {
1289
1428
 
1290
1429
  .ring-black {
1291
1430
  --tw-ring-opacity: 1;
1292
- --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1));
1431
+ --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));
1293
1432
  }
1294
1433
 
1295
1434
  .ring-blue-500\/10 {
1296
1435
  --tw-ring-color: rgb(59 130 246 / 0.1);
1297
1436
  }
1298
1437
 
1438
+ .ring-blue-600\/20 {
1439
+ --tw-ring-color: rgb(37 99 235 / 0.2);
1440
+ }
1441
+
1299
1442
  .ring-gray-300 {
1300
1443
  --tw-ring-opacity: 1;
1301
- --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1));
1444
+ --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity));
1302
1445
  }
1303
1446
 
1304
1447
  .ring-gray-500\/10 {
1305
1448
  --tw-ring-color: rgb(107 114 128 / 0.1);
1306
1449
  }
1307
1450
 
1451
+ .ring-gray-600\/20 {
1452
+ --tw-ring-color: rgb(75 85 99 / 0.2);
1453
+ }
1454
+
1308
1455
  .ring-gray-900\/5 {
1309
1456
  --tw-ring-color: rgb(17 24 39 / 0.05);
1310
1457
  }
1311
1458
 
1459
+ .ring-green-600\/20 {
1460
+ --tw-ring-color: rgb(22 163 74 / 0.2);
1461
+ }
1462
+
1463
+ .ring-purple-600\/20 {
1464
+ --tw-ring-color: rgb(147 51 234 / 0.2);
1465
+ }
1466
+
1467
+ .ring-red-600\/20 {
1468
+ --tw-ring-color: rgb(220 38 38 / 0.2);
1469
+ }
1470
+
1312
1471
  .ring-yellow-500\/10 {
1313
1472
  --tw-ring-color: rgb(234 179 8 / 0.1);
1314
1473
  }
1315
1474
 
1475
+ .ring-yellow-600\/20 {
1476
+ --tw-ring-color: rgb(202 138 4 / 0.2);
1477
+ }
1478
+
1316
1479
  .ring-opacity-5 {
1317
1480
  --tw-ring-opacity: 0.05;
1318
1481
  }
@@ -1331,32 +1494,37 @@ video {
1331
1494
 
1332
1495
  .placeholder\:text-gray-400::-moz-placeholder {
1333
1496
  --tw-text-opacity: 1;
1334
- color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1497
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1335
1498
  }
1336
1499
 
1337
1500
  .placeholder\:text-gray-400::placeholder {
1338
1501
  --tw-text-opacity: 1;
1339
- color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1502
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1340
1503
  }
1341
1504
 
1342
1505
  .hover\:bg-gray-50:hover {
1343
1506
  --tw-bg-opacity: 1;
1344
- background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
1507
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity));
1345
1508
  }
1346
1509
 
1347
1510
  .hover\:bg-indigo-500:hover {
1348
1511
  --tw-bg-opacity: 1;
1349
- background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));
1512
+ background-color: rgb(99 102 241 / var(--tw-bg-opacity));
1350
1513
  }
1351
1514
 
1352
1515
  .hover\:text-gray-500:hover {
1353
1516
  --tw-text-opacity: 1;
1354
- color: rgb(107 114 128 / var(--tw-text-opacity, 1));
1517
+ color: rgb(107 114 128 / var(--tw-text-opacity));
1355
1518
  }
1356
1519
 
1357
1520
  .hover\:text-gray-700:hover {
1358
1521
  --tw-text-opacity: 1;
1359
- color: rgb(55 65 81 / var(--tw-text-opacity, 1));
1522
+ color: rgb(55 65 81 / var(--tw-text-opacity));
1523
+ }
1524
+
1525
+ .hover\:text-sky-700:hover {
1526
+ --tw-text-opacity: 1;
1527
+ color: rgb(3 105 161 / var(--tw-text-opacity));
1360
1528
  }
1361
1529
 
1362
1530
  .focus\:ring-2:focus {
@@ -1371,7 +1539,7 @@ video {
1371
1539
 
1372
1540
  .focus\:ring-indigo-600:focus {
1373
1541
  --tw-ring-opacity: 1;
1374
- --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1));
1542
+ --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity));
1375
1543
  }
1376
1544
 
1377
1545
  .focus-visible\:outline:focus-visible {
@@ -1457,6 +1625,12 @@ video {
1457
1625
  align-items: center;
1458
1626
  }
1459
1627
 
1628
+ .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) {
1629
+ --tw-space-x-reverse: 0;
1630
+ margin-right: calc(1rem * var(--tw-space-x-reverse));
1631
+ margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
1632
+ }
1633
+
1460
1634
  .sm\:space-x-6 > :not([hidden]) ~ :not([hidden]) {
1461
1635
  --tw-space-x-reverse: 0;
1462
1636
  margin-right: calc(1.5rem * var(--tw-space-x-reverse));