karafka-web 0.10.4 → 0.11.0.beta1

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 (479) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +54 -176
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +87 -43
  6. data/LICENSE +6 -2
  7. data/bin/verify_kafka_warnings +35 -0
  8. data/bin/verify_topics_naming +35 -0
  9. data/config/locales/pro_errors.yml +1 -0
  10. data/docker-compose.yml +1 -1
  11. data/gulpfile.js +0 -2
  12. data/karafka-web.gemspec +2 -2
  13. data/lib/karafka/web/config.rb +80 -9
  14. data/lib/karafka/web/contracts/config.rb +44 -5
  15. data/lib/karafka/web/errors.rb +10 -0
  16. data/lib/karafka/web/management/actions/create_initial_states.rb +6 -6
  17. data/lib/karafka/web/management/actions/create_topics.rb +30 -64
  18. data/lib/karafka/web/management/actions/delete_topics.rb +5 -5
  19. data/lib/karafka/web/management/actions/enable.rb +5 -5
  20. data/lib/karafka/web/pro/commanding/commands/base.rb +37 -13
  21. data/lib/karafka/web/pro/commanding/commands/consumers/quiet.rb +33 -0
  22. data/lib/karafka/web/pro/commanding/commands/consumers/stop.rb +32 -0
  23. data/lib/karafka/web/pro/commanding/commands/consumers/trace.rb +37 -0
  24. data/lib/karafka/web/pro/commanding/commands/partitions/pause.rb +30 -0
  25. data/lib/karafka/web/pro/commanding/commands/partitions/resume.rb +30 -0
  26. data/lib/karafka/web/pro/commanding/commands/partitions/seek.rb +30 -0
  27. data/lib/karafka/web/pro/commanding/config.rb +6 -10
  28. data/lib/karafka/web/pro/commanding/contracts/config.rb +2 -10
  29. data/lib/karafka/web/pro/commanding/dispatcher.rb +45 -24
  30. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/base.rb +67 -0
  31. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/pause.rb +44 -0
  32. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/resume.rb +29 -0
  33. data/lib/karafka/web/pro/commanding/handlers/partitions/commands/seek.rb +86 -0
  34. data/lib/karafka/web/pro/commanding/handlers/partitions/executor.rb +56 -0
  35. data/lib/karafka/web/pro/commanding/handlers/partitions/listener.rb +55 -0
  36. data/lib/karafka/web/pro/commanding/handlers/partitions/tracker.rb +62 -0
  37. data/lib/karafka/web/pro/commanding/listener.rb +4 -12
  38. data/lib/karafka/web/pro/commanding/manager.rb +36 -24
  39. data/lib/karafka/web/pro/commanding/matcher.rb +7 -17
  40. data/lib/karafka/web/pro/commanding/request.rb +39 -0
  41. data/lib/karafka/web/pro/commanding.rb +2 -10
  42. data/lib/karafka/web/pro/loader.rb +13 -10
  43. data/lib/karafka/web/pro/ui/app.rb +31 -390
  44. data/lib/karafka/web/pro/ui/controllers/base_controller.rb +8 -10
  45. data/lib/karafka/web/pro/ui/controllers/cluster_controller.rb +2 -10
  46. data/lib/karafka/web/pro/ui/controllers/consumers/base_controller.rb +21 -0
  47. data/lib/karafka/web/pro/ui/controllers/consumers/commanding_controller.rb +148 -0
  48. data/lib/karafka/web/pro/ui/controllers/consumers/commands_controller.rb +96 -0
  49. data/lib/karafka/web/pro/ui/controllers/consumers/consumers_controller.rb +101 -0
  50. data/lib/karafka/web/pro/ui/controllers/consumers/controls_controller.rb +36 -0
  51. data/lib/karafka/web/pro/ui/controllers/consumers/jobs_controller.rb +57 -0
  52. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/base_controller.rb +86 -0
  53. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/offsets_controller.rb +75 -0
  54. data/lib/karafka/web/pro/ui/controllers/consumers/partitions/pauses_controller.rb +110 -0
  55. data/lib/karafka/web/pro/ui/controllers/dashboard_controller.rb +2 -10
  56. data/lib/karafka/web/pro/ui/controllers/dlq_controller.rb +2 -10
  57. data/lib/karafka/web/pro/ui/controllers/errors_controller.rb +3 -11
  58. data/lib/karafka/web/pro/ui/controllers/explorer/base_controller.rb +21 -0
  59. data/lib/karafka/web/pro/ui/controllers/explorer/explorer_controller.rb +215 -0
  60. data/lib/karafka/web/pro/ui/controllers/explorer/messages_controller.rb +145 -0
  61. data/lib/karafka/web/pro/ui/controllers/explorer/search_controller.rb +68 -0
  62. data/lib/karafka/web/pro/ui/controllers/health_controller.rb +2 -10
  63. data/lib/karafka/web/pro/ui/controllers/jobs_controller.rb +2 -10
  64. data/lib/karafka/web/pro/ui/controllers/recurring_tasks_controller.rb +12 -13
  65. data/lib/karafka/web/pro/ui/controllers/routing_controller.rb +2 -10
  66. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/base_controller.rb +2 -10
  67. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/explorer_controller.rb +8 -16
  68. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/messages_controller.rb +9 -15
  69. data/lib/karafka/web/pro/ui/controllers/scheduled_messages/schedules_controller.rb +2 -10
  70. data/lib/karafka/web/pro/ui/controllers/status_controller.rb +2 -10
  71. data/lib/karafka/web/pro/ui/controllers/support_controller.rb +2 -10
  72. data/lib/karafka/web/pro/ui/controllers/topics/base_controller.rb +21 -0
  73. data/lib/karafka/web/pro/ui/controllers/topics/configs_controller.rb +86 -0
  74. data/lib/karafka/web/pro/ui/controllers/topics/distributions_controller.rb +91 -0
  75. data/lib/karafka/web/pro/ui/controllers/topics/offsets_controller.rb +55 -0
  76. data/lib/karafka/web/pro/ui/controllers/topics/replications_controller.rb +37 -0
  77. data/lib/karafka/web/pro/ui/controllers/topics/topics_controller.rb +101 -0
  78. data/lib/karafka/web/pro/ui/controllers/ux_controller.rb +2 -10
  79. data/lib/karafka/web/pro/ui/lib/branding/config.rb +2 -10
  80. data/lib/karafka/web/pro/ui/lib/branding/contracts/config.rb +2 -10
  81. data/lib/karafka/web/pro/ui/lib/branding.rb +2 -10
  82. data/lib/karafka/web/pro/ui/lib/features.rb +53 -0
  83. data/lib/karafka/web/pro/ui/lib/patterns_detector.rb +2 -10
  84. data/lib/karafka/web/pro/ui/lib/policies/config.rb +2 -10
  85. data/lib/karafka/web/pro/ui/lib/policies/contracts/config.rb +2 -10
  86. data/lib/karafka/web/pro/ui/lib/policies/messages.rb +2 -10
  87. data/lib/karafka/web/pro/ui/lib/policies/requests.rb +2 -10
  88. data/lib/karafka/web/pro/ui/lib/policies.rb +2 -10
  89. data/lib/karafka/web/pro/ui/lib/safe_runner.rb +5 -0
  90. data/lib/karafka/web/pro/ui/lib/search/config.rb +2 -10
  91. data/lib/karafka/web/pro/ui/lib/search/contracts/config.rb +2 -10
  92. data/lib/karafka/web/pro/ui/lib/search/contracts/form.rb +2 -10
  93. data/lib/karafka/web/pro/ui/lib/search/matchers/base.rb +2 -10
  94. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_header_includes.rb +10 -11
  95. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_key_includes.rb +2 -10
  96. data/lib/karafka/web/pro/ui/lib/search/matchers/raw_payload_includes.rb +23 -11
  97. data/lib/karafka/web/pro/ui/lib/search/normalizer.rb +2 -10
  98. data/lib/karafka/web/pro/ui/lib/search/runner.rb +3 -11
  99. data/lib/karafka/web/pro/ui/lib/search.rb +2 -10
  100. data/lib/karafka/web/pro/ui/routes/base.rb +19 -0
  101. data/lib/karafka/web/pro/ui/routes/cluster.rb +37 -0
  102. data/lib/karafka/web/pro/ui/routes/consumers.rb +145 -0
  103. data/lib/karafka/web/pro/ui/routes/dashboard.rb +25 -0
  104. data/lib/karafka/web/pro/ui/routes/dlq.rb +24 -0
  105. data/lib/karafka/web/pro/ui/routes/errors.rb +39 -0
  106. data/lib/karafka/web/pro/ui/routes/explorer.rb +118 -0
  107. data/lib/karafka/web/pro/ui/routes/health.rb +47 -0
  108. data/lib/karafka/web/pro/ui/routes/jobs.rb +33 -0
  109. data/lib/karafka/web/pro/ui/routes/recurring_tasks.rb +59 -0
  110. data/lib/karafka/web/pro/ui/routes/routing.rb +31 -0
  111. data/lib/karafka/web/pro/ui/routes/scheduled_messages.rb +75 -0
  112. data/lib/karafka/web/pro/ui/routes/status.rb +24 -0
  113. data/lib/karafka/web/pro/ui/routes/support.rb +24 -0
  114. data/lib/karafka/web/pro/ui/routes/topics.rb +90 -0
  115. data/lib/karafka/web/pro/ui/routes/ux.rb +24 -0
  116. data/lib/karafka/web/pro/ui/views/cluster/_breadcrumbs.erb +3 -0
  117. data/lib/karafka/web/pro/ui/views/cluster/_broker.erb +3 -0
  118. data/lib/karafka/web/pro/ui/views/cluster/_config.erb +3 -0
  119. data/lib/karafka/web/pro/ui/views/cluster/_tabs.erb +3 -0
  120. data/lib/karafka/web/pro/ui/views/cluster/index.erb +4 -1
  121. data/lib/karafka/web/pro/ui/views/cluster/show.erb +3 -0
  122. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_backtrace.erb +3 -0
  123. data/lib/karafka/web/pro/ui/views/consumers/commands/_breadcrumbs.erb +24 -0
  124. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_command.erb +22 -6
  125. data/lib/karafka/web/pro/ui/views/consumers/commands/_command_details.erb +4 -0
  126. data/lib/karafka/web/pro/ui/views/consumers/commands/_empty.erb +6 -0
  127. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_incompatible_schema.erb +3 -0
  128. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_metadata.erb +4 -1
  129. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/_table.erb +5 -2
  130. data/lib/karafka/web/pro/ui/views/{commands → consumers/commands}/index.erb +7 -4
  131. data/lib/karafka/web/pro/ui/views/consumers/commands/show.erb +32 -0
  132. data/lib/karafka/web/pro/ui/views/consumers/consumers/_breadcrumbs.erb +46 -0
  133. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer.erb +59 -0
  134. data/lib/karafka/web/pro/ui/views/consumers/consumers/_consumer_performance.erb +71 -0
  135. data/lib/karafka/web/pro/ui/views/consumers/consumers/_tabs.erb +38 -0
  136. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_commands.erb +80 -0
  137. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_consumer_group.erb +11 -0
  138. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_metrics.erb +3 -0
  139. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_no_subscriptions.erb +10 -0
  140. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_partition.erb +16 -0
  141. data/lib/karafka/web/pro/ui/views/consumers/consumers/consumer/_partition_edit_options.erb +33 -0
  142. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_stopped.erb +3 -0
  143. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_subscription_group.erb +7 -3
  144. data/lib/karafka/web/pro/ui/views/consumers/{consumer → consumers/consumer}/_tabs.erb +7 -4
  145. data/lib/karafka/web/pro/ui/views/consumers/consumers/details.erb +15 -0
  146. data/lib/karafka/web/pro/ui/views/consumers/{index.erb → consumers/index.erb} +6 -3
  147. data/lib/karafka/web/pro/ui/views/consumers/{performance.erb → consumers/performance.erb} +6 -3
  148. data/lib/karafka/web/pro/ui/views/consumers/consumers/subscriptions.erb +24 -0
  149. data/lib/karafka/web/pro/ui/views/consumers/controls/_breadcrumbs.erb +16 -0
  150. data/lib/karafka/web/pro/ui/views/consumers/controls/_controls.erb +107 -0
  151. data/lib/karafka/web/pro/ui/views/consumers/{controls.erb → controls/index.erb} +8 -5
  152. data/lib/karafka/web/pro/ui/views/consumers/jobs/_breadcrumbs.erb +36 -0
  153. data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_job.erb +3 -0
  154. data/lib/karafka/web/pro/ui/views/consumers/{consumer → jobs}/_no_jobs.erb +3 -0
  155. data/lib/karafka/web/pro/ui/views/consumers/{pending_jobs.erb → jobs/pending.erb} +7 -8
  156. data/lib/karafka/web/pro/ui/views/consumers/{running_jobs.erb → jobs/running.erb} +7 -8
  157. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_basics.erb +77 -0
  158. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_breadcrumbs.erb +58 -0
  159. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_form.erb +109 -0
  160. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_not_running_error.erb +16 -0
  161. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/_running_warning.erb +15 -0
  162. data/lib/karafka/web/pro/ui/views/consumers/partitions/offsets/edit.erb +12 -0
  163. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_active_not_editable.erb +22 -0
  164. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_adjusting_warning.erb +27 -0
  165. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_breadcrumbs.erb +60 -0
  166. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_edit_form.erb +59 -0
  167. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_lrj_not_manageable.erb +24 -0
  168. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_new_form.erb +78 -0
  169. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/_not_running.erb +16 -0
  170. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/edit.erb +20 -0
  171. data/lib/karafka/web/pro/ui/views/consumers/partitions/pauses/new.erb +16 -0
  172. data/lib/karafka/web/pro/ui/views/dashboard/index.erb +4 -1
  173. data/lib/karafka/web/pro/ui/views/dlq/_breadcrumbs.erb +3 -0
  174. data/lib/karafka/web/pro/ui/views/dlq/_no_topics.erb +3 -0
  175. data/lib/karafka/web/pro/ui/views/dlq/_topic.erb +4 -1
  176. data/lib/karafka/web/pro/ui/views/dlq/index.erb +3 -0
  177. data/lib/karafka/web/pro/ui/views/errors/_breadcrumbs.erb +3 -0
  178. data/lib/karafka/web/pro/ui/views/errors/_error.erb +3 -0
  179. data/lib/karafka/web/pro/ui/views/errors/_partition_option.erb +3 -0
  180. data/lib/karafka/web/pro/ui/views/errors/_selector.erb +3 -0
  181. data/lib/karafka/web/pro/ui/views/errors/_table.erb +4 -1
  182. data/lib/karafka/web/pro/ui/views/errors/index.erb +6 -3
  183. data/lib/karafka/web/pro/ui/views/errors/partition.erb +5 -2
  184. data/lib/karafka/web/pro/ui/views/errors/show.erb +3 -0
  185. data/lib/karafka/web/pro/ui/views/explorer/{_breadcrumbs.erb → explorer/_breadcrumbs.erb} +7 -4
  186. data/lib/karafka/web/pro/ui/views/explorer/{_failed_deserialization.erb → explorer/_failed_deserialization.erb} +3 -0
  187. data/lib/karafka/web/pro/ui/views/explorer/{_filtered.erb → explorer/_filtered.erb} +3 -0
  188. data/lib/karafka/web/pro/ui/views/explorer/{_message.erb → explorer/_message.erb} +4 -1
  189. data/lib/karafka/web/pro/ui/views/explorer/explorer/_no_topics.erb +4 -0
  190. data/lib/karafka/web/pro/ui/views/explorer/{_partition_option.erb → explorer/_partition_option.erb} +4 -1
  191. data/lib/karafka/web/pro/ui/views/explorer/{_selector.erb → explorer/_selector.erb} +4 -1
  192. data/lib/karafka/web/pro/ui/views/explorer/explorer/_topic.erb +13 -0
  193. data/lib/karafka/web/pro/ui/views/explorer/explorer/index.erb +17 -0
  194. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_metadata.erb +10 -7
  195. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_payload.erb +6 -3
  196. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_resources_utilization.erb +7 -4
  197. data/lib/karafka/web/pro/ui/views/explorer/{message → explorer/message}/_too_big_to_be_displayed.erb +3 -0
  198. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_detail.erb +3 -0
  199. data/lib/karafka/web/pro/ui/views/explorer/explorer/messages/_headers.erb +51 -0
  200. data/lib/karafka/web/pro/ui/views/explorer/{messages → explorer/messages}/_key.erb +3 -0
  201. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_cleaned.erb +6 -0
  202. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_empty.erb +6 -0
  203. data/lib/karafka/web/pro/ui/views/explorer/{partition → explorer/partition}/_messages.erb +4 -1
  204. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_time_selector.erb +16 -0
  205. data/lib/karafka/web/pro/ui/views/explorer/explorer/partition/_timestamp_selector.erb +33 -0
  206. data/lib/karafka/web/pro/ui/views/explorer/{partition.erb → explorer/partition.erb} +24 -17
  207. data/lib/karafka/web/pro/ui/views/explorer/{show.erb → explorer/show.erb} +17 -19
  208. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_actions.erb +5 -2
  209. data/lib/karafka/web/pro/ui/views/explorer/explorer/topic/_empty.erb +6 -0
  210. data/lib/karafka/web/pro/ui/views/explorer/{topic → explorer/topic}/_limited.erb +3 -0
  211. data/lib/karafka/web/pro/ui/views/explorer/{topic.erb → explorer/topic.erb} +7 -4
  212. data/lib/karafka/web/pro/ui/views/explorer/messages/_breadcrumbs.erb +32 -0
  213. data/lib/karafka/web/pro/ui/views/explorer/messages/forward.erb +143 -0
  214. data/lib/karafka/web/pro/ui/views/explorer/search/_breadcrumbs.erb +4 -0
  215. data/lib/karafka/web/pro/ui/views/explorer/search/_fix_errors.erb +6 -0
  216. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_metadata.erb +3 -0
  217. data/lib/karafka/web/pro/ui/views/explorer/search/_no_results.erb +6 -0
  218. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_no_search_criteria.erb +3 -0
  219. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_criteria.erb +3 -0
  220. data/lib/karafka/web/pro/ui/views/{search → explorer/search}/_search_modal.erb +5 -2
  221. data/lib/karafka/web/pro/ui/views/explorer/search/_timeout.erb +6 -0
  222. data/lib/karafka/web/pro/ui/views/explorer/search/index.erb +32 -0
  223. data/lib/karafka/web/pro/ui/views/health/_breadcrumbs.erb +3 -0
  224. data/lib/karafka/web/pro/ui/views/health/_no_data.erb +3 -0
  225. data/lib/karafka/web/pro/ui/views/health/_partition.erb +16 -1
  226. data/lib/karafka/web/pro/ui/views/health/_partition_lags.erb +3 -0
  227. data/lib/karafka/web/pro/ui/views/health/_partition_offset.erb +3 -0
  228. data/lib/karafka/web/pro/ui/views/health/_partition_times.erb +3 -0
  229. data/lib/karafka/web/pro/ui/views/health/_table_metadata.erb +4 -1
  230. data/lib/karafka/web/pro/ui/views/health/_tabs.erb +3 -0
  231. data/lib/karafka/web/pro/ui/views/health/changes.erb +4 -1
  232. data/lib/karafka/web/pro/ui/views/health/cluster_lags.erb +3 -0
  233. data/lib/karafka/web/pro/ui/views/health/lags.erb +5 -2
  234. data/lib/karafka/web/pro/ui/views/health/offsets.erb +4 -1
  235. data/lib/karafka/web/pro/ui/views/health/overview.erb +8 -3
  236. data/lib/karafka/web/pro/ui/views/jobs/_job.erb +50 -38
  237. data/lib/karafka/web/pro/ui/views/jobs/_no_jobs.erb +3 -0
  238. data/lib/karafka/web/pro/ui/views/jobs/pending.erb +4 -1
  239. data/lib/karafka/web/pro/ui/views/jobs/running.erb +4 -1
  240. data/lib/karafka/web/pro/ui/views/recurring_tasks/_actions.erb +3 -0
  241. data/lib/karafka/web/pro/ui/views/recurring_tasks/_batch_actions.erb +3 -0
  242. data/lib/karafka/web/pro/ui/views/recurring_tasks/_breadcrumbs.erb +3 -0
  243. data/lib/karafka/web/pro/ui/views/recurring_tasks/_log.erb +3 -0
  244. data/lib/karafka/web/pro/ui/views/recurring_tasks/_not_active.erb +3 -0
  245. data/lib/karafka/web/pro/ui/views/recurring_tasks/_tabs.erb +3 -0
  246. data/lib/karafka/web/pro/ui/views/recurring_tasks/_task.erb +3 -0
  247. data/lib/karafka/web/pro/ui/views/recurring_tasks/logs.erb +3 -0
  248. data/lib/karafka/web/pro/ui/views/recurring_tasks/schedule.erb +3 -0
  249. data/lib/karafka/web/pro/ui/views/routing/_consumer_group.erb +3 -0
  250. data/lib/karafka/web/pro/ui/views/routing/_detail.erb +3 -0
  251. data/lib/karafka/web/pro/ui/views/routing/_topic.erb +3 -0
  252. data/lib/karafka/web/pro/ui/views/routing/index.erb +3 -0
  253. data/lib/karafka/web/pro/ui/views/routing/show.erb +3 -0
  254. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_breadcrumbs.erb +6 -3
  255. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_key.erb +3 -0
  256. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_message.erb +4 -1
  257. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/_messages.erb +3 -0
  258. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/partition.erb +23 -16
  259. data/lib/karafka/web/pro/ui/views/scheduled_messages/explorer/topic.erb +6 -3
  260. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_breadcrumbs.erb +3 -0
  261. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/_no_groups.erb +3 -0
  262. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/index.erb +4 -1
  263. data/lib/karafka/web/pro/ui/views/scheduled_messages/schedules/show.erb +3 -0
  264. data/lib/karafka/web/pro/ui/views/shared/_navigation.erb +25 -17
  265. data/lib/karafka/web/pro/ui/views/shared/_rdkafka_form_error_alert_box.erb +16 -0
  266. data/lib/karafka/web/pro/ui/views/shared/branding/_label.erb +3 -0
  267. data/lib/karafka/web/pro/ui/views/shared/branding/_notice.erb +3 -0
  268. data/lib/karafka/web/pro/ui/views/topics/configs/_breadcrumbs.erb +34 -0
  269. data/lib/karafka/web/pro/ui/views/topics/configs/_config.erb +26 -0
  270. data/lib/karafka/web/pro/ui/views/topics/configs/_delete_button.erb +13 -0
  271. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_form.erb +50 -0
  272. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_plan.erb +16 -0
  273. data/lib/karafka/web/pro/ui/views/topics/configs/_edit_warning.erb +12 -0
  274. data/lib/karafka/web/pro/ui/views/topics/configs/edit.erb +16 -0
  275. data/lib/karafka/web/pro/ui/views/topics/{config.erb → configs/index.erb} +9 -3
  276. data/lib/karafka/web/pro/ui/views/topics/distributions/_add_partitions_button.erb +13 -0
  277. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_badges.erb +3 -0
  278. data/lib/karafka/web/pro/ui/views/topics/distributions/_breadcrumbs.erb +28 -0
  279. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_chart.erb +3 -0
  280. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_form.erb +47 -0
  281. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_hints.erb +15 -0
  282. data/lib/karafka/web/pro/ui/views/topics/distributions/_edit_warnings.erb +14 -0
  283. data/lib/karafka/web/pro/ui/views/topics/distributions/_empty_partitions.erb +4 -0
  284. data/lib/karafka/web/pro/ui/views/topics/{distribution → distributions}/_limited.erb +3 -0
  285. data/lib/karafka/web/pro/ui/views/topics/distributions/_partition.erb +13 -0
  286. data/lib/karafka/web/pro/ui/views/topics/distributions/edit.erb +16 -0
  287. data/lib/karafka/web/pro/ui/views/topics/{distribution.erb → distributions/show.erb} +11 -7
  288. data/lib/karafka/web/pro/ui/views/topics/offsets/_breadcrumbs.erb +20 -0
  289. data/lib/karafka/web/pro/ui/views/topics/offsets/_partition.erb +13 -0
  290. data/lib/karafka/web/pro/ui/views/topics/{offsets.erb → offsets/show.erb} +6 -3
  291. data/lib/karafka/web/pro/ui/views/topics/replications/_breadcrumbs.erb +20 -0
  292. data/lib/karafka/web/pro/ui/views/topics/{_partition.erb → replications/_partition.erb} +4 -1
  293. data/lib/karafka/web/pro/ui/views/topics/{replication.erb → replications/show.erb} +6 -3
  294. data/lib/karafka/web/pro/ui/views/topics/topics/_breadcrumbs.erb +32 -0
  295. data/lib/karafka/web/pro/ui/views/topics/topics/_create_button.erb +13 -0
  296. data/lib/karafka/web/pro/ui/views/topics/topics/_create_hints.erb +15 -0
  297. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_form.erb +36 -0
  298. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_hints.erb +15 -0
  299. data/lib/karafka/web/pro/ui/views/topics/topics/_delete_warning.erb +13 -0
  300. data/lib/karafka/web/pro/ui/views/topics/topics/_new_form.erb +80 -0
  301. data/lib/karafka/web/pro/ui/views/topics/{_tabs.erb → topics/_tabs.erb} +7 -4
  302. data/lib/karafka/web/pro/ui/views/topics/topics/_topic.erb +12 -0
  303. data/lib/karafka/web/pro/ui/views/topics/topics/edit.erb +10 -0
  304. data/lib/karafka/web/pro/ui/views/topics/topics/index.erb +19 -0
  305. data/lib/karafka/web/pro/ui/views/topics/topics/new.erb +12 -0
  306. data/lib/karafka/web/processing/consumers/metrics.rb +1 -1
  307. data/lib/karafka/web/processing/consumers/state.rb +1 -1
  308. data/lib/karafka/web/processing/publisher.rb +4 -4
  309. data/lib/karafka/web/tracking/consumers/contracts/partition.rb +1 -0
  310. data/lib/karafka/web/tracking/consumers/listeners/pausing.rb +2 -2
  311. data/lib/karafka/web/tracking/consumers/listeners/transactions.rb +44 -0
  312. data/lib/karafka/web/tracking/consumers/reporter.rb +2 -2
  313. data/lib/karafka/web/tracking/consumers/sampler.rb +81 -14
  314. data/lib/karafka/web/tracking/helpers/sysconf.rb +33 -0
  315. data/lib/karafka/web/tracking/producers/reporter.rb +1 -1
  316. data/lib/karafka/web/ui/app.rb +19 -112
  317. data/lib/karafka/web/ui/base.rb +63 -4
  318. data/lib/karafka/web/ui/controllers/base_controller.rb +43 -1
  319. data/lib/karafka/web/ui/controllers/cluster_controller.rb +5 -2
  320. data/lib/karafka/web/ui/controllers/errors_controller.rb +1 -1
  321. data/lib/karafka/web/ui/controllers/requests/execution_wrapper.rb +52 -0
  322. data/lib/karafka/web/ui/controllers/requests/hookable.rb +99 -0
  323. data/lib/karafka/web/ui/controllers/requests/params.rb +39 -1
  324. data/lib/karafka/web/ui/controllers/responses/redirect.rb +0 -5
  325. data/lib/karafka/web/ui/controllers/status_controller.rb +3 -0
  326. data/lib/karafka/web/ui/helpers/application_helper.rb +10 -1
  327. data/lib/karafka/web/ui/helpers/paths_helper.rb +54 -10
  328. data/lib/karafka/web/ui/lib/admin.rb +1 -1
  329. data/lib/karafka/web/ui/lib/cache.rb +135 -0
  330. data/lib/karafka/web/ui/models/broker.rb +1 -2
  331. data/lib/karafka/web/ui/models/cluster_info.rb +15 -21
  332. data/lib/karafka/web/ui/models/consumers_metrics.rb +1 -1
  333. data/lib/karafka/web/ui/models/consumers_state.rb +1 -1
  334. data/lib/karafka/web/ui/models/counters.rb +1 -1
  335. data/lib/karafka/web/ui/models/health.rb +9 -7
  336. data/lib/karafka/web/ui/models/process.rb +14 -0
  337. data/lib/karafka/web/ui/models/processes.rb +2 -2
  338. data/lib/karafka/web/ui/models/recurring_tasks/schedule.rb +1 -1
  339. data/lib/karafka/web/ui/models/status.rb +27 -8
  340. data/lib/karafka/web/ui/models/topic.rb +1 -2
  341. data/lib/karafka/web/ui/public/javascripts/application.js +8 -98
  342. data/lib/karafka/web/ui/public/javascripts/application.min.js +12 -4
  343. data/lib/karafka/web/ui/public/javascripts/application.min.js.br +0 -0
  344. data/lib/karafka/web/ui/public/javascripts/application.min.js.gz +0 -0
  345. data/lib/karafka/web/ui/public/javascripts/components/action_confirmation_manager.js +30 -0
  346. data/lib/karafka/web/ui/public/javascripts/components/alerts.js +39 -0
  347. data/lib/karafka/web/ui/public/javascripts/components/button_lock_manager.js +50 -0
  348. data/lib/karafka/web/ui/public/javascripts/components/live_poll.js +71 -19
  349. data/lib/karafka/web/ui/public/javascripts/components/message_republish_manager.js +50 -0
  350. data/lib/karafka/web/ui/public/javascripts/components/page_title_tracker.js +21 -0
  351. data/lib/karafka/web/ui/public/javascripts/components/partition_redirect_manager.js +21 -0
  352. data/lib/karafka/web/ui/public/javascripts/components/time_ago_manager.js +25 -0
  353. data/lib/karafka/web/ui/public/javascripts/components/timestamp_selector.js +30 -0
  354. data/lib/karafka/web/ui/public/javascripts/libs/datepicker.js +2 -2
  355. data/lib/karafka/web/ui/public/stylesheets/application.css +30 -0
  356. data/lib/karafka/web/ui/public/stylesheets/application.min.css +5122 -13
  357. data/lib/karafka/web/ui/public/stylesheets/application.min.css.br +0 -0
  358. data/lib/karafka/web/ui/public/stylesheets/application.min.css.gz +0 -0
  359. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_dark.min.css.gz +0 -0
  360. data/lib/karafka/web/ui/public/stylesheets/libs/highlight_light.min.css.gz +0 -0
  361. data/lib/karafka/web/ui/public/stylesheets/libs/tailwind.css +512 -213
  362. data/lib/karafka/web/ui/routes/assets.rb +53 -0
  363. data/lib/karafka/web/ui/routes/base.rb +36 -0
  364. data/lib/karafka/web/ui/routes/cluster.rb +28 -0
  365. data/lib/karafka/web/ui/routes/consumers.rb +35 -0
  366. data/lib/karafka/web/ui/routes/dashboard.rb +20 -0
  367. data/lib/karafka/web/ui/routes/errors.rb +26 -0
  368. data/lib/karafka/web/ui/routes/jobs.rb +28 -0
  369. data/lib/karafka/web/ui/routes/pro_only.rb +27 -0
  370. data/lib/karafka/web/ui/routes/routing.rb +26 -0
  371. data/lib/karafka/web/ui/routes/status.rb +19 -0
  372. data/lib/karafka/web/ui/routes/support.rb +19 -0
  373. data/lib/karafka/web/ui/routes/ux.rb +19 -0
  374. data/lib/karafka/web/ui/views/cluster/_partition.erb +2 -2
  375. data/lib/karafka/web/ui/views/cluster/brokers.erb +1 -1
  376. data/lib/karafka/web/ui/views/consumers/_breadcrumbs.erb +7 -1
  377. data/lib/karafka/web/ui/views/consumers/_consumer.erb +39 -30
  378. data/lib/karafka/web/ui/views/consumers/_incompatible.erb +13 -0
  379. data/lib/karafka/web/ui/views/consumers/_no_consumers.erb +2 -2
  380. data/lib/karafka/web/ui/views/consumers/_tabs.erb +4 -4
  381. data/lib/karafka/web/ui/views/consumers/index.erb +1 -1
  382. data/lib/karafka/web/ui/views/dashboard/_feature_pro.erb +1 -1
  383. data/lib/karafka/web/ui/views/dashboard/_not_enough_data.erb +2 -2
  384. data/lib/karafka/web/ui/views/dashboard/_ranges_selector.erb +1 -1
  385. data/lib/karafka/web/ui/views/dashboard/index.erb +6 -49
  386. data/lib/karafka/web/ui/views/errors/_detail.erb +3 -3
  387. data/lib/karafka/web/ui/views/errors/index.erb +1 -1
  388. data/lib/karafka/web/ui/views/jobs/_job.erb +38 -29
  389. data/lib/karafka/web/ui/views/jobs/pending.erb +1 -1
  390. data/lib/karafka/web/ui/views/jobs/running.erb +1 -1
  391. data/lib/karafka/web/ui/views/layout.erb +7 -5
  392. data/lib/karafka/web/ui/views/shared/_become_pro.erb +1 -1
  393. data/lib/karafka/web/ui/views/shared/_brand.erb +1 -1
  394. data/lib/karafka/web/ui/views/shared/_breadcrumbs.erb +1 -1
  395. data/lib/karafka/web/ui/views/shared/_content.erb +1 -1
  396. data/lib/karafka/web/ui/views/shared/_controls.erb +10 -3
  397. data/lib/karafka/web/ui/views/shared/_custom_nav.erb +9 -0
  398. data/lib/karafka/web/ui/views/shared/_flashes.erb +3 -5
  399. data/lib/karafka/web/ui/views/shared/_header.erb +25 -2
  400. data/lib/karafka/web/ui/views/shared/_navigation.erb +17 -15
  401. data/lib/karafka/web/ui/views/shared/alerts/_error.erb +8 -0
  402. data/lib/karafka/web/ui/views/shared/alerts/_info.erb +8 -0
  403. data/lib/karafka/web/ui/views/shared/alerts/_primary.erb +8 -0
  404. data/lib/karafka/web/ui/views/shared/alerts/_secondary.erb +8 -0
  405. data/lib/karafka/web/ui/views/shared/alerts/_success.erb +8 -0
  406. data/lib/karafka/web/ui/views/shared/alerts/_warning.erb +8 -0
  407. data/lib/karafka/web/ui/views/shared/exceptions/incompatible_schema.erb +34 -0
  408. data/lib/karafka/web/ui/views/shared/exceptions/not_allowed.erb +4 -0
  409. data/lib/karafka/web/ui/views/shared/exceptions/not_found.erb +5 -1
  410. data/lib/karafka/web/ui/views/shared/exceptions/pro_only.erb +4 -0
  411. data/lib/karafka/web/ui/views/shared/icons/_arrow_left.erb +3 -0
  412. data/lib/karafka/web/ui/views/shared/icons/_arrow_up_tray.erb +3 -0
  413. data/lib/karafka/web/ui/views/shared/icons/_clock.erb +3 -0
  414. data/lib/karafka/web/ui/views/shared/icons/_pencil.erb +3 -0
  415. data/lib/karafka/web/ui/views/shared/icons/_pencil_square.erb +3 -0
  416. data/lib/karafka/web/ui/views/shared/icons/_play_pause.erb +3 -0
  417. data/lib/karafka/web/ui/views/shared/icons/_plus.erb +3 -0
  418. data/lib/karafka/web/ui/views/shared/icons/_trash.erb +3 -0
  419. data/lib/karafka/web/ui/views/status/failures/_live_reporting.erb +1 -1
  420. data/lib/karafka/web/ui/views/status/failures/_partitions.erb +3 -3
  421. data/lib/karafka/web/ui/views/status/failures/_state_calculation.erb +2 -2
  422. data/lib/karafka/web/ui/views/status/info/_components.erb +6 -6
  423. data/lib/karafka/web/ui/views/status/show.erb +15 -0
  424. data/lib/karafka/web/ui/views/status/warnings/_consumers_schemas.erb +31 -0
  425. data/lib/karafka/web/ui/views/ux/_icons.erb +1 -1
  426. data/lib/karafka/web/ui/views/ux/_status_rows.erb +6 -0
  427. data/lib/karafka/web/version.rb +1 -1
  428. data/lib/karafka/web.rb +3 -0
  429. data/package-lock.json +776 -1208
  430. data/package.json +3 -4
  431. data/postcss.config.js +1 -2
  432. data/renovate.json +13 -1
  433. data/tailwind.config.js +0 -4
  434. data.tar.gz.sig +0 -0
  435. metadata +232 -108
  436. metadata.gz.sig +0 -0
  437. data/lib/karafka/web/pro/commanding/commands/quiet.rb +0 -34
  438. data/lib/karafka/web/pro/commanding/commands/stop.rb +0 -34
  439. data/lib/karafka/web/pro/commanding/commands/trace.rb +0 -41
  440. data/lib/karafka/web/pro/ui/controllers/commanding_controller.rb +0 -118
  441. data/lib/karafka/web/pro/ui/controllers/commands_controller.rb +0 -96
  442. data/lib/karafka/web/pro/ui/controllers/consumers_controller.rb +0 -138
  443. data/lib/karafka/web/pro/ui/controllers/explorer_controller.rb +0 -220
  444. data/lib/karafka/web/pro/ui/controllers/messages_controller.rb +0 -107
  445. data/lib/karafka/web/pro/ui/controllers/search_controller.rb +0 -73
  446. data/lib/karafka/web/pro/ui/controllers/topics_controller.rb +0 -130
  447. data/lib/karafka/web/pro/ui/views/commands/_breadcrumbs.erb +0 -21
  448. data/lib/karafka/web/pro/ui/views/commands/_command_details.erb +0 -1
  449. data/lib/karafka/web/pro/ui/views/commands/_empty.erb +0 -3
  450. data/lib/karafka/web/pro/ui/views/commands/show.erb +0 -33
  451. data/lib/karafka/web/pro/ui/views/consumers/_breadcrumbs.erb +0 -55
  452. data/lib/karafka/web/pro/ui/views/consumers/_consumer.erb +0 -47
  453. data/lib/karafka/web/pro/ui/views/consumers/_consumer_controls.erb +0 -95
  454. data/lib/karafka/web/pro/ui/views/consumers/_consumer_performance.erb +0 -59
  455. data/lib/karafka/web/pro/ui/views/consumers/_tabs.erb +0 -33
  456. data/lib/karafka/web/pro/ui/views/consumers/consumer/_commands.erb +0 -72
  457. data/lib/karafka/web/pro/ui/views/consumers/consumer/_consumer_group.erb +0 -8
  458. data/lib/karafka/web/pro/ui/views/consumers/consumer/_no_subscriptions.erb +0 -7
  459. data/lib/karafka/web/pro/ui/views/consumers/details.erb +0 -13
  460. data/lib/karafka/web/pro/ui/views/consumers/subscriptions.erb +0 -25
  461. data/lib/karafka/web/pro/ui/views/explorer/_no_topics.erb +0 -1
  462. data/lib/karafka/web/pro/ui/views/explorer/_topic.erb +0 -10
  463. data/lib/karafka/web/pro/ui/views/explorer/index.erb +0 -14
  464. data/lib/karafka/web/pro/ui/views/explorer/messages/_headers.erb +0 -33
  465. data/lib/karafka/web/pro/ui/views/explorer/partition/_cleaned.erb +0 -3
  466. data/lib/karafka/web/pro/ui/views/explorer/partition/_empty.erb +0 -3
  467. data/lib/karafka/web/pro/ui/views/explorer/topic/_empty.erb +0 -3
  468. data/lib/karafka/web/pro/ui/views/search/_breadcrumbs.erb +0 -1
  469. data/lib/karafka/web/pro/ui/views/search/_fix_errors.erb +0 -3
  470. data/lib/karafka/web/pro/ui/views/search/_no_results.erb +0 -3
  471. data/lib/karafka/web/pro/ui/views/search/_timeout.erb +0 -3
  472. data/lib/karafka/web/pro/ui/views/search/index.erb +0 -29
  473. data/lib/karafka/web/pro/ui/views/topics/_breadcrumbs.erb +0 -45
  474. data/lib/karafka/web/pro/ui/views/topics/_partition_offsets.erb +0 -10
  475. data/lib/karafka/web/pro/ui/views/topics/_topic.erb +0 -9
  476. data/lib/karafka/web/pro/ui/views/topics/distribution/_empty_partitions.erb +0 -1
  477. data/lib/karafka/web/pro/ui/views/topics/distribution/_partition.erb +0 -10
  478. data/lib/karafka/web/pro/ui/views/topics/index.erb +0 -14
  479. data/lib/karafka/web/ui/lib/ttl_cache.rb +0 -82
