avo 4.0.0.beta.7 → 4.0.0.beta.8

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +9 -5
  4. data/Rakefile +11 -0
  5. data/app/assets/builds/avo/application.css +282 -15
  6. data/app/assets/builds/avo/application.js +277 -277
  7. data/app/assets/builds/avo/application.js.map +4 -4
  8. data/app/assets/stylesheets/application.css +2 -0
  9. data/app/assets/stylesheets/css/components/alert.css +72 -0
  10. data/app/assets/stylesheets/css/components/button.css +11 -1
  11. data/app/assets/stylesheets/css/components/ui/description_list.css +1 -1
  12. data/app/assets/stylesheets/css/components/ui/dropdown.css +30 -5
  13. data/app/assets/stylesheets/css/components/ui/dropdown_card.css +8 -0
  14. data/app/assets/stylesheets/css/layout.css +1 -0
  15. data/app/assets/stylesheets/css/typography.css +4 -0
  16. data/app/assets/stylesheets/css/variables.css +2 -2
  17. data/app/components/avo/alert_component.html.erb +29 -21
  18. data/app/components/avo/alert_component.rb +30 -24
  19. data/app/components/avo/base_component.rb +4 -0
  20. data/app/components/avo/developer_warning_component.html.erb +15 -0
  21. data/app/components/avo/developer_warning_component.rb +26 -0
  22. data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +79 -77
  23. data/app/components/avo/items/panel_component.html.erb +3 -0
  24. data/app/components/avo/items/panel_component.rb +33 -0
  25. data/app/components/avo/keyboard_shortcuts_component.rb +2 -1
  26. data/app/components/avo/referrer_params_component.html.erb +1 -1
  27. data/app/components/avo/u_i/dropdown_card_component.html.erb +9 -0
  28. data/app/components/avo/u_i/dropdown_card_component.rb +9 -0
  29. data/app/components/avo/u_i/dropdown_menu_component.html.erb +1 -1
  30. data/app/components/avo/views/resource_show_component.rb +1 -1
  31. data/app/controllers/avo/base_application_controller.rb +0 -1
  32. data/app/controllers/avo/base_controller.rb +5 -3
  33. data/app/helpers/avo/application_helper.rb +5 -3
  34. data/app/javascript/application.js +21 -3
  35. data/app/javascript/js/controllers/index_row_navigator_controller.js +12 -9
  36. data/app/javascript/js/global_hotkeys.js +20 -0
  37. data/app/views/avo/base/preview.html.erb +2 -2
  38. data/app/views/avo/partials/_javascript.html.erb +4 -0
  39. data/app/views/layouts/avo/application.html.erb +1 -1
  40. data/avo.gemspec +2 -2
  41. data/bin/test +8 -5
  42. data/lib/avo/asset_manager.rb +0 -2
  43. data/lib/avo/configuration.rb +13 -0
  44. data/lib/avo/current.rb +11 -0
  45. data/lib/avo/discreet_information.rb +2 -0
  46. data/lib/avo/fields/concerns/has_html_attributes.rb +1 -1
  47. data/lib/avo/resources/array_resource.rb +4 -0
  48. data/lib/avo/resources/items/item_group.rb +4 -0
  49. data/lib/avo/version.rb +1 -1
  50. data/lib/avo.rb +2 -1
  51. data/lib/generators/avo/resource_generator.rb +1 -1
  52. data/lib/generators/avo/templates/initializer/avo.tt +6 -0
  53. metadata +11 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6424e1864bdedf92e5ab1582cdfcaf88370f621124cee06571fe7a1755e7bc93
4
- data.tar.gz: bf1057da44c754a0f016a8725f4305bd0d3d63b4e3d9764c41fc7f367b5a06da
3
+ metadata.gz: 1948f12db4331c8c5d26b0e3530e612f327612747f71b34dd57b9462c44bd8a5
4
+ data.tar.gz: 5a808757824d134aa507c59b0b704a59f391b3cf030b91b16f95fd9fb5f7c2f4
5
5
  SHA512:
