tina4ruby 3.11.13 → 3.11.15

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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +80 -80
  3. data/LICENSE.txt +21 -21
  4. data/README.md +137 -137
  5. data/exe/tina4ruby +5 -5
  6. data/lib/tina4/ai.rb +696 -696
  7. data/lib/tina4/api.rb +189 -189
  8. data/lib/tina4/auth.rb +305 -305
  9. data/lib/tina4/auto_crud.rb +244 -244
  10. data/lib/tina4/cache.rb +154 -154
  11. data/lib/tina4/cli.rb +1449 -1449
  12. data/lib/tina4/constants.rb +46 -46
  13. data/lib/tina4/container.rb +74 -74
  14. data/lib/tina4/cors.rb +74 -74
  15. data/lib/tina4/crud.rb +692 -692
  16. data/lib/tina4/database/sqlite3_adapter.rb +165 -165
  17. data/lib/tina4/database.rb +625 -625
  18. data/lib/tina4/database_result.rb +208 -208
  19. data/lib/tina4/debug.rb +8 -8
  20. data/lib/tina4/dev.rb +14 -14
  21. data/lib/tina4/dev_admin.rb +935 -935
  22. data/lib/tina4/dev_mailbox.rb +191 -191
  23. data/lib/tina4/drivers/firebird_driver.rb +124 -110
  24. data/lib/tina4/drivers/mongodb_driver.rb +561 -561
  25. data/lib/tina4/drivers/mssql_driver.rb +112 -112
  26. data/lib/tina4/drivers/mysql_driver.rb +90 -90
  27. data/lib/tina4/drivers/odbc_driver.rb +191 -191
  28. data/lib/tina4/drivers/postgres_driver.rb +116 -106
  29. data/lib/tina4/drivers/sqlite_driver.rb +122 -122
  30. data/lib/tina4/env.rb +95 -95
  31. data/lib/tina4/error_overlay.rb +252 -252
  32. data/lib/tina4/events.rb +109 -109
  33. data/lib/tina4/field_types.rb +154 -154
  34. data/lib/tina4/frond.rb +2025 -2025
  35. data/lib/tina4/gallery/auth/meta.json +1 -1
  36. data/lib/tina4/gallery/auth/src/routes/api/gallery_auth.rb +114 -114
  37. data/lib/tina4/gallery/database/meta.json +1 -1
  38. data/lib/tina4/gallery/database/src/routes/api/gallery_db.rb +43 -43
  39. data/lib/tina4/gallery/error-overlay/meta.json +1 -1
  40. data/lib/tina4/gallery/error-overlay/src/routes/api/gallery_crash.rb +17 -17
  41. data/lib/tina4/gallery/orm/meta.json +1 -1
  42. data/lib/tina4/gallery/orm/src/routes/api/gallery_products.rb +16 -16
  43. data/lib/tina4/gallery/queue/meta.json +1 -1
  44. data/lib/tina4/gallery/queue/src/routes/api/gallery_queue.rb +325 -325
  45. data/lib/tina4/gallery/rest-api/meta.json +1 -1
  46. data/lib/tina4/gallery/rest-api/src/routes/api/gallery_hello.rb +14 -14
  47. data/lib/tina4/gallery/templates/meta.json +1 -1
  48. data/lib/tina4/gallery/templates/src/routes/gallery_page.rb +12 -12
  49. data/lib/tina4/gallery/templates/src/templates/gallery_page.twig +257 -257
  50. data/lib/tina4/graphql.rb +966 -966
  51. data/lib/tina4/health.rb +39 -39
  52. data/lib/tina4/html_element.rb +170 -170
  53. data/lib/tina4/job.rb +80 -80
  54. data/lib/tina4/localization.rb +168 -168
  55. data/lib/tina4/log.rb +203 -203
  56. data/lib/tina4/mcp.rb +696 -696
  57. data/lib/tina4/messenger.rb +587 -587
  58. data/lib/tina4/metrics.rb +793 -793
  59. data/lib/tina4/middleware.rb +445 -445
  60. data/lib/tina4/migration.rb +451 -451
  61. data/lib/tina4/orm.rb +790 -790
  62. data/lib/tina4/public/css/tina4.css +2463 -2463
  63. data/lib/tina4/public/css/tina4.min.css +1 -1
  64. data/lib/tina4/public/images/logo.svg +5 -5
  65. data/lib/tina4/public/js/frond.min.js +2 -2
  66. data/lib/tina4/public/js/tina4-dev-admin.js +565 -565
  67. data/lib/tina4/public/js/tina4-dev-admin.min.js +480 -480
  68. data/lib/tina4/public/js/tina4.min.js +92 -92
  69. data/lib/tina4/public/js/tina4js.min.js +48 -48
  70. data/lib/tina4/public/swagger/index.html +90 -90
  71. data/lib/tina4/public/swagger/oauth2-redirect.html +63 -63
  72. data/lib/tina4/query_builder.rb +380 -380
  73. data/lib/tina4/queue.rb +366 -366
  74. data/lib/tina4/queue_backends/kafka_backend.rb +80 -80
  75. data/lib/tina4/queue_backends/lite_backend.rb +298 -298
  76. data/lib/tina4/queue_backends/mongo_backend.rb +126 -126
  77. data/lib/tina4/queue_backends/rabbitmq_backend.rb +73 -73
  78. data/lib/tina4/rack_app.rb +817 -817
  79. data/lib/tina4/rate_limiter.rb +130 -130
  80. data/lib/tina4/request.rb +268 -255
  81. data/lib/tina4/response.rb +346 -346
  82. data/lib/tina4/response_cache.rb +551 -551
  83. data/lib/tina4/router.rb +406 -406
  84. data/lib/tina4/scss/tina4css/_alerts.scss +34 -34
  85. data/lib/tina4/scss/tina4css/_badges.scss +22 -22
  86. data/lib/tina4/scss/tina4css/_buttons.scss +69 -69
  87. data/lib/tina4/scss/tina4css/_cards.scss +49 -49
  88. data/lib/tina4/scss/tina4css/_forms.scss +156 -156
  89. data/lib/tina4/scss/tina4css/_grid.scss +81 -81
  90. data/lib/tina4/scss/tina4css/_modals.scss +84 -84
  91. data/lib/tina4/scss/tina4css/_nav.scss +149 -149
  92. data/lib/tina4/scss/tina4css/_reset.scss +94 -94
  93. data/lib/tina4/scss/tina4css/_tables.scss +54 -54
  94. data/lib/tina4/scss/tina4css/_typography.scss +55 -55
  95. data/lib/tina4/scss/tina4css/_utilities.scss +197 -197
  96. data/lib/tina4/scss/tina4css/_variables.scss +117 -117
  97. data/lib/tina4/scss/tina4css/base.scss +1 -1
  98. data/lib/tina4/scss/tina4css/colors.scss +48 -48
  99. data/lib/tina4/scss/tina4css/tina4.scss +17 -17
  100. data/lib/tina4/scss_compiler.rb +178 -178
  101. data/lib/tina4/seeder.rb +567 -567
  102. data/lib/tina4/service_runner.rb +303 -303
  103. data/lib/tina4/session.rb +297 -297
  104. data/lib/tina4/session_handlers/database_handler.rb +72 -72
  105. data/lib/tina4/session_handlers/file_handler.rb +67 -67
  106. data/lib/tina4/session_handlers/mongo_handler.rb +49 -49
  107. data/lib/tina4/session_handlers/redis_handler.rb +43 -43
  108. data/lib/tina4/session_handlers/valkey_handler.rb +43 -43
  109. data/lib/tina4/shutdown.rb +84 -84
  110. data/lib/tina4/sql_translation.rb +158 -158
  111. data/lib/tina4/swagger.rb +124 -124
  112. data/lib/tina4/template.rb +894 -894
  113. data/lib/tina4/templates/base.twig +26 -26
  114. data/lib/tina4/templates/errors/302.twig +14 -14
  115. data/lib/tina4/templates/errors/401.twig +9 -9
  116. data/lib/tina4/templates/errors/403.twig +29 -29
  117. data/lib/tina4/templates/errors/404.twig +29 -29
  118. data/lib/tina4/templates/errors/500.twig +38 -38
  119. data/lib/tina4/templates/errors/502.twig +9 -9
  120. data/lib/tina4/templates/errors/503.twig +12 -12
  121. data/lib/tina4/templates/errors/base.twig +37 -37
  122. data/lib/tina4/test_client.rb +159 -159
  123. data/lib/tina4/testing.rb +340 -340
  124. data/lib/tina4/validator.rb +174 -174
  125. data/lib/tina4/version.rb +1 -1
  126. data/lib/tina4/webserver.rb +312 -312
  127. data/lib/tina4/websocket.rb +343 -343
  128. data/lib/tina4/websocket_backplane.rb +190 -190
  129. data/lib/tina4/wsdl.rb +564 -564
  130. data/lib/tina4.rb +458 -458
  131. data/lib/tina4ruby.rb +4 -4
  132. metadata +3 -3
