tramway 2.0.3.4 → 2.0.4
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 +4 -4
- data/app/components/tailwinds/badge_component.rb +2 -2
- data/app/components/tailwinds/button_component.rb +24 -15
- data/app/components/tailwinds/containers/narrow_component.html.haml +2 -2
- data/app/components/tailwinds/form/date_field_component.html.haml +1 -2
- data/app/components/tailwinds/form/file_field_component.html.haml +1 -2
- data/app/components/tailwinds/form/label_component.html.haml +1 -1
- data/app/components/tailwinds/form/multiselect/dropdown_container.html.haml +1 -1
- data/app/components/tailwinds/form/multiselect/item_container.html.haml +2 -2
- data/app/components/tailwinds/form/multiselect/select_as_input.html.haml +1 -2
- data/app/components/tailwinds/form/multiselect/selected_item_template.html.haml +1 -1
- data/app/components/tailwinds/form/multiselect_component.html.haml +3 -3
- data/app/components/tailwinds/form/number_field_component.html.haml +2 -2
- data/app/components/tailwinds/form/select_component.html.haml +3 -3
- data/app/components/tailwinds/form/submit_button_component.html.haml +2 -2
- data/app/components/tailwinds/form/text_area_component.html.haml +2 -2
- data/app/components/tailwinds/form/text_field_component.html.haml +2 -2
- data/app/components/tailwinds/nav/item_component.rb +1 -2
- data/app/components/tailwinds/navbar_component.html.haml +3 -3
- data/app/components/tailwinds/navbar_component.rb +1 -31
- data/app/components/tailwinds/pagination/base.rb +4 -5
- data/app/components/tailwinds/pagination/gap_component.html.haml +2 -2
- data/app/components/tailwinds/pagination/page_component.html.haml +1 -1
- data/app/components/tailwinds/table/cell_component.html.haml +1 -1
- data/app/components/tailwinds/table/header_component.html.haml +1 -1
- data/app/components/tailwinds/table/row/preview_component.html.haml +2 -2
- data/app/components/tailwinds/table/row_component.html.haml +1 -1
- data/app/components/tailwinds/table/row_component.rb +3 -3
- data/app/components/tailwinds/table_component.html.haml +1 -1
- data/app/components/tailwinds/title_component.html.haml +1 -1
- data/app/views/tramway/layouts/application.html.haml +1 -1
- data/config/tailwind.config.js +42 -28
- data/lib/tramway/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6ff06a67cd963b32a286efe781e1bafe4a724ac7aec363d532a977f25f4f1120
|
|
4
|
+
data.tar.gz: a7747754a0166d497f42c414bf5d5b44e422de164fc0f0951d74928bfbdea636
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 85151bcb6a37f71972d5fc6494d36e026e2796e92b4988063e9cacd9d369415847a1aa20ca9cf86ec592c0851da4701c79063f96db1ffec4ed3db68b241b824d
|
|
7
|
+
data.tar.gz: 54bce62f0896125d142ad323914c7d7385f4e35469fac027fbfcec81dee4cf7c13afb641e5b0b20c5118acf2cd3298e733fa5e772515b71b750c7c59b4b097c5
|
|
@@ -10,8 +10,8 @@ module Tailwinds
|
|
|
10
10
|
|
|
11
11
|
def classes
|
|
12
12
|
[
|
|
13
|
-
'flex', 'px-3', 'py-1', 'text-sm', 'font-semibold', 'text-white',
|
|
14
|
-
"
|
|
13
|
+
'flex', 'px-3', 'py-1', 'text-sm', 'font-semibold', 'text-white',
|
|
14
|
+
"bg-#{resolved_color}-600", 'rounded-full', 'w-fit', 'h-fit'
|
|
15
15
|
]
|
|
16
16
|
end
|
|
17
17
|
end
|
|
@@ -24,9 +24,8 @@ module Tailwinds
|
|
|
24
24
|
|
|
25
25
|
def classes
|
|
26
26
|
(default_classes +
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
(link ? %w[px-1 h-fit] : ['cursor-pointer'])).compact.join(' ')
|
|
27
|
+
color_classes +
|
|
28
|
+
(link ? %w[px-1 h-fit] : [cursor_class])).compact.join(' ')
|
|
30
29
|
end
|
|
31
30
|
|
|
32
31
|
def default_classes
|
|
@@ -36,20 +35,30 @@ module Tailwinds
|
|
|
36
35
|
]
|
|
37
36
|
end
|
|
38
37
|
|
|
39
|
-
def
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
def color_classes
|
|
39
|
+
if disabled?
|
|
40
|
+
%w[bg-gray-400 text-gray-100]
|
|
41
|
+
else
|
|
42
|
+
[
|
|
43
|
+
"bg-#{resolved_color}-600",
|
|
44
|
+
"hover:bg-#{resolved_color}-800",
|
|
45
|
+
'text-gray-300'
|
|
46
|
+
]
|
|
47
|
+
end
|
|
45
48
|
end
|
|
46
49
|
|
|
47
|
-
def
|
|
48
|
-
[
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
def disabled?
|
|
51
|
+
options[:disabled] || false
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def cursor_class
|
|
57
|
+
if !link && !disabled?
|
|
58
|
+
'cursor-pointer'
|
|
59
|
+
else
|
|
60
|
+
'cursor-not-allowed'
|
|
61
|
+
end
|
|
53
62
|
end
|
|
54
63
|
end
|
|
55
64
|
end
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
.container.p-4.flex.align-center.justify-center.w-full.mx-auto.bg-gray-
|
|
2
|
-
.flex.flex-col.justify-center.w-full
|
|
1
|
+
.container.p-4.flex.align-center.justify-center.w-full.mx-auto.bg-gray-900.text-white{ id: }
|
|
2
|
+
.flex.flex-col.justify-center.w-full
|
|
3
3
|
= content
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
- base_classes = 'w-full
|
|
6
|
-
- base_classes += 'dark:bg-gray-800 dark:border-gray-600 dark:text-white dark:focus:border-red-400 dark:placeholder-white'
|
|
5
|
+
- base_classes = 'w-full border rounded focus:outline-none bg-gray-800 border-gray-600 text-white focus:border-red-400 placeholder-white'
|
|
7
6
|
- classes = "#{size_class(:text_input)} #{base_classes}"
|
|
8
7
|
= @input.call @attribute, **@options.merge(class: classes), value: @value
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
.mb-4
|
|
2
2
|
- if @label
|
|
3
|
-
- base_classes = 'inline-block
|
|
4
|
-
- base_classes += 'dark:bg-blue-600 dark:hover:bg-blue-500'
|
|
3
|
+
- base_classes = 'inline-block text-white font-bold rounded cursor-pointer mt-4 bg-blue-600 hover:bg-blue-500'
|
|
5
4
|
- classes = "#{size_class(:file_button)} #{base_classes}"
|
|
6
5
|
%label{ for: @for, class: classes }
|
|
7
6
|
= @label
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
%label.block.text-
|
|
1
|
+
%label.block.text-sm.font-bold.mb-2.text-white{ for: }
|
|
2
2
|
= content
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#dropdown.absolute.shadow.top-11.
|
|
1
|
+
#dropdown.absolute.shadow.top-11.z-40.w-full.lef-0.rounded.max-h-select.overflow-y-auto.bg-gray-800.shadow-lg.ring-1.ring-gray-700{ data: { action: "click@window->multiselect#closeOnClickOutside" } }
|
|
2
2
|
.flex.flex-col.w-full
|
|
3
3
|
{{content}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
.cursor-pointer.w-full.
|
|
2
|
-
.flex.w-full.items-center.p-2.pl-2.border-transparent.border-l-2.relative.hover:border-
|
|
1
|
+
.cursor-pointer.w-full.rounded-t.border-b.border-gray-700.hover:bg-gray-700{ data: { action: "click->multiselect#toggleItem", text: "{{text}}", value: "{{value}}" } }
|
|
2
|
+
.flex.w-full.items-center.p-2.pl-2.border-transparent.border-l-2.relative.hover:border-gray-600
|
|
3
3
|
.w-full.items-center.flex.dark:text-gray-100
|
|
4
4
|
.mx-2.leading-6
|
|
5
5
|
{{text}}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
.flex-1
|
|
2
|
-
- base_classes = 'bg-transparent appearance-none outline-none h-full w-full text-
|
|
3
|
-
- base_classes += 'dark:text-white dark:placeholder-white'
|
|
2
|
+
- base_classes = 'bg-transparent appearance-none outline-none h-full w-full hidden text-white placeholder-white'
|
|
4
3
|
- classes = "#{@size_class} #{base_classes}"
|
|
5
4
|
= @input.call(@attribute, @options.merge(placeholder: "{{placeholder}}", class: classes, data: { 'multiselect-target' => 'hiddenInput' }))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.flex.justify-center.items-center.m-1.font-medium.py-1.px-2.
|
|
1
|
+
.flex.justify-center.items-center.m-1.font-medium.py-1.px-2.rounded-full.border.bg-teal-900.text-teal-100.border-teal-700
|
|
2
2
|
.text-xs.font-normal.leading-none.max-w-full.flex-initial
|
|
3
3
|
{{text}}
|
|
4
4
|
.flex.flex-auto.flex-row-reverse
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
.flex.flex-col.relative.
|
|
5
|
+
.flex.flex-col.relative.text-gray-100{ data: multiselect_hash, id: "#{@for}_multiselect" }
|
|
6
6
|
.min-w-96.w-fit
|
|
7
|
-
.p-1.flex.border.
|
|
7
|
+
.p-1.flex.border.rounded.border-gray-600.bg-gray-800{ data: { "multiselect-target" => "dropdown" } }
|
|
8
8
|
.flex.flex-auto.flex-wrap{ data: { "multiselect-target" => "showSelectedArea" } }
|
|
9
|
-
.
|
|
9
|
+
.w-8.py-1.pl-2.pr-1.border-l.flex.items-center.text-gray-500.border-gray-600
|
|
10
10
|
^
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
- base_classes = 'w-full
|
|
6
|
-
- base_classes += '
|
|
5
|
+
- base_classes = 'w-full border rounded focus:outline-none '
|
|
6
|
+
- base_classes += 'bg-gray-800 border-gray-600 text-white focus:border-red-400 placeholder-white'
|
|
7
7
|
- classes = "#{size_class(:text_input)} #{base_classes}"
|
|
8
8
|
= @input.call @attribute, **@options.merge(class: classes), value: @value
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
- base_classes = 'w-full
|
|
6
|
-
- base_classes += 'focus:border-transparent disabled:
|
|
7
|
-
- base_classes += '
|
|
5
|
+
- base_classes = 'w-full border rounded focus:outline-none focus:ring-2 '
|
|
6
|
+
- base_classes += 'focus:border-transparent disabled:cursor-not-allowed '
|
|
7
|
+
- base_classes += 'bg-gray-800 border-gray-600 text-gray-100 focus:ring-red-400 disabled:bg-gray-800 disabled:text-gray-500'
|
|
8
8
|
- classes = "#{size_class(:select_input)} #{base_classes}"
|
|
9
9
|
= @input.call(@attribute, @collection, { selected: @value }, @options.merge(class: classes))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.flex.items-center.justify-between
|
|
2
|
-
- base_classes = '
|
|
3
|
-
- base_classes += '
|
|
2
|
+
- base_classes = 'hover:bg-red-700 font-bold rounded focus:outline-none focus:shadow-outline cursor-pointer '
|
|
3
|
+
- base_classes += 'text-white bg-red-600 hover:bg-red-500 focus:ring-2 focus:ring-red-400'
|
|
4
4
|
- classes = "#{size_class(:submit_button)} #{base_classes}"
|
|
5
5
|
|
|
6
6
|
= helpers.tramway_button text: @text,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
- base_classes = 'w-full
|
|
6
|
-
- base_classes += '
|
|
5
|
+
- base_classes = 'w-full border rounded focus:outline-none '
|
|
6
|
+
- base_classes += 'bg-gray-800 border-gray-600 text-white focus:border-red-400 placeholder-white'
|
|
7
7
|
- classes = "#{size_class(:text_input)} #{base_classes}"
|
|
8
8
|
= @input.call @attribute, **@options.merge(class: classes), value: @value
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
- if @label
|
|
3
3
|
= component('tailwinds/form/label', for: @for) do
|
|
4
4
|
= @label
|
|
5
|
-
- base_classes = 'w-full
|
|
6
|
-
- base_classes += '
|
|
5
|
+
- base_classes = 'w-full border rounded focus:outline-none '
|
|
6
|
+
- base_classes += 'bg-gray-800 border-gray-600 text-white focus:border-red-400 placeholder-white'
|
|
7
7
|
- classes = "#{size_class(:text_input)} #{base_classes}"
|
|
8
8
|
= @input.call @attribute, **@options.merge(class: classes), value: @value
|
|
@@ -7,8 +7,7 @@ module Tailwinds
|
|
|
7
7
|
class ItemComponent < TailwindComponent
|
|
8
8
|
def style
|
|
9
9
|
@style ||= [
|
|
10
|
-
'
|
|
11
|
-
'dark:hover:bg-gray-700', 'dark:hover:text-gray-400', 'dark:text-white'
|
|
10
|
+
'px-4', 'py-2', 'rounded', 'whitespace-nowrap', 'hover:bg-gray-700', 'hover:text-gray-400', 'text-white'
|
|
12
11
|
].join(' ')
|
|
13
12
|
end
|
|
14
13
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
%nav.py-2.px-4.sm:px-8.flex.justify-between.items-center.
|
|
1
|
+
%nav.py-2.px-4.sm:px-8.flex.justify-between.items-center.bg-gray-800
|
|
2
2
|
.flex.justify-between.w-full
|
|
3
3
|
- if @title[:text].present? || @left_items.present?
|
|
4
4
|
.flex.items-center
|
|
5
5
|
- if @title[:text].present?
|
|
6
6
|
= link_to @title[:link] do
|
|
7
|
-
.text-xl.
|
|
7
|
+
.text-xl.font-bold.text-white
|
|
8
8
|
= @title[:text]
|
|
9
9
|
- if @left_items.present?
|
|
10
10
|
%ul.flex-row.items-center.space-x-4.ml-4.hidden.md:flex
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
- @right_items.each do |item|
|
|
21
21
|
= item
|
|
22
22
|
|
|
23
|
-
#mobile-menu.hidden.flex-col.sm:hidden.
|
|
23
|
+
#mobile-menu.hidden.flex-col.sm:hidden.bg-gray-800
|
|
24
24
|
- if @left_items.present?
|
|
25
25
|
%ul.flex.flex-col.space-y-2
|
|
26
26
|
- @left_items.each do |item|
|
|
@@ -1,42 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Tailwinds
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
module BackgroundHelper
|
|
7
|
-
CSS_COLORS = %i[aqua black blue fuchsia gray green lime maroon navy olive orange purple red
|
|
8
|
-
silver teal white yellow].freeze
|
|
9
|
-
MIN_INTENSITY = 100
|
|
10
|
-
MAX_INTENSITY = 950
|
|
11
|
-
DEFAULT_BACKGROUND_COLOR = :purple
|
|
12
|
-
DEFAULT_BACKGROUND_INTENSITY = 700
|
|
13
|
-
|
|
14
|
-
def self.background(options)
|
|
15
|
-
color = options.dig(:background, :color) || DEFAULT_BACKGROUND_COLOR
|
|
16
|
-
intensity = options.dig(:background, :intensity) || DEFAULT_BACKGROUND_INTENSITY
|
|
17
|
-
|
|
18
|
-
unless (MIN_INTENSITY..MAX_INTENSITY).cover?(intensity)
|
|
19
|
-
raise "Navigation Background Color intensity should be between #{MIN_INTENSITY} and #{MAX_INTENSITY}"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
if color.in? CSS_COLORS
|
|
23
|
-
"#{color}-#{intensity}"
|
|
24
|
-
else
|
|
25
|
-
"[#{color}]"
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Navbar class main class
|
|
31
|
-
#
|
|
4
|
+
# Navbar component
|
|
32
5
|
class NavbarComponent < TailwindComponent
|
|
33
|
-
include Tailwinds::BackgroundHelper
|
|
34
|
-
|
|
35
6
|
def initialize(**options)
|
|
36
7
|
@title = { text: options[:title], link: options[:title_link] || '/' }
|
|
37
8
|
@left_items = options[:left_items]
|
|
38
9
|
@right_items = options[:right_items]
|
|
39
|
-
@color = BackgroundHelper.background(options)
|
|
40
10
|
end
|
|
41
11
|
end
|
|
42
12
|
end
|
|
@@ -8,15 +8,14 @@ module Tailwinds
|
|
|
8
8
|
option :url
|
|
9
9
|
option :remote
|
|
10
10
|
|
|
11
|
-
# :reek:UtilityFunction { enabled: false }
|
|
12
11
|
def pagination_classes(klass: nil)
|
|
13
|
-
default_classes = [
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
default_classes = [
|
|
13
|
+
'cursor-pointer', 'px-3', 'py-2', 'font-medium', 'rounded-md', 'text-white', 'bg-gray-800',
|
|
14
|
+
'hover:bg-gray-700'
|
|
15
|
+
]
|
|
16
16
|
|
|
17
17
|
(default_classes + [klass]).join(' ')
|
|
18
18
|
end
|
|
19
|
-
# :reek:UtilityFunction { enabled: true }
|
|
20
19
|
end
|
|
21
20
|
end
|
|
22
21
|
end
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
%div.flex.justify-end.mt-2
|
|
2
|
-
%span.page.gap.px-3.py-2.text-sm.font-medium.text-
|
|
3
|
-
= helpers.t('views.pagination.truncate').html_safe
|
|
2
|
+
%span.page.gap.px-3.py-2.text-sm.font-medium.text-white.sm:flex.hidden
|
|
3
|
+
= helpers.t('views.pagination.truncate').html_safe
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.div-table-cell.md:block.first:block.hidden.px-6.py-4.font-medium.text-
|
|
1
|
+
.div-table-cell.md:block.first:block.hidden.px-6.py-4.font-medium.text-white.text-base
|
|
2
2
|
= content
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.div-table-row.grid.text-
|
|
1
|
+
.div-table-row.grid.text-small.gap-4.bg-gray-700.text-gray-400.grid-cols-1{ class: "md:grid-cols-#{columns_count}", aria: { label: "Table Header" }, role: "row" }
|
|
2
2
|
- if headers.any?
|
|
3
3
|
- headers.each do |header|
|
|
4
4
|
.div-table-cell.py-4.px-6.first:block.hidden.md:block
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
animation: roll-up 0.5s ease-in-out;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
#roll-up.fixed.hidden.inset-x-0.bottom-0.
|
|
17
|
-
%button.absolute.top-4.
|
|
16
|
+
#roll-up.fixed.hidden.inset-x-0.bottom-0.shadow-lg.z-50.bg-gray-800.animate-roll-up{ class: 'h-1/2' }
|
|
17
|
+
%button.absolute.top-4.right-4.text-gray-400.hover:text-gray-200{ "data-action" => "click->preview#close", "data-controller" => "preview" }
|
|
18
18
|
✕
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
- if cells.any?
|
|
2
2
|
= row_tag class: desktop_row_classes(cells.count), **options do
|
|
3
3
|
- cells.each do |(_, value)|
|
|
4
|
-
.div-table-cell.px-6.py-4.font-medium.text-
|
|
4
|
+
.div-table-cell.px-6.py-4.font-medium.text-white.text-xs.sm:text-base
|
|
5
5
|
= value
|
|
6
6
|
|
|
7
7
|
- else
|
|
@@ -24,13 +24,13 @@ module Tailwinds
|
|
|
24
24
|
|
|
25
25
|
def desktop_row_classes(cells_count)
|
|
26
26
|
[
|
|
27
|
-
'div-table-row', 'grid', 'gap-4', '
|
|
28
|
-
'
|
|
27
|
+
'div-table-row', 'grid', 'gap-4', 'border-b', 'last:border-b-0', 'bg-gray-800',
|
|
28
|
+
'border-gray-700', "md:grid-cols-#{cells_count}", 'grid-cols-1'
|
|
29
29
|
].join(' ')
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def link_row_classes
|
|
33
|
-
'cursor-pointer hover:bg-gray-
|
|
33
|
+
'cursor-pointer hover:bg-gray-700'
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
end
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
|
|
3
3
|
- width_class = options[:class]&.include?('w-') ? '' : 'w-full'
|
|
4
4
|
|
|
5
|
-
.div-table.text-left.rtl:text-right.text-gray-
|
|
5
|
+
.div-table.text-left.rtl:text-right.text-gray-400{ class: "#{options[:class]} #{width_class}", **options.except(:class) }
|
|
6
6
|
= content
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
/ Includes all stylesheet files in app/assets/stylesheets
|
|
20
20
|
= stylesheet_link_tag "tailwind", "data-turbo-track": "reload"
|
|
21
21
|
|
|
22
|
-
%body.bg-gray-
|
|
22
|
+
%body.bg-gray-900.text-white
|
|
23
23
|
= tramway_navbar title: 'Tramway'
|
|
24
24
|
|
|
25
25
|
- if flash.any?
|
data/config/tailwind.config.js
CHANGED
|
@@ -98,14 +98,14 @@ module.exports = {
|
|
|
98
98
|
'hover:text-gray-800',
|
|
99
99
|
|
|
100
100
|
// === Dark mode pagination styles ===
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
'
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
107
|
-
'
|
|
108
|
-
'
|
|
101
|
+
'text-white',
|
|
102
|
+
'bg-gray-800',
|
|
103
|
+
'hover:bg-gray-700',
|
|
104
|
+
'bg-gray-900',
|
|
105
|
+
'bg-gray-700',
|
|
106
|
+
'text-gray-400',
|
|
107
|
+
'hover:text-gray-400',
|
|
108
|
+
'placeholder-gray-400',
|
|
109
109
|
|
|
110
110
|
// === Button and badge helpers ===
|
|
111
111
|
'bg-purple-700',
|
|
@@ -121,41 +121,55 @@ module.exports = {
|
|
|
121
121
|
|
|
122
122
|
// === Button color presets ===
|
|
123
123
|
'bg-gray-500',
|
|
124
|
+
'bg-gray-600',
|
|
124
125
|
'hover:bg-gray-700',
|
|
125
|
-
'
|
|
126
|
-
|
|
126
|
+
'hover:bg-gray-800',
|
|
127
|
+
|
|
127
128
|
'bg-blue-500',
|
|
129
|
+
'bg-blue-600',
|
|
128
130
|
'hover:bg-blue-700',
|
|
129
|
-
'
|
|
130
|
-
|
|
131
|
+
'hover:bg-blue-800',
|
|
132
|
+
|
|
131
133
|
'bg-zinc-500',
|
|
134
|
+
'bg-zinc-600',
|
|
132
135
|
'hover:bg-zinc-700',
|
|
133
|
-
'
|
|
134
|
-
|
|
136
|
+
'hover:bg-zinc-800',
|
|
137
|
+
|
|
138
|
+
'bg-green-400',
|
|
135
139
|
'bg-green-500',
|
|
140
|
+
'bg-green-600',
|
|
136
141
|
'hover:bg-green-700',
|
|
137
|
-
'
|
|
138
|
-
|
|
142
|
+
'hover:bg-green-800',
|
|
143
|
+
|
|
139
144
|
'bg-orange-500',
|
|
145
|
+
'bg-orange-600',
|
|
140
146
|
'hover:bg-orange-700',
|
|
141
|
-
'
|
|
142
|
-
|
|
147
|
+
'hover:bg-orange-800',
|
|
148
|
+
|
|
143
149
|
'bg-red-500',
|
|
150
|
+
'bg-red-600',
|
|
144
151
|
'hover:bg-red-700',
|
|
145
|
-
'
|
|
146
|
-
|
|
152
|
+
'hover:bg-red-800',
|
|
153
|
+
|
|
147
154
|
'bg-violet-500',
|
|
155
|
+
'bg-violet-600',
|
|
148
156
|
'hover:bg-violet-700',
|
|
149
|
-
'
|
|
150
|
-
|
|
157
|
+
'hover:bg-violet-800',
|
|
158
|
+
|
|
151
159
|
'bg-indigo-500',
|
|
160
|
+
'bg-indigo-600',
|
|
152
161
|
'hover:bg-indigo-700',
|
|
153
|
-
'
|
|
154
|
-
|
|
162
|
+
'hover:bg-indigo-800',
|
|
163
|
+
|
|
155
164
|
'bg-yellow-500',
|
|
165
|
+
'bg-yellow-600',
|
|
156
166
|
'hover:bg-yellow-700',
|
|
157
|
-
'
|
|
158
|
-
|
|
167
|
+
'hover:bg-yellow-800',
|
|
168
|
+
|
|
169
|
+
// === Button Disabled state ===
|
|
170
|
+
'bg-gray-400',
|
|
171
|
+
'text-gray-400',
|
|
172
|
+
'text-gray-100',
|
|
159
173
|
|
|
160
174
|
// === Form state helpers ===
|
|
161
175
|
'disabled:bg-gray-100',
|
|
@@ -175,8 +189,8 @@ module.exports = {
|
|
|
175
189
|
'max-h-select',
|
|
176
190
|
'overflow-y-auto',
|
|
177
191
|
'cursor-pointer',
|
|
178
|
-
'
|
|
179
|
-
'
|
|
192
|
+
'border-gray-600',
|
|
193
|
+
'text-gray-100',
|
|
180
194
|
|
|
181
195
|
// === Multiselect option styling ===
|
|
182
196
|
'border-b',
|
data/lib/tramway/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tramway
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kalashnikovisme
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2025-12-
|
|
12
|
+
date: 2025-12-29 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: anyway_config
|