6
- metadata.gz: 30250565035ceb2f975b9311dc1c65b443e8106d17500c931a25e263c0b4b2c1151af6dc8fa012e80ab48f02fd680550c5bc9a612c6d5f54ed1e35f7d21e5b42
7
- data.tar.gz: 958c7972b07da9233434c08b844673f9cbc749b59cf6ec1753c2e16ff1a20c610b6e301c517f6b86c16e70ddfcd0c1d6c52b9cd351e3b3a3fb23b9130dcdc279
6
+ metadata.gz: 437a8176795c24f5173118886a4c1d2d94afd8ad7c76d911879d8c8f1fd63c220ad2845b5388c3dbe1e0da6f377605353589d2d263fdd64e5eef845b06a8f5ca
7
+ data.tar.gz: e4adc4d4475a6a9604a01377cad9fa5163a68bcf3ac6704d88f6d98590ed2142555db5d0def4faee8c6b8c9713af8ee278a1dccd076ed6fd7e5c53487c642db1
data/Gemfile CHANGED
@@ -141,6 +141,7 @@ group :test do
141
141
  gem "rspec-rails", "~> 6.0", ">= 6.0.3"
142
142
  gem "rspec-retry", "~> 0.6.2"
143
143
  gem "rails-controller-testing"
144
+ gem "parallel_tests"
144
145
 
145
146
  # Browser testing
146
147
  gem "capybara"
data/Gemfile.lock CHANGED
@@ -1,17 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (4.0.0.beta.7)
4
+ avo (4.0.0.beta.8)
5
5
  actionview (>= 6.1)
6
6
  active_link_to
7
7
  activerecord (>= 6.1)
8
8
  activesupport (>= 6.1)
9
9
  addressable
10
- avo-icons (>= 0.1.1)
10
+ avo-icons (>= 0.1.2)
11
11
  docile
12
12
  meta-tags
13
13
  pagy (>= 43.0)
14
- prop_initializer (>= 0.2.0)
14
+ prop_initializer (>= 0.3.0)
15
15
  turbo-rails (>= 2.0.0)
16
16
  turbo_power (>= 0.6.0)
17
17
  view_component (>= 3.7.0)
@@ -177,7 +177,7 @@ GEM
177
177
  erubi (~> 1.4)
178
178
  parser (>= 2.4)
179
179
  smart_properties
180
- bigdecimal (4.0.1)
180
+ bigdecimal (4.1.0)
181
181
  bindex (0.8.1)
182
182
  bootsnap (1.18.6)
183
183
  msgpack (~> 1.2)
@@ -500,6 +500,8 @@ GEM
500
500
  uri
501
501
  yaml
502
502
  parallel (1.27.0)
503
+ parallel_tests (5.6.0)
504
+ parallel
503
505
  parser (3.3.9.0)
504
506
  ast (~> 2.4.1)
505
507
  racc
@@ -515,7 +517,7 @@ GEM
515
517
  prettyprint (0.2.0)
516
518
  prism (1.4.0)
517
519
  process_executer (1.3.0)
518
- prop_initializer (0.2.0)
520
+ prop_initializer (0.3.0)
519
521
  zeitwerk (>= 2.6.18)
520
522
  propshaft (1.1.0)
521
523
  actionpack (>= 7.0.0)
@@ -802,6 +804,7 @@ GEM
802
804
  PLATFORMS
803
805
  arm64-darwin-23
804
806
  arm64-darwin-24
807
+ arm64-darwin-25
805
808
  x86_64-linux
806
809
 
807
810
  DEPENDENCIES
@@ -862,6 +865,7 @@ DEPENDENCIES
862
865
  money-rails (~> 1.12)
863
866
  net-smtp
864
867
  openssl
868
+ parallel_tests
865
869
  pg (>= 0.18, < 2.0)
866
870
  pluggy!
867
871
  prefixed_ids
data/Rakefile CHANGED
@@ -4,6 +4,17 @@ rescue LoadError
4
4
  puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
5
  end
6
6
 
