tina4-python 3.13.97__tar.gz → 3.13.98__tar.gz

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 (175) hide show
  1. {tina4_python-3.13.97 → tina4_python-3.13.98}/PKG-INFO +2 -2
  2. {tina4_python-3.13.97 → tina4_python-3.13.98}/pyproject.toml +1 -1
  3. tina4_python-3.13.97/tina4_python/scss/tina4css/_alerts.scss +0 -34
  4. tina4_python-3.13.97/tina4_python/scss/tina4css/_badges.scss +0 -22
  5. tina4_python-3.13.97/tina4_python/scss/tina4css/_buttons.scss +0 -69
  6. tina4_python-3.13.97/tina4_python/scss/tina4css/_cards.scss +0 -49
  7. tina4_python-3.13.97/tina4_python/scss/tina4css/_forms.scss +0 -156
  8. tina4_python-3.13.97/tina4_python/scss/tina4css/_grid.scss +0 -81
  9. tina4_python-3.13.97/tina4_python/scss/tina4css/_modals.scss +0 -84
  10. tina4_python-3.13.97/tina4_python/scss/tina4css/_nav.scss +0 -149
  11. tina4_python-3.13.97/tina4_python/scss/tina4css/_pagination.scss +0 -63
  12. tina4_python-3.13.97/tina4_python/scss/tina4css/_reset.scss +0 -94
  13. tina4_python-3.13.97/tina4_python/scss/tina4css/_tables.scss +0 -54
  14. tina4_python-3.13.97/tina4_python/scss/tina4css/_typography.scss +0 -55
  15. tina4_python-3.13.97/tina4_python/scss/tina4css/_utilities.scss +0 -208
  16. tina4_python-3.13.97/tina4_python/scss/tina4css/_variables.scss +0 -117
  17. tina4_python-3.13.97/tina4_python/scss/tina4css/base.scss +0 -1
  18. tina4_python-3.13.97/tina4_python/scss/tina4css/colors.scss +0 -48
  19. tina4_python-3.13.97/tina4_python/scss/tina4css/tina4.scss +0 -18
  20. {tina4_python-3.13.97 → tina4_python-3.13.98}/.gitignore +0 -0
  21. {tina4_python-3.13.97 → tina4_python-3.13.98}/README.md +0 -0
  22. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/CLAUDE.md +0 -0
  23. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/HtmlElement.py +0 -0
  24. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/Testing.py +0 -0
  25. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/__init__.py +0 -0
  26. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/ai/__init__.py +0 -0
  27. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/api/__init__.py +0 -0
  28. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/auth/__init__.py +0 -0
  29. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/cache/__init__.py +0 -0
  30. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/cli/__init__.py +0 -0
  31. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/container/__init__.py +0 -0
  32. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/context/__init__.py +0 -0
  33. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/context/chunker.py +0 -0
  34. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/__init__.py +0 -0
  35. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/cache.py +0 -0
  36. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/constants.py +0 -0
  37. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/events.py +0 -0
  38. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/middleware.py +0 -0
  39. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/rate_limiter.py +0 -0
  40. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/request.py +0 -0
  41. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/response.py +0 -0
  42. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/router.py +0 -0
  43. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/core/server.py +0 -0
  44. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/crud/__init__.py +0 -0
  45. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/__init__.py +0 -0
  46. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/adapter.py +0 -0
  47. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/connection.py +0 -0
  48. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/database_url.py +0 -0
  49. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/firebird.py +0 -0
  50. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/mongodb.py +0 -0
  51. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/mssql.py +0 -0
  52. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/mysql.py +0 -0
  53. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/odbc.py +0 -0
  54. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/postgres.py +0 -0
  55. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/sql_translator.py +0 -0
  56. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/database/sqlite.py +0 -0
  57. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/debug/__init__.py +0 -0
  58. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/debug/error_overlay.py +0 -0
  59. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/dev_admin/__init__.py +0 -0
  60. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/dev_admin/metrics.py +0 -0
  61. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/dev_admin/plan.py +0 -0
  62. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/dev_admin/project_index.py +0 -0
  63. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/docs.py +0 -0
  64. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/docstore/__init__.py +0 -0
  65. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/dotenv/__init__.py +0 -0
  66. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/env.py +0 -0
  67. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/frond/FROND.md +0 -0
  68. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/frond/__init__.py +0 -0
  69. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/frond/compiler.py +0 -0
  70. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/frond/engine.py +0 -0
  71. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/frond/parser.py +0 -0
  72. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/auth/meta.json +0 -0
  73. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
  74. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/database/meta.json +0 -0
  75. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
  76. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/error-overlay/meta.json +0 -0
  77. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
  78. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/orm/meta.json +0 -0
  79. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
  80. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
  81. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/queue/meta.json +0 -0
  82. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
  83. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/rest-api/meta.json +0 -0
  84. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
  85. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/templates/meta.json +0 -0
  86. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
  87. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
  88. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/graphql/__init__.py +0 -0
  89. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/i18n/__init__.py +0 -0
  90. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/mcp/__init__.py +0 -0
  91. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/mcp/protocol.py +0 -0
  92. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/mcp/tools.py +0 -0
  93. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/messenger/__init__.py +0 -0
  94. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/migration/__init__.py +0 -0
  95. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/migration/runner.py +0 -0
  96. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/mqtt/__init__.py +0 -0
  97. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/mqtt/message.py +0 -0
  98. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/orm/__init__.py +0 -0
  99. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/orm/fields.py +0 -0
  100. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/orm/model.py +0 -0
  101. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/__feedback/widget.js +0 -0
  102. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/css/tina4.css +0 -0
  103. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/css/tina4.min.css +0 -0
  104. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/favicon.ico +0 -0
  105. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/images/logo.svg +0 -0
  106. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
  107. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/js/frond.js +0 -0
  108. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/js/frond.min.js +0 -0
  109. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
  110. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/js/tina4.min.js +0 -0
  111. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/js/tina4js.min.js +0 -0
  112. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/swagger/index.html +0 -0
  113. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
  114. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/query_builder/__init__.py +0 -0
  115. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/__init__.py +0 -0
  116. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/amqp_url.py +0 -0
  117. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/job.py +0 -0
  118. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/kafka_backend.py +0 -0
  119. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/lite_backend.py +0 -0
  120. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/mongo_backend.py +0 -0
  121. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue/rabbitmq_backend.py +0 -0
  122. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue_backends/__init__.py +0 -0
  123. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue_backends/kafka_backend.py +0 -0
  124. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue_backends/mongo_backend.py +0 -0
  125. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
  126. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/__init__.py +0 -0
  127. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/Attachment.py +0 -0
  128. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/Channel.py +0 -0
  129. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/ChannelMember.py +0 -0
  130. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/Message.py +0 -0
  131. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/Workspace.py +0 -0
  132. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/models/__init__.py +0 -0
  133. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/realtime/storage.py +0 -0
  134. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/seeder/__init__.py +0 -0
  135. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/service/__init__.py +0 -0
  136. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session/__init__.py +0 -0
  137. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session_handlers/__init__.py +0 -0
  138. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session_handlers/memcached_handler.py +0 -0
  139. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session_handlers/mongodb_handler.py +0 -0
  140. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session_handlers/redis_handler.py +0 -0
  141. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/session_handlers/valkey_handler.py +0 -0
  142. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/swagger/__init__.py +0 -0
  143. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/components/crud.twig +0 -0
  144. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
  145. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
  146. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/docker/python/Dockerfile +0 -0
  147. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/docker/uv/Dockerfile +0 -0
  148. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/302.twig +0 -0
  149. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/401.twig +0 -0
  150. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/403.twig +0 -0
  151. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/404.twig +0 -0
  152. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/500.twig +0 -0
  153. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/502.twig +0 -0
  154. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/503.twig +0 -0
  155. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/errors/base.twig +0 -0
  156. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/frontend/README.md +0 -0
  157. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/templates/readme.md +0 -0
  158. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/test/__init__.py +0 -0
  159. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/test_client/__init__.py +0 -0
  160. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
  161. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
  162. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
  163. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
  164. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
  165. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
  166. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
  167. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
  168. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
  169. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
  170. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
  171. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
  172. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/validator/__init__.py +0 -0
  173. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/websocket/__init__.py +0 -0
  174. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/websocket/backplane.py +0 -0
  175. {tina4_python-3.13.97 → tina4_python-3.13.98}/tina4_python/wsdl/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: tina4-python
3
- Version: 3.13.97
3
+ Version: 3.13.98
4
4
  Summary: Tina4 Python v3 — Zero-dependency, lightweight web framework
5
5
  Author-email: Andre van Zuydam <andrevanzuydam@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tina4-python"
3
- version = "3.13.97"
3
+ version = "3.13.98"
4
4
  description = "Tina4 Python v3 — Zero-dependency, lightweight web framework"
5
5
  authors = [
6
6
  {name = "Andre van Zuydam", email = "andrevanzuydam@gmail.com"}
@@ -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
- }