avo 3.10.10 → 3.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -4
- data/Gemfile.lock +51 -49
- data/app/components/avo/actions_component.html.erb +10 -6
- data/app/components/avo/actions_component.rb +37 -55
- data/app/components/avo/button_component.rb +3 -3
- data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +8 -4
- data/app/components/avo/fields/belongs_to_field/show_component.rb +1 -1
- data/app/components/avo/fields/common/files/list_viewer_component.rb +1 -1
- data/app/components/avo/fields/has_one_field/show_component.rb +3 -3
- data/app/components/avo/index/resource_controls_component.rb +9 -5
- data/app/components/avo/paginator_component.html.erb +1 -1
- data/app/components/avo/paginator_component.rb +1 -1
- data/app/components/avo/panel_component.html.erb +6 -4
- data/app/components/avo/resource_component.rb +3 -2
- data/app/components/avo/resource_sidebar_component.html.erb +1 -1
- data/app/components/avo/views/resource_edit_component.html.erb +2 -2
- data/app/components/avo/views/resource_index_component.html.erb +2 -2
- data/app/components/avo/views/resource_index_component.rb +17 -4
- data/app/components/avo/views/resource_show_component.html.erb +2 -2
- data/app/controllers/avo/actions_controller.rb +1 -1
- data/app/controllers/avo/application_controller.rb +1 -1
- data/app/controllers/avo/associations_controller.rb +55 -18
- data/app/controllers/avo/base_controller.rb +7 -2
- data/app/controllers/avo/search_controller.rb +1 -1
- data/app/helpers/avo/application_helper.rb +1 -1
- data/app/javascript/avo.base.js +8 -0
- data/app/views/avo/actions/show.html.erb +3 -3
- data/app/views/avo/associations/new.html.erb +45 -20
- data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +1 -1
- data/app/views/layouts/avo/application.html.erb +1 -2
- data/config/initializers/pagy.rb +1 -1
- data/lib/avo/base_action.rb +1 -0
- data/lib/avo/engine.rb +8 -4
- data/lib/avo/fields/base_field.rb +2 -2
- data/lib/avo/fields/belongs_to_field.rb +14 -8
- data/lib/avo/fields/concerns/is_required.rb +1 -1
- data/lib/avo/fields/has_base_field.rb +3 -1
- data/lib/avo/fields/has_one_field.rb +1 -1
- data/lib/avo/fields_execution_context.rb +13 -0
- data/lib/avo/resources/base.rb +32 -22
- data/lib/avo/version.rb +1 -1
- data/lib/avo.rb +10 -8
- data/lib/generators/avo/templates/initializer/avo.tt +3 -3
- data/lib/generators/avo/templates/locales/avo.ar.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.de.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.en.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.es.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.fr.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.it.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.ja.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.nb.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.nl.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.nn.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.pl.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.pt-BR.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.pt.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.ro.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.ru.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.tr.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.uk.yml +1 -0
- data/lib/generators/avo/templates/locales/avo.zh.yml +1 -0
- data/lib/tasks/avo_tasks.rake +1 -1
- data/public/avo-assets/avo.base.css +49 -2
- data/public/avo-assets/avo.base.js +129 -129
- data/public/avo-assets/avo.base.js.map +3 -3
- data/tailwind.preset.js +2 -3
- metadata +4 -3
- /data/{lib → app}/avo/base_resource.rb +0 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
module Avo
|
2
|
+
class FieldsExecutionContext < Avo::ExecutionContext
|
3
|
+
include Avo::Concerns::HasItems
|
4
|
+
|
5
|
+
def detect_fields
|
6
|
+
self.items_holder = Avo::Resources::Items::Holder.new(parent: self)
|
7
|
+
|
8
|
+
instance_exec(&target) if target.present? && target.respond_to?(:call)
|
9
|
+
|
10
|
+
self
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/avo/resources/base.rb
CHANGED
@@ -119,7 +119,7 @@ module Avo
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def valid_association_name(record, association_name)
|
122
|
-
association_name if record.
|
122
|
+
association_name if record.class.reflect_on_association(association_name).present?
|
123
123
|
end
|
124
124
|
|
125
125
|
def valid_attachment_name(record, association_name)
|
@@ -285,14 +285,16 @@ module Avo
|
|
285
285
|
self
|
286
286
|
end
|
287
287
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
288
|
+
unless defined? VIEW_METHODS_MAPPING
|
289
|
+
VIEW_METHODS_MAPPING = {
|
290
|
+
index: [:index_fields, :display_fields],
|
291
|
+
show: [:show_fields, :display_fields],
|
292
|
+
edit: [:edit_fields, :form_fields],
|
293
|
+
update: [:edit_fields, :form_fields],
|
294
|
+
new: [:new_fields, :form_fields],
|
295
|
+
create: [:new_fields, :form_fields]
|
296
|
+
}
|
297
|
+
end
|
296
298
|
|
297
299
|
def fetch_fields
|
298
300
|
possible_methods_for_view = VIEW_METHODS_MAPPING[view.to_sym]
|
@@ -329,17 +331,17 @@ module Avo
|
|
329
331
|
end
|
330
332
|
|
331
333
|
# def action / def filter / def scope
|
332
|
-
define_method entity do |entity_class, arguments: {}, icon: nil|
|
333
|
-
entity_loader(entity).use({class: entity_class, arguments: arguments, icon: icon}.compact)
|
334
|
+
define_method entity do |entity_class, arguments: {}, icon: nil, default: nil|
|
335
|
+
entity_loader(entity).use({class: entity_class, arguments: arguments, icon: icon, default: default}.compact)
|
334
336
|
end
|
335
337
|
|
336
338
|
# def get_actions / def get_filters / def get_scopes
|
337
|
-
define_method "get_#{plural_entity}" do
|
339
|
+
define_method :"get_#{plural_entity}" do
|
338
340
|
return entity_loader(entity).bag if entity_loader(entity).present?
|
339
341
|
|
340
342
|
# ex: @actions_loader = Avo::Loaders::ActionsLoader.new
|
341
343
|
instance_variable_set(
|
342
|
-
"@#{plural_entity}_loader",
|
344
|
+
:"@#{plural_entity}_loader",
|
343
345
|
"Avo::Loaders::#{plural_entity.humanize}Loader".constantize.new
|
344
346
|
)
|
345
347
|
|
@@ -349,8 +351,8 @@ module Avo
|
|
349
351
|
end
|
350
352
|
|
351
353
|
# def get_action_arguments / def get_filter_arguments / def get_scope_arguments
|
352
|
-
define_method "get_#{entity}_arguments" do |entity_class|
|
353
|
-
klass = send("get_#{plural_entity}").find { |entity| entity[:class].to_s == entity_class.to_s }
|
354
|
+
define_method :"get_#{entity}_arguments" do |entity_class|
|
355
|
+
klass = send(:"get_#{plural_entity}").find { |entity| entity[:class].to_s == entity_class.to_s }
|
354
356
|
|
355
357
|
raise "Couldn't find '#{entity_class}' in the 'def #{plural_entity}' method on your '#{self.class}' resource." if klass.nil?
|
356
358
|
|
@@ -359,7 +361,7 @@ module Avo
|
|
359
361
|
end
|
360
362
|
|
361
363
|
def hydrate(...)
|
362
|
-
super
|
364
|
+
super
|
363
365
|
|
364
366
|
if @record.present?
|
365
367
|
hydrate_model_with_default_values if @view&.new?
|
@@ -394,8 +396,8 @@ module Avo
|
|
394
396
|
def record_title
|
395
397
|
return name if @record.nil?
|
396
398
|
|
397
|
-
# Get the title from the record if title is not set, try to get the name, title or label, or fallback to the
|
398
|
-
return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.
|
399
|
+
# Get the title from the record if title is not set, try to get the name, title or label, or fallback to the to_param
|
400
|
+
return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil?
|
399
401
|
|
400
402
|
# If the title is a symbol, get the value from the record else execute the block/string
|
401
403
|
case title
|
@@ -443,10 +445,14 @@ module Avo
|
|
443
445
|
.to_h
|
444
446
|
end
|
445
447
|
|
446
|
-
def fill_record(record, params, extra_params: [])
|
448
|
+
def fill_record(record, params, extra_params: [], fields: nil)
|
447
449
|
# Write the field values
|
448
450
|
params.each do |key, value|
|
449
|
-
field =
|
451
|
+
field = if fields.present?
|
452
|
+
fields.find { |f| f.id == key.to_sym }
|
453
|
+
else
|
454
|
+
fields_by_database_id[key]
|
455
|
+
end
|
450
456
|
|
451
457
|
next unless field.present?
|
452
458
|
|
@@ -509,7 +515,7 @@ module Avo
|
|
509
515
|
|
510
516
|
if field.type == "belongs_to"
|
511
517
|
|
512
|
-
reflection = @record.
|
518
|
+
reflection = @record.class.reflect_on_association(@params[:via_relation]) if @params[:via_relation].present?
|
513
519
|
|
514
520
|
if field.polymorphic_as.present? && field.types.map(&:to_s).include?(@params[:via_relation_class])
|
515
521
|
# set the value to the actual record
|
@@ -601,7 +607,11 @@ module Avo
|
|
601
607
|
end
|
602
608
|
|
603
609
|
def entity_loader(entity)
|
604
|
-
instance_variable_get("@#{entity.to_s.pluralize}_loader")
|
610
|
+
instance_variable_get(:"@#{entity.to_s.pluralize}_loader")
|
611
|
+
end
|
612
|
+
|
613
|
+
def record_param
|
614
|
+
@record_param ||= @record.persisted? ? @record.to_param : nil
|
605
615
|
end
|
606
616
|
end
|
607
617
|
end
|
data/lib/avo/version.rb
CHANGED
data/lib/avo.rb
CHANGED
@@ -36,19 +36,20 @@ module Avo
|
|
36
36
|
class DeprecatedAPIError < StandardError; end
|
37
37
|
|
38
38
|
class MissingResourceError < StandardError
|
39
|
-
def initialize(
|
40
|
-
super(missing_resource_message(
|
39
|
+
def initialize(model_class, field_name = nil)
|
40
|
+
super(missing_resource_message(model_class, field_name))
|
41
41
|
end
|
42
42
|
|
43
43
|
private
|
44
44
|
|
45
|
-
def missing_resource_message(
|
46
|
-
|
45
|
+
def missing_resource_message(model_class, field_name)
|
46
|
+
model_name = model_class.to_s.underscore
|
47
|
+
field_name ||= model_name
|
47
48
|
|
48
|
-
"Failed to find a resource while rendering the :#{
|
49
|
-
"You may generate a resource for it by running 'rails generate avo:resource #{
|
49
|
+
"Failed to find a resource while rendering the :#{field_name} field.\n" \
|
50
|
+
"You may generate a resource for it by running 'rails generate avo:resource #{model_name.singularize}'.\n" \
|
50
51
|
"\n" \
|
51
|
-
"Alternatively add the 'use_resource' option to the :#{
|
52
|
+
"Alternatively add the 'use_resource' option to the :#{field_name} field to specify a custom resource to be used.\n" \
|
52
53
|
"More info on https://docs.avohq.io/#{Avo::VERSION[0]}.0/resources.html."
|
53
54
|
end
|
54
55
|
end
|
@@ -75,7 +76,7 @@ module Avo
|
|
75
76
|
Avo::Current.error_manager = Avo::ErrorManager.build
|
76
77
|
# Check rails version issues only on NON Production environments
|
77
78
|
unless Rails.env.production?
|
78
|
-
check_rails_version_issues
|
79
|
+
check_rails_version_issues
|
79
80
|
display_menu_editor_warning
|
80
81
|
end
|
81
82
|
Avo::Current.resource_manager = Avo::Resources::ResourceManager.build
|
@@ -138,6 +139,7 @@ module Avo
|
|
138
139
|
mount Avo::DynamicFilters::Engine, at: "/avo-dynamic_filters" if defined?(Avo::DynamicFilters::Engine)
|
139
140
|
mount Avo::Dashboards::Engine, at: "/dashboards" if defined?(Avo::Dashboards::Engine)
|
140
141
|
mount Avo::Pro::Engine, at: "/avo-pro" if defined?(Avo::Pro::Engine)
|
142
|
+
mount Avo::Kanban::Engine, at: "/boards" if defined?(Avo::Kanban::Engine)
|
141
143
|
}
|
142
144
|
end
|
143
145
|
|
@@ -22,13 +22,13 @@ Avo.configure do |config|
|
|
22
22
|
end
|
23
23
|
|
24
24
|
## == Authentication ==
|
25
|
-
# config.current_user_method =
|
26
|
-
# config.is_admin_method = :is_admin
|
27
|
-
# config.is_developer_method = :is_developer
|
25
|
+
# config.current_user_method = :current_user
|
28
26
|
# config.authenticate_with do
|
29
27
|
# end
|
30
28
|
|
31
29
|
## == Authorization ==
|
30
|
+
# config.is_admin_method = :is_admin
|
31
|
+
# config.is_developer_method = :is_developer
|
32
32
|
# config.authorization_methods = {
|
33
33
|
# index: 'index?',
|
34
34
|
# show: 'show?',
|
@@ -21,6 +21,7 @@ ar:
|
|
21
21
|
attachment_class_attached: "%{attachment_class} تم ربط"
|
22
22
|
attachment_class_detached: "%{attachment_class} تم فصل"
|
23
23
|
attachment_destroyed: تم حذف المرفق
|
24
|
+
attachment_failed: فشل في إرفاق %{attachment_class}
|
24
25
|
cancel: إلغاء
|
25
26
|
choose_a_country: اختر دولة
|
26
27
|
choose_an_option: اختر خيارًا
|
@@ -16,6 +16,7 @@ de:
|
|
16
16
|
attach_item: "%{item} anhängen"
|
17
17
|
attachment_class_attached: "%{attachment_class} angehängt."
|
18
18
|
attachment_class_detached: "%{attachment_class} abgehängt."
|
19
|
+
attachment_failed: "Kon %{attachment_class} niet bijvoegen"
|
19
20
|
attachment_destroyed: Anhang gelöscht
|
20
21
|
cancel: Abbrechen
|
21
22
|
choose_a_country: Land auswählen
|
@@ -15,6 +15,7 @@ en:
|
|
15
15
|
attachment_class_attached: "%{attachment_class} attached."
|
16
16
|
attachment_class_detached: "%{attachment_class} detached."
|
17
17
|
attachment_destroyed: Attachment destroyed
|
18
|
+
attachment_failed: Failed to attach %{attachment_class}
|
18
19
|
cancel: Cancel
|
19
20
|
choose_a_country: Choose a country
|
20
21
|
choose_an_option: Choose an option
|
@@ -17,6 +17,7 @@ es:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} adjuntado/a."
|
18
18
|
attachment_class_detached: "%{attachment_class} adjuntado/a."
|
19
19
|
attachment_destroyed: Adjunto eliminado
|
20
|
+
attachment_failed: No se pudo adjuntar %{attachment_class}
|
20
21
|
cancel: Cancelar
|
21
22
|
choose_a_country: Elige un país
|
22
23
|
choose_an_option: Elige una opción
|
@@ -17,6 +17,7 @@ fr:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} attaché."
|
18
18
|
attachment_class_detached: "%{attachment_class} détaché."
|
19
19
|
attachment_destroyed: Pièce jointe détruite
|
20
|
+
attachment_failed: Échec de l'ajout de %{attachment_class}
|
20
21
|
cancel: Annuler
|
21
22
|
choose_a_country: Sélectionnez un pays
|
22
23
|
choose_an_option: Sélectionnez une option
|
@@ -16,6 +16,7 @@ it:
|
|
16
16
|
attach_item: Allega %{item}
|
17
17
|
attachment_class_attached: "%{attachment_class} allegato."
|
18
18
|
attachment_class_detached: "%{attachment_class} staccato."
|
19
|
+
attachment_failed: "Impossibile allegare %{attachment_class}"
|
19
20
|
attachment_destroyed: Allegato distrutto
|
20
21
|
cancel: Annulla
|
21
22
|
choose_a_country: Scegli un paese
|
@@ -17,6 +17,7 @@ ja:
|
|
17
17
|
attachment_class_attached: "%{attachment_class}をアタッチしました。"
|
18
18
|
attachment_class_detached: "%{attachment_class}をデタッチしました。"
|
19
19
|
attachment_destroyed: アタッチは削除されました
|
20
|
+
attachment_failed: "%{attachment_class}の添付に失敗しました"
|
20
21
|
cancel: キャンセル
|
21
22
|
choose_a_country: 国を選択
|
22
23
|
choose_an_option: オプションを選択
|
@@ -17,6 +17,7 @@ nb:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} lagt til."
|
18
18
|
attachment_class_detached: "%{attachment_class} fjernet."
|
19
19
|
attachment_destroyed: Vedlett slettet
|
20
|
+
attachment_failed: Kunne ikke legge ved %{attachment_class}
|
20
21
|
cancel: Avbryt
|
21
22
|
choose_a_country: Velg et land
|
22
23
|
choose_an_option: Velg et alternativ
|
@@ -16,6 +16,7 @@ nl:
|
|
16
16
|
attach_item: "%{item} bijvoegen"
|
17
17
|
attachment_class_attached: "%{attachment_class} bijgevoegd."
|
18
18
|
attachment_class_detached: "%{attachment_class} losgekoppeld."
|
19
|
+
attachment_failed: "Kon %{attachment_class} niet bijvoegen"
|
19
20
|
attachment_destroyed: Bijlage verwijderd
|
20
21
|
cancel: Annuleren
|
21
22
|
choose_a_country: Kies een land
|
@@ -17,6 +17,7 @@ nn:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} lagt til."
|
18
18
|
attachment_class_detached: "%{attachment_class} fjerna."
|
19
19
|
attachment_destroyed: Vedlegg sletta
|
20
|
+
attachment_failed: Klarte ikkje å legge ved %{attachment_class}
|
20
21
|
cancel: Avbryt
|
21
22
|
choose_a_country: Vel eit land
|
22
23
|
choose_an_option: Vel eit alternativ
|
@@ -16,6 +16,7 @@ pl:
|
|
16
16
|
attach_item: Załącz %{item}
|
17
17
|
attachment_class_attached: "%{attachment_class} załączony."
|
18
18
|
attachment_class_detached: "%{attachment_class} odłączony."
|
19
|
+
attachment_failed: "Nie udało się dołączyć %{attachment_class}"
|
19
20
|
attachment_destroyed: Załącznik usunięty
|
20
21
|
cancel: Anuluj
|
21
22
|
choose_a_country: Wybierz kraj
|
@@ -17,6 +17,7 @@ pt-BR:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} anexado."
|
18
18
|
attachment_class_detached: "%{attachment_class} separado."
|
19
19
|
attachment_destroyed: Anexo destruído
|
20
|
+
attachment_failed: Não foi possível anexar %{attachment_class}
|
20
21
|
cancel: Cancelar
|
21
22
|
choose_a_country: Escolha um país
|
22
23
|
choose_an_option: Escolha uma opção
|
@@ -17,6 +17,7 @@ pt:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} anexado."
|
18
18
|
attachment_class_detached: "%{attachment_class} separado."
|
19
19
|
attachment_destroyed: Anexo destruído
|
20
|
+
attachment_failed: Não foi possível anexar %{attachment_class}
|
20
21
|
cancel: Cancelar
|
21
22
|
choose_a_country: Escolha um país
|
22
23
|
choose_an_option: Escolha uma opção
|
@@ -18,6 +18,7 @@ ro:
|
|
18
18
|
attachment_class_attached: "%{attachment_class} anexat."
|
19
19
|
attachment_class_detached: "%{attachment_class} separat."
|
20
20
|
attachment_destroyed: Atașamentul a fost distrus
|
21
|
+
attachment_failed: Nu s-a reușit atașarea %{attachment_class}
|
21
22
|
cancel: Anulează
|
22
23
|
choose_a_country: Alege o țară
|
23
24
|
choose_an_option: Alege o opțiune
|
@@ -16,6 +16,7 @@ ru:
|
|
16
16
|
attach_item: Прикрепить %{item}
|
17
17
|
attachment_class_attached: "%{attachment_class} прикреплено."
|
18
18
|
attachment_class_detached: "%{attachment_class} отсоединено."
|
19
|
+
attachment_failed: "Не удалось прикрепить %{attachment_class}"
|
19
20
|
attachment_destroyed: Вложение удалено
|
20
21
|
cancel: Отмена
|
21
22
|
choose_a_country: Выберите страну
|
@@ -17,6 +17,7 @@ tr:
|
|
17
17
|
attachment_class_attached: "%{attachment_class} ilişkilendirildi."
|
18
18
|
attachment_class_detached: "%{attachment_class} ilişkisi kesildi."
|
19
19
|
attachment_destroyed: Ek silindi
|
20
|
+
attachment_failed: "%{attachment_class} eklenemedi"
|
20
21
|
cancel: İptal et
|
21
22
|
choose_a_country: Bir ülke seç
|
22
23
|
choose_an_option: Bir seçenek seç
|
@@ -16,6 +16,7 @@ uk:
|
|
16
16
|
attach_item: Прикріпити %{item}
|
17
17
|
attachment_class_attached: "%{attachment_class} прикріплено."
|
18
18
|
attachment_class_detached: "%{attachment_class} відкріплено."
|
19
|
+
attachment_failed: "Не вдалося прикріпити %{attachment_class}"
|
19
20
|
attachment_destroyed: Вкладення знищено
|
20
21
|
cancel: Скасувати
|
21
22
|
choose_a_country: Виберіть країну
|
@@ -16,6 +16,7 @@ zh:
|
|
16
16
|
attach_item: 附加 %{item}
|
17
17
|
attachment_class_attached: "%{attachment_class} 已附加。"
|
18
18
|
attachment_class_detached: "%{attachment_class} 已分离。"
|
19
|
+
attachment_failed: "无法附加 %{attachment_class}"
|
19
20
|
attachment_destroyed: 附件已删除
|
20
21
|
cancel: 取消
|
21
22
|
choose_a_country: 选择一个国家
|
data/lib/tasks/avo_tasks.rake
CHANGED
@@ -79,7 +79,7 @@ task "avo:sym_link" do
|
|
79
79
|
`touch #{packages_path}/.keep`
|
80
80
|
end
|
81
81
|
|
82
|
-
["avo-advanced", "avo-pro", "avo-dynamic_filters", "avo-dashboards", "avo-menu"].each do |gem|
|
82
|
+
["avo-advanced", "avo-pro", "avo-dynamic_filters", "avo-dashboards", "avo-menu", "avo-kanban"].each do |gem|
|
83
83
|
path = `bundle show #{gem} 2> /dev/null`.chomp
|
84
84
|
|
85
85
|
# If path is emty we check if package is defined outside of root (on release process it is)
|
@@ -3671,7 +3671,7 @@ body[data-theme=dark], body.dark {
|
|
3671
3671
|
text-indent:1em
|
3672
3672
|
}
|
3673
3673
|
|
3674
|
-
/*! tailwindcss v3.4.
|
3674
|
+
/*! tailwindcss v3.4.7 | MIT License | https://tailwindcss.com
|
3675
3675
|
*/
|
3676
3676
|
|
3677
3677
|
/*
|
@@ -7342,10 +7342,18 @@ tag.tagify__tag{
|
|
7342
7342
|
bottom:0px
|
7343
7343
|
}
|
7344
7344
|
|
7345
|
+
.bottom-1{
|
7346
|
+
bottom:0.25rem
|
7347
|
+
}
|
7348
|
+
|
7345
7349
|
.bottom-full{
|
7346
7350
|
bottom:100%
|
7347
7351
|
}
|
7348
7352
|
|
7353
|
+
.end-1{
|
7354
|
+
inset-inline-end:0.25rem
|
7355
|
+
}
|
7356
|
+
|
7349
7357
|
.end-2{
|
7350
7358
|
inset-inline-end:0.5rem
|
7351
7359
|
}
|
@@ -7366,6 +7374,10 @@ tag.tagify__tag{
|
|
7366
7374
|
left:50%
|
7367
7375
|
}
|
7368
7376
|
|
7377
|
+
.left-5{
|
7378
|
+
left:1.25rem
|
7379
|
+
}
|
7380
|
+
|
7369
7381
|
.left-auto{
|
7370
7382
|
left:auto
|
7371
7383
|
}
|
@@ -7378,6 +7390,14 @@ tag.tagify__tag{
|
|
7378
7390
|
right:0.75rem
|
7379
7391
|
}
|
7380
7392
|
|
7393
|
+
.start-1{
|
7394
|
+
inset-inline-start:0.25rem
|
7395
|
+
}
|
7396
|
+
|
7397
|
+
.start-2{
|
7398
|
+
inset-inline-start:0.5rem
|
7399
|
+
}
|
7400
|
+
|
7381
7401
|
.top-0{
|
7382
7402
|
top:0px
|
7383
7403
|
}
|
@@ -7398,6 +7418,10 @@ tag.tagify__tag{
|
|
7398
7418
|
top:0.75rem
|
7399
7419
|
}
|
7400
7420
|
|
7421
|
+
.top-5{
|
7422
|
+
top:1.25rem
|
7423
|
+
}
|
7424
|
+
|
7401
7425
|
.top-\[-1px\]{
|
7402
7426
|
top:-1px
|
7403
7427
|
}
|
@@ -7870,6 +7894,16 @@ tag.tagify__tag{
|
|
7870
7894
|
aspect-ratio:16 / 9
|
7871
7895
|
}
|
7872
7896
|
|
7897
|
+
.size-1{
|
7898
|
+
width:0.25rem;
|
7899
|
+
height:0.25rem
|
7900
|
+
}
|
7901
|
+
|
7902
|
+
.size-2{
|
7903
|
+
width:0.5rem;
|
7904
|
+
height:0.5rem
|
7905
|
+
}
|
7906
|
+
|
7873
7907
|
.size-24{
|
7874
7908
|
width:6rem;
|
7875
7909
|
height:6rem
|
@@ -7910,6 +7944,10 @@ tag.tagify__tag{
|
|
7910
7944
|
height:4rem
|
7911
7945
|
}
|
7912
7946
|
|
7947
|
+
.h-2{
|
7948
|
+
height:0.5rem
|
7949
|
+
}
|
7950
|
+
|
7913
7951
|
.h-20{
|
7914
7952
|
height:5rem
|
7915
7953
|
}
|
@@ -8640,6 +8678,10 @@ tag.tagify__tag{
|
|
8640
8678
|
border-radius:0.25rem
|
8641
8679
|
}
|
8642
8680
|
|
8681
|
+
.rounded-2xl{
|
8682
|
+
border-radius:1rem
|
8683
|
+
}
|
8684
|
+
|
8643
8685
|
.rounded-full{
|
8644
8686
|
border-radius:9999px
|
8645
8687
|
}
|
@@ -8657,7 +8699,7 @@ tag.tagify__tag{
|
|
8657
8699
|
}
|
8658
8700
|
|
8659
8701
|
.rounded-xl{
|
8660
|
-
border-radius:
|
8702
|
+
border-radius:0.75rem
|
8661
8703
|
}
|
8662
8704
|
|
8663
8705
|
.rounded-l{
|
@@ -9830,6 +9872,11 @@ tag.tagify__tag{
|
|
9830
9872
|
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)
|
9831
9873
|
}
|
9832
9874
|
|
9875
|
+
.drop-shadow{
|
9876
|
+
--tw-drop-shadow:drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
|
9877
|
+
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)
|
9878
|
+
}
|
9879
|
+
|
9833
9880
|
.grayscale{
|
9834
9881
|
--tw-grayscale:grayscale(100%);
|
9835
9882
|
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)
|