7
+ begin
8
+ # Only load `parallel_tests` rake tasks when we actually invoke them.
9
+ # Loading them for regular Rails rake tasks (eg `bin/rails db:create`) can break
10
+ # in CI because parallel_tests inspects database config before the Rails app is initialized.
11
+ if ARGV.any? { |arg| arg.start_with?("parallel:") }
12
+ require "parallel_tests/tasks"
13
+ end
14
+ rescue LoadError
15
+ # parallel_tests is an optional dev/test dependency
16
+ end
17
+
7
18
  require "rdoc/task"
8
19
 
9
20
  RDoc::Task.new(:rdoc) do |rdoc|
@@ -23,6 +23,7 @@
23
23
  --color-orange-500: oklch(70.5% 0.213 47.604);
24
24
  --color-orange-600: oklch(64.6% 0.222 41.116);
25
25
  --color-orange-700: oklch(55.3% 0.195 38.402);
26
+ --color-orange-950: oklch(26.6% 0.079 36.259);
26
27
  --color-amber-50: oklch(98.7% 0.022 95.277);
27
28
  --color-amber-100: oklch(96.2% 0.059 95.617);
28
29
  --color-amber-300: oklch(87.9% 0.169 91.605);
@@ -241,6 +242,7 @@
241
242
  --container-2xl: 42rem;
242
243
  --container-3xl: 48rem;
243
244
  --container-4xl: 56rem;
245
+ --container-6xl: 72rem;
244
246
  --text-xs: 0.75rem;
245
247
  --text-xs--line-height: calc(1 / 0.75);
246
248
  --text-sm: 0.875rem;
@@ -317,14 +319,20 @@
317
319
  --color-avo-neutral-800: oklch(39.04% 0.0000 89.88);
318
320
  --color-avo-neutral-900: oklch(27.68% 0.0000 89.88);
319
321
  --color-avo-neutral-950: oklch(20.46% 0.0000 89.88);
322
+ --color-success: var(--color-green-500);
320
323
  --color-success-content: var(--color-green-600);
324
+ --color-success-foreground: var(--color-green-400);
325
+ --color-info: var(--color-blue-400);
321
326
  --color-info-content: var(--color-blue-600);
322
327
  --color-info-foreground: var(--color-blue-500);
323
328
  --color-warning: var(--color-yellow-500);
324
329
  --color-warning-content: var(--color-yellow-600);
330
+ --color-warning-foreground: var(--color-yellow-400);
325
331
  --color-danger: var(--color-red-500);
326
332
  --color-danger-content: var(--color-red-600);
333
+ --color-danger-foreground: var(--color-red-400);
327
334
  --box-shadow-card: 0px 8px 16px 0px rgba(0, 0, 0, 0.04);
335
+ --box-shadow-dropdown-card: 0px 8px 16px 0px rgba(0, 0, 0, 0.1);
328
336
  --box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.04);
329
337
  --box-shadow-grid-card: 0 -1.5px 0 1px var(--color-secondary) inset, 0 0.8px 0 1.3px var(--color-primary) inset;
330
338
  --box-shadow-error: 0 0 5px 1px var(--color-red-600), 0 0 0 1px var(--color-red-600), 0 0 0 3px var(--color-red-300);
@@ -1012,6 +1020,9 @@
1012
1020
  .min-h-56 {
1013
1021
  min-height: calc(var(--spacing) * 56);
1014
1022
  }
1023
+ .min-h-64 {
1024
+ min-height: calc(var(--spacing) * 64);
1025
+ }
1015
1026
  .min-h-\[8rem\] {
1016
1027
  min-height: 8rem;
1017
1028
  }
@@ -1144,6 +1155,9 @@
1144
1155
  .max-w-4xl {
1145
1156
  max-width: var(--container-4xl);
1146
1157
  }
1158
+ .max-w-6xl {
1159
+ max-width: var(--container-6xl);
1160
+ }
1147
1161
  .max-w-24 {
1148
1162
  max-width: calc(var(--spacing) * 24);
1149
1163
  }
@@ -1153,8 +1167,8 @@
1153
1167
  .max-w-full {
1154
1168
  max-width: 100%;
1155
1169
  }
