# typed: false # frozen_string_literal: true module Ariadne module UI module Flash class Component < Ariadne::BaseComponent option :type option :dismissible, default: proc { false } option :title option :message accepts_html_attributes do |html_attrs| html_attrs[:data] = { controller: "flash", transition_enter: "ariadne-transform ariadne-ease-out ariadne-duration-300 ariadne-transition-all", transition_enter_start: "ariadne-translate-y-2 ariadne-opacity-0 sm:ariadne-translate-y-0 sm:ariadne-translate-x-2", transition_enter_end: "ariadne-translate-y-0 ariadne-opacity-100 sm:ariadne-translate-x-0", transition_leave: "ariadne-transition-all ariadne-ease-in ariadne-duration-100", transition_leave_start: "ariadne-opacity-100", transition_leave_end: "ariadne-opacity-0", } html_attrs[:class] = Ariadne::ViewComponents.tailwind_merger.merge([ html_attrs[:class], style(type:), ]) end renders_one :icon, Ariadne::UI::Heroicon::Component def dismissable? dismissible end style do base do [ "ariadne-pointer-events-auto", "ariadne-w-full", "ariadne-max-w-sm", "ariadne-overflow-hidden", "ariadne-rounded-lg", "ariadne-shadow-lg", "ariadne-ring-1", "ariadne-ring-slate-950", "ariadne-ring-opacity-5", "ariadne-z-50", ] end variants do type do danger do [ "ariadne-bg-red-50", ] end warning do [ "ariadne-bg-yellow-50", ] end info do [ "ariadne-bg-blue-50", ] end success do [ "ariadne-bg-green-50", ] end end end end style(:text) do variants do type do danger do [ "ariadne-text-red-700", ] end warning do [ "ariadne-text-yellow-700", ] end info do [ "ariadne-text-blue-700", ] end success do [ "ariadne-text-green-700", ] end end end end style(:dismissable) do variants do type do danger do [ "ariadne-text-red-700", ] end warning do [ "ariadne-text-yellow-700", ] end info do [ "ariadne-text-blue-700", ] end success do [ "ariadne-text-green-700", ] end end end end end end end end