@@ -1,197 +1,197 @@
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
- }
65
-
66
- .mx-auto { margin-left: auto !important; margin-right: auto !important; }
67
-
68
- // Text
69
- .text-start { text-align: left !important; }
70
- .text-center { text-align: center !important; }
71
- .text-end { text-align: right !important; }
72
- .text-uppercase { text-transform: uppercase !important; }
73
- .text-capitalize { text-transform: capitalize !important; }
74
- .text-nowrap { white-space: nowrap !important; }
75
- .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
76
-
77
- .fw-bold { font-weight: $font-weight-bold !important; }
78
- .fw-normal { font-weight: $font-weight-normal !important; }
79
- .fw-light { font-weight: $font-weight-light !important; }
80
-
81
- @each $key, $size in $font-sizes {
82
- .fs-#{$key} { font-size: $size !important; }
83
- }
84
-
85
- // Text colors
86
- @each $name, $color in $theme-colors {
87
- .text-#{$name} { color: $color !important; }
88
- }
89
- .text-muted { color: $muted !important; }
90
- .text-white { color: $white !important; }
91
-
92
- // Background colors
93
- @each $name, $color in $theme-colors {
94
- .bg-#{$name} { background-color: $color !important; }
95
- }
96
- .bg-white { background-color: $white !important; }
97
-
98
- // Borders
99
- .border { border: 1px solid rgba($black, 0.1) !important; }
100
- .border-0 { border: 0 !important; }
101
- .rounded { border-radius: $border-radius !important; }
102
- .rounded-0 { border-radius: 0 !important; }
103
- .rounded-circle { border-radius: 50% !important; }
104
- .rounded-pill { border-radius: $border-radius-pill !important; }
105
-
106
- // Width and height
107
- @each $val in 25, 50, 75, 100 {
108
- .w-#{$val} { width: percentage($val / 100) !important; }
109
- .h-#{$val} { height: percentage($val / 100) !important; }
110
- }
111
- .mw-100 { max-width: 100% !important; }
112
- .mh-100 { max-height: 100% !important; }
113
-
114
- // Position
115
- .position-relative { position: relative !important; }
116
- .position-absolute { position: absolute !important; }
117
- .position-fixed { position: fixed !important; }
118
- .position-sticky { position: sticky !important; }
119
- .position-static { position: static !important; }
120
-
121
- // Visibility
122
- .visible { visibility: visible !important; }
123
- .invisible { visibility: hidden !important; }
124
-
125
- .overflow-hidden { overflow: hidden !important; }
126
- .overflow-auto { overflow: auto !important; }
127
-
128
- // Shadows
129
- .shadow { box-shadow: $shadow !important; }
130
- .shadow-sm { box-shadow: $shadow-sm !important; }
131
- .shadow-lg { box-shadow: $shadow-lg !important; }
132
- .shadow-none { box-shadow: none !important; }
133
-
134
- // Collapse
135
- .collapse { display: none; &.show { display: block; } }
136
-
137
- // Fade transition
138
- .fade { opacity: 0; transition: opacity 0.15s linear; &.show { opacity: 1; } }
139
-
140
- // Misc
141
- .clearfix::after { display: block; clear: both; content: ""; }
142
- .cursor-pointer { cursor: pointer !important; }
143
-
144
- // Close button (replaces Bootstrap's btn-close)
145
- .btn-close {
146
- box-sizing: content-box;
147
- width: 1em;
148
- height: 1em;
149
- padding: 0.25em;
150
- color: $black;
151
- background: transparent;
152
- border: 0;
153
- opacity: 0.5;
154
- cursor: pointer;
155
- font-size: 1.25rem;
156
- line-height: 1;
157
- &:hover { opacity: 0.75; }
158
- &:focus { opacity: 1; outline: 0; box-shadow: 0 0 0 0.2rem rgba($primary, 0.25); }
159
- }
160
-
161
- // Image utilities
162
- .img-fluid { max-width: 100%; height: auto; }
163
- .img-thumbnail {
164
- padding: 0.25rem;
165
- background-color: $body-bg;
166
- border: 1px solid rgba($black, 0.1);
167
- border-radius: $border-radius;
168
- max-width: 100%;
169
- height: auto;
170
- }
171
-
172
- // Border top/bottom helpers
173
- .border-top { border-top: 1px solid rgba($black, 0.1) !important; }
174
- .border-bottom { border-bottom: 1px solid rgba($black, 0.1) !important; }
175
-
176
- // Vertical alignment
177
- .align-middle { vertical-align: middle !important; }
178
- .align-top { vertical-align: top !important; }
179
- .align-bottom { vertical-align: bottom !important; }
180
-
181
- // Float
182
- .float-start { float: left !important; }
183
- .float-end { float: right !important; }
184
- .float-none { float: none !important; }
185
-
186
- // Screen reader only
187
- .visually-hidden {
188
- position: absolute !important;
189
- width: 1px !important;
190
- height: 1px !important;
191
- padding: 0 !important;
192
- margin: -1px !important;
193
- overflow: hidden !important;
194
- clip: rect(0, 0, 0, 0) !important;
195
- white-space: nowrap !important;
196
- border: 0 !important;
197
- }
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
+ }
65
+
66
+ .mx-auto { margin-left: auto !important; margin-right: auto !important; }
67
+
68
+ // Text
69
+ .text-start { text-align: left !important; }
70
+ .text-center { text-align: center !important; }
71
+ .text-end { text-align: right !important; }
72
+ .text-uppercase { text-transform: uppercase !important; }
73
+ .text-capitalize { text-transform: capitalize !important; }
74
+ .text-nowrap { white-space: nowrap !important; }
75
+ .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
76
+
77
+ .fw-bold { font-weight: $font-weight-bold !important; }
78
+ .fw-normal { font-weight: $font-weight-normal !important; }
79
+ .fw-light { font-weight: $font-weight-light !important; }
80
+
81
+ @each $key, $size in $font-sizes {
82
+ .fs-#{$key} { font-size: $size !important; }
83
+ }
84
+
85
+ // Text colors
86
+ @each $name, $color in $theme-colors {
87
+ .text-#{$name} { color: $color !important; }
88
+ }
89
+ .text-muted { color: $muted !important; }
90
+ .text-white { color: $white !important; }
91
+
92
+ // Background colors
93
+ @each $name, $color in $theme-colors {
94
+ .bg-#{$name} { background-color: $color !important; }
95
+ }
96
+ .bg-white { background-color: $white !important; }
97
+
98
+ // Borders
99
+ .border { border: 1px solid rgba($black, 0.1) !important; }
100
+ .border-0 { border: 0 !important; }
101
+ .rounded { border-radius: $border-radius !important; }
102
+ .rounded-0 { border-radius: 0 !important; }
103
+ .rounded-circle { border-radius: 50% !important; }
104
+ .rounded-pill { border-radius: $border-radius-pill !important; }
105
+
106
+ // Width and height
107
+ @each $val in 25, 50, 75, 100 {
108
+ .w-#{$val} { width: percentage($val / 100) !important; }
109
+ .h-#{$val} { height: percentage($val / 100) !important; }
110
+ }
111
+ .mw-100 { max-width: 100% !important; }
112
+ .mh-100 { max-height: 100% !important; }
113
+
114
+ // Position
115
+ .position-relative { position: relative !important; }
116
+ .position-absolute { position: absolute !important; }
117
+ .position-fixed { position: fixed !important; }
118
+ .position-sticky { position: sticky !important; }
119
+ .position-static { position: static !important; }
120
+
121
+ // Visibility
122
+ .visible { visibility: visible !important; }
123
+ .invisible { visibility: hidden !important; }
124
+
125
+ .overflow-hidden { overflow: hidden !important; }
126
+ .overflow-auto { overflow: auto !important; }
127
+
128
+ // Shadows
129
+ .shadow { box-shadow: $shadow !important; }
130
+ .shadow-sm { box-shadow: $shadow-sm !important; }
131
+ .shadow-lg { box-shadow: $shadow-lg !important; }
132
+ .shadow-none { box-shadow: none !important; }
133
+
134
+ // Collapse
135
+ .collapse { display: none; &.show { display: block; } }
136
+
137
+ // Fade transition
138
+ .fade { opacity: 0; transition: opacity 0.15s linear; &.show { opacity: 1; } }
139
+
140
+ // Misc
141
+ .clearfix::after { display: block; clear: both; content: ""; }
142
+ .cursor-pointer { cursor: pointer !important; }
143
+
144
+ // Close button (replaces Bootstrap's btn-close)
145
+ .btn-close {
146
+ box-sizing: content-box;
147
+ width: 1em;
148
+ height: 1em;
149
+ padding: 0.25em;
150
+ color: $black;
151
+ background: transparent;
152
+ border: 0;
153
+ opacity: 0.5;
154
+ cursor: pointer;
155
+ font-size: 1.25rem;
156
+ line-height: 1;
157
+ &:hover { opacity: 0.75; }
158
+ &:focus { opacity: 1; outline: 0; box-shadow: 0 0 0 0.2rem rgba($primary, 0.25); }
159
+ }
160
+
161
+ // Image utilities
162
+ .img-fluid { max-width: 100%; height: auto; }
163
+ .img-thumbnail {
164
+ padding: 0.25rem;
165
+ background-color: $body-bg;
166
+ border: 1px solid rgba($black, 0.1);
167
+ border-radius: $border-radius;
168
+ max-width: 100%;
169
+ height: auto;
170
+ }
171
+
172
+ // Border top/bottom helpers
173
+ .border-top { border-top: 1px solid rgba($black, 0.1) !important; }
174
+ .border-bottom { border-bottom: 1px solid rgba($black, 0.1) !important; }
175
+
176
+ // Vertical alignment
177
+ .align-middle { vertical-align: middle !important; }
178
+ .align-top { vertical-align: top !important; }
179
+ .align-bottom { vertical-align: bottom !important; }
180
+
181
+ // Float
182
+ .float-start { float: left !important; }
183
+ .float-end { float: right !important; }
184
+ .float-none { float: none !important; }
185
+
186
+ // Screen reader only
187
+ .visually-hidden {
188
+ position: absolute !important;
189
+ width: 1px !important;
190
+ height: 1px !important;
191
+ padding: 0 !important;
192
+ margin: -1px !important;
193
+ overflow: hidden !important;
194
+ clip: rect(0, 0, 0, 0) !important;
195
+ white-space: nowrap !important;
196
+ border: 0 !important;
197
+ }
@@ -1,117 +1,117 @@
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
+ // 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 +1 @@
1
- @import 'tina4';
1
+ @import 'tina4';