1156
- .max-w-lg {
1157
- max-width: var(--container-lg);
1170
+ .max-w-md {
1171
+ max-width: var(--container-md);
1158
1172
  }
1159
1173
  .max-w-screen-xl {
1160
1174
  max-width: var(--breakpoint-xl);
@@ -1228,6 +1242,14 @@
1228
1242
  --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
1229
1243
  translate: var(--tw-translate-x) var(--tw-translate-y);
1230
1244
  }
1245
+ .translate-x-0 {
1246
+ --tw-translate-x: calc(var(--spacing) * 0);
1247
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1248
+ }
1249
+ .translate-x-10 {
1250
+ --tw-translate-x: calc(var(--spacing) * 10);
1251
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1252
+ }
1231
1253
  .-translate-y-1\/2 {
1232
1254
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
1233
1255
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1310,6 +1332,9 @@
1310
1332
  .grid-cols-12 {
1311
1333
  grid-template-columns: repeat(12, minmax(0, 1fr));
1312
1334
  }
1335
+ .grid-cols-\[repeat\(auto-fit\,minmax\(min\(100\%\,247px\)\,1fr\)\)\] {
1336
+ grid-template-columns: repeat(auto-fit,minmax(min(100%, 247px),1fr));
1337
+ }
1313
1338
  .grid-rows-1 {
1314
1339
  grid-template-rows: repeat(1, minmax(0, 1fr));
1315
1340
  }
@@ -1393,6 +1418,13 @@
1393
1418
  margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
1394
1419
  }
1395
1420
  }
1421
+ .space-y-3 {
1422
+ :where(& > :not(:last-child)) {
1423
+ --tw-space-y-reverse: 0;
1424
+ margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
1425
+ margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
1426
+ }
1427
+ }
1396
1428
  .space-y-4 {
1397
1429
  :where(& > :not(:last-child)) {
1398
1430
  --tw-space-y-reverse: 0;
@@ -1605,6 +1637,10 @@
1605
1637
  border-style: var(--tw-border-style);
1606
1638
  border-width: 1px;
1607
1639
  }
1640
+ .border-0 {
1641
+ border-style: var(--tw-border-style);
1642
+ border-width: 0px;
1643
+ }
1608
1644
  .border-2 {
1609
1645
  border-style: var(--tw-border-style);
1610
1646
  border-width: 2px;
@@ -1705,9 +1741,6 @@
1705
1741
  .border-green-500 {
1706
1742
  border-color: var(--color-green-500);
1707
1743
  }
1708
- .border-green-600 {
1709
- border-color: var(--color-green-600);
1710
- }
1711
1744
  .border-indigo-300 {
1712
1745
  border-color: var(--color-indigo-300);
1713
1746
  }
@@ -1732,8 +1765,11 @@
1732
1765
  .border-orange-500 {
1733
1766
  border-color: var(--color-orange-500);
1734
1767
  }
1735
- .border-orange-600 {
1736
- border-color: var(--color-orange-600);
1768
+ .border-orange-600\/40 {
1769
+ border-color: color-mix(in srgb, oklch(64.6% 0.222 41.116) 40%, transparent);
1770
+ @supports (color: color-mix(in lab, red, red)) {
1771
+ border-color: color-mix(in oklab, var(--color-orange-600) 40%, transparent);
1772
+ }
1737
1773
  }
1738
1774
  .border-pink-300 {
1739
1775
  border-color: var(--color-pink-300);
@@ -1960,12 +1996,15 @@
1960
1996
  .bg-orange-50 {
1961
1997
  background-color: var(--color-orange-50);
1962
1998
  }
1963
- .bg-orange-400 {
1964
- background-color: var(--color-orange-400);
1965
- }
1966
1999
  .bg-orange-500 {
1967
2000
  background-color: var(--color-orange-500);
1968
2001
  }
2002
+ .bg-orange-500\/10 {
2003
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 10%, transparent);
2004
+ @supports (color: color-mix(in lab, red, red)) {
2005
+ background-color: color-mix(in oklab, var(--color-orange-500) 10%, transparent);
2006
+ }
2007
+ }
1969
2008
  .bg-orange-700 {
1970
2009
  background-color: var(--color-orange-700);
1971
2010
  }
@@ -2289,6 +2328,9 @@
2289
2328
  font-size: var(--text-xs);
2290
2329
  line-height: var(--tw-leading, var(--text-xs--line-height));
2291
2330
  }
2331
+ .text-\[0\.85em\] {
2332
+ font-size: 0.85em;
2333
+ }
2292
2334
  .text-\[10px\] {
2293
2335
  font-size: 10px;
2294
2336
  }
@@ -2465,9 +2507,15 @@
2465
2507
  .text-orange-500 {
2466
2508
  color: var(--color-orange-500);
2467
2509
  }
2510
+ .text-orange-600 {
2511
+ color: var(--color-orange-600);
2512
+ }
2468
2513
  .text-orange-700 {
2469
2514
  color: var(--color-orange-700);
2470
2515
  }
2516
+ .text-orange-950 {
2517
+ color: var(--color-orange-950);
2518
+ }
2471
2519
  .text-pink-500 {
2472
2520
  color: var(--color-pink-500);
2473
2521
  }
@@ -2668,10 +2716,22 @@
2668
2716
  --tw-duration: 200ms;
2669
2717
  transition-duration: 200ms;
2670
2718
  }
2719
+ .duration-300 {
2720
+ --tw-duration: 300ms;
2721
+ transition-duration: 300ms;
2722
+ }
2723
+ .ease-in {
2724
+ --tw-ease: var(--ease-in);
2725
+ transition-timing-function: var(--ease-in);
2726
+ }
2671
2727
  .ease-in-out {
2672
2728
  --tw-ease: var(--ease-in-out);
2673
2729
  transition-timing-function: var(--ease-in-out);
2674
2730
  }
2731
+ .ease-out {
2732
+ --tw-ease: var(--ease-out);
2733
+ transition-timing-function: var(--ease-out);
2734
+ }
2675
2735
  .select-none {
2676
2736
  -webkit-user-select: none;
2677
2737
  user-select: none;
@@ -4434,11 +4494,45 @@
4434
4494
  }
4435
4495
  }
