tina4ruby 3.13.97 → 3.13.98

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc06b125fb780e5f4703244636215011a65c6ee220081fcd02b4f73fa37db06c
4
- data.tar.gz: a4ebef28a619dff925c104eb3e93c0632cf9cf47c9f84d15aff0c1658345eae0
3
+ metadata.gz: db66aec06f70379f6d717725d53c4d0a8a93c98f90cd65dff744e787a3c91593
4
+ data.tar.gz: 40240b850e132eec2cca262192eda3f6b3d228a2ee7c691d3b8d190a1e92bac6
5
5
  SHA512:
6
- metadata.gz: e3e081993e4da7a7ba4fd6fdd487ed06428bb5ccc7cd212dcee1e50ff309cfe30c342f14b4d17c4208067a558f089bc5300d4f6ee219967497dd43a17baa357a
7
- data.tar.gz: 5a6123804aef171532d90d81230e6f45d6fd47a92c4820afe8416670372de57cd6afa1f66e05d493a57446ef4a0c4711ad3dd3281a2e369df99f551bc161df2f
6
+ metadata.gz: 4b693353e1ae71d945e7f4b4526668c7e59a57a8fe440be5355a57015857b66b7be83663573ed74340e97122ac6cbccfb70fb22294d6c8559e058f66f6615ca2
7
+ data.tar.gz: 1d350415d02e713d96ffc3730d9aad377d011f5079caafffeae046e2ff51f3813ca640eecc91559d0fe9ae29999666f99f71aadc1528716f15d8234ce3f66d63
data/lib/tina4/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tina4
4
- VERSION = "3.13.97"
4
+ VERSION = "3.13.98"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tina4ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.13.97
4
+ version: 3.13.98
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tina4 Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-08-07 00:00:00.000000000 Z
11
+ date: 2026-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -434,23 +434,6 @@ files:
434
434
  - lib/tina4/response.rb
435
435
  - lib/tina4/response_cache.rb
436
436
  - lib/tina4/router.rb
437
- - lib/tina4/scss/tina4css/_alerts.scss
438
- - lib/tina4/scss/tina4css/_badges.scss
439
- - lib/tina4/scss/tina4css/_buttons.scss
440
- - lib/tina4/scss/tina4css/_cards.scss
441
- - lib/tina4/scss/tina4css/_forms.scss
442
- - lib/tina4/scss/tina4css/_grid.scss
443
- - lib/tina4/scss/tina4css/_modals.scss
444
- - lib/tina4/scss/tina4css/_nav.scss
445
- - lib/tina4/scss/tina4css/_pagination.scss
446
- - lib/tina4/scss/tina4css/_reset.scss
447
- - lib/tina4/scss/tina4css/_tables.scss
448
- - lib/tina4/scss/tina4css/_typography.scss
449
- - lib/tina4/scss/tina4css/_utilities.scss
450
- - lib/tina4/scss/tina4css/_variables.scss
451
- - lib/tina4/scss/tina4css/base.scss
452
- - lib/tina4/scss/tina4css/colors.scss
453
- - lib/tina4/scss/tina4css/tina4.scss
454
437
  - lib/tina4/seeder.rb
455
438
  - lib/tina4/service.rb
456
439
  - lib/tina4/service_runner.rb