@@ -1,466 +1,747 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
1
+ @import 'tailwindcss';
4
2
 
5
- @layer components {
6
- .badge {
7
- @apply rounded-md whitespace-nowrap mb-1;
3
+ @plugin "daisyui" {
4
+ themes: corporate --default, dark --prefersdark;
5
+ }
6
+
7
+ @config '../../../../../../../tailwind.config.js';
8
+
9
+ /*
10
+ The default border color has changed to `currentColor` in Tailwind CSS v4,
11
+ so we've added these compatibility styles to make sure everything still
12
+ looks the same as it did with Tailwind CSS v3.
13
+
14
+ If we ever want to remove these styles, we need to add an explicit border
15
+ color utility to any element that depends on these defaults.
16
+ */
17
+ @layer base {
18
+ *,
19
+ ::after,
20
+ ::before,
21
+ ::backdrop,
22
+ ::file-selector-button {
23
+ border-color: var(--color-gray-200, currentColor);
8
24
  }
25
+ }
9
26
 
10
- .breadcrumbs-wrapper {
11
- @apply col-span-12 mb-3;
27
+ @utility badge {
28
+ @apply rounded-md whitespace-nowrap mb-1;
29
+
30
+ .data-table & {
31
+ @apply mt-1 badge-sm;
12
32
  }
13
33
 
14
- .breadcrumbs {
15
- @apply text-sm pt-0;
34
+ .row-table & {
35
+ @apply mt-1 badge-sm;
16
36
  }
17
37
 
18
- .custom-tab {
19
- @apply border-b-2 py-4 px-2 text-sm hover:text-primary md:text-base;
38
+ .table_metadata & {
39
+ @apply badge-sm;
20
40
  }
21
41
 
22
- .custom-tab.active {
42
+ .card-metric & {
43
+ @apply badge-sm;
44
+ }
45
+ }
46
+
47
+ @utility breadcrumbs-wrapper {
48
+ @apply col-span-12 mb-3;
49
+ }
50
+
51
+ @utility breadcrumbs {
52
+ @apply text-sm pt-0;
53
+ }
54
+
55
+ @utility custom-tab {
56
+ @apply border-b-2 py-4 px-2 text-sm hover:text-primary md:text-base;
57
+
58
+ &.active {
23
59
  @apply text-primary border-primary;
24
60
  }
25
61
 
26
- .custom-tab:hover {
62
+ &:hover {
27
63
  @apply no-underline;
28
64
  }
29
65
 
30
- .custom-tab.disabled {
66
+ &.disabled {
31
67
  @apply text-gray-500;
32
68
  }
69
+ }
70
+
71
+ @utility active {
72
+ &.custom-tab {
73
+ @apply text-primary border-primary;
74
+ }
75
+
76
+ &.btn-action {
77
+ @apply text-base-content;
78
+ }
79
+ }
33
80
 
34
- .tab-container-wrapper {
35
- @apply col-span-12 mb-9;
81
+ @utility disabled {
82
+ &.custom-tab {
83
+ @apply text-gray-500;
36
84
  }
37
85
 
38
- .tab-container {
39
- @apply mb-3 flex flex-wrap gap-5 border-b sm:gap-10;
86
+ &.sidebar-nav-item {
87
+ @apply text-gray-500;
40
88
  }
89
+ }
41
90
 
42
- .tab-container span {
91
+ @utility tab-container-wrapper {
92
+ @apply col-span-12 mb-9;
93
+ }
94
+
95
+ @utility tab-container {
96
+ @apply mb-3 flex flex-wrap gap-5 border-b sm:gap-10;
97
+
98
+ & span {
43
99
  @apply hover:cursor-pointer;
44
100
  }
101
+ }
102
+
103
+ @utility alert {
104
+ @apply rounded-sm;
105
+ }
106
+
107
+ @utility alert-primary {
108
+ @apply bg-primary border-primary;
109
+ @apply text-base-100;
110
+ }
111
+
112
+ @utility alert-secondary {
113
+ @apply bg-secondary border-secondary;
114
+ @apply text-base-100;
115
+ }
116
+
117
+ @utility alert-box {
118
+ @apply border rounded-sm;
119
+ }
120
+
121
+ @utility alert-box-header {
122
+ @apply p-4 flex items-center justify-between;
123
+
124
+ & span {
125
+ @apply ml-4;
126
+ }
45
127
 
46
- .alert {
47
- @apply rounded-md;
128
+ & div {
129
+ @apply flex items-center;
48
130
  }
49
131
 
50
- .alert-primary {
51
- @apply bg-primary border-primary;
132
+ .alert-box-warning & {
133
+ @apply bg-warning;
52
134
  }
53
135
 
54
- .alert-secondary {
55
- @apply bg-secondary border-secondary;
136
+ [data-theme='dark'] .alert-box-warning & {
137
+ @apply text-base-100;
56
138
  }
57
139
 
58
- .alert-box {
59
- @apply border rounded-md;
140
+ .alert-box-success & {
141
+ @apply bg-success;
60
142
  }
61
143
 
62
- .alert-box-header {
63
- @apply p-4 flex items-center justify-between rounded-t-md;
144
+ .alert-box-info & {
145
+ @apply bg-info;
64
146
  }
65
147
 
66
- .alert-box-header span {
67
- @apply ml-4;
148
+ .alert-box-error & {
149
+ @apply bg-error;
68
150
  }
69
151
 
70
- .alert-box-header div {
71
- @apply flex items-center;
152
+ .alert-box-primary & {
153
+ @apply bg-primary;
154
+ }
155
+
156
+ .alert-box-secondary & {
157
+ @apply bg-secondary;
158
+ }
159
+
160
+ .alert-box-info & {
161
+ @apply text-base-100;
162
+ }
163
+
164
+ .alert-box-primary & {
165
+ @apply text-base-100;
72
166
  }
73
167
 
74
- .alert-box-content {
75
- @apply p-4 rounded-b-lg bg-base-100;
168
+ .alert-box-error & {
169
+ @apply text-base-100;
76
170
  }
77
171
 
78
- .alert-box-warning {
79
- @apply border-warning;
172
+ .alert-box-success & {
173
+ @apply text-base-100;
80
174
  }
81
175
 
82
- .alert-box-warning .alert-box-header {
176
+ .alert-box-secondary & {
177
+ @apply text-base-100;
178
+ }
179
+ }
180
+
181
+ @utility alert-box-content {
182
+ @apply p-4 rounded-b-lg bg-base-100;
183
+ }
184
+
185
+ @utility alert-box-warning {
186
+ @apply border-warning;
187
+
188
+ & .alert-box-header {
83
189
  @apply bg-warning;
84
190
  }
85
191
 
86
- .alert-box-success {
87
- @apply border-success;
192
+ [data-theme='dark'] & .alert-box-header {
193
+ @apply text-base-100;
88
194
  }
195
+ }
196
+
197
+ @utility alert-box-success {
198
+ @apply border-success;
89
199
 
90
- .alert-box-success .alert-box-header {
200
+ & .alert-box-header {
91
201
  @apply bg-success;
92
202
  }
93
203
 
94
- .alert-box-info {
95
- @apply border-info;
204
+ & .alert-box-header {
205
+ @apply text-base-100;
96
206
  }
207
+ }
97
208
 
98
- .alert-box-info .alert-box-header {
209
+ @utility alert-box-info {
210
+ @apply border-info;
211
+
212
+ & .alert-box-header {
99
213
  @apply bg-info;
100
214
  }
101
215
 
102
- .alert-box-error {
103
- @apply border-error;
216
+ & .alert-box-header {
217
+ @apply text-base-100;
104
218
  }
219
+ }
220
+
221
+ @utility alert-box-error {
222
+ @apply border-error;
105
223
 
106
- .alert-box-error .alert-box-header {
224
+ & .alert-box-header {
107
225
  @apply bg-error;
108
226
  }
109
227
 
110
- .alert-box-primary {
111
- @apply border-primary
228
+ & .alert-box-header {
229
+ @apply text-base-100;
112
230
  }
231
+ }
113
232
 
114
- .alert-box-primary .alert-box-header {
233
+ @utility alert-box-primary {
234
+ @apply border-primary;
235
+
236
+ & .alert-box-header {
115
237
  @apply bg-primary;
116
238
  }
117
239
 
118
- .alert-box-secondary {
119
- @apply border-secondary;
240
+ & .alert-box-header {
241
+ @apply text-base-100;
120
242
  }
243
+ }
244
+
245
+ @utility alert-box-secondary {
246
+ @apply border-secondary;
121
247
 
122
- .alert-box-secondary .alert-box-header {
248
+ & .alert-box-header {
123
249
  @apply bg-secondary;
124
250
  }
125
251
 
126
- .sidebar-nav {
127
- @apply flex min-h-screen flex-col gap-2 overflow-y-auto bg-gray-800 text-white px-6 py-10;
252
+ & .alert-box-header {
253
+ @apply text-base-100;
128
254
  }
255
+ }
129
256
 
130
- .sidebar-nav-item {
131
- @apply text-white visited:text-white active:text-white focus:text-white hover:bg-gray-700;
257
+ @utility sidebar-nav {
258
+ @apply flex min-h-screen flex-col gap-2 overflow-y-auto bg-gray-800 text-white px-6 py-10;
259
+ @apply w-72;
260
+
261
+ .drawer-side.collapsed:hover & {
262
+ @apply w-72;
132
263
  }
133
264
 
134
- .sidebar-nav-item-active {
135
- @apply text-primary border-primary;
265
+ .drawer-side.collapsed & {
266
+ @apply lg:w-auto;
136
267
  }
268
+ }
269
+
270
+ @utility sidebar-nav-item {
271
+ @apply text-white visited:text-white active:text-white focus:text-white hover:bg-gray-700;
272
+ @apply pt-2 pb-2 pl-3 pr-3;
137
273
 
138
- .sidebar-nav-item.disabled {
274
+ &.disabled {
139
275
  @apply text-gray-500;
140
276
  }
277
+ }
141
278
 
142
- .data-table {
143
- @apply table w-full bg-base-100 border border-gray-300 rounded rounded-md mb-5;
144
- }
279
+ @utility sidebar-nav-item-active {
280
+ @apply text-primary border-primary;
281
+ }
145
282
 
146
- .data-table .badge {
147
- @apply mt-1 badge-sm;
148
- }
283
+ @utility data-table {
284
+ @apply table w-full bg-base-100 border border-gray-300 rounded-sm rounded-md mb-5;
149
285
 
150
- .data-table-wrapper {
151
- @apply col-span-12 mb-3 overflow-x-auto;
286
+ & .badge {
287
+ @apply mt-1 badge-sm;
152
288
  }
153
289
 
154
- [data-theme="corporate"] .data-table thead {
290
+ [data-theme='corporate'] & thead {
155
291
  @apply bg-gray-100;
156
292
  }
157
293
 
158
- .data-table thead th {
159
- @apply border border-gray-300 p-2;
294
+ & thead th {
295
+ @apply border border-gray-300 p-2 text-gray-500;
160
296
  }
161
297
 
162
- .data-table thead tr {
298
+ & thead tr {
163
299
  @apply align-middle;
164
300
  }
165
301
 
166
- [data-theme="corporate"] .data-table tbody tr {
302
+ [data-theme='corporate'] & tbody tr {
167
303
  @apply even:bg-gray-50 hover:bg-base-200;
168
304
  }
169
305
 
170
- [data-theme="dark"] .data-table tbody tr {
306
+ [data-theme='dark'] & tbody tr {
171
307
  @apply even:bg-base-200 hover:bg-base-300;
172
308
  }
173
309
 
174
- .data-table tbody td {
310
+ & tbody td {
175
311
  @apply border border-gray-300 p-2;
176
312
  }
177
313
 
178
- .data-table td:has(.btn) {
314
+ & td:has(.btn) {
179
315
  @apply text-center;
180
316
  }
317
+ }
181
318
 
182
- .row-table {
183
- @apply table w-full bg-base-100 border border-gray-300 rounded-md mb-5;
319
+ @utility data-table-wrapper {
320
+ @apply col-span-12 mb-3 overflow-x-auto;
321
+ }
322
+
323
+ @utility btn {
324
+ .data-table td:has(&) {
325
+ @apply text-center;
184
326
  }
185
327
 
186
- .row-table-wrapper {
187
- @apply col-span-12 mb-3 overflow-x-auto;
328
+ .row-table td:has(&) {
329
+ @apply text-center;
188
330
  }
331
+ @apply font-normal;
332
+ }
333
+
334
+ @utility row-table {
335
+ @apply table w-full bg-base-100 border border-gray-300 rounded-md mb-5;
189
336
 
190
- [data-theme="corporate"] .row-table thead {
337
+ [data-theme='corporate'] & thead {
191
338
  @apply bg-gray-100;
192
339
  }
193
340
 
194
- [data-theme="corporate"] .row-table tbody tr {
341
+ [data-theme='corporate'] & tbody tr {
195
342
  @apply even:bg-gray-50 hover:bg-base-200;
196
343
  }
197
344
 
198
- .row-table thead th {
345
+ & thead th {
199
346
  @apply border border-gray-300 p-2;
200
347
  }
201
348
 
202
- .row-table thead tr {
349
+ & thead tr {
203
350
  @apply align-middle;
204
351
  }
205
352
 
206
- [data-theme="dark"] .row-table tbody tr {
353
+ [data-theme='dark'] & tbody tr {
207
354
  @apply even:bg-base-200 hover:bg-base-300;
208
355
  }
209
356
 
210
- .row-table tbody td {
357
+ & tbody td {
211
358
  @apply border border-y-gray-300 p-2 border-x-gray-100;
212
359
  }
213
360
 
214
- .row-table tbody td:first-child {
361
+ & tbody td:first-child {
215
362
  @apply border-l-gray-300;
216
363
  }
217
364
 
218
- .row-table tbody td:last-child {
365
+ & tbody td:last-child {
219
366
  @apply border-r-gray-300;
220
367
  }
221
368
 
222
- .row-table .badge {
369
+ & .badge {
223
370
  @apply mt-1 badge-sm;
224
371
  }
225
372
 
226
- .row-table td:has(.btn) {
373
+ & td:has(.btn) {
227
374
  @apply text-center;
228
375
  }
376
+ }
229
377
 
230
- .table_metadata {
231
- @apply text-end text-gray-500 mb-3 text-sm;
232
- }
378
+ @utility row-table-wrapper {
379
+ @apply col-span-12 mb-3 overflow-x-auto;
380
+ }
233
381
 
234
- .table_metadata .badge {
235
- @apply badge-sm
236
- }
382
+ @utility table_metadata {
383
+ @apply text-end text-gray-500 mb-3 text-sm;
237
384
 
238
- .topic-tiles {
239
- @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4;
385
+ & .badge {
386
+ @apply badge-sm;
240
387
  }
388
+ }
241
389
 
242
- .topic-tile {
243
- @apply bg-base-100 rounded-md border border-gray-300;
244
- }
390
+ @utility topic-tiles {
391
+ @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4;
392
+ }
245
393
 
246
- .topic-tile-body {
247
- @apply p-2;
248
- }
394
+ @utility topic-tile {
395
+ @apply bg-base-100 rounded-md border border-gray-300;
396
+ }
249
397
 
250
- .topic-tile-text {
251
- @apply mb-0 p-2;
252
- }
398
+ @utility topic-tile-body {
399
+ @apply p-2;
400
+ }
253
401
 
254
- .topic-tile-link {
255
- @apply text-blue-500 hover:underline;
256
- }
402
+ @utility topic-tile-text {
403
+ @apply mb-0 p-2;
404
+ }
257
405
 
258
- .btn {
259
- @apply font-normal;
260
- }
406
+ @utility topic-tile-link {
407
+ @apply text-blue-500 hover:underline;
408
+ }
261
409
 
262
- [data-theme="corporate"]
263
- .btn-info, .btn-primary, .btn-error, .btn-success,
264
- .alert-info, .alert-error, .alert-success, .alert-primary, .alert-secondary,
265
- .badge-info, .badge-primary, .badge-error, .badge-success, .badge-secondary,
266
- .alert-box-info .alert-box-header, .alert-box-primary .alert-box-header,
267
- .alert-box-error .alert-box-header, .alert-box-success .alert-box-header,
268
- .alert-box-secondary .alert-box-header,
269
- .btn-outline.btn-active.btn-primary, .btn-outline.btn-active.btn-secondary,
270
- .btn-outline.btn-active.btn-info, .btn-outline.btn-active.btn-success,
271
- .btn-outline.btn-active.btn-error {
272
- @apply text-base-100;
273
- }
410
+ @utility alert-info {
411
+ @apply text-base-100;
412
+ }
274
413
 
275
- [data-theme="corporate"]
276
- .btn-outline.btn-primary, .btn-outline.btn-secondary, .btn-outline.btn-info,
277
- .btn-outline.btn-success, .btn-outline.btn-error {
278
- @apply hover:text-base-100;
279
- }
414
+ @utility alert-error {
415
+ @apply text-base-100;
416
+ }
280
417
 
281
- .actions {
282
- @apply flex items-center text-end text-gray-700 mb-6;
283
- }
418
+ @utility alert-success {
419
+ @apply text-base-100;
420
+ }
284
421
 
285
- .btn-action {
286
- @apply py-1 px-3 rounded-md text-sm hover:bg-gray-200 text-gray-500 hover:cursor-pointer;
287
- }
422
+ @utility badge-info {
423
+ @apply text-base-100;
424
+ }
288
425
 
289
- .btn-action.active {
426
+ @utility badge-primary {
427
+ @apply text-base-100;
428
+ }
429
+
430
+ @utility badge-error {
431
+ @apply text-base-100;
432
+ }
433
+
434
+ @utility badge-success {
435
+ @apply text-base-100;
436
+ }
437
+
438
+ @utility badge-secondary {
439
+ @apply text-base-100;
440
+ }
441
+
442
+ @utility actions {
443
+ @apply flex items-center text-end text-gray-700 mb-6;
444
+ }
445
+
446
+ @utility btn-action {
447
+ @apply py-1 px-3 rounded-md text-sm hover:bg-gray-200 text-gray-500 hover:cursor-pointer;
448
+
449
+ &.active {
290
450
  @apply text-base-content;
291
451
  }
452
+ }
292
453
 
293
- .h2 {
294
- @apply text-xl text-left text-base-content mb-4 lg:font-light
295
- }
454
+ @utility h2 {
455
+ @apply text-xl text-left text-base-content mb-4 lg:font-light;
456
+ }
296
457
 
297
- .h3 {
298
- @apply text-lg text-left text-base-content mb-4 lg:font-light
299
- }
458
+ @utility h3 {
459
+ @apply text-lg text-left text-base-content mb-4 lg:font-light;
460
+ }
300
461
 
301
- .grid-default {
302
- @apply grid grid-cols-12 grid-rows-[min-content] gap-y-6 p-4 lg:gap-x-12 lg:p-10;
303
- }
462
+ @utility grid-default {
463
+ @apply grid grid-cols-12 grid-rows-[min-content] gap-y-6 p-4 lg:gap-x-12 lg:p-10;
464
+ }
304
465
 
305
- .grid-sub-5 {
306
- @apply grid grid-cols-5 grid-rows-[min-content] gap-y-6 p-4 lg:gap-x-10 lg:p-10 lg:pb-0;
307
- }
466
+ @utility grid-sub-5 {
467
+ @apply grid grid-cols-5 grid-rows-[min-content] gap-y-6 p-4 lg:gap-x-10 lg:p-10 lg:pb-0;
468
+ }
308
469
 
309
- .text-muted {
310
- @apply text-gray-500;
311
- }
470
+ @utility text-muted {
471
+ @apply text-gray-500;
472
+ }
312
473
 
313
- table .status-row-quiet td:first-child {
474
+ @utility status-row-quiet {
475
+ table & td:first-child {
314
476
  @apply border-l border-l-warning;
315
477
  }
478
+ }
316
479
 
317
- table .status-row-quieting td:first-child {
480
+ @utility status-row-quieting {
481
+ table & td:first-child {
318
482
  @apply border-l border-l-warning;
319
483
  }
484
+ }
320
485
 
321
- table .status-row-stopping td:first-child {
486
+ @utility status-row-stopping {
487
+ table & td:first-child {
322
488
  @apply border-l border-l-error;
323
489
  }
490
+ }
324
491
 
325
- table .status-row-stopped td:first-child {
492
+ @utility status-row-stopped {
493
+ table & td:first-child {
326
494
  @apply border-l border-l-error;
327
495
  }
496
+ }
328
497
 
329
- table .status-row-warning td:first-child {
498
+ @utility status-row-warning {
499
+ table & td:first-child {
330
500
  @apply border-l border-l-warning;
331
501
  }
502
+ }
332
503
 
333
- table .status-row-error td:first-child {
504
+ @utility status-row-error {
505
+ table & td:first-child {
334
506
  @apply border-l border-l-error;
335
507
  }
508
+ }
336
509
 
337
- pre.code {
338
- @apply text-sm border border-gray-300;
510
+ @utility status-row-incompatible {
511
+ table & td:first-child {
512
+ @apply border-l border-l-secondary;
339
513
  }
514
+ }
340
515
 
341
- .card-metric {
342
- @apply bg-base-100 p-3 border border-gray-300 rounded-md;
343
- }
516
+ @utility code {
517
+ @apply text-sm border border-gray-300;
518
+ }
519
+
520
+ @utility card-metric {
521
+ @apply bg-base-100 p-3 border border-gray-300 rounded-md;
344
522
 
345
- .card-metric h3 {
523
+ & h3 {
346
524
  @apply text-lg mb-2;
347
525
  }
348
526
 
349
- .card-metric li {
527
+ & li {
350
528
  @apply flex justify-between text-sm;
351
529
  }
352
530
 
353
- .card-metric .badge {
531
+ & .badge {
354
532
  @apply badge-sm;
355
533
  }
534
+ }
356
535
 
357
- .card-support {
358
- @apply bg-base-100 rounded-lg p-6 border border-gray-300;
359
- }
536
+ @utility card-support {
537
+ @apply bg-base-100 rounded-lg p-6 border border-gray-300;
360
538
 
361
- .card-support h3 {
539
+ & h3 {
362
540
  @apply text-2xl mb-4 flex items-center;
363
541
  }
364
542
 
365
- .card-support h3 span {
543
+ & h3 span {
366
544
  @apply ml-2;
367
545
  }
368
546
 
369
- .card-support a:not(.btn) {
547
+ & a:not(.btn) {
370
548
  @apply text-blue-500 hover:underline;
371
549
  }
372
550
 
373
- .card-support p {
551
+ & p {
374
552
  @apply mb-4;
375
553
  }
554
+ }
555
+
556
+ @utility card-detail-container {
557
+ @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 gap-4 text-center;
558
+ }
559
+
560
+ @utility card-detail {
561
+ @apply card bg-base-100 border border-gray-300 rounded-md;
562
+ }
563
+
564
+ @utility card-detail-body {
565
+ @apply card-body flex flex-col items-center justify-center p-3;
376
566
 
377
- .card-detail-container {
378
- @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 gap-4 text-center;
567
+ & badge {
568
+ @apply mt-1 mb-1;
379
569
  }
570
+ }
571
+
572
+ @utility card-summary-container {
573
+ @apply flex justify-center;
574
+ }
380
575
 
381
- .card-detail {
382
- @apply card bg-base-100 border border-gray-300 rounded-md;
576
+ @utility card-summary {
577
+ @apply card bg-base-100 border border-gray-300 rounded-md p-1 w-full max-w-xs;
578
+ }
579
+
580
+ @utility card-summary-body {
581
+ @apply card-body p-2;
582
+ }
583
+
584
+ @utility card-summary-value {
585
+ @apply mb-0 text-lg;
586
+ }
587
+
588
+ @utility card-summary-title {
589
+ @apply text-gray-500;
590
+ }
591
+
592
+ @utility drawer-content {
593
+ & a:hover:not(.btn):not(.custom-tab) {
594
+ @apply link;
383
595
  }
596
+ }
384
597
 
385
- .card-detail-body {
386
- @apply card-body flex flex-col items-center justify-center p-3;
598
+ @utility drawer-side {
599
+ & > .drawer-overlay {
600
+ transition-duration: 0ms;
601
+ }
602
+ & > *:not(.drawer-overlay) {
603
+ transition-duration: 0ms;
387
604
  }
388
605
 
389
- .card-detail-body badge {
390
- @apply mt-1 mb-1;
606
+ &.collapsed:hover .sidebar-nav {
607
+ @apply w-72;
608
+ }
609
+
610
+ &.collapsed .sidebar-nav {
611
+ @apply lg:w-auto;
391
612
  }
392
613
 
393
- .card-summary-container {
394
- @apply flex justify-center;
614
+ &.collapsed:hover .sidebar-nav-logo {
615
+ @apply lg:block;
395
616
  }
396
617
 
397
- .card-summary {
398
- @apply card bg-base-100 border border-gray-300 rounded-md p-1 w-full max-w-xs;
618
+ &.collapsed:hover .branding-label {
619
+ @apply lg:block;
399
620
  }
400
621
 
401
- .card-summary-body {
402
- @apply card-body p-2;
622
+ &.collapsed:hover .branding-mark {
623
+ @apply hidden;
403
624
  }
404
625
 
405
- .card-summary-value {
406
- @apply mb-0 text-lg;
626
+ &.collapsed .sidebar-nav-logo {
627
+ @apply lg:hidden;
407
628
  }
408
629
 
409
- .card-summary-title {
410
- @apply text-gray-500;
630
+ &.collapsed .branding-label {
631
+ @apply lg:hidden;
411
632
  }
412
633
 
413
- .drawer-content a:hover:not(.btn):not(.custom-tab) {
414
- @apply link;
634
+ &.collapsed .branding-mark {
635
+ @apply lg:block;
415
636
  }
416
637
 
417
- .drawer-side > .drawer-overlay {
418
- transition-duration: 0ms;
638
+ &.collapsed:hover .sidebar-nav-item-label {
639
+ @apply lg:inline;
640
+ }
641
+
642
+ &.collapsed .sidebar-nav-item-label {
643
+ @apply lg:hidden;
419
644
  }
420
- .drawer-side > *:not(.drawer-overlay) {
645
+ }
646
+
647
+ @utility drawer-overlay {
648
+ .drawer-side > & {
421
649
  transition-duration: 0ms;
422
650
  }
651
+ }
423
652
 
424
- .sidebar-nav,
425
- .drawer-side.collapsed:hover .sidebar-nav {
653
+ @utility collapsed {
654
+ & .drawer-side:hover .sidebar-nav {
426
655
  @apply w-72;
427
656
  }
428
657
 
429
- .drawer-side.collapsed .sidebar-nav {
658
+ &.drawer-side .sidebar-nav {
430
659
  @apply lg:w-auto;
431
660
  }
432
661
 
433
- .sidebar-nav-logo,
434
- .drawer-side.collapsed:hover .sidebar-nav-logo,
435
- .branding-label,
436
- .drawer-side.collapsed:hover .branding-label {
662
+ & .drawer-side:hover .sidebar-nav-logo {
663
+ @apply lg:block;
664
+ }
665
+
666
+ & .drawer-side:hover .branding-label {
437
667
  @apply lg:block;
438
668
  }
439
669
 
440
- .branding-mark,
441
- .drawer-side.collapsed:hover .branding-mark {
670
+ & .drawer-side:hover .branding-mark {
442
671
  @apply hidden;
443
672
  }
444
673
 
445
- .drawer-side.collapsed .sidebar-nav-logo,
446
- .drawer-side.collapsed .branding-label {
674
+ &.drawer-side .sidebar-nav-logo {
447
675
  @apply lg:hidden;
448
676
  }
449
677
 
450
- .drawer-side.collapsed .branding-mark {
678
+ & .drawer-side .branding-label {
679
+ @apply lg:hidden;
680
+ }
681
+
682
+ &.drawer-side .branding-mark {
451
683
  @apply lg:block;
452
684
  }
453
685
 
454
- .sidebar-nav-item-label,
455
- .drawer-side.collapsed:hover .sidebar-nav-item-label {
686
+ & .drawer-side:hover .sidebar-nav-item-label {
456
687
  @apply lg:inline;
457
688
  }
458
689
 
459
- .drawer-side.collapsed .sidebar-nav-item-label {
690
+ &.drawer-side .sidebar-nav-item-label {
691
+ @apply lg:hidden;
692
+ }
693
+ }
694
+
695
+ @utility sidebar-nav-logo {
696
+ @apply lg:block;
697
+
698
+ .drawer-side.collapsed:hover & {
699
+ @apply lg:block;
700
+ }
701
+
702
+ .drawer-side.collapsed & {
460
703
  @apply lg:hidden;
461
704
  }
705
+ }
462
706
 
463
- .btn-toggle-nav-collapsed svg {
707
+ @utility branding-label {
708
+ @apply lg:block;
709
+
710
+ .drawer-side.collapsed:hover & {
711
+ @apply lg:block;
712
+ }
713
+
714
+ .drawer-side.collapsed & {
715
+ @apply lg:hidden;
716
+ }
717
+ }
718
+
719
+ @utility branding-mark {
720
+ @apply hidden;
721
+
722
+ .drawer-side.collapsed:hover & {
723
+ @apply hidden;
724
+ }
725
+
726
+ .drawer-side.collapsed & {
727
+ @apply lg:block;
728
+ }
729
+ }
730
+
731
+ @utility sidebar-nav-item-label {
732
+ @apply lg:inline;
733
+
734
+ .drawer-side.collapsed:hover & {
735
+ @apply lg:inline;
736
+ }
737
+
738
+ .drawer-side.collapsed & {
739
+ @apply lg:hidden;
740
+ }
741
+ }
742
+
743
+ @utility btn-toggle-nav-collapsed {
744
+ & svg {
464
745
  @apply my-2;
465
746
  }
466
747
  }
@@ -468,3 +749,21 @@
468
749
  [data-theme="corporate"] .bg-base-200 {
469
750
  background: #f5f6fe;
470
751
  }
752
+
753
+ tr:not(:first-child) th[colspan]:not([colspan="1"]) {
754
+ @apply text-center;
755
+ }
756
+
757
+ #controls {
758
+ button {
759
+ &:hover {
760
+ @apply btn-primary;
761
+ }
762
+
763
+ @apply btn btn-sm cursor-pointer btn-ghost;
764
+ }
765
+ }
766
+
767
+ .close-alert {
768
+ @apply cursor-pointer
769
+ }