4436
4496
  }
4497
+ .dark\:border-orange-500\/30 {
4498
+ &:where(.dark, .dark *) {
4499
+ border-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 30%, transparent);
4500
+ @supports (color: color-mix(in lab, red, red)) {
4501
+ border-color: color-mix(in oklab, var(--color-orange-500) 30%, transparent);
4502
+ }
4503
+ }
4504
+ }
4505
+ .dark\:bg-orange-500\/15 {
4506
+ &:where(.dark, .dark *) {
4507
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 15%, transparent);
4508
+ @supports (color: color-mix(in lab, red, red)) {
4509
+ background-color: color-mix(in oklab, var(--color-orange-500) 15%, transparent);
4510
+ }
4511
+ }
4512
+ }
4513
+ .dark\:bg-orange-950\/30 {
4514
+ &:where(.dark, .dark *) {
4515
+ background-color: color-mix(in srgb, oklch(26.6% 0.079 36.259) 30%, transparent);
4516
+ @supports (color: color-mix(in lab, red, red)) {
4517
+ background-color: color-mix(in oklab, var(--color-orange-950) 30%, transparent);
4518
+ }
4519
+ }
4520
+ }
4437
4521
  .dark\:bg-tertiary {
4438
4522
  &:where(.dark, .dark *) {
4439
4523
  background-color: var(--color-tertiary);
4440
4524
  }
4441
4525
  }