@@ -1,34 +0,0 @@
1
- // Tina4 CSS Framework - Alerts
2
- // -------------------------------
3
-
4
- .alert {
5
- position: relative;
6
- padding: 0.75rem 1rem;
7
- margin-bottom: 1rem;
8
- border: 1px solid transparent;
9
- border-radius: $border-radius;
10
- }
11
-
12
- @each $name, $color in $theme-colors {
13
- .alert-#{$name} {
14
- color: darken($color, 25%);
15
- background-color: lighten($color, 35%);
16
- border-color: lighten($color, 25%);
17
- }
18
- }
19
-
20
- .alert-dismissible {
21
- padding-right: 3rem;
22
- .btn-close {
23
- position: absolute;
24
- top: 0;
25
- right: 0;
26
- padding: 0.9375rem 1rem;
27
- background: transparent;
28
- border: 0;
29
- cursor: pointer;
30
- color: inherit;
31
- opacity: 0.5;
32
- &:hover { opacity: 0.75; }
33
- }
34
- }
@@ -1,22 +0,0 @@
1
- // Tina4 CSS Framework - Badges
2
- // -------------------------------
3
-
4
- .badge {
5
- display: inline-block;
6
- padding: 0.25em 0.65em;
7
- font-size: 0.75em;
8
- font-weight: $font-weight-bold;
9
- line-height: 1;
10
- color: $white;
11
- text-align: center;
12
- white-space: nowrap;
13
- vertical-align: baseline;
14
- border-radius: $border-radius-pill;
15
- }
16
-
17
- @each $name, $color in $theme-colors {
18
- .badge-#{$name} {
19
- color: if($name == "light" or $name == "warning", $dark, $white);
20
- background-color: $color;
21
- }
22
- }
@@ -1,69 +0,0 @@
1
- // Tina4 CSS Framework - Buttons
2
- // --------------------------------
3
-
4
- .btn {
5
- display: inline-block;
6
- font-weight: $font-weight-normal;
7
- line-height: $line-height-base;
8
- color: $body-color;
9
- text-align: center;
10
- vertical-align: middle;
11
- cursor: pointer;
12
- user-select: none;
13
- background-color: transparent;
14
- border: 1px solid transparent;
15
- padding: 0.375rem 0.75rem;
16
- font-size: $font-size-base;
17
- border-radius: $border-radius;
18
- transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
19
- text-decoration: none;
20
-
21
- &:disabled, &.disabled {
22
- pointer-events: none;
23
- opacity: 0.65;
24
- }
25
- }
26
-
27
- // Solid buttons
28
- @each $name, $color in $theme-colors {
29
- $text: if($name == "light" or $name == "warning", $dark, $white);
30
- .btn-#{$name} {
31
- color: $text;
32
- background-color: $color;
33
- border-color: $color;
34
- &:hover {
35
- background-color: darken($color, 8%);
36
- border-color: darken($color, 10%);
37
- }
38
- }
39
- }
40
-
41
- // Outline buttons
42
- @each $name, $color in $theme-colors {
43
- .btn-outline-#{$name} {
44
- color: $color;
45
- border-color: $color;
46
- background-color: transparent;
47
- &:hover {
48
- color: if($name == "light" or $name == "warning", $dark, $white);
49
- background-color: $color;
50
- }
51
- }
52
- }
53
-
54
- .btn-sm {
55
- padding: 0.25rem 0.5rem;
56
- font-size: $font-size-sm;
57
- border-radius: $border-radius-sm;
58
- }
59
-
60
- .btn-lg {
61
- padding: 0.5rem 1rem;
62
- font-size: $font-size-lg;
63
- border-radius: $border-radius-lg;
64
- }
65
-
66
- .btn-block {
67
- display: block;
68
- width: 100%;
69
- }
@@ -1,49 +0,0 @@
1
- // Tina4 CSS Framework - Cards
2
- // ------------------------------
3
-
4
- .card {
5
- position: relative;
6
- display: flex;
7
- flex-direction: column;
8
- min-width: 0;
9
- word-wrap: break-word;
10
- background-color: $white;
11
- background-clip: border-box;
12
- border: 1px solid rgba($black, 0.125);
13
- border-radius: $border-radius-lg;
14
- }
15
-
16
- .card-header {
17
- padding: 0.75rem 1rem;
18
- margin-bottom: 0;
19
- background-color: rgba($black, 0.03);
20
- border-bottom: 1px solid rgba($black, 0.125);
21
- &:first-child { border-radius: calc($border-radius-lg - 1px) calc($border-radius-lg - 1px) 0 0; }
22
- }
23
-
24
- .card-body {
25
- flex: 1 1 auto;
26
- padding: 1rem;
27
- }
28
-
29
- .card-footer {
30
- padding: 0.75rem 1rem;
31
- background-color: rgba($black, 0.03);
32
- border-top: 1px solid rgba($black, 0.125);
33
- &:last-child { border-radius: 0 0 calc($border-radius-lg - 1px) calc($border-radius-lg - 1px); }
34
- }
35
-
36
- .card-title {
37
- margin-bottom: 0.5rem;
38
- font-weight: $font-weight-bold;
39
- }
40
-
41
- .card-text:last-child {
42
- margin-bottom: 0;
43
- }
44
-
45
- .card-img-top {
46
- width: 100%;
47
- border-top-left-radius: calc($border-radius-lg - 1px);
48
- border-top-right-radius: calc($border-radius-lg - 1px);
49
- }
@@ -1,156 +0,0 @@
1
- // Tina4 CSS Framework - Forms
2
- // ------------------------------
3
-
4
- .form-group {
5
- margin-bottom: 1rem;
6
- }
7
-
8
- .form-label {
9
- display: inline-block;
10
- margin-bottom: 0.5rem;
11
- font-weight: $font-weight-bold;
12
- }
13
-
14
- .form-control {
15
- display: block;
16
- width: 100%;
17
- padding: 0.375rem 0.75rem;
18
- font-size: $font-size-base;
19
- font-weight: $font-weight-normal;
20
- line-height: $line-height-base;
21
- color: $body-color;
22
- background-color: $white;
23
- background-clip: padding-box;
24
- border: 1px solid #ced4da;
25
- border-radius: $border-radius;
26
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
27
- appearance: none;
28
-
29
- &:focus {
30
- color: $body-color;
31
- background-color: $white;
32
- border-color: lighten($primary, 25%);
33
- outline: 0;
34
- box-shadow: 0 0 0 0.2rem rgba($primary, 0.25);
35
- }
36
-
37
- &::placeholder {
38
- color: $muted;
39
- opacity: 1;
40
- }
41
-
42
- &:disabled {
43
- background-color: $light;
44
- opacity: 1;
45
- }
46
- }
47
-
48
- textarea.form-control {
49
- min-height: calc(1.5em + 0.75rem + 2px);
50
- }
51
-
52
- .form-select {
53
- display: block;
54
- width: 100%;
55
- padding: 0.375rem 2.25rem 0.375rem 0.75rem;
56
- font-size: $font-size-base;
57
- font-weight: $font-weight-normal;
58
- line-height: $line-height-base;
59
- color: $body-color;
60
- background-color: $white;
61
- border: 1px solid #ced4da;
62
- border-radius: $border-radius;
63
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
64
- appearance: none;
65
-
66
- &:focus {
67
- border-color: lighten($primary, 25%);
68
- outline: 0;
69
- box-shadow: 0 0 0 0.2rem rgba($primary, 0.25);
70
- }
71
- }
72
-
73
- // Checkboxes and radios
74
- .form-check {
75
- display: block;
76
- min-height: $line-height-base * 1rem;
77
- padding-left: 1.5em;
78
- margin-bottom: 0.125rem;
79
- }
80
-
81
- .form-check-input {
82
- float: left;
83
- width: 1em;
84
- height: 1em;
85
- margin-left: -1.5em;
86
- margin-top: 0.25em;
87
- appearance: none;
88
- background-color: $white;
89
- border: 1px solid rgba($black, 0.25);
90
- &[type="checkbox"] { border-radius: 0.25em; }
91
- &[type="radio"] { border-radius: 50%; }
92
- &:checked { background-color: $primary; border-color: $primary; }
93
- &:focus { border-color: lighten($primary, 25%); outline: 0; box-shadow: 0 0 0 0.2rem rgba($primary, 0.25); }
94
- }
95
-
96
- .form-check-label { cursor: pointer; }
97
-
98
- // Validation
99
- .is-valid {
100
- border-color: $success !important;
101
- &:focus {
102
- box-shadow: 0 0 0 0.2rem rgba($success, 0.25) !important;
103
- }
104
- }
105
-
106
- .is-invalid {
107
- border-color: $danger !important;
108
- &:focus {
109
- box-shadow: 0 0 0 0.2rem rgba($danger, 0.25) !important;
110
- }
111
- }
112
-
113
- .valid-feedback,
114
- .invalid-feedback {
115
- display: none;
116
- width: 100%;
117
- margin-top: 0.25rem;
118
- font-size: 0.875em;
119
- }
120
- .valid-feedback { color: $success; }
121
- .invalid-feedback { color: $danger; }
122
-
123
- .is-valid ~ .valid-feedback,
124
- .is-invalid ~ .invalid-feedback {
125
- display: block;
126
- }
127
-
128
- // Input group
129
- .input-group {
130
- position: relative;
131
- display: flex;
132
- flex-wrap: wrap;
133
- align-items: stretch;
134
- width: 100%;
135
- > .form-control,
136
- > .form-select {
137
- position: relative;
138
- flex: 1 1 auto;
139
- width: 1%;
140
- min-width: 0;
141
- }
142
- }
143
-
144
- .input-group-text {
145
- display: flex;
146
- align-items: center;
147
- padding: 0.375rem 0.75rem;
148
- font-size: $font-size-base;
149
- line-height: $line-height-base;
150
- color: $body-color;
151
- text-align: center;
152
- white-space: nowrap;
153
- background-color: $light;
154
- border: 1px solid #ced4da;
155
- border-radius: $border-radius;
156
- }
@@ -1,81 +0,0 @@
1
- // Tina4 CSS Framework - 12-Column Flexbox Grid
2
- // -----------------------------------------------
3
-
4
- .container,
5
- .container-fluid {
6
- width: 100%;
7
- padding-right: calc($grid-gutter / 2);
8
- padding-left: calc($grid-gutter / 2);
9
- margin-right: auto;
10
- margin-left: auto;
11
- }
12
-
13
- @each $bp, $max-width in $container-max-widths {
14
- @media (min-width: map-get($breakpoints, $bp)) {
15
- .container {
16
- max-width: $max-width;
17
- }
18
- }
19
- }
20
-
21
- .row {
22
- display: flex;
23
- flex-wrap: wrap;
24
- margin-right: calc($grid-gutter / -2);
25
- margin-left: calc($grid-gutter / -2);
26
- > * {
27
- flex-shrink: 0;
28
- width: 100%;
29
- max-width: 100%;
30
- padding-right: calc($grid-gutter / 2);
31
- padding-left: calc($grid-gutter / 2);
32
- }
33
- }
34
-
35
- .col {
36
- flex: 1 0 0%;
37
- }
38
-
39
- // Generate base columns
40
- @for $i from 1 through $grid-columns {
41
- .col-#{$i} {
42
- flex: 0 0 auto;
43
- width: percentage($i / $grid-columns);
44
- }
45
- }
46
- @each $i in 1, 2, 3, 4 {
47
- .offset-#{$i} {
48
- margin-left: percentage($i / $grid-columns);
49
- }
50
- }
51
- .offset-0 { margin-left: 0; }
52
-
53
- // Responsive columns (core breakpoints only for size)
54
- $grid-breakpoints: (sm, md, lg, xl);
55
-
56
- @each $bp in $grid-breakpoints {
57
- $min-width: map-get($breakpoints, $bp);
58
- @media (min-width: $min-width) {
59
- .col-#{$bp} {
60
- flex: 1 0 0%;
61
- }
62
- @for $i from 1 through $grid-columns {
63
- .col-#{$bp}-#{$i} {
64
- flex: 0 0 auto;
65
- width: percentage($i / $grid-columns);
66
- }
67
- }
68
- .offset-#{$bp}-0 { margin-left: 0; }
69
- }
70
- }
71
-
72
- // Row alignment
73
- .justify-start { justify-content: flex-start; }
74
- .justify-center { justify-content: center; }
75
- .justify-end { justify-content: flex-end; }
76
- .justify-between { justify-content: space-between; }
77
- .justify-around { justify-content: space-around; }
78
-
79
- .align-start { align-items: flex-start; }
80
- .align-center { align-items: center; }
81
- .align-end { align-items: flex-end; }
@@ -1,84 +0,0 @@
1
- // Tina4 CSS Framework - Modals
2
- // -------------------------------
3
-
4
- .modal {
5
- position: fixed;
6
- top: 0;
7
- left: 0;
8
- z-index: $zindex-modal;
9
- display: none;
10
- width: 100%;
11
- height: 100%;
12
- overflow-x: hidden;
13
- overflow-y: auto;
14
- outline: 0;
15
-
16
- &.show { display: block; }
17
- }
18
-
19
- .modal-dialog {
20
- position: relative;
21
- width: auto;
22
- margin: 1.75rem auto;
23
- max-width: 500px;
24
- }
25
-
26
- .modal-sm { max-width: 300px; }
27
- .modal-lg { max-width: 800px; }
28
-
29
- .modal-content {
30
- position: relative;
31
- display: flex;
32
- flex-direction: column;
33
- width: 100%;
34
- pointer-events: auto;
35
- background-color: $white;
36
- background-clip: padding-box;
37
- border: 1px solid rgba($black, 0.2);
38
- border-radius: $border-radius-lg;
39
- box-shadow: $shadow;
40
- outline: 0;
41
- }
42
-
43
- .modal-header {
44
- display: flex;
45
- flex-shrink: 0;
46
- align-items: center;
47
- justify-content: space-between;
48
- padding: 1rem;
49
- border-bottom: 1px solid rgba($black, 0.1);
50
- }
51
-
52
- .modal-title {
53
- margin-bottom: 0;
54
- font-weight: $font-weight-bold;
55
- }
56
-
57
- .modal-body {
58
- position: relative;
59
- flex: 1 1 auto;
60
- padding: 1rem;
61
- }
62
-
63
- .modal-footer {
64
- display: flex;
65
- flex-shrink: 0;
66
- flex-wrap: wrap;
67
- align-items: center;
68
- justify-content: flex-end;
69
- padding: 0.75rem;
70
- border-top: 1px solid rgba($black, 0.1);
71
- gap: 0.5rem;
72
- }
73
-
74
- .modal-backdrop {
75
- position: fixed;
76
- top: 0;
77
- left: 0;
78
- z-index: $zindex-backdrop;
79
- width: 100vw;
80
- height: 100vh;
81
- background-color: rgba($black, 0.5);
82
- display: none;
83
- &.show { display: block; }
84
- }
@@ -1,149 +0,0 @@
1
- // Tina4 CSS Framework - Navigation
2
- // -----------------------------------
3
-
4
- .nav {
5
- display: flex;
6
- flex-wrap: wrap;
7
- padding-left: 0;
8
- margin-bottom: 0;
9
- list-style: none;
10
- }
11
-
12
- .nav-item { }
13
-
14
- .nav-link {
15
- display: block;
16
- padding: 0.5rem 1rem;
17
- color: $link-color;
18
- text-decoration: none;
19
- transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out;
20
-
21
- &:hover, &:focus {
22
- color: $link-hover-color;
23
- }
24
-
25
- &.disabled {
26
- color: $muted;
27
- pointer-events: none;
28
- cursor: default;
29
- }
30
-
31
- &.active {
32
- color: $primary;
33
- font-weight: $font-weight-bold;
34
- }
35
- }
36
-
37
- // Navbar
38
- .navbar {
39
- position: relative;
40
- display: flex;
41
- flex-wrap: wrap;
42
- align-items: center;
43
- justify-content: space-between;
44
- padding: 0.5rem 1rem;
45
- }
46
-
47
- .navbar-brand {
48
- padding-top: 0.3125rem;
49
- padding-bottom: 0.3125rem;
50
- margin-right: 1rem;
51
- font-size: $font-size-xl;
52
- font-weight: $font-weight-bold;
53
- color: inherit;
54
- text-decoration: none;
55
- white-space: nowrap;
56
- &:hover { color: inherit; opacity: 0.8; }
57
- }
58
-
59
- .navbar-nav {
60
- display: flex;
61
- flex-direction: column;
62
- padding-left: 0;
63
- margin-bottom: 0;
64
- list-style: none;
65
- .nav-link {
66
- padding-right: 0.5rem;
67
- padding-left: 0.5rem;
68
- }
69
- }
70
-
71
- .navbar-toggler {
72
- padding: 0.25rem 0.75rem;
73
- font-size: $font-size-lg;
74
- line-height: 1;
75
- background-color: transparent;
76
- border: 1px solid rgba($black, 0.1);
77
- border-radius: $border-radius;
78
- cursor: pointer;
79
- &:focus { outline: 0; box-shadow: 0 0 0 0.2rem rgba($primary, 0.25); }
80
- }
81
-
82
- .navbar-collapse {
83
- flex-basis: 100%;
84
- flex-grow: 1;
85
- align-items: center;
86
- display: none;
87
- &.show { display: flex; }
88
- }
89
-
90
- // Responsive expand classes
91
- @each $bp, $px in $breakpoints {
92
- .navbar-expand-#{$bp} {
93
- @media (min-width: $px) {
94
- .navbar-nav { flex-direction: row; }
95
- .navbar-collapse { display: flex; flex-basis: auto; }
96
- .navbar-toggler { display: none; }
97
- }
98
- }
99
- }
100
-
101
- // Legacy: bare .navbar also expands at lg
102
- @media (min-width: map-get($breakpoints, lg)) {
103
- .navbar-nav {
104
- flex-direction: row;
105
- }
106
- .navbar-collapse {
107
- display: flex;
108
- flex-basis: auto;
109
- }
110
- .navbar-toggler {
111
- display: none;
112
- }
113
- }
114
-
115
- .navbar-dark {
116
- color: $white;
117
- background-color: $dark;
118
- .navbar-brand { color: $white; }
119
- .nav-link { color: rgba($white, 0.75); &:hover, &.active { color: $white; } }
120
- }
121
-
122
- .navbar-light {
123
- background-color: $light;
124
- .nav-link { color: rgba($black, 0.55); &:hover, &.active { color: rgba($black, 0.9); } }
125
- }
126
-
127
- // Breadcrumb
128
- .breadcrumb {
129
- display: flex;
130
- flex-wrap: wrap;
131
- padding: 0.5rem 1rem;
132
- margin-bottom: 1rem;
133
- list-style: none;
134
- background-color: $light;
135
- border-radius: $border-radius;
136
- }
137
-
138
- .breadcrumb-item {
139
- & + .breadcrumb-item::before {
140
- display: inline-block;
141
- padding-right: 0.5rem;
142
- padding-left: 0.5rem;
143
- color: $muted;
144
- content: "/";
145
- }
146
- &.active {
147
- color: $muted;
148
- }
149
- }
@@ -1,63 +0,0 @@
1
- // Tina4 CSS Framework - Pagination
2
- // ----------------------------------
3
-
4
- .pagination {
5
- display: flex;
6
- flex-wrap: wrap;
7
- padding-left: 0;
8
- list-style: none;
9
- gap: 0.25rem;
10
- }
11
-
12
- .page-item {
13
- &.disabled .page-link {
14
- color: $muted;
15
- pointer-events: none;
16
- background-color: $body-bg;
17
- border-color: rgba($black, 0.1);
18
- }
19
-
20
- &.active .page-link {
21
- color: $white;
22
- background-color: $primary;
23
- border-color: $primary;
24
- }
25
- }
26
-
27
- .page-link {
28
- display: block;
29
- padding: 0.375rem 0.75rem;
30
- color: $primary;
31
- background-color: $body-bg;
32
- border: 1px solid rgba($black, 0.15);
33
- border-radius: $border-radius;
34
- text-decoration: none;
35
- line-height: 1.25;
36
- transition: color 0.15s, background-color 0.15s, border-color 0.15s;
37
-
38
- &:hover {
39
- color: darken($primary, 10%);
40
- background-color: rgba($primary, 0.08);
41
- border-color: rgba($black, 0.2);
42
- }
43
-
44
- &:focus {
45
- outline: 0;
46
- box-shadow: 0 0 0 0.2rem rgba($primary, 0.25);
47
- }
48
- }
49
-
50
- // CRUD component image preview
51
- .crud-img-preview {
52
- max-height: 200px;
53
- max-width: 100%;
54
- border-radius: $border-radius;
55
- object-fit: cover;
56
- }
57
-
58
- .crud-img-preview-sm {
59
- max-height: 180px;
60
- max-width: 100%;
61
- border-radius: $border-radius;
62
- object-fit: cover;
63
- }
@@ -1,94 +0,0 @@
1
- // Tina4 CSS Framework - Modern Reset
2
- // ------------------------------------
3
-
4
- *,
5
- *::before,
6
- *::after {
7
- box-sizing: border-box;
8
- }
9
-
10
- html {
11
- line-height: $line-height-base;
12
- -webkit-text-size-adjust: 100%;
13
- -moz-tab-size: 4;
14
- tab-size: 4;
15
- scroll-behavior: smooth;
16
- }
17
-
18
- body {
19
- margin: 0;
20
- font-family: $font-family-base;
21
- font-size: $font-size-base;
22
- font-weight: $font-weight-normal;
23
- line-height: $line-height-base;
24
- color: $body-color;
25
- background-color: $body-bg;
26
- -webkit-font-smoothing: antialiased;
27
- -moz-osx-font-smoothing: grayscale;
28
- }
29
-
30
- h1, h2, h3, h4, h5, h6 {
31
- margin-top: 0;
32
- margin-bottom: 0.5rem;
33
- font-weight: 500;
34
- line-height: $line-height-sm;
35
- }
36
-
37
- p {
38
- margin-top: 0;
39
- margin-bottom: 1rem;
40
- }
41
-
42
- ol, ul {
43
- padding-left: 2rem;
44
- margin-top: 0;
45
- margin-bottom: 1rem;
46
- }
47
-
48
- a {
49
- color: $link-color;
50
- text-decoration: none;
51
- &:hover {
52
- color: $link-hover-color;
53
- text-decoration: underline;
54
- }
55
- }
56
-
57
- img, svg {
58
- max-width: 100%;
59
- height: auto;
60
- vertical-align: middle;
61
- }
62
-
63
- table {
64
- border-collapse: collapse;
65
- caption-side: bottom;
66
- }
67
-
68
- button, input, optgroup, select, textarea {
69
- margin: 0;
70
- font-family: inherit;
71
- font-size: inherit;
72
- line-height: inherit;
73
- }
74
-
75
- button, select {
76
- text-transform: none;
77
- }
78
-
79
- button, [type="button"], [type="reset"], [type="submit"] {
80
- -webkit-appearance: button;
81
- cursor: pointer;
82
- }
83
-
84
- hr {
85
- margin: 1rem 0;
86
- color: inherit;
87
- border: 0;
88
- border-top: 1px solid rgba($black, 0.1);
89
- opacity: 0.25;
90
- }
91
-
92
- pre, code, kbd, samp { font-family: $font-family-mono; font-size: 1em; }
93
- pre { margin-top: 0; margin-bottom: 1rem; overflow: auto; }
94
- [hidden] { display: none !important; }
@@ -1,54 +0,0 @@
1
- // Tina4 CSS Framework - Tables
2
- // -------------------------------
3
-
4
- .table {
5
- width: 100%;
6
- margin-bottom: 1rem;
7
- vertical-align: top;
8
- border-color: rgba($black, 0.1);
9
-
10
- > :not(caption) > * > * {
11
- padding: 0.5rem;
12
- border-bottom-width: 1px;
13
- border-bottom-style: solid;
14
- border-bottom-color: inherit;
15
- }
16
-
17
- > thead {
18
- vertical-align: bottom;
19
- border-bottom: 2px solid currentColor;
20
- }
21
-
22
- > tbody > tr:last-child > * {
23
- border-bottom-color: transparent;
24
- }
25
- }
26
-
27
- .table-sm {
28
- > :not(caption) > * > * {
29
- padding: 0.25rem;
30
- }
31
- }
32
-
33
- .table-bordered {
34
- border: 1px solid rgba($black, 0.1);
35
- > :not(caption) > * > * {
36
- border-width: 1px;
37
- border-style: solid;
38
- border-color: inherit;
39
- }
40
- }
41
-
42
- .table-striped > tbody > tr:nth-of-type(odd) > * {
43
- background-color: rgba($black, 0.02);
44
- }
45
-
46
- .table-hover > tbody > tr:hover > * {
47
- background-color: rgba($black, 0.04);
48
- }
49
-
50
- .table-responsive {
51
- overflow-x: auto;
52
- -webkit-overflow-scrolling: touch;
53
- }
54
-
@@ -1,55 +0,0 @@
1
- // Tina4 CSS Framework - Typography
2
- // ------------------------------------
3
-
4
- h1 { font-size: $font-size-4xl; }
5
- h2 { font-size: $font-size-3xl; }
6
- h3 { font-size: $font-size-2xl; }
7
- h4 { font-size: $font-size-xl; }
8
- h5 { font-size: $font-size-lg; }
9
- h6 { font-size: $font-size-base; }
10
-
11
- small, .small {
12
- font-size: 0.875em;
13
- }
14
-
15
- mark, .mark {
16
- padding: 0.2em;
17
- background-color: rgba($warning, 0.3);
18
- }
19
-
20
- blockquote {
21
- margin: 0 0 1rem;
22
- padding: 0.5rem 1rem;
23
- border-left: 0.25rem solid rgba($black, 0.1);
24
- font-size: $font-size-lg;
25
- }
26
-
27
- code {
28
- font-size: 0.875em;
29
- color: $danger;
30
- word-wrap: break-word;
31
- }
32
-
33
- pre {
34
- display: block;
35
- padding: 1rem;
36
- font-size: 0.875em;
37
- color: $dark;
38
- background-color: $light;
39
- border-radius: $border-radius;
40
- }
41
-
42
- .list-unstyled {
43
- padding-left: 0;
44
- list-style: none;
45
- }
46
-
47
- .list-inline {
48
- padding-left: 0;
49
- list-style: none;
50
- }
51
-
52
- .list-inline-item {
53
- display: inline-block;
54
- &:not(:last-child) { margin-right: 0.5rem; }
55
- }
@@ -1,208 +0,0 @@
1
- // Tina4 CSS Framework - Utilities
2
- // ----------------------------------
3
-
4
- // Display
5
- $displays: none, block, flex, inline, inline-block;
6
-
7
- @each $d in $displays {
8
- .d-#{$d} { display: $d !important; }
9
- }
10
- .d-grid { display: grid !important; }
11
-
12
- // Responsive display (sm, md, lg only to save size)
13
- @each $bp in sm, md, lg {
14
- @media (min-width: map-get($breakpoints, $bp)) {
15
- @each $d in $displays {
16
- .d-#{$bp}-#{$d} { display: $d !important; }
17
- }
18
- }
19
- }
20
-
21
- // Flex utilities
22
- .flex-row { flex-direction: row !important; }
23
- .flex-column { flex-direction: column !important; }
24
- .flex-wrap { flex-wrap: wrap !important; }
25
- .flex-nowrap { flex-wrap: nowrap !important; }
26
- .flex-grow-0 { flex-grow: 0 !important; }
27
- .flex-grow-1 { flex-grow: 1 !important; }
28
-
29
- .justify-content-start { justify-content: flex-start !important; }
30
- .justify-content-end { justify-content: flex-end !important; }
31
- .justify-content-center { justify-content: center !important; }
32
- .justify-content-between { justify-content: space-between !important; }
33
- .justify-content-around { justify-content: space-around !important; }
34
-
35
- .align-items-start { align-items: flex-start !important; }
36
- .align-items-end { align-items: flex-end !important; }
37
- .align-items-center { align-items: center !important; }
38
-
39
- @each $key, $val in $spacers {
40
- .gap-#{$key} { gap: $val !important; }
41
- }
42
-
43
- // Spacing: margin and padding
44
- $spacing-props: (
45
- "m": "margin",
46
- "p": "padding"
47
- );
48
- $spacing-dirs: (
49
- "t": "-top",
50
- "b": "-bottom",
51
- "s": "-left",
52
- "e": "-right"
53
- );
54
-
55
- @each $abbr, $prop in $spacing-props {
56
- @each $key, $val in $spacers {
57
- .#{$abbr}-#{$key} { #{$prop}: $val !important; }
58
- }
59
- @each $dir, $suffix in $spacing-dirs {
60
- @each $key, $val in $spacers {
61
- .#{$abbr}#{$dir}-#{$key} { #{$prop}#{$suffix}: $val !important; }
62
- }
63
- }
64
- // Axis shortcuts: py-* (top+bottom), px-* (left+right)
65
- @each $key, $val in $spacers {
66
- .#{$abbr}y-#{$key} {
67
- #{$prop}-top: $val !important;
68
- #{$prop}-bottom: $val !important;
69
- }
70
- .#{$abbr}x-#{$key} {
71
- #{$prop}-left: $val !important;
72
- #{$prop}-right: $val !important;
73
- }
74
- }
75
- }
76
-
77
- .mx-auto { margin-left: auto !important; margin-right: auto !important; }
78
-
79
- // Text
80
- .text-start { text-align: left !important; }
81
- .text-center { text-align: center !important; }
82
- .text-end { text-align: right !important; }
83
- .text-uppercase { text-transform: uppercase !important; }
84
- .text-capitalize { text-transform: capitalize !important; }
85
- .text-nowrap { white-space: nowrap !important; }
86
- .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
87
-
88
- .fw-bold { font-weight: $font-weight-bold !important; }
89
- .fw-normal { font-weight: $font-weight-normal !important; }
90
- .fw-light { font-weight: $font-weight-light !important; }
91
-
92
- @each $key, $size in $font-sizes {
93
- .fs-#{$key} { font-size: $size !important; }
94
- }
95
-
96
- // Text colors
97
- @each $name, $color in $theme-colors {
98
- .text-#{$name} { color: $color !important; }
99
- }
100
- .text-muted { color: $muted !important; }
101
- .text-white { color: $white !important; }
102
-
103
- // Background colors
104
- @each $name, $color in $theme-colors {
105
- .bg-#{$name} { background-color: $color !important; }
106
- }
107
- .bg-white { background-color: $white !important; }
108
-
109
- // Borders
110
- .border { border: 1px solid rgba($black, 0.1) !important; }
111
- .border-0 { border: 0 !important; }
112
- .rounded { border-radius: $border-radius !important; }
113
- .rounded-0 { border-radius: 0 !important; }
114
- .rounded-circle { border-radius: 50% !important; }
115
- .rounded-pill { border-radius: $border-radius-pill !important; }
116
-
117
- // Width and height
118
- @each $val in 25, 50, 75, 100 {
119
- .w-#{$val} { width: percentage($val / 100) !important; }
120
- .h-#{$val} { height: percentage($val / 100) !important; }
121
- }
122
- .mw-100 { max-width: 100% !important; }
123
- .mh-100 { max-height: 100% !important; }
124
-
125
- // Position
126
- .position-relative { position: relative !important; }
127
- .position-absolute { position: absolute !important; }
128
- .position-fixed { position: fixed !important; }
129
- .position-sticky { position: sticky !important; }
130
- .position-static { position: static !important; }
131
-
132
- // Visibility
133
- .visible { visibility: visible !important; }
134
- .invisible { visibility: hidden !important; }
135
-
136
- .overflow-hidden { overflow: hidden !important; }
137
- .overflow-auto { overflow: auto !important; }
138
-
139
- // Shadows
140
- .shadow { box-shadow: $shadow !important; }
141
- .shadow-sm { box-shadow: $shadow-sm !important; }
142
- .shadow-lg { box-shadow: $shadow-lg !important; }
143
- .shadow-none { box-shadow: none !important; }
144
-
145
- // Collapse
146
- .collapse { display: none; &.show { display: block; } }
147
-
148
- // Fade transition
149
- .fade { opacity: 0; transition: opacity 0.15s linear; &.show { opacity: 1; } }
150
-
151
- // Misc
152
- .clearfix::after { display: block; clear: both; content: ""; }
153
- .cursor-pointer { cursor: pointer !important; }
154
-
155
- // Close button (replaces Bootstrap's btn-close)
156
- .btn-close {
157
- box-sizing: content-box;
158
- width: 1em;
159
- height: 1em;
160
- padding: 0.25em;
161
- color: $black;
162
- background: transparent;
163
- border: 0;
164
- opacity: 0.5;
165
- cursor: pointer;
166
- font-size: 1.25rem;
167
- line-height: 1;
168
- &:hover { opacity: 0.75; }
169
- &:focus { opacity: 1; outline: 0; box-shadow: 0 0 0 0.2rem rgba($primary, 0.25); }
170
- }
171
-
172
- // Image utilities
173
- .img-fluid { max-width: 100%; height: auto; }
174
- .img-thumbnail {
175
- padding: 0.25rem;
176
- background-color: $body-bg;
177
- border: 1px solid rgba($black, 0.1);
178
- border-radius: $border-radius;
179
- max-width: 100%;
180
- height: auto;
181
- }
182
-
183
- // Border top/bottom helpers
184
- .border-top { border-top: 1px solid rgba($black, 0.1) !important; }
185
- .border-bottom { border-bottom: 1px solid rgba($black, 0.1) !important; }
186
-
187
- // Vertical alignment
188
- .align-middle { vertical-align: middle !important; }
189
- .align-top { vertical-align: top !important; }
190
- .align-bottom { vertical-align: bottom !important; }
191
-
192
- // Float
193
- .float-start { float: left !important; }
194
- .float-end { float: right !important; }
195
- .float-none { float: none !important; }
196
-
197
- // Screen reader only
198
- .visually-hidden {
199
- position: absolute !important;
200
- width: 1px !important;
201
- height: 1px !important;
202
- padding: 0 !important;
203
- margin: -1px !important;
204
- overflow: hidden !important;
205
- clip: rect(0, 0, 0, 0) !important;
206
- white-space: nowrap !important;
207
- border: 0 !important;
208
- }
@@ -1,117 +0,0 @@
1
- // Tina4 CSS Framework - Design Tokens
2
- // ------------------------------------
3
-
4
- // Colors
5
- $primary: #4a90d9 !default;
6
- $secondary: #6c757d !default;
7
- $success: #28a745 !default;
8
- $danger: #dc3545 !default;
9
- $warning: #ffc107 !default;
10
- $info: #17a2b8 !default;
11
- $light: #f8f9fa !default;
12
- $dark: #212529 !default;
13
- $white: #fff !default;
14
- $black: #000 !default;
15
- $body-bg: $white !default;
16
- $body-color: $dark !default;
17
- $muted: #6c757d !default;
18
-
19
- $theme-colors: (
20
- "primary": $primary,
21
- "secondary": $secondary,
22
- "success": $success,
23
- "danger": $danger,
24
- "warning": $warning,
25
- "info": $info,
26
- "light": $light,
27
- "dark": $dark
28
- ) !default;
29
-
30
- // Spacing
31
- $spacer: 1rem !default;
32
- $spacers: (
33
- 0: 0,
34
- 1: $spacer * 0.25,
35
- 2: $spacer * 0.5,
36
- 3: $spacer,
37
- 4: $spacer * 1.5,
38
- 5: $spacer * 3
39
- ) !default;
40
-
41
- // Border radius
42
- $border-radius: 0.25rem !default;
43
- $border-radius-sm: 0.25rem !default;
44
- $border-radius-lg: 0.5rem !default;
45
- $border-radius-xl: 1rem !default;
46
- $border-radius-pill: 50rem !default;
47
-
48
- // Typography
49
- $font-family-base: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !default;
50
- $font-family-mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
51
-
52
- $font-size-sm: 0.875rem !default;
53
- $font-size-base: 1rem !default;
54
- $font-size-lg: 1.125rem !default;
55
- $font-size-xl: 1.25rem !default;
56
- $font-size-2xl: 1.5rem !default;
57
- $font-size-3xl: 1.875rem !default;
58
- $font-size-4xl: 2.25rem !default;
59
-
60
- $font-sizes: (
61
- 1: $font-size-4xl,
62
- 2: $font-size-3xl,
63
- 3: $font-size-2xl,
64
- 4: $font-size-xl,
65
- 5: $font-size-base,
66
- 6: $font-size-sm
67
- ) !default;
68
-
69
- $line-height-base: 1.5 !default;
70
- $line-height-sm: 1.25 !default;
71
- $line-height-lg: 2 !default;
72
-
73
- $font-weight-light: 300 !default;
74
- $font-weight-normal: 400 !default;
75
- $font-weight-bold: 700 !default;
76
-
77
- // Breakpoints
78
- $breakpoints: (
79
- sm: 576px,
80
- md: 768px,
81
- lg: 992px,
82
- xl: 1200px,
83
- xxl: 1400px
84
- ) !default;
85
-
86
- // Container max-widths
87
- $container-max-widths: (
88
- sm: 540px,
89
- md: 720px,
90
- lg: 960px,
91
- xl: 1140px,
92
- xxl: 1320px
93
- ) !default;
94
-
95
- // Grid
96
- $grid-columns: 12 !default;
97
- $grid-gutter: 1.5rem !default;
98
-
99
- // Shadows
100
- $shadow-sm: 0 0.125rem 0.25rem rgba($black, 0.075) !default;
101
- $shadow: 0 0.5rem 1rem rgba($black, 0.15) !default;
102
- $shadow-lg: 0 1rem 3rem rgba($black, 0.175) !default;
103
-
104
- // Transitions
105
- $transition-base: all 0.2s ease-in-out !default;
106
- $transition-fade: opacity 0.15s linear !default;
107
-
108
- // Z-index
109
- $zindex-dropdown: 1000 !default;
110
- $zindex-sticky: 1020 !default;
111
- $zindex-fixed: 1030 !default;
112
- $zindex-backdrop: 1040 !default;
113
- $zindex-modal: 1050 !default;
114
-
115
- // Links
116
- $link-color: $primary !default;
117
- $link-hover-color: darken($primary, 15%) !default;
@@ -1 +0,0 @@
1
- @import 'tina4';
@@ -1,48 +0,0 @@
1
- // Tina4 CSS Framework - CSS Custom Properties
2
- // Exposes the design tokens as CSS custom properties for runtime use
3
-
4
- @import 'variables';
5
-
6
- :root {
7
- // Theme colors
8
- --t4-primary: #{$primary};
9
- --t4-secondary: #{$secondary};
10
- --t4-success: #{$success};
11
- --t4-danger: #{$danger};
12
- --t4-warning: #{$warning};
13
- --t4-info: #{$info};
14
- --t4-light: #{$light};
15
- --t4-dark: #{$dark};
16
- --t4-white: #{$white};
17
- --t4-black: #{$black};
18
- --t4-muted: #{$muted};
19
-
20
- // Body
21
- --t4-body-bg: #{$body-bg};
22
- --t4-body-color: #{$body-color};
23
-
24
- // Typography
25
- --t4-font-family: #{$font-family-base};
26
- --t4-font-family-mono: #{$font-family-mono};
27
- --t4-font-size-base: #{$font-size-base};
28
- --t4-line-height-base: #{$line-height-base};
29
-
30
- // Spacing
31
- --t4-spacer: #{$spacer};
32
-
33
- // Border radius
34
- --t4-border-radius: #{$border-radius};
35
- --t4-border-radius-lg: #{$border-radius-lg};
36
- --t4-border-radius-xl: #{$border-radius-xl};
37
-
38
- // Shadows
39
- --t4-shadow-sm: #{$shadow-sm};
40
- --t4-shadow: #{$shadow};
41
- --t4-shadow-lg: #{$shadow-lg};
42
-
43
- // Transitions
44
- --t4-transition: #{$transition-base};
45
-
46
- // Link
47
- --t4-link-color: #{$link-color};
48
- }
@@ -1,18 +0,0 @@
1
- // Tina4 CSS Framework
2
- // A lightweight, modern, responsive CSS framework
3
- // ================================================
4
-
5
- @import 'variables';
6
- @import 'reset';
7
- @import 'typography';
8
- @import 'grid';
9
- @import 'buttons';
10
- @import 'forms';
11
- @import 'cards';
12
- @import 'nav';
13
- @import 'modals';
14
- @import 'alerts';
15
- @import 'tables';
16
- @import 'badges';
17
- @import 'pagination';
18
- @import 'utilities';