4526
+ .dark\:text-orange-50 {
4527
+ &:where(.dark, .dark *) {
4528
+ color: var(--color-orange-50);
4529
+ }
4530
+ }
4531
+ .dark\:text-orange-300 {
4532
+ &:where(.dark, .dark *) {
4533
+ color: var(--color-orange-300);
4534
+ }
4535
+ }
4442
4536
  .print\:hidden {
4443
4537
  @media print {
4444
4538
  display: none;
@@ -7682,6 +7776,9 @@
7682
7776
  transform: scale(0.75) translateY(2px);
7683
7777
  box-shadow: none;
7684
7778
  }
7779
+ .hotkeys-hide-badges .hotkey-badge kbd {
7780
+ display: none;
7781
+ }
7685
7782
  @layer base {
7686
7783
  a {
7687
7784
  color: var(--color-info-content);
@@ -8412,7 +8509,7 @@
8412
8509
  border-radius: var(--radius-2xl);
8413
8510
  background-color: var(--color-primary);
8414
8511
  padding: calc(var(--spacing) * 4);
8415
- --tw-shadow: 0 8px 16px 0 var(--tw-shadow-color, rgba(0, 0, 0, 0.08));
8512
+ --tw-shadow: 0px 8px 16px 0px var(--tw-shadow-color, rgba(0, 0, 0, 0.08));
8416
8513
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
8417
8514
  transition: margin 0.1s ease-in-out, width 0.1s ease-in-out;
8418
8515
  height: calc(100dvh - var(--spacing) - var(--top-navbar-height));
@@ -8423,6 +8520,7 @@
8423
8520
  flex-direction: column;
8424
8521
  overflow-y: auto;
8425
8522
  padding-inline: calc(var(--spacing) * 2);
8523
+ padding-top: calc(var(--spacing) * 1);
8426
8524
  }
8427
8525
  .avo-container {
8428
8526
  display: flex;
@@ -10596,6 +10694,7 @@
10596
10694
  display: flex;
10597
10695
  width: 100%;
10598
10696
  flex: 1;
10697
+ flex-direction: column;
10599
10698
  flex-wrap: wrap;
10600
10699
  :where(& > :not(:last-child)) {
10601
10700
  --tw-divide-y-reverse: 0;
@@ -11319,15 +11418,32 @@
11319
11418
  background-color: transparent !important;
11320
11419
  color: var(--color-content-secondary);
11321
11420
  }
11421
+ &.menu__item--action {
11422
+ gap: calc(var(--spacing) * 1.5);
11423
+ color: var(--color-content-secondary);
11424
+ &.dropdown-menu__item--disabled {
11425
+ opacity: 60%;
11426
+ }
11427
+ }
11428
+ &:hover {
11429
+ background-color: var(--color-secondary);
11430
+ color: var(--color-content);
11431
+ }
11322
11432
  }
11323
- .dropdown-menu__item--active, .dropdown-menu__item:hover, .dropdown-menu__list > :is(a, button):hover {
11433
+ .dropdown-menu__list > :is(a, button):hover {
11324
11434
  background-color: var(--color-secondary);
11325
11435
  }
11436
+ .dropdown-menu__item--active {
11437
+ background: color-mix(in srgb, oklch(97.31% 0.0000 89.88), oklch(20.46% 0.0000 89.88) 5%);
11438
+ @supports (color: color-mix(in lab, red, red)) {
11439
+ background: color-mix(in oklab, var(--color-secondary), var(--color-content) 5%);
11440
+ }
11441
+ }
11326
11442
  .dropdown-menu__item:focus-visible, .dropdown-menu__list > :is(a, button):focus-visible {
11327
11443
  background-color: var(--color-primary);
11328
11444
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
11329
11445
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
11330
- --tw-ring-color: var(--color-content);
11446
+ --tw-ring-color: var(--color-info-foreground);
11331
11447
  --tw-outline-style: none;
11332
11448
  outline-style: none;
11333
11449
  --tw-ring-inset: inset;
@@ -11336,7 +11452,34 @@
11336
11452
  width: calc(var(--spacing) * 4);
11337
11453
  height: calc(var(--spacing) * 4);
11338
11454
  flex-shrink: 0;
11339
- color: var(--color-content);
11455
+ color: inherit;
11456
+ &.menu__item__icon--action {
11457
+ box-sizing: content-box;
11458
+ border-radius: var(--radius-sm);
11459
+ background-color: var(--color-secondary);
11460
+ padding: calc(var(--spacing) * 0.5);
11461
+ .dropdown-menu__item--active &, .dropdown-menu__item:hover & {
11462
+ background-color: inherit;
11463
+ }
11464
+ }
11465
+ }
11466
+ .dropdown-card {
11467
+ overflow: hidden;
11468
+ border-radius: var(--radius-lg);
11469
+ border-style: var(--tw-border-style);
11470
+ border-width: 1px;
11471
+ border-color: var(--color-tertiary);
11472
+ background-color: var(--color-secondary);
11473
+ padding: calc(var(--spacing) * 0.5);
11474
+ box-shadow: var(--box-shadow-dropdown-card);
11475
+ }
11476
+ .dropdown-card__body {
11477
+ overflow: hidden;
11478
+ border-radius: var(--radius-lg);
11479
+ border-style: var(--tw-border-style);
11480
+ border-width: 1px;
11481
+ border-color: var(--color-tertiary);
11482
+ background-color: var(--color-primary);
11340
11483
  }
11341
11484
  @layer base {
11342
11485
  input[type="radio"] {
@@ -11889,6 +12032,120 @@
11889
12032
  --tw-leading: calc(var(--spacing) * 4);
11890
12033
  line-height: calc(var(--spacing) * 4);
11891
12034
  }
12035
+ .alert {
12036
+ pointer-events: auto;
12037
+ position: relative;
12038
+ display: grid;
12039
+ width: 100%;
12040
+ max-width: var(--container-md);
12041
+ min-width: calc(var(--spacing) * 0);
12042
+ --tw-translate-x: calc(var(--spacing) * 10);
12043
+ translate: var(--tw-translate-x) var(--tw-translate-y);
12044
+ align-items: flex-start;
12045
+ gap: calc(var(--spacing) * 1);
12046
+ border-radius: var(--radius-lg);
12047
+ border-style: var(--tw-border-style);
12048
+ border-width: 1px;
12049
+ padding: calc(var(--spacing) * 3);
12050
+ opacity: 0%;
12051
+ grid-template-columns: auto 1fr auto;
12052
+ background: var(--alert-background);
12053
+ border-color: var(--alert-border);
12054
+ will-change: opacity, transform;
12055
+ --alert-color: var(--color-foreground);
12056
+ --alert-title-color: oklch(20.46% 0.0000 89.88);
12057
+ @supports (color: color-mix(in lab, red, red)) {
12058
+ --alert-title-color: color-mix(in oklab, var(--color-content) 20%, var(--alert-color));
12059
+ }
12060
+ --alert-message-color: oklch(20.46% 0.0000 89.88);
12061
+ @supports (color: color-mix(in lab, red, red)) {
12062
+ --alert-message-color: color-mix(in oklab, var(--color-content) 10%, var(--alert-color));
12063
+ }
12064
+ --alert-background: var(--color-background);
12065
+ --alert-border: var(--color-tertiary);
12066
+ }
12067
+ .alert__icon-container {
12068
+ display: flex;
12069
+ flex-shrink: 0;
12070
+ align-items: flex-start;
12071
+ justify-content: center;
12072
+ padding: calc(var(--spacing) * 1);
12073
+ color: var(--alert-title-color);
12074
+ }
12075
+ .alert__icon-container--status {
12076
+ grid-column-start: 1;
12077
+ align-self: stretch;
12078
+ }
12079
+ .alert__icon {
12080
+ width: calc(var(--spacing) * 3.5);
12081
+ height: calc(var(--spacing) * 3.5);
12082
+ }
12083
+ .alert__body {
12084
+ grid-column-start: 2;
12085
+ display: flex;
12086
+ min-width: calc(var(--spacing) * 0);
12087
+ flex-direction: column;
12088
+ align-items: flex-start;
12089
+ justify-content: center;
12090
+ gap: calc(var(--spacing) * 0.5);
12091
+ align-self: stretch;
12092
+ }
12093
+ .alert__title {
12094
+ width: 100%;
12095
+ font-size: var(--text-sm);
12096
+ line-height: var(--tw-leading, var(--text-sm--line-height));
12097
+ --tw-leading: calc(var(--spacing) * 5);
12098
+ line-height: calc(var(--spacing) * 5);
12099
+ --tw-font-weight: var(--font-weight-medium);
12100
+ font-weight: var(--font-weight-medium);
12101
+ color: var(--alert-title-color);
12102
+ }
12103
+ .alert__message {
12104
+ width: 100%;
12105
+ font-size: var(--text-xs);
12106
+ line-height: var(--tw-leading, var(--text-xs--line-height));
12107
+ --tw-leading: calc(var(--spacing) * 4);
12108
+ line-height: calc(var(--spacing) * 4);
12109
+ --tw-font-weight: var(--font-weight-normal);
12110
+ font-weight: var(--font-weight-normal);
12111
+ color: var(--alert-message-color);
12112
+ }
12113
+ .alert__icon-container--close {
12114
+ grid-column-start: 3;
12115
+ align-self: flex-start;
12116
+ }
12117
+ .alert--success {
12118
+ --alert-color: var(--color-success-content);
12119
+ --alert-background: color-mix(in srgb, oklch(72.3% 0.219 149.579) 15%, #fff);
12120
+ @supports (color: color-mix(in lab, red, red)) {
12121
+ --alert-background: color-mix(in oklab, var(--color-success) 15%, var(--color-primary));
12122
+ }
12123
+ --alert-border: var(--color-success-foreground);
12124
+ }
12125
+ .alert--info {
12126
+ --alert-color: var(--color-info-content);
12127
+ --alert-background: color-mix(in srgb, oklch(70.7% 0.165 254.624) 15%, #fff);
12128
+ @supports (color: color-mix(in lab, red, red)) {
12129
+ --alert-background: color-mix(in oklab, var(--color-info) 15%, var(--color-primary));
12130
+ }
12131
+ --alert-border: var(--color-info-foreground);
12132
+ }
12133
+ .alert--warning {
12134
+ --alert-color: var(--color-warning-content);
12135
+ --alert-background: color-mix(in srgb, oklch(79.5% 0.184 86.047) 15%, #fff);
12136
+ @supports (color: color-mix(in lab, red, red)) {
12137
+ --alert-background: color-mix(in oklab, var(--color-warning) 15%, var(--color-primary));
12138
+ }
12139
+ --alert-border: var(--color-warning-foreground);
12140
+ }
12141
+ .alert--danger {
12142
+ --alert-color: var(--color-danger-content);
12143
+ --alert-background: color-mix(in srgb, oklch(63.7% 0.237 25.331) 15%, #fff);
12144
+ @supports (color: color-mix(in lab, red, red)) {
12145
+ --alert-background: color-mix(in oklab, var(--color-danger) 15%, var(--color-primary));
12146
+ }
12147
+ --alert-border: var(--color-danger-foreground);
12148
+ }
11892
12149
  .breadcrumbs {
11893
12150
  width: 100%;
11894
12151
  }
@@ -11954,6 +12211,16 @@
11954
12211
  }
11955
12212
  }
11956
12213
  @layer base {
12214
+ .button-icon {
12215
+ display: inline-flex;
12216
+ cursor: pointer;
12217
+ &:focus-visible {
12218
+ border-radius: var(--radius-lg);
12219
+ --tw-outline-style: none;
12220
+ outline-style: none;
12221
+ box-shadow: var(--box-shadow-focus);
12222
+ }
12223
+ }
11957
12224
  .button {
11958
12225
  display: inline-flex;
11959
12226
  flex-grow: 0;
@@ -11997,7 +12264,7 @@
11997
12264
  border-radius: var(--radius-lg);
11998
12265
  --tw-outline-style: none;
11999
12266
  outline-style: none;
12000
- box-shadow: 0 0 0 1px var(--color-primary), 0 0 0 3px var(--color-info-foreground);
12267
+ box-shadow: var(--box-shadow-focus);
12001
12268
  }
12002
12269
  --btn-color-accent: var(--color-avo-neutral-50);
12003
12270
  --btn-color-accent-content: var(--color-avo-neutral-100);