@webjsdev/ui 0.3.17 → 0.5.0

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 (360) hide show
  1. package/README.md +67 -8
  2. package/THIRD_PARTY_NOTICES.md +349 -0
  3. package/package.json +4 -2
  4. package/packages/registry/blocks/_shared/placeholder.svg +1 -0
  5. package/packages/registry/blocks/charts/chart-area-axes.ts +72 -0
  6. package/packages/registry/blocks/charts/chart-area-default.ts +64 -0
  7. package/packages/registry/blocks/charts/chart-area-gradient.ts +82 -0
  8. package/packages/registry/blocks/charts/chart-area-icons.ts +77 -0
  9. package/packages/registry/blocks/charts/chart-area-interactive.ts +204 -0
  10. package/packages/registry/blocks/charts/chart-area-legend.ts +72 -0
  11. package/packages/registry/blocks/charts/chart-area-linear.ts +64 -0
  12. package/packages/registry/blocks/charts/chart-area-stacked-expand.ts +77 -0
  13. package/packages/registry/blocks/charts/chart-area-stacked.ts +71 -0
  14. package/packages/registry/blocks/charts/chart-area-step.ts +68 -0
  15. package/packages/registry/blocks/charts/chart-bar-active.ts +93 -0
  16. package/packages/registry/blocks/charts/chart-bar-default.ts +60 -0
  17. package/packages/registry/blocks/charts/chart-bar-horizontal.ts +62 -0
  18. package/packages/registry/blocks/charts/chart-bar-interactive.ts +185 -0
  19. package/packages/registry/blocks/charts/chart-bar-label-custom.ts +78 -0
  20. package/packages/registry/blocks/charts/chart-bar-label.ts +66 -0
  21. package/packages/registry/blocks/charts/chart-bar-mixed.ts +87 -0
  22. package/packages/registry/blocks/charts/chart-bar-multiple.ts +67 -0
  23. package/packages/registry/blocks/charts/chart-bar-negative.ts +61 -0
  24. package/packages/registry/blocks/charts/chart-bar-stacked.ts +68 -0
  25. package/packages/registry/blocks/charts/chart-line-default.ts +61 -0
  26. package/packages/registry/blocks/charts/chart-line-dots-colors.ts +86 -0
  27. package/packages/registry/blocks/charts/chart-line-dots-custom.ts +75 -0
  28. package/packages/registry/blocks/charts/chart-line-dots.ts +65 -0
  29. package/packages/registry/blocks/charts/chart-line-interactive.ts +185 -0
  30. package/packages/registry/blocks/charts/chart-line-label-custom.ts +94 -0
  31. package/packages/registry/blocks/charts/chart-line-label.ts +73 -0
  32. package/packages/registry/blocks/charts/chart-line-linear.ts +61 -0
  33. package/packages/registry/blocks/charts/chart-line-multiple.ts +71 -0
  34. package/packages/registry/blocks/charts/chart-line-step.ts +61 -0
  35. package/packages/registry/blocks/charts/chart-pie-donut-active.ts +86 -0
  36. package/packages/registry/blocks/charts/chart-pie-donut-text.ts +89 -0
  37. package/packages/registry/blocks/charts/chart-pie-donut.ts +77 -0
  38. package/packages/registry/blocks/charts/chart-pie-interactive.ts +120 -0
  39. package/packages/registry/blocks/charts/chart-pie-label-custom.ts +82 -0
  40. package/packages/registry/blocks/charts/chart-pie-label-list.ts +86 -0
  41. package/packages/registry/blocks/charts/chart-pie-label.ts +77 -0
  42. package/packages/registry/blocks/charts/chart-pie-legend.ts +79 -0
  43. package/packages/registry/blocks/charts/chart-pie-separator-none.ts +77 -0
  44. package/packages/registry/blocks/charts/chart-pie-simple.ts +77 -0
  45. package/packages/registry/blocks/charts/chart-pie-stacked.ts +99 -0
  46. package/packages/registry/blocks/charts/chart-radar-default.ts +61 -0
  47. package/packages/registry/blocks/charts/chart-radar-dots.ts +61 -0
  48. package/packages/registry/blocks/charts/chart-radar-grid-circle-fill.ts +61 -0
  49. package/packages/registry/blocks/charts/chart-radar-grid-circle-no-lines.ts +61 -0
  50. package/packages/registry/blocks/charts/chart-radar-grid-circle.ts +61 -0
  51. package/packages/registry/blocks/charts/chart-radar-grid-custom.ts +61 -0
  52. package/packages/registry/blocks/charts/chart-radar-grid-fill.ts +61 -0
  53. package/packages/registry/blocks/charts/chart-radar-grid-none.ts +60 -0
  54. package/packages/registry/blocks/charts/chart-radar-icons.ts +76 -0
  55. package/packages/registry/blocks/charts/chart-radar-label-custom.ts +77 -0
  56. package/packages/registry/blocks/charts/chart-radar-legend.ts +70 -0
  57. package/packages/registry/blocks/charts/chart-radar-lines-only.ts +68 -0
  58. package/packages/registry/blocks/charts/chart-radar-multiple.ts +68 -0
  59. package/packages/registry/blocks/charts/chart-radar-radius.ts +68 -0
  60. package/packages/registry/blocks/charts/chart-radial-grid.ts +80 -0
  61. package/packages/registry/blocks/charts/chart-radial-label.ts +85 -0
  62. package/packages/registry/blocks/charts/chart-radial-shape.ts +81 -0
  63. package/packages/registry/blocks/charts/chart-radial-simple.ts +79 -0
  64. package/packages/registry/blocks/charts/chart-radial-stacked.ts +69 -0
  65. package/packages/registry/blocks/charts/chart-radial-text.ts +82 -0
  66. package/packages/registry/blocks/charts/chart-tooltip-advanced.ts +84 -0
  67. package/packages/registry/blocks/charts/chart-tooltip-default.ts +62 -0
  68. package/packages/registry/blocks/charts/chart-tooltip-formatter.ts +75 -0
  69. package/packages/registry/blocks/charts/chart-tooltip-icons.ts +68 -0
  70. package/packages/registry/blocks/charts/chart-tooltip-indicator-line.ts +62 -0
  71. package/packages/registry/blocks/charts/chart-tooltip-indicator-none.ts +62 -0
  72. package/packages/registry/blocks/charts/chart-tooltip-label-custom.ts +65 -0
  73. package/packages/registry/blocks/charts/chart-tooltip-label-formatter.ts +66 -0
  74. package/packages/registry/blocks/charts/chart-tooltip-label-none.ts +62 -0
  75. package/packages/registry/blocks/dashboard-01/components/app-sidebar.ts +108 -0
  76. package/packages/registry/blocks/dashboard-01/components/chart-area-interactive.ts +276 -0
  77. package/packages/registry/blocks/dashboard-01/components/dashboard-data.ts +89 -0
  78. package/packages/registry/blocks/dashboard-01/components/data-table.ts +644 -0
  79. package/packages/registry/blocks/dashboard-01/components/nav-documents.ts +65 -0
  80. package/packages/registry/blocks/dashboard-01/components/nav-main.ts +61 -0
  81. package/packages/registry/blocks/dashboard-01/components/nav-secondary.ts +40 -0
  82. package/packages/registry/blocks/dashboard-01/components/nav-user.ts +66 -0
  83. package/packages/registry/blocks/dashboard-01/components/section-cards.ts +59 -0
  84. package/packages/registry/blocks/dashboard-01/components/site-header.ts +52 -0
  85. package/packages/registry/blocks/dashboard-01/page.ts +39 -0
  86. package/packages/registry/blocks/login-01/components/login-form.ts +70 -0
  87. package/packages/registry/blocks/login-01/page.ts +19 -0
  88. package/packages/registry/blocks/login-02/components/login-form.ts +68 -0
  89. package/packages/registry/blocks/login-02/page.ts +36 -0
  90. package/packages/registry/blocks/login-03/components/login-form.ts +89 -0
  91. package/packages/registry/blocks/login-03/page.ts +28 -0
  92. package/packages/registry/blocks/login-04/components/login-form.ts +91 -0
  93. package/packages/registry/blocks/login-04/page.ts +20 -0
  94. package/packages/registry/blocks/login-05/components/login-form.ts +75 -0
  95. package/packages/registry/blocks/login-05/page.ts +19 -0
  96. package/packages/registry/blocks/preview/cards/activate-agent-dialog.ts +77 -0
  97. package/packages/registry/blocks/preview/cards/analytics-card.ts +64 -0
  98. package/packages/registry/blocks/preview/cards/anomaly-alert.ts +35 -0
  99. package/packages/registry/blocks/preview/cards/bar-chart-card.ts +91 -0
  100. package/packages/registry/blocks/preview/cards/book-appointment.ts +51 -0
  101. package/packages/registry/blocks/preview/cards/codespaces-card.ts +172 -0
  102. package/packages/registry/blocks/preview/cards/contributions-activity.ts +63 -0
  103. package/packages/registry/blocks/preview/cards/contributors.ts +51 -0
  104. package/packages/registry/blocks/preview/cards/environment-variables.ts +47 -0
  105. package/packages/registry/blocks/preview/cards/feedback-form.ts +61 -0
  106. package/packages/registry/blocks/preview/cards/file-upload.ts +51 -0
  107. package/packages/registry/blocks/preview/cards/github-profile.ts +66 -0
  108. package/packages/registry/blocks/preview/cards/icon-preview-grid.ts +47 -0
  109. package/packages/registry/blocks/preview/cards/invite-team.ts +78 -0
  110. package/packages/registry/blocks/preview/cards/invoice.ts +91 -0
  111. package/packages/registry/blocks/preview/cards/live-waveform.ts +330 -0
  112. package/packages/registry/blocks/preview/cards/no-team-members.ts +61 -0
  113. package/packages/registry/blocks/preview/cards/not-found.ts +46 -0
  114. package/packages/registry/blocks/preview/cards/observability-card.ts +44 -0
  115. package/packages/registry/blocks/preview/cards/pie-chart-card.ts +84 -0
  116. package/packages/registry/blocks/preview/cards/report-bug.ts +71 -0
  117. package/packages/registry/blocks/preview/cards/shipping-address.ts +79 -0
  118. package/packages/registry/blocks/preview/cards/shortcuts.ts +57 -0
  119. package/packages/registry/blocks/preview/cards/skeleton-loading.ts +37 -0
  120. package/packages/registry/blocks/preview/cards/sleep-report.ts +85 -0
  121. package/packages/registry/blocks/preview/cards/style-overview.ts +64 -0
  122. package/packages/registry/blocks/preview/cards/typography-specimen.ts +107 -0
  123. package/packages/registry/blocks/preview/cards/ui-elements.ts +164 -0
  124. package/packages/registry/blocks/preview/cards/usage-card.ts +63 -0
  125. package/packages/registry/blocks/preview/cards/visitors.ts +71 -0
  126. package/packages/registry/blocks/preview/cards/weekly-fitness-summary.ts +54 -0
  127. package/packages/registry/blocks/preview/page.ts +103 -0
  128. package/packages/registry/blocks/preview-02/cards/account-access.ts +70 -0
  129. package/packages/registry/blocks/preview-02/cards/card-overview.ts +75 -0
  130. package/packages/registry/blocks/preview-02/cards/claimable-balance.ts +54 -0
  131. package/packages/registry/blocks/preview-02/cards/contribution-history.ts +80 -0
  132. package/packages/registry/blocks/preview-02/cards/cover-art.ts +41 -0
  133. package/packages/registry/blocks/preview-02/cards/dividend-income.ts +76 -0
  134. package/packages/registry/blocks/preview-02/cards/empty-connect-bank.ts +38 -0
  135. package/packages/registry/blocks/preview-02/cards/empty-distribute-track.ts +38 -0
  136. package/packages/registry/blocks/preview-02/cards/empty-explore-catalog.ts +39 -0
  137. package/packages/registry/blocks/preview-02/cards/faq.ts +79 -0
  138. package/packages/registry/blocks/preview-02/cards/front-door.ts +40 -0
  139. package/packages/registry/blocks/preview-02/cards/index-investing.ts +31 -0
  140. package/packages/registry/blocks/preview-02/cards/kitchen-island.ts +90 -0
  141. package/packages/registry/blocks/preview-02/cards/loading-card.ts +34 -0
  142. package/packages/registry/blocks/preview-02/cards/new-milestone.ts +53 -0
  143. package/packages/registry/blocks/preview-02/cards/notification-settings.ts +126 -0
  144. package/packages/registry/blocks/preview-02/cards/payments.ts +88 -0
  145. package/packages/registry/blocks/preview-02/cards/payout-threshold.ts +92 -0
  146. package/packages/registry/blocks/preview-02/cards/power-usage.ts +84 -0
  147. package/packages/registry/blocks/preview-02/cards/preferences.ts +89 -0
  148. package/packages/registry/blocks/preview-02/cards/qr-connect.ts +54 -0
  149. package/packages/registry/blocks/preview-02/cards/receiving-method.ts +89 -0
  150. package/packages/registry/blocks/preview-02/cards/recent-transactions.ts +101 -0
  151. package/packages/registry/blocks/preview-02/cards/release-catalog.ts +73 -0
  152. package/packages/registry/blocks/preview-02/cards/roller-shades.ts +110 -0
  153. package/packages/registry/blocks/preview-02/cards/savings-progress.ts +68 -0
  154. package/packages/registry/blocks/preview-02/cards/savings-targets.ts +132 -0
  155. package/packages/registry/blocks/preview-02/cards/sidebar-nav.ts +88 -0
  156. package/packages/registry/blocks/preview-02/cards/social-links.ts +57 -0
  157. package/packages/registry/blocks/preview-02/cards/stock-performance.ts +106 -0
  158. package/packages/registry/blocks/preview-02/cards/syncing-state.ts +37 -0
  159. package/packages/registry/blocks/preview-02/cards/transfer-funds.ts +111 -0
  160. package/packages/registry/blocks/preview-02/cards/upcoming-payments.ts +69 -0
  161. package/packages/registry/blocks/preview-02/page.ts +111 -0
  162. package/packages/registry/blocks/preview-03/cards/files-chat.ts +75 -0
  163. package/packages/registry/blocks/preview-03/cards/group-chat.ts +114 -0
  164. package/packages/registry/blocks/preview-03/cards/reasoning-chat.ts +88 -0
  165. package/packages/registry/blocks/preview-03/cards/simple-chat.ts +53 -0
  166. package/packages/registry/blocks/preview-03/components/chat-card.ts +126 -0
  167. package/packages/registry/blocks/preview-03/components/chat-player.ts +174 -0
  168. package/packages/registry/blocks/preview-03/components/part-file.ts +77 -0
  169. package/packages/registry/blocks/preview-03/components/part-reasoning.ts +25 -0
  170. package/packages/registry/blocks/preview-03/components/part-source.ts +48 -0
  171. package/packages/registry/blocks/preview-03/components/part-text.ts +69 -0
  172. package/packages/registry/blocks/preview-03/components/part-tool.ts +71 -0
  173. package/packages/registry/blocks/preview-03/components/prompt-input.ts +86 -0
  174. package/packages/registry/blocks/preview-03/page.ts +39 -0
  175. package/packages/registry/blocks/sidebar-01/components/app-sidebar.ts +113 -0
  176. package/packages/registry/blocks/sidebar-01/components/search-form.ts +33 -0
  177. package/packages/registry/blocks/sidebar-01/components/version-switcher.ts +50 -0
  178. package/packages/registry/blocks/sidebar-01/page.ts +58 -0
  179. package/packages/registry/blocks/sidebar-02/components/app-sidebar.ts +131 -0
  180. package/packages/registry/blocks/sidebar-02/components/search-form.ts +33 -0
  181. package/packages/registry/blocks/sidebar-02/components/version-switcher.ts +50 -0
  182. package/packages/registry/blocks/sidebar-02/page.ts +53 -0
  183. package/packages/registry/blocks/sidebar-03/components/app-sidebar.ts +134 -0
  184. package/packages/registry/blocks/sidebar-03/page.ts +60 -0
  185. package/packages/registry/blocks/sidebar-04/components/app-sidebar.ts +136 -0
  186. package/packages/registry/blocks/sidebar-04/page.ts +58 -0
  187. package/packages/registry/blocks/sidebar-05/components/app-sidebar.ts +147 -0
  188. package/packages/registry/blocks/sidebar-05/components/search-form.ts +33 -0
  189. package/packages/registry/blocks/sidebar-05/page.ts +58 -0
  190. package/packages/registry/blocks/sidebar-06/components/app-sidebar.ts +105 -0
  191. package/packages/registry/blocks/sidebar-06/components/nav-main.ts +56 -0
  192. package/packages/registry/blocks/sidebar-06/components/sidebar-opt-in-form.ts +44 -0
  193. package/packages/registry/blocks/sidebar-06/page.ts +57 -0
  194. package/packages/registry/blocks/sidebar-07/components/app-sidebar.ts +108 -0
  195. package/packages/registry/blocks/sidebar-07/components/nav-main.ts +61 -0
  196. package/packages/registry/blocks/sidebar-07/components/nav-projects.ts +65 -0
  197. package/packages/registry/blocks/sidebar-07/components/nav-user.ts +70 -0
  198. package/packages/registry/blocks/sidebar-07/components/team-switcher.ts +66 -0
  199. package/packages/registry/blocks/sidebar-07/page.ts +59 -0
  200. package/packages/registry/blocks/sidebar-08/components/app-sidebar.ts +122 -0
  201. package/packages/registry/blocks/sidebar-08/components/nav-main.ts +68 -0
  202. package/packages/registry/blocks/sidebar-08/components/nav-projects.ts +65 -0
  203. package/packages/registry/blocks/sidebar-08/components/nav-secondary.ts +40 -0
  204. package/packages/registry/blocks/sidebar-08/components/nav-user.ts +70 -0
  205. package/packages/registry/blocks/sidebar-08/page.ts +59 -0
  206. package/packages/registry/blocks/sidebar-09/components/app-sidebar.ts +213 -0
  207. package/packages/registry/blocks/sidebar-09/components/nav-user.ts +70 -0
  208. package/packages/registry/blocks/sidebar-09/page.ts +52 -0
  209. package/packages/registry/blocks/sidebar-10/components/app-sidebar.ts +125 -0
  210. package/packages/registry/blocks/sidebar-10/components/nav-actions.ts +84 -0
  211. package/packages/registry/blocks/sidebar-10/components/nav-favorites.ts +66 -0
  212. package/packages/registry/blocks/sidebar-10/components/nav-main.ts +37 -0
  213. package/packages/registry/blocks/sidebar-10/components/nav-secondary.ts +43 -0
  214. package/packages/registry/blocks/sidebar-10/components/nav-workspaces.ts +78 -0
  215. package/packages/registry/blocks/sidebar-10/components/team-switcher.ts +63 -0
  216. package/packages/registry/blocks/sidebar-10/page.ts +46 -0
  217. package/packages/registry/blocks/sidebar-11/components/app-sidebar.ts +114 -0
  218. package/packages/registry/blocks/sidebar-11/page.ts +63 -0
  219. package/packages/registry/blocks/sidebar-12/components/app-sidebar.ts +63 -0
  220. package/packages/registry/blocks/sidebar-12/components/calendars.ts +53 -0
  221. package/packages/registry/blocks/sidebar-12/components/date-picker.ts +26 -0
  222. package/packages/registry/blocks/sidebar-12/components/nav-user.ts +70 -0
  223. package/packages/registry/blocks/sidebar-12/page.ts +43 -0
  224. package/packages/registry/blocks/sidebar-13/components/settings-dialog.ts +114 -0
  225. package/packages/registry/blocks/sidebar-13/page.ts +21 -0
  226. package/packages/registry/blocks/sidebar-14/components/app-sidebar.ts +120 -0
  227. package/packages/registry/blocks/sidebar-14/page.ts +55 -0
  228. package/packages/registry/blocks/sidebar-15/components/calendars.ts +53 -0
  229. package/packages/registry/blocks/sidebar-15/components/date-picker.ts +26 -0
  230. package/packages/registry/blocks/sidebar-15/components/nav-favorites.ts +66 -0
  231. package/packages/registry/blocks/sidebar-15/components/nav-main.ts +35 -0
  232. package/packages/registry/blocks/sidebar-15/components/nav-secondary.ts +43 -0
  233. package/packages/registry/blocks/sidebar-15/components/nav-user.ts +70 -0
  234. package/packages/registry/blocks/sidebar-15/components/nav-workspaces.ts +75 -0
  235. package/packages/registry/blocks/sidebar-15/components/sidebar-left.ts +126 -0
  236. package/packages/registry/blocks/sidebar-15/components/sidebar-right.ts +62 -0
  237. package/packages/registry/blocks/sidebar-15/components/team-switcher.ts +63 -0
  238. package/packages/registry/blocks/sidebar-15/page.ts +47 -0
  239. package/packages/registry/blocks/sidebar-16/components/app-sidebar.ts +124 -0
  240. package/packages/registry/blocks/sidebar-16/components/nav-main.ts +67 -0
  241. package/packages/registry/blocks/sidebar-16/components/nav-projects.ts +65 -0
  242. package/packages/registry/blocks/sidebar-16/components/nav-secondary.ts +40 -0
  243. package/packages/registry/blocks/sidebar-16/components/nav-user.ts +70 -0
  244. package/packages/registry/blocks/sidebar-16/components/search-form.ts +27 -0
  245. package/packages/registry/blocks/sidebar-16/components/site-header.ts +42 -0
  246. package/packages/registry/blocks/sidebar-16/page.ts +38 -0
  247. package/packages/registry/blocks/signup-01/components/signup-form.ts +78 -0
  248. package/packages/registry/blocks/signup-01/page.ts +19 -0
  249. package/packages/registry/blocks/signup-02/components/signup-form.ts +78 -0
  250. package/packages/registry/blocks/signup-02/page.ts +36 -0
  251. package/packages/registry/blocks/signup-03/components/signup-form.ts +79 -0
  252. package/packages/registry/blocks/signup-03/page.ts +28 -0
  253. package/packages/registry/blocks/signup-04/components/signup-form.ts +100 -0
  254. package/packages/registry/blocks/signup-04/page.ts +20 -0
  255. package/packages/registry/blocks/signup-05/components/signup-form.ts +75 -0
  256. package/packages/registry/blocks/signup-05/page.ts +20 -0
  257. package/packages/registry/components/accordion.ts +20 -7
  258. package/packages/registry/components/alert-dialog.ts +58 -13
  259. package/packages/registry/components/alert.ts +11 -6
  260. package/packages/registry/components/attachment.ts +119 -0
  261. package/packages/registry/components/avatar.ts +17 -8
  262. package/packages/registry/components/badge.ts +16 -9
  263. package/packages/registry/components/breadcrumb.ts +6 -6
  264. package/packages/registry/components/bubble.ts +95 -0
  265. package/packages/registry/components/button-group.ts +73 -0
  266. package/packages/registry/components/button.ts +35 -25
  267. package/packages/registry/components/calendar.ts +566 -0
  268. package/packages/registry/components/card.ts +8 -8
  269. package/packages/registry/components/carousel.ts +352 -0
  270. package/packages/registry/components/chart-element.ts +547 -0
  271. package/packages/registry/components/chart-geometry.ts +457 -0
  272. package/packages/registry/components/chart.ts +932 -0
  273. package/packages/registry/components/checkbox.ts +22 -84
  274. package/packages/registry/components/code-block.ts +191 -0
  275. package/packages/registry/components/collapsible.ts +5 -2
  276. package/packages/registry/components/combobox.ts +802 -0
  277. package/packages/registry/components/command.ts +618 -0
  278. package/packages/registry/components/context-menu.ts +302 -0
  279. package/packages/registry/components/dialog.ts +156 -45
  280. package/packages/registry/components/direction.ts +43 -0
  281. package/packages/registry/components/drawer.ts +226 -0
  282. package/packages/registry/components/dropdown-menu.ts +262 -83
  283. package/packages/registry/components/empty.ts +8 -8
  284. package/packages/registry/components/field.ts +20 -18
  285. package/packages/registry/components/floating.ts +124 -0
  286. package/packages/registry/components/hover-card.ts +19 -8
  287. package/packages/registry/components/input-group.ts +118 -0
  288. package/packages/registry/components/input-otp.ts +365 -0
  289. package/packages/registry/components/input.ts +3 -3
  290. package/packages/registry/components/item.ts +134 -0
  291. package/packages/registry/components/kbd.ts +2 -2
  292. package/packages/registry/components/label.ts +1 -1
  293. package/packages/registry/components/marker.ts +63 -0
  294. package/packages/registry/components/menubar.ts +388 -0
  295. package/packages/registry/components/message-scroller.ts +470 -0
  296. package/packages/registry/components/message.ts +69 -0
  297. package/packages/registry/components/native-select.ts +5 -5
  298. package/packages/registry/components/navigation-menu.ts +564 -0
  299. package/packages/registry/components/pagination.ts +5 -5
  300. package/packages/registry/components/popover.ts +30 -84
  301. package/packages/registry/components/progress.ts +7 -3
  302. package/packages/registry/components/questionnaire.ts +840 -0
  303. package/packages/registry/components/radio-group.ts +18 -73
  304. package/packages/registry/components/resizable.ts +330 -0
  305. package/packages/registry/components/scroll-area.ts +46 -0
  306. package/packages/registry/components/select.ts +650 -0
  307. package/packages/registry/components/separator.ts +1 -1
  308. package/packages/registry/components/sheet.ts +128 -0
  309. package/packages/registry/components/sidebar.ts +457 -0
  310. package/packages/registry/components/skeleton.ts +1 -1
  311. package/packages/registry/components/slider.ts +333 -0
  312. package/packages/registry/components/sonner.ts +74 -7
  313. package/packages/registry/components/spinner.ts +7 -4
  314. package/packages/registry/components/switch.ts +117 -9
  315. package/packages/registry/components/table.ts +11 -9
  316. package/packages/registry/components/tabs.ts +76 -25
  317. package/packages/registry/components/textarea.ts +1 -1
  318. package/packages/registry/components/toggle-group.ts +30 -11
  319. package/packages/registry/components/toggle.ts +20 -13
  320. package/packages/registry/components/tooltip.ts +68 -7
  321. package/packages/registry/components/trace.ts +75 -0
  322. package/packages/registry/lib/dom.ts +3 -4
  323. package/packages/registry/lib/icons-hugeicons.ts +955 -0
  324. package/packages/registry/lib/icons-phosphor.ts +955 -0
  325. package/packages/registry/lib/icons-remixicon.ts +955 -0
  326. package/packages/registry/lib/icons-tabler.ts +955 -0
  327. package/packages/registry/lib/icons.ts +768 -0
  328. package/packages/registry/lib/utils.ts +52 -8
  329. package/packages/registry/registry.json +4056 -72
  330. package/packages/registry/styles/shadcn-tailwind.css +654 -0
  331. package/packages/registry/styles/style-luma.css +1987 -0
  332. package/packages/registry/styles/style-lyra.css +1965 -0
  333. package/packages/registry/styles/style-maia.css +1987 -0
  334. package/packages/registry/styles/style-mira.css +1992 -0
  335. package/packages/registry/styles/style-new-york.css +1597 -0
  336. package/packages/registry/styles/style-nova.css +1990 -0
  337. package/packages/registry/styles/style-rhea.css +1987 -0
  338. package/packages/registry/styles/style-sera.css +1977 -0
  339. package/packages/registry/styles/style-vega.css +1990 -0
  340. package/packages/registry/styles/supplement.json +54 -0
  341. package/packages/registry/styles/tw-animate.css +6 -0
  342. package/packages/registry/themes/base-colors.js +8 -2
  343. package/packages/registry/themes/fonts.js +120 -0
  344. package/packages/registry/themes/index.css +2 -0
  345. package/packages/registry/themes/items.js +61 -0
  346. package/packages/registry/themes/preset.js +302 -0
  347. package/packages/registry/themes/themes.js +1193 -0
  348. package/src/commands/add.js +266 -14
  349. package/src/commands/diff.js +34 -20
  350. package/src/commands/info.js +7 -0
  351. package/src/commands/init.js +127 -10
  352. package/src/commands/list.js +43 -11
  353. package/src/commands/view.js +33 -5
  354. package/src/lint/rules/no-restyle.js +1 -1
  355. package/src/registry/extract.js +194 -5
  356. package/src/registry/icons.js +31 -0
  357. package/src/registry/local.js +15 -1
  358. package/src/registry/schema.js +13 -0
  359. package/src/registry/style-bake.js +506 -0
  360. package/src/utils/theme.js +110 -21
@@ -0,0 +1,1977 @@
1
+ /* Ported from shadcn/ui (apps/v4/registry/styles/style-sera.css, MIT).
2
+ Regenerate with packages/ui/scripts/port-styles.mjs. */
3
+ .style-sera {
4
+ /* MARK: Accordion */
5
+ .cn-accordion-item {
6
+ @apply not-last:border-b;
7
+ }
8
+
9
+ .cn-accordion-trigger {
10
+ @apply focus-visible:ring-ring/30 focus-visible:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground rounded-none gap-6 py-4 text-start text-sm font-semibold hover:underline focus-visible:ring-2 **:data-[slot=accordion-trigger-icon]:ms-auto **:data-[slot=accordion-trigger-icon]:size-3.5;
11
+ }
12
+
13
+ .cn-accordion-content {
14
+ @apply data-open:animate-accordion-down data-closed:animate-accordion-up text-sm;
15
+ }
16
+
17
+ .cn-accordion-content-inner {
18
+ @apply pt-0 pb-4;
19
+ }
20
+
21
+ /* MARK: Alert */
22
+ .cn-alert {
23
+ @apply grid gap-1 bg-background border px-4 py-3 text-start text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pe-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4 relative after:-inset-y-px after:-start-px after:w-0.5 after:absolute;
24
+ }
25
+
26
+ .cn-alert-variant-default {
27
+ @apply bg-card text-card-foreground after:bg-foreground;
28
+ }
29
+
30
+ .cn-alert-variant-destructive {
31
+ @apply text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current after:bg-destructive;
32
+ }
33
+
34
+ .cn-alert-title {
35
+ @apply font-semibold group-has-[>svg]/alert:col-start-2 text-sm;
36
+ }
37
+
38
+ .cn-alert-description {
39
+ @apply text-muted-foreground text-sm text-balance md:text-pretty [&_p:not(:last-child)]:mb-4;
40
+ }
41
+
42
+ .cn-alert-action {
43
+ @apply absolute top-2.5 end-3;
44
+ }
45
+
46
+ /* MARK: Alert Dialog */
47
+ .cn-alert-dialog-overlay {
48
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-sm;
49
+ }
50
+
51
+ .cn-alert-dialog-content {
52
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-popover text-popover-foreground ring-foreground/10 gap-6 rounded-none p-6 shadow-md ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md;
53
+ }
54
+
55
+ .cn-alert-dialog-header {
56
+ @apply grid grid-rows-[auto_1fr] place-items-center gap-2 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr];
57
+ }
58
+
59
+ .cn-alert-dialog-media {
60
+ @apply bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-none sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8;
61
+ }
62
+
63
+ .cn-alert-dialog-title {
64
+ @apply text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2 uppercase tracking-wider;
65
+ }
66
+
67
+ .cn-alert-dialog-description {
68
+ @apply text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3 leading-relaxed mt-0.5;
69
+ }
70
+
71
+ /* MARK: Avatar */
72
+ .cn-avatar {
73
+ @apply size-8 rounded-full after:rounded-full data-[size=lg]:size-10 data-[size=sm]:size-6;
74
+ }
75
+
76
+ .cn-avatar-fallback {
77
+ @apply bg-muted text-muted-foreground rounded-full;
78
+ }
79
+
80
+ .cn-avatar-image {
81
+ @apply rounded-full;
82
+ }
83
+
84
+ .cn-avatar-badge {
85
+ @apply bg-primary text-primary-foreground ring-background;
86
+ }
87
+
88
+ .cn-avatar-group-count {
89
+ @apply bg-muted text-muted-foreground size-8 rounded-full text-sm group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3;
90
+ }
91
+
92
+ /* MARK: Badge */
93
+ .cn-badge {
94
+ @apply gap-1.5 rounded-none border-0 bg-transparent px-0 py-0 text-[0.625rem] font-semibold uppercase tracking-widest transition-colors has-data-[icon=inline-end]:pe-0 has-data-[icon=inline-start]:ps-0 [&>svg]:size-3!;
95
+ }
96
+
97
+ .cn-badge-variant-default {
98
+ @apply text-foreground [a]:hover:text-foreground/70;
99
+ }
100
+
101
+ .cn-badge-variant-secondary {
102
+ @apply text-muted-foreground [a]:hover:text-foreground;
103
+ }
104
+
105
+ .cn-badge-variant-outline {
106
+ @apply text-foreground [a]:hover:text-foreground/70;
107
+ }
108
+
109
+ .cn-badge-variant-destructive {
110
+ @apply text-destructive [a]:hover:text-destructive/70 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40;
111
+ }
112
+
113
+ .cn-badge-variant-ghost {
114
+ @apply text-muted-foreground hover:text-foreground;
115
+ }
116
+
117
+ .cn-badge-variant-link {
118
+ @apply text-foreground underline-offset-4 hover:underline;
119
+ }
120
+
121
+ /* MARK: Breadcrumb */
122
+ .cn-breadcrumb-list {
123
+ @apply text-muted-foreground gap-1.5 text-xs uppercase tracking-wide sm:gap-2.5;
124
+ }
125
+
126
+ .cn-breadcrumb-item {
127
+ @apply gap-1.5;
128
+ }
129
+
130
+ .cn-breadcrumb-link {
131
+ @apply hover:text-foreground transition-colors;
132
+ }
133
+
134
+ .cn-breadcrumb-page {
135
+ @apply text-foreground font-normal;
136
+ }
137
+
138
+ .cn-breadcrumb-separator {
139
+ @apply [&>svg]:size-3.5;
140
+ }
141
+
142
+ .cn-breadcrumb-ellipsis {
143
+ @apply size-5 [&>svg]:size-4;
144
+ }
145
+
146
+ /* MARK: Button */
147
+ .cn-button {
148
+ @apply focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-none border border-transparent bg-clip-padding text-xs font-semibold uppercase tracking-widest focus-visible:ring-2 aria-invalid:ring-2 active:not-aria-[haspopup]:translate-y-px [&_svg:not([class*='size-'])]:size-3.5;
149
+ }
150
+
151
+ .cn-button-variant-default {
152
+ @apply bg-primary text-primary-foreground hover:bg-primary/80;
153
+ }
154
+
155
+ .cn-button-variant-outline {
156
+ @apply border-border bg-transparent hover:bg-muted hover:text-foreground dark:hover:bg-input/30 aria-expanded:bg-muted aria-expanded:text-foreground;
157
+ }
158
+
159
+ .cn-button-variant-secondary {
160
+ @apply bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground;
161
+ }
162
+
163
+ .cn-button-variant-ghost {
164
+ @apply hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground;
165
+ }
166
+
167
+ .cn-button-variant-destructive {
168
+ @apply bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30;
169
+ }
170
+
171
+ .cn-button-variant-link {
172
+ @apply text-primary underline-offset-4 hover:underline underline;
173
+ }
174
+
175
+ .cn-button-size-xs {
176
+ @apply h-7 gap-1 px-3 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2 [&_svg:not([class*='size-'])]:size-3;
177
+ }
178
+
179
+ .cn-button-size-sm {
180
+ @apply h-9 gap-1 px-4 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3;
181
+ }
182
+
183
+ .cn-button-size-default {
184
+ @apply h-10 gap-1.5 px-6 has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4;
185
+ }
186
+
187
+ .cn-button-size-lg {
188
+ @apply h-11 gap-1.5 px-8 has-data-[icon=inline-end]:pe-5 has-data-[icon=inline-start]:ps-5;
189
+ }
190
+
191
+ .cn-button-size-icon-xs {
192
+ @apply size-7 [&_svg:not([class*='size-'])]:size-3;
193
+ }
194
+
195
+ .cn-button-size-icon-sm {
196
+ @apply size-9;
197
+ }
198
+
199
+ .cn-button-size-icon {
200
+ @apply size-10;
201
+ }
202
+
203
+ .cn-button-size-icon-lg {
204
+ @apply size-11;
205
+ }
206
+
207
+ /* MARK: Button Group */
208
+ .cn-button-group {
209
+ @apply *:data-[slot=input]:px-4 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-none has-[>[data-variant=outline]]:[&>input]:border-border has-[>[data-variant=outline]]:[&>input:focus-visible]:border-ring has-[>[data-variant=outline]]:*:data-[slot=input-group]:border-border has-[>[data-variant=outline]]:[&>[data-slot=input-group]:has(:focus-visible)]:border-ring has-[>[data-variant=outline]]:*:data-[slot=select-trigger]:border-border has-[>[data-variant=outline]]:[&>[data-slot=select-trigger]:focus-visible]:border-ring has-[>[data-variant=outline]]:*:data-[slot=input-group]:px-2.5 has-[>[data-variant=outline]]:*:[[role=combobox]]:px-2.5;
210
+ }
211
+
212
+ .cn-button-group-orientation-horizontal {
213
+ @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-none!;
214
+ }
215
+
216
+ .cn-button-group-orientation-vertical {
217
+ @apply [&>[data-slot]:not(:has(~[data-slot]))]:rounded-none!;
218
+ }
219
+
220
+ .cn-button-group-text {
221
+ @apply gap-2 border border-transparent border-b-input bg-transparent px-2.5 text-xs font-semibold [&_svg:not([class*='size-'])]:size-3.5 group-has-[>[data-variant=outline]]/button-group:border-border uppercase;
222
+ }
223
+
224
+ .cn-button-group-separator {
225
+ @apply bg-input;
226
+ }
227
+
228
+ /* MARK: Calendar */
229
+ .cn-calendar {
230
+ @apply p-3 [--cell-radius:0] [--cell-size:--spacing(8)];
231
+ }
232
+
233
+ .cn-calendar-dropdown-root {
234
+ @apply has-focus:border-ring border-input has-focus:ring-ring/30 rounded-none border has-focus:ring-2;
235
+ }
236
+
237
+ .cn-calendar-caption-label {
238
+ @apply h-8 pe-2 ps-3 text-xs font-semibold uppercase tracking-wide;
239
+ }
240
+
241
+ .cn-calendar-caption {
242
+ @apply text-xs font-semibold uppercase tracking-wide;
243
+ }
244
+
245
+ /* MARK: Card */
246
+ .cn-card {
247
+ @apply bg-card text-card-foreground ring-foreground/5 gap-(--card-spacing) overflow-hidden py-(--card-spacing) text-sm shadow-sm ring-1 [--card-spacing:--spacing(8)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(5)] *:[img:first-child]:rounded-none *:[img:last-child]:rounded-none;
248
+ }
249
+
250
+ .cn-card-header {
251
+ @apply gap-1.5 rounded-none px-(--card-spacing) [.border-b]:pb-(--card-spacing);
252
+ }
253
+
254
+ .cn-card-title {
255
+ @apply text-lg font-semibold tracking-wider uppercase;
256
+ }
257
+
258
+ .cn-card-description {
259
+ @apply text-muted-foreground text-sm leading-relaxed;
260
+ }
261
+
262
+ .cn-card-content {
263
+ @apply px-(--card-spacing);
264
+ }
265
+
266
+ .cn-card-footer {
267
+ @apply px-(--card-spacing) [.border-t]:pt-(--card-spacing);
268
+ }
269
+
270
+ /* MARK: Chart */
271
+ .cn-chart-tooltip {
272
+ @apply bg-popover text-popover-foreground ring-foreground/10 gap-1.5 px-2.5 py-1.5 text-xs shadow-sm ring-1;
273
+ }
274
+
275
+ /* MARK: Checkbox */
276
+ .cn-checkbox {
277
+ @apply border-input bg-transparent data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4.5 items-center justify-center rounded-none border transition-shadow group-has-disabled/field:opacity-50 focus-visible:ring-2 aria-invalid:ring-2 group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input group-has-[:focus-visible]/field-label:data-checked:border-primary;
278
+ }
279
+
280
+ .cn-checkbox-aria {
281
+ @apply data-selected:bg-primary data-selected:text-primary-foreground dark:data-selected:bg-primary data-selected:border-primary data-focus-visible:border-ring data-focus-visible:ring-ring/30 data-focus-visible:ring-2 data-invalid:data-selected:border-primary data-invalid:border-destructive dark:data-invalid:border-destructive/50 data-invalid:ring-destructive/20 dark:data-invalid:ring-destructive/40 data-invalid:ring-2;
282
+ }
283
+
284
+ .cn-checkbox-indicator {
285
+ @apply [&>svg]:size-3.5;
286
+ }
287
+
288
+ /* MARK: Combobox */
289
+ .cn-combobox-content {
290
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-transparent *:data-[slot=input-group]:border-b-input max-h-72 min-w-36 overflow-hidden rounded-none shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1.5 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-transparent *:data-[slot=input-group]:focus-within:border-transparent *:data-[slot=input-group]:px-2.5;
291
+ }
292
+
293
+ .cn-combobox-content-logical {
294
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
295
+ }
296
+
297
+ .cn-combobox-label {
298
+ @apply px-3 py-2 text-xs uppercase tracking-wider font-semibold text-muted-foreground;
299
+ }
300
+
301
+ .cn-combobox-item {
302
+ @apply data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-sm [&_svg:not([class*='size-'])]:size-3.5;
303
+ }
304
+
305
+ .cn-combobox-item-aria {
306
+ @apply data-focused:bg-accent data-focused:text-accent-foreground not-data-[variant=destructive]:data-focused:**:text-accent-foreground;
307
+ }
308
+
309
+ .cn-combobox-item-indicator {
310
+ @apply pointer-events-none absolute end-2 flex size-4 items-center justify-center;
311
+ }
312
+
313
+ .cn-combobox-empty {
314
+ @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex;
315
+ }
316
+
317
+ .cn-combobox-list {
318
+ @apply no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1.5 overflow-y-auto p-1.5 data-empty:p-0;
319
+ }
320
+
321
+ .cn-combobox-item-text {
322
+ @apply flex flex-1 gap-2;
323
+ }
324
+
325
+ .cn-combobox-separator {
326
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
327
+ }
328
+
329
+ .cn-combobox-trigger {
330
+ @apply [&_svg:not([class*='size-'])]:size-3.5;
331
+ }
332
+
333
+ .cn-combobox-trigger-icon {
334
+ @apply text-muted-foreground size-3.5;
335
+ }
336
+
337
+ .cn-combobox-chips {
338
+ @apply border-transparent border-b-input bg-transparent focus-within:border-b-ring has-aria-invalid:border-b-destructive dark:has-aria-invalid:border-b-destructive/50 flex min-h-10 flex-wrap items-center gap-1.5 rounded-none border bg-clip-padding px-0 py-1.5 text-sm transition-[color,border-color] has-data-[slot=combobox-chip]:px-0;
339
+ }
340
+
341
+ .cn-combobox-chip {
342
+ @apply bg-muted text-foreground flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-none px-2 text-xs font-medium whitespace-nowrap has-data-[slot=combobox-chip-remove]:pe-0;
343
+ }
344
+
345
+ .cn-combobox-chip-remove {
346
+ @apply -ms-1 opacity-50 hover:opacity-100;
347
+ }
348
+
349
+ /* MARK: Command */
350
+ .cn-command {
351
+ @apply bg-popover text-popover-foreground;
352
+ }
353
+
354
+ .cn-command-dialog {
355
+ @apply p-0;
356
+ }
357
+
358
+ .cn-command-input-wrapper {
359
+ @apply p-1;
360
+ }
361
+
362
+ .cn-command-input-group {
363
+ @apply bg-transparent border-transparent border-b-input px-3;
364
+ }
365
+
366
+ .cn-command-input-icon {
367
+ @apply size-3.5 shrink-0 opacity-50;
368
+ }
369
+
370
+ .cn-command-input {
371
+ @apply w-full text-sm px-2;
372
+ }
373
+
374
+ .cn-command-list {
375
+ @apply no-scrollbar max-h-72 scroll-py-1 outline-none;
376
+ }
377
+
378
+ .cn-command-empty {
379
+ @apply py-6 text-center text-sm;
380
+ }
381
+
382
+ .cn-command-group {
383
+ @apply text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1.5 **:[[cmdk-group-heading]]:px-3 **:[[cmdk-group-heading]]:py-2 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-semibold **:[[cmdk-group-heading]]:uppercase **:[[cmdk-group-heading]]:tracking-wider;
384
+ }
385
+
386
+ .cn-command-separator {
387
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
388
+ }
389
+
390
+ .cn-command-item {
391
+ @apply data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-none px-3 py-2 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-none [&_svg:not([class*='size-'])]:size-3.5;
392
+ }
393
+
394
+ .cn-command-item-aria {
395
+ @apply data-focused:bg-muted data-focused:text-foreground data-focused:*:[svg]:text-foreground;
396
+ }
397
+
398
+ .cn-command-shortcut {
399
+ @apply text-muted-foreground group-data-selected/command-item:text-foreground ms-auto text-xs tracking-widest;
400
+ }
401
+
402
+ .cn-command-shortcut-aria {
403
+ @apply group-data-focused/command-item:text-foreground;
404
+ }
405
+
406
+ /* MARK: Context Menu */
407
+ .cn-context-menu-content {
408
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
409
+ }
410
+
411
+ .cn-context-menu-content-logical {
412
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
413
+ }
414
+
415
+ .cn-context-menu-item {
416
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive focus:*:[svg]:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
417
+ }
418
+
419
+ .cn-context-menu-checkbox-item {
420
+ @apply focus:bg-accent focus:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
421
+ }
422
+
423
+ .cn-context-menu-radio-item {
424
+ @apply focus:bg-accent focus:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
425
+ }
426
+
427
+ .cn-context-menu-item-indicator {
428
+ @apply absolute end-2;
429
+ }
430
+
431
+ .cn-context-menu-label {
432
+ @apply px-3 py-2 text-xs uppercase tracking-wider data-inset:ps-9.5 font-semibold text-muted-foreground;
433
+ }
434
+
435
+ .cn-context-menu-separator {
436
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
437
+ }
438
+
439
+ .cn-context-menu-shortcut {
440
+ @apply text-muted-foreground group-focus/context-menu-item:text-accent-foreground ms-auto text-xs tracking-widest;
441
+ }
442
+
443
+ .cn-context-menu-sub-trigger {
444
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
445
+ }
446
+
447
+ .cn-context-menu-sub-content {
448
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none p-1.5 shadow-md ring-1 duration-100;
449
+ }
450
+
451
+ .cn-context-menu-subcontent {
452
+ @apply shadow-md;
453
+ }
454
+
455
+ /* MARK: Dialog */
456
+ .cn-dialog-overlay {
457
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-sm;
458
+ }
459
+
460
+ .cn-dialog-content {
461
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-none p-6 text-sm shadow-md ring-1 duration-100 sm:max-w-md;
462
+ }
463
+
464
+ .cn-dialog-close {
465
+ @apply absolute top-5 end-5 bg-secondary;
466
+ }
467
+
468
+ .cn-dialog-header {
469
+ @apply gap-2;
470
+ }
471
+
472
+ .cn-dialog-footer {
473
+ @apply gap-2;
474
+ }
475
+
476
+ .cn-dialog-title {
477
+ @apply text-lg font-semibold leading-none uppercase tracking-wider;
478
+ }
479
+
480
+ .cn-dialog-description {
481
+ @apply text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3 leading-relaxed mt-0.5;
482
+ }
483
+
484
+ /* MARK: Drawer */
485
+ .cn-drawer-overlay {
486
+ @apply bg-black/20 supports-backdrop-filter:backdrop-blur-sm;
487
+ }
488
+
489
+ .cn-drawer-content {
490
+ @apply bg-popover text-popover-foreground flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:rounded-none data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:rounded-none data-[vaul-drawer-direction=left]:border-e data-[vaul-drawer-direction=right]:rounded-none data-[vaul-drawer-direction=right]:border-s data-[vaul-drawer-direction=top]:rounded-none data-[vaul-drawer-direction=top]:border-b;
491
+ }
492
+
493
+ .cn-drawer-popup {
494
+ @apply bg-popover text-popover-foreground text-sm data-[swipe-direction=down]:rounded-none data-[swipe-direction=down]:border-t data-[swipe-direction=left]:rounded-none data-[swipe-direction=left]:border-e data-[swipe-direction=right]:rounded-none data-[swipe-direction=right]:border-s data-[swipe-direction=up]:rounded-none data-[swipe-direction=up]:border-b;
495
+ }
496
+
497
+ .cn-drawer-handle {
498
+ @apply bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-none;
499
+ }
500
+
501
+ .cn-drawer-swipe-handle {
502
+ @apply after:bg-muted after:block after:shrink-0 after:rounded-none group-data-[swipe-axis=y]/drawer-popup:h-3 group-data-[swipe-axis=y]/drawer-popup:w-full group-data-[swipe-axis=y]/drawer-popup:justify-center group-data-[swipe-axis=y]/drawer-popup:after:h-1.5 group-data-[swipe-axis=y]/drawer-popup:after:w-[100px] group-data-[swipe-direction=down]/drawer-popup:items-end group-data-[swipe-direction=up]/drawer-popup:items-start group-data-[swipe-axis=x]/drawer-popup:h-full group-data-[swipe-axis=x]/drawer-popup:w-3 group-data-[swipe-axis=x]/drawer-popup:items-center group-data-[swipe-axis=x]/drawer-popup:after:h-[100px] group-data-[swipe-axis=x]/drawer-popup:after:w-1.5 group-data-[swipe-direction=left]/drawer-popup:justify-start group-data-[swipe-direction=right]/drawer-popup:justify-end;
503
+ }
504
+
505
+ .cn-drawer-header {
506
+ @apply gap-1 p-4 md:gap-2 md:text-start;
507
+ }
508
+
509
+ .cn-drawer-header-base {
510
+ @apply gap-1 p-4 pb-0 md:gap-2 md:text-start;
511
+ }
512
+
513
+ .cn-drawer-title {
514
+ @apply text-foreground text-lg font-semibold uppercase tracking-wider;
515
+ }
516
+
517
+ .cn-drawer-description {
518
+ @apply text-muted-foreground text-sm leading-relaxed mt-0.5;
519
+ }
520
+
521
+ .cn-drawer-footer {
522
+ @apply gap-2 p-4;
523
+ }
524
+
525
+ .cn-drawer-footer-base {
526
+ @apply gap-2 p-4 pt-0;
527
+ }
528
+
529
+ /* MARK: Dropdown Menu */
530
+ .cn-dropdown-menu-content {
531
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
532
+ }
533
+
534
+ .cn-dropdown-menu-content-logical {
535
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
536
+ }
537
+
538
+ .cn-dropdown-menu-item {
539
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
540
+ }
541
+
542
+ .cn-dropdown-menu-checkbox-item {
543
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
544
+ }
545
+
546
+ .cn-dropdown-menu-radio-item {
547
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
548
+ }
549
+
550
+ .cn-dropdown-menu-item-indicator {
551
+ @apply absolute end-2 flex items-center justify-center;
552
+ }
553
+
554
+ .cn-dropdown-menu-label {
555
+ @apply px-3 py-2 text-xs uppercase tracking-wider data-inset:ps-9.5 font-semibold text-muted-foreground;
556
+ }
557
+
558
+ .cn-dropdown-menu-separator {
559
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
560
+ }
561
+
562
+ .cn-dropdown-menu-shortcut {
563
+ @apply text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ms-auto text-xs tracking-widest;
564
+ }
565
+
566
+ .cn-dropdown-menu-sub-trigger {
567
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
568
+ }
569
+
570
+ .cn-dropdown-menu-sub-content {
571
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-none p-1.5 shadow-md ring-1 duration-100;
572
+ }
573
+
574
+ .cn-dropdown-menu-subcontent {
575
+ @apply shadow-md;
576
+ }
577
+
578
+ /* MARK: Empty */
579
+ .cn-empty {
580
+ @apply gap-4 border-dashed p-12;
581
+ }
582
+
583
+ .cn-empty-header {
584
+ @apply gap-2;
585
+ }
586
+
587
+ .cn-empty-media {
588
+ @apply mb-2;
589
+ }
590
+
591
+ .cn-empty-media-default {
592
+ @apply bg-transparent;
593
+ }
594
+
595
+ .cn-empty-media-icon {
596
+ @apply bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-none [&_svg:not([class*='size-'])]:size-5;
597
+ }
598
+
599
+ .cn-empty-title {
600
+ @apply text-lg font-semibold tracking-wider uppercase;
601
+ }
602
+
603
+ .cn-empty-description {
604
+ @apply text-sm/relaxed mt-0.5;
605
+ }
606
+
607
+ .cn-empty-content {
608
+ @apply gap-4 text-sm;
609
+ }
610
+
611
+ /* MARK: Field */
612
+ .cn-field-set {
613
+ @apply gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3;
614
+ }
615
+
616
+ .cn-field-legend {
617
+ @apply mb-3 font-semibold uppercase data-[variant=label]:text-xs data-[variant=legend]:text-xs;
618
+ }
619
+
620
+ .cn-field-group {
621
+ @apply gap-10 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4;
622
+ }
623
+
624
+ .cn-field {
625
+ @apply data-[invalid=true]:text-destructive gap-3;
626
+ }
627
+
628
+ .cn-field-content {
629
+ @apply gap-1;
630
+ }
631
+
632
+ .cn-field-label {
633
+ @apply has-data-checked:bg-primary/5 has-data-checked:border-primary/30 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-none has-[>[data-slot=field]]:border has-[>[data-slot=field]]:not-has-[:disabled,[data-disabled]]:hover:bg-muted/50 has-[>[data-slot=field]]:has-[:focus-visible]:ring-ring/30 has-[>[data-slot=field]]:has-[:focus-visible]:ring-2 *:data-[slot=field]:p-4 leading-relaxed;
634
+ }
635
+
636
+ .cn-field-label-aria {
637
+ @apply has-data-selected:bg-primary/5 has-data-selected:border-primary/30 dark:has-data-selected:border-primary/20 dark:has-data-selected:bg-primary/10;
638
+ }
639
+
640
+ .cn-field-title {
641
+ @apply gap-2 group-data-[disabled=true]/field:opacity-50 leading-normal font-semibold uppercase in-data-[slot=field-label]:font-semibold text-xs;
642
+ }
643
+
644
+ .cn-field-description {
645
+ @apply text-muted-foreground text-start text-sm [[data-variant=legend]+&]:-mt-1.5 normal-case tracking-normal;
646
+ }
647
+
648
+ .cn-field-separator {
649
+ @apply -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2;
650
+ }
651
+
652
+ .cn-field-separator-content {
653
+ @apply text-muted-foreground px-2;
654
+ }
655
+
656
+ .cn-field-error {
657
+ @apply text-destructive text-sm;
658
+ }
659
+
660
+ /* MARK: Hover Card */
661
+ .cn-hover-card-content {
662
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-72 p-4 text-sm shadow-md ring-1 duration-100;
663
+ }
664
+
665
+ .cn-hover-card-content-logical {
666
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
667
+ }
668
+
669
+ /* MARK: Input */
670
+ .cn-input {
671
+ @apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 border px-0 py-1 text-base transition-[color,border-color] file:h-7 file:text-sm file:font-medium md:text-sm;
672
+ }
673
+
674
+ /* MARK: Input OTP */
675
+ .cn-input-otp {
676
+ @apply gap-2;
677
+ }
678
+
679
+ .cn-input-otp-group {
680
+ @apply has-aria-invalid:border-b-destructive dark:has-aria-invalid:border-b-destructive/50 rounded-none gap-1;
681
+ }
682
+
683
+ .cn-input-otp-slot {
684
+ @apply border-transparent border-b-input bg-transparent data-[active=true]:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 size-10 border text-sm transition-[color,border-color] outline-none first:rounded-none last:rounded-none;
685
+ }
686
+
687
+ .cn-input-otp-caret-line {
688
+ @apply animate-caret-blink bg-foreground h-4 w-px duration-1000;
689
+ }
690
+
691
+ .cn-input-otp-separator {
692
+ @apply [&_svg:not([class*='size-'])]:size-3.5;
693
+ }
694
+
695
+ /* MARK: Item */
696
+ .cn-item {
697
+ @apply [a]:hover:bg-muted rounded-none border text-sm;
698
+ }
699
+
700
+ .cn-item-variant-default {
701
+ @apply border-transparent;
702
+ }
703
+
704
+ .cn-item-variant-outline {
705
+ @apply border-border;
706
+ }
707
+
708
+ .cn-item-variant-muted {
709
+ @apply bg-muted/50 border-transparent;
710
+ }
711
+
712
+ .cn-item-size-default {
713
+ @apply gap-3.5 px-4 py-3.5;
714
+ }
715
+
716
+ .cn-item-size-sm {
717
+ @apply gap-3.5 px-3.5 py-3;
718
+ }
719
+
720
+ .cn-item-size-xs {
721
+ @apply gap-2.5 px-3 py-2.5 in-data-[slot=dropdown-menu-content]:p-0;
722
+ }
723
+
724
+ .cn-item-media {
725
+ @apply gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start;
726
+ }
727
+
728
+ .cn-item-media-variant-default {
729
+ @apply bg-transparent;
730
+ }
731
+
732
+ .cn-item-media-variant-icon {
733
+ @apply [&_svg:not([class*='size-'])]:size-4;
734
+ }
735
+
736
+ .cn-item-media-variant-image {
737
+ @apply size-10 overflow-hidden rounded-none group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 group-data-[size=xs]/item:rounded-none [&_img]:size-full [&_img]:object-cover;
738
+ }
739
+
740
+ .cn-item-content {
741
+ @apply gap-1 group-data-[size=xs]/item:gap-0.5;
742
+ }
743
+
744
+ .cn-item-title {
745
+ @apply gap-2 text-xs leading-snug font-semibold uppercase underline-offset-4;
746
+ }
747
+
748
+ .cn-item-description {
749
+ @apply text-muted-foreground text-start text-sm leading-relaxed;
750
+ }
751
+
752
+ .cn-item-actions {
753
+ @apply gap-2;
754
+ }
755
+
756
+ .cn-item-header {
757
+ @apply gap-2;
758
+ }
759
+
760
+ .cn-item-footer {
761
+ @apply gap-2;
762
+ }
763
+
764
+ .cn-item-group {
765
+ @apply gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2;
766
+ }
767
+
768
+ .cn-item-separator {
769
+ @apply my-2;
770
+ }
771
+
772
+ /* MARK: Kbd */
773
+ .cn-kbd {
774
+ @apply bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5.5 w-fit min-w-5.5 gap-1 rounded-none px-1.5 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 in-data-[slot=input-group]:bg-input;
775
+ }
776
+
777
+ .cn-kbd-group {
778
+ @apply gap-1;
779
+ }
780
+
781
+ /* MARK: Label */
782
+ .cn-label {
783
+ @apply gap-2 font-semibold peer-data-[slot=checkbox]:text-sm peer-data-[slot=radio-group-item]:text-sm peer-data-[slot=switch]:text-sm leading-relaxed group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 peer-data-[slot=checkbox]:font-normal peer-data-[slot=radio-group-item]:font-normal peer-data-[slot=switch]:font-normal uppercase text-xs tracking-wide peer-data-[slot=checkbox]:normal-case peer-data-[slot=checkbox]:tracking-normal peer-data-[slot=radio-group-item]:normal-case peer-data-[slot=radio-group-item]:tracking-normal peer-data-[slot=switch]:normal-case peer-data-[slot=switch]:tracking-normal;
784
+ }
785
+
786
+ .cn-label-aria {
787
+ @apply peer-data-disabled:opacity-50;
788
+ }
789
+
790
+ /* MARK: Menubar */
791
+ .cn-menubar {
792
+ @apply h-10 rounded-none border p-1;
793
+ }
794
+
795
+ .cn-menubar-trigger {
796
+ @apply hover:bg-muted aria-expanded:bg-muted rounded-none px-2 py-0.75 text-sm font-medium;
797
+ }
798
+
799
+ .cn-menubar-content {
800
+ @apply bg-popover text-popover-foreground data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
801
+ }
802
+
803
+ .cn-menubar-content-logical {
804
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
805
+ }
806
+
807
+ .cn-menubar-item {
808
+ @apply focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive! not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none px-3 py-2 text-sm data-disabled:opacity-50 data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
809
+ }
810
+
811
+ .cn-menubar-checkbox-item {
812
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-3 ps-9.5 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5;
813
+ }
814
+
815
+ .cn-menubar-checkbox-item-indicator {
816
+ @apply start-3 size-4 [&_svg:not([class*='size-'])]:size-4;
817
+ }
818
+
819
+ .cn-menubar-radio-item {
820
+ @apply focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-3 ps-9.5 text-xs font-medium uppercase tracking-wider data-disabled:opacity-50 data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
821
+ }
822
+
823
+ .cn-menubar-radio-item-indicator {
824
+ @apply start-3 size-4 [&_svg:not([class*='size-'])]:size-4;
825
+ }
826
+
827
+ .cn-menubar-label {
828
+ @apply px-3.5 py-2 text-xs uppercase tracking-wider data-inset:ps-9.5 font-semibold text-muted-foreground;
829
+ }
830
+
831
+ .cn-menubar-separator {
832
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
833
+ }
834
+
835
+ .cn-menubar-shortcut {
836
+ @apply text-muted-foreground group-focus/menubar-item:text-accent-foreground text-xs tracking-widest;
837
+ }
838
+
839
+ .cn-menubar-sub-trigger {
840
+ @apply focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground gap-2 rounded-none px-3 py-2 text-xs font-medium uppercase tracking-wider data-inset:ps-9.5 [&_svg:not([class*='size-'])]:size-3.5;
841
+ }
842
+
843
+ .cn-menubar-sub-content {
844
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-none p-1.5 shadow-md ring-1 duration-100;
845
+ }
846
+
847
+ /* MARK: Navigation Menu */
848
+ .cn-navigation-menu {
849
+ @apply max-w-max;
850
+ }
851
+
852
+ .cn-navigation-menu-list {
853
+ @apply gap-0;
854
+ }
855
+
856
+ .cn-navigation-menu-trigger {
857
+ @apply hover:bg-muted focus:bg-muted data-open:hover:bg-muted data-open:focus:bg-muted data-open:bg-muted/50 focus-visible:ring-ring/30 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted rounded-none px-4.5 py-2.5 text-sm font-medium transition-all focus-visible:ring-2 focus-visible:outline-1 disabled:opacity-50;
858
+ }
859
+
860
+ .cn-navigation-menu-link {
861
+ @apply data-[active=true]:focus:bg-muted data-[active=true]:hover:bg-muted data-[active=true]:bg-muted/50 focus-visible:ring-ring/30 hover:bg-muted focus:bg-muted flex items-center gap-1.5 rounded-none p-3 text-sm transition-all outline-none focus-visible:ring-2 focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-3.5 in-data-[slot=navigation-menu-content]:rounded-none;
862
+ }
863
+
864
+ .cn-navigation-menu-trigger-icon {
865
+ @apply relative top-px ms-1 size-3 transition duration-300 group-data-open/navigation-menu-trigger:rotate-180 group-data-popup-open/navigation-menu-trigger:rotate-180;
866
+ }
867
+
868
+ .cn-navigation-menu-content {
869
+ @apply data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:ring-foreground/10 p-2.5 pe-3 ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-none group-data-[viewport=false]/navigation-menu:shadow-md group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:duration-300;
870
+ }
871
+
872
+ .cn-navigation-menu-viewport {
873
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:zoom-out-90 data-open:zoom-in-90 ring-foreground/10 rounded-none shadow-md ring-1 duration-100;
874
+ }
875
+
876
+ .cn-navigation-menu-indicator {
877
+ @apply data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in;
878
+ }
879
+
880
+ .cn-navigation-menu-indicator-arrow {
881
+ @apply bg-border rounded-none shadow-md;
882
+ }
883
+
884
+ .cn-navigation-menu-positioner {
885
+ @apply transition-[top,left,right,bottom] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:end-0 data-[side=bottom]:before:start-0;
886
+ }
887
+
888
+ .cn-navigation-menu-popup {
889
+ @apply bg-popover text-popover-foreground ring-foreground/10 rounded-none shadow-md ring-1 transition-all ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:scale-90 data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:scale-90 data-starting-style:opacity-0;
890
+ }
891
+
892
+ /* MARK: Native Select */
893
+ .cn-native-select {
894
+ @apply border-transparent border-b-input bg-transparent placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 w-full min-w-0 appearance-none rounded-none border py-2 pe-8 ps-0 text-sm transition-[color,border-color] select-none data-[size=sm]:h-9;
895
+ }
896
+
897
+ .cn-native-select-icon {
898
+ @apply text-muted-foreground top-1/2 end-0 size-3.5 -translate-y-1/2;
899
+ }
900
+
901
+ /* MARK: Pagination */
902
+ .cn-pagination-content {
903
+ @apply gap-1;
904
+ }
905
+
906
+ .cn-pagination-ellipsis {
907
+ @apply size-9 items-center justify-center [&_svg:not([class*='size-'])]:size-4;
908
+ }
909
+
910
+ .cn-pagination-previous {
911
+ @apply ps-2!;
912
+ }
913
+
914
+ .cn-pagination-next {
915
+ @apply pe-2!;
916
+ }
917
+
918
+ /* MARK: Popover */
919
+ .cn-popover-content {
920
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-none p-4 text-sm shadow-md ring-1 duration-100;
921
+ }
922
+
923
+ .cn-popover-content-logical {
924
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
925
+ }
926
+
927
+ .cn-popover-header {
928
+ @apply flex flex-col gap-1 text-sm;
929
+ }
930
+
931
+ .cn-popover-title {
932
+ @apply text-xs font-semibold uppercase;
933
+ }
934
+
935
+ .cn-popover-description {
936
+ @apply text-muted-foreground text-sm leading-relaxed mt-0.5;
937
+ }
938
+
939
+ /* MARK: Progress */
940
+ .cn-progress {
941
+ @apply bg-muted h-0.5 rounded-none;
942
+ }
943
+
944
+ .cn-progress-track {
945
+ @apply bg-muted h-0.5 rounded-none;
946
+ }
947
+
948
+ .cn-progress-indicator {
949
+ @apply bg-primary;
950
+ }
951
+
952
+ .cn-progress-label {
953
+ @apply text-xs font-semibold tracking-wide uppercase;
954
+ }
955
+
956
+ .cn-progress-value {
957
+ @apply text-muted-foreground ms-auto text-sm tabular-nums;
958
+ }
959
+
960
+ /* MARK: Radio */
961
+ .cn-radio-group {
962
+ @apply grid gap-3;
963
+ }
964
+
965
+ .cn-radio-group-item {
966
+ @apply border-input bg-transparent data-checked:border-foreground aria-invalid:aria-checked:border-foreground aria-invalid:border-destructive focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:aria-invalid:border-destructive/50 flex size-4.5 rounded-full border focus-visible:ring-2 aria-invalid:ring-2 group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input group-has-[:focus-visible]/field-label:data-checked:border-foreground;
967
+ }
968
+
969
+ .cn-radio-group-item-aria {
970
+ @apply data-selected:border-foreground data-focus-visible:border-ring data-focus-visible:ring-ring/30 data-focus-visible:ring-2 data-invalid:data-selected:border-foreground data-invalid:border-destructive data-invalid:ring-destructive/20 dark:data-invalid:ring-destructive/40 dark:data-invalid:border-destructive/50 data-invalid:ring-2;
971
+ }
972
+
973
+ .cn-radio-group-indicator {
974
+ @apply flex size-4.5 items-center justify-center;
975
+ }
976
+
977
+ .cn-radio-group-indicator-icon {
978
+ @apply bg-foreground absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full;
979
+ }
980
+
981
+ /* MARK: Resizable */
982
+ .cn-resizable-handle-icon {
983
+ @apply bg-border h-6 w-1 rounded-none;
984
+ }
985
+
986
+ /* MARK: Scroll Area */
987
+ .cn-scroll-area-scrollbar {
988
+ @apply data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-s data-vertical:border-s-transparent;
989
+ }
990
+
991
+ .cn-scroll-area-thumb {
992
+ @apply rounded-none;
993
+ }
994
+
995
+ /* MARK: Select */
996
+ .cn-select-trigger {
997
+ @apply border-transparent border-b-input bg-transparent data-placeholder:text-muted-foreground focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 gap-1.5 rounded-none border py-2 px-0 text-sm transition-[color,border-color] data-[size=default]:h-10 data-[size=sm]:h-9 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-3.5;
998
+ }
999
+
1000
+ .cn-select-value {
1001
+ @apply flex flex-1 text-start;
1002
+ }
1003
+
1004
+ .cn-select-value-aria {
1005
+ @apply data-placeholder:text-muted-foreground;
1006
+ }
1007
+
1008
+ .cn-select-trigger-icon {
1009
+ @apply text-muted-foreground size-3.5;
1010
+ }
1011
+
1012
+ .cn-select-content {
1013
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;
1014
+ }
1015
+
1016
+ .cn-select-content-logical {
1017
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1018
+ }
1019
+
1020
+ .cn-select-label {
1021
+ @apply px-3 py-2 text-xs uppercase tracking-wider font-semibold text-muted-foreground;
1022
+ }
1023
+
1024
+ .cn-select-item {
1025
+ @apply focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-none py-2 pe-8 ps-3 text-sm [&_svg:not([class*='size-'])]:size-3.5 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2;
1026
+ }
1027
+
1028
+ .cn-select-item-aria {
1029
+ @apply data-focused:bg-accent data-focused:text-accent-foreground;
1030
+ }
1031
+
1032
+ .cn-select-item-indicator {
1033
+ @apply pointer-events-none absolute end-2 flex size-4 items-center justify-center;
1034
+ }
1035
+
1036
+ .cn-select-group {
1037
+ @apply scroll-my-1.5 p-1.5;
1038
+ }
1039
+
1040
+ .cn-select-item-text {
1041
+ @apply flex flex-1 gap-2;
1042
+ }
1043
+
1044
+ .cn-select-separator {
1045
+ @apply bg-border/50 -mx-1.5 my-1.5 h-px;
1046
+ }
1047
+
1048
+ .cn-select-scroll-up-button {
1049
+ @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;
1050
+ }
1051
+
1052
+ .cn-select-scroll-down-button {
1053
+ @apply bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-3.5;
1054
+ }
1055
+
1056
+ .cn-select-empty-aria {
1057
+ @apply text-muted-foreground hidden w-full justify-center py-2 text-center text-sm group-data-empty/select-list:flex;
1058
+ }
1059
+
1060
+ /* MARK: Separator */
1061
+ .cn-separator {
1062
+ @apply bg-border shrink-0;
1063
+ }
1064
+
1065
+ .cn-separator-horizontal {
1066
+ @apply h-px w-full;
1067
+ }
1068
+
1069
+ .cn-separator-vertical {
1070
+ @apply h-full w-px;
1071
+ }
1072
+
1073
+ /* MARK: Sheet */
1074
+ .cn-sheet-overlay {
1075
+ @apply bg-black/20 supports-backdrop-filter:backdrop-blur-sm;
1076
+ }
1077
+
1078
+ .cn-sheet-content {
1079
+ @apply bg-popover text-popover-foreground fixed z-50 flex flex-col bg-clip-padding text-sm shadow-md transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:start-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=right]:inset-y-0 data-[side=right]:end-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm;
1080
+ }
1081
+
1082
+ .cn-sheet-close {
1083
+ @apply absolute top-4 end-4 bg-secondary;
1084
+ }
1085
+
1086
+ .cn-sheet-header {
1087
+ @apply gap-1.5 p-8;
1088
+ }
1089
+
1090
+ .cn-sheet-footer {
1091
+ @apply gap-2 p-8;
1092
+ }
1093
+
1094
+ .cn-sheet-title {
1095
+ @apply text-foreground text-lg font-semibold uppercase tracking-wider;
1096
+ }
1097
+
1098
+ .cn-sheet-description {
1099
+ @apply text-muted-foreground text-sm leading-relaxed mt-0.5;
1100
+ }
1101
+
1102
+ /* MARK: Sidebar */
1103
+ .cn-sidebar-gap {
1104
+ @apply transition-[width] duration-200 ease-linear;
1105
+ }
1106
+
1107
+ .cn-sidebar-inner {
1108
+ @apply bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-none group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1;
1109
+ }
1110
+
1111
+ .cn-sidebar-rail {
1112
+ @apply hover:after:bg-sidebar-border;
1113
+ }
1114
+
1115
+ .cn-sidebar-inset {
1116
+ @apply bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-none md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2;
1117
+ }
1118
+
1119
+ .cn-sidebar-input {
1120
+ @apply bg-transparent border-input h-8 w-full shadow-none;
1121
+ }
1122
+
1123
+ .cn-sidebar-header {
1124
+ @apply gap-2 p-2 [--radius:0];
1125
+ }
1126
+
1127
+ .cn-sidebar-content {
1128
+ @apply no-scrollbar gap-2 [--radius:0];
1129
+ }
1130
+
1131
+ .cn-sidebar-footer {
1132
+ @apply gap-2 p-2;
1133
+ }
1134
+
1135
+ .cn-sidebar-separator {
1136
+ @apply bg-sidebar-border mx-2;
1137
+ }
1138
+
1139
+ .cn-sidebar-group {
1140
+ @apply p-2;
1141
+ }
1142
+
1143
+ .cn-sidebar-menu {
1144
+ @apply gap-0.5;
1145
+ }
1146
+
1147
+ .cn-sidebar-group-content {
1148
+ @apply text-sm;
1149
+ }
1150
+
1151
+ .cn-sidebar-group-label {
1152
+ @apply text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-none px-3 text-xs font-semibold uppercase tracking-wider transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-3.5;
1153
+ }
1154
+
1155
+ .cn-sidebar-group-action {
1156
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 end-3 w-5 rounded-none p-0 focus-visible:ring-2 [&>svg]:size-3.5;
1157
+ }
1158
+
1159
+ .cn-sidebar-menu-button {
1160
+ @apply ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground gap-2 rounded-none px-3 py-2 text-start text-sm transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 data-active:font-medium;
1161
+ }
1162
+
1163
+ .cn-sidebar-menu-button-aria {
1164
+ @apply aria-expanded:hover:bg-sidebar-accent aria-expanded:hover:text-sidebar-accent-foreground;
1165
+ }
1166
+
1167
+ .cn-sidebar-menu-button-variant-default {
1168
+ @apply hover:bg-sidebar-accent hover:text-sidebar-accent-foreground;
1169
+ }
1170
+
1171
+ .cn-sidebar-menu-button-variant-outline {
1172
+ @apply bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_var(--sidebar-border)] hover:shadow-[0_0_0_1px_var(--sidebar-accent)];
1173
+ }
1174
+
1175
+ .cn-sidebar-menu-button-size-default {
1176
+ @apply h-9 text-sm;
1177
+ }
1178
+
1179
+ .cn-sidebar-menu-button-size-sm {
1180
+ @apply h-8 text-xs;
1181
+ }
1182
+
1183
+ .cn-sidebar-menu-button-size-lg {
1184
+ @apply h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!;
1185
+ }
1186
+
1187
+ .cn-sidebar-menu-action {
1188
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 end-1 aspect-square w-5 rounded-none p-0 peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 focus-visible:ring-2 [&>svg]:size-3.5;
1189
+ }
1190
+
1191
+ .cn-sidebar-menu-badge {
1192
+ @apply text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-active/menu-button:text-sidebar-accent-foreground pointer-events-none absolute end-1 flex h-5 min-w-5 rounded-none px-1 text-xs font-medium peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1;
1193
+ }
1194
+
1195
+ .cn-sidebar-menu-skeleton {
1196
+ @apply h-8 gap-2 rounded-none px-2;
1197
+ }
1198
+
1199
+ .cn-sidebar-menu-skeleton-icon {
1200
+ @apply size-3.5 rounded-none;
1201
+ }
1202
+
1203
+ .cn-sidebar-menu-skeleton-text {
1204
+ @apply h-4;
1205
+ }
1206
+
1207
+ .cn-sidebar-menu-sub {
1208
+ @apply border-sidebar-border mx-3.5 translate-x-px rtl:-translate-x-px gap-1 border-s px-2.5 py-0.5 group-data-[collapsible=icon]:hidden;
1209
+ }
1210
+
1211
+ .cn-sidebar-menu-sub-button {
1212
+ @apply text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground h-7 gap-2 rounded-none px-3 focus-visible:ring-2 data-[size=md]:text-sm data-[size=sm]:text-xs [&>svg]:size-3.5;
1213
+ }
1214
+
1215
+ /* MARK: Skeleton */
1216
+ .cn-skeleton {
1217
+ @apply bg-muted;
1218
+ }
1219
+
1220
+ /* MARK: Slider */
1221
+ .cn-slider {
1222
+ @apply data-vertical:min-h-40;
1223
+ }
1224
+
1225
+ .cn-slider-track {
1226
+ @apply bg-input/50 data-horizontal:h-0.5 data-horizontal:w-full data-vertical:h-full data-vertical:w-0.5;
1227
+ }
1228
+
1229
+ .cn-slider-range {
1230
+ @apply bg-primary;
1231
+ }
1232
+
1233
+ .cn-slider-thumb {
1234
+ @apply size-3 border-none bg-primary transition-colors hover:ring-2 hover:ring-ring/30 focus-visible:ring-2 focus-visible:ring-ring/30 focus-visible:outline-hidden;
1235
+ }
1236
+
1237
+ /* MARK: Toast */
1238
+ .cn-toast {
1239
+ @apply rounded-none!;
1240
+ }
1241
+
1242
+ /* MARK: Switch */
1243
+ .cn-switch {
1244
+ @apply data-checked:bg-primary data-unchecked:bg-input data-checked:border-primary border data-unchecked:border-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 shrink-0 rounded-none focus-visible:ring-2 aria-invalid:ring-2 group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:data-unchecked:border-input/50 group-has-[:focus-visible]/field-label:data-checked:border-primary data-[size=default]:h-4.5 data-[size=default]:w-8.25 data-[size=sm]:h-3.5 data-[size=sm]:w-6.25;
1245
+ }
1246
+
1247
+ .cn-switch-aria {
1248
+ @apply data-selected:bg-primary not-data-selected:bg-input data-selected:border-primary not-data-selected:border-input/50 data-focus-visible:border-ring data-focus-visible:ring-ring/30 data-focus-visible:ring-2 data-invalid:ring-destructive/20 dark:data-invalid:ring-destructive/40 data-invalid:border-destructive dark:data-invalid:border-destructive/50 data-invalid:ring-2;
1249
+ }
1250
+
1251
+ .cn-switch-thumb {
1252
+ @apply bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:size-3.5 group-data-[size=sm]/switch:size-2.5 data-checked:translate-x-[calc(100%+2px)] rtl:data-checked:-translate-x-[calc(100%+2px)] data-unchecked:translate-x-0.25 rtl:data-unchecked:-translate-x-0.25;
1253
+ }
1254
+
1255
+ .cn-switch-thumb-aria {
1256
+ @apply dark:not-data-selected:bg-foreground dark:data-selected:bg-primary-foreground data-selected:translate-x-[calc(100%+2px)] rtl:data-selected:-translate-x-[calc(100%+2px)] not-data-selected:translate-x-0.25 rtl:not-data-selected:-translate-x-0.25;
1257
+ }
1258
+
1259
+ /* MARK: Table */
1260
+ .cn-table-container {
1261
+ @apply relative w-full overflow-x-auto;
1262
+ }
1263
+
1264
+ .cn-table {
1265
+ @apply w-full caption-bottom text-sm;
1266
+ }
1267
+
1268
+ .cn-table-header {
1269
+ @apply [&_tr]:border-b;
1270
+ }
1271
+
1272
+ .cn-table-body {
1273
+ @apply [&_tr:last-child]:border-0;
1274
+ }
1275
+
1276
+ .cn-table-footer {
1277
+ @apply bg-muted/50 border-t font-medium [&>tr]:last:border-b-0;
1278
+ }
1279
+
1280
+ .cn-table-row {
1281
+ @apply hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors;
1282
+ }
1283
+
1284
+ .cn-table-row-aria {
1285
+ @apply data-selected:bg-muted;
1286
+ }
1287
+
1288
+ .cn-table-head {
1289
+ @apply text-muted-foreground h-12 px-3 text-start align-middle text-xs font-medium uppercase tracking-wider whitespace-nowrap [&:has([role=checkbox])]:pe-0;
1290
+ }
1291
+
1292
+ .cn-table-head-aria {
1293
+ @apply [&:has([data-slot=checkbox])]:pe-0;
1294
+ }
1295
+
1296
+ .cn-table-cell {
1297
+ @apply p-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0;
1298
+ }
1299
+
1300
+ .cn-table-cell-aria {
1301
+ @apply [&:has([data-slot=checkbox])]:pe-0;
1302
+ }
1303
+
1304
+ .cn-table-caption {
1305
+ @apply text-muted-foreground mt-4 text-sm;
1306
+ }
1307
+
1308
+ /* MARK: Tabs */
1309
+ .cn-tabs {
1310
+ @apply gap-2;
1311
+ }
1312
+
1313
+ .cn-tabs-list {
1314
+ @apply p-1 group-data-horizontal/tabs:h-10;
1315
+ }
1316
+
1317
+ .cn-tabs-trigger {
1318
+ @apply gap-2 border border-transparent px-4 py-1.5 text-xs font-semibold group-data-vertical/tabs:px-4 group-data-vertical/tabs:py-2 [&_svg:not([class*='size-'])]:size-3.5 has-data-[icon=inline-end]:pe-2.5 has-data-[icon=inline-start]:ps-2.5 uppercase tracking-wider;
1319
+ }
1320
+
1321
+ .cn-tabs-content {
1322
+ @apply text-sm;
1323
+ }
1324
+
1325
+ /* MARK: Textarea */
1326
+ .cn-textarea {
1327
+ @apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 resize-none rounded-none border px-0 py-3 text-base transition-[color,border-color] md:text-sm;
1328
+ }
1329
+
1330
+ /* MARK: Toggle */
1331
+ .cn-toggle {
1332
+ @apply hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive gap-1.5 rounded-none text-xs font-semibold uppercase tracking-widest transition-colors [&_svg:not([class*='size-'])]:size-3.5;
1333
+ }
1334
+
1335
+ .cn-toggle-aria {
1336
+ @apply data-selected:bg-muted;
1337
+ }
1338
+
1339
+ .cn-toggle-variant-default {
1340
+ @apply bg-transparent;
1341
+ }
1342
+
1343
+ .cn-toggle-variant-outline {
1344
+ @apply border-input hover:bg-muted border bg-transparent;
1345
+ }
1346
+
1347
+ .cn-toggle-size-default {
1348
+ @apply h-10 min-w-10 px-6 has-data-[icon=inline-end]:pe-4 has-data-[icon=inline-start]:ps-4;
1349
+ }
1350
+
1351
+ .cn-toggle-size-sm {
1352
+ @apply h-9 min-w-9 px-4 has-data-[icon=inline-end]:pe-3 has-data-[icon=inline-start]:ps-3;
1353
+ }
1354
+
1355
+ .cn-toggle-size-lg {
1356
+ @apply h-11 min-w-11 px-8 has-data-[icon=inline-end]:pe-5 has-data-[icon=inline-start]:ps-5;
1357
+ }
1358
+
1359
+ /* MARK: Toggle Group */
1360
+ .cn-toggle-group {
1361
+ @apply data-[spacing=0]:data-[variant=outline]:rounded-none;
1362
+ }
1363
+
1364
+ .cn-toggle-group-item {
1365
+ @apply data-[state=on]:bg-muted data-[state=on]:text-foreground group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-6 group-data-[spacing=0]/toggle-group:shadow-none group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-none group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-none group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pe-4 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:ps-4;
1366
+ }
1367
+
1368
+ /* MARK: Tooltip */
1369
+ .cn-tooltip-content {
1370
+ @apply data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-none px-3 py-1.5 text-xs has-data-[slot=kbd]:pe-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none;
1371
+ }
1372
+
1373
+ .cn-tooltip-content-logical {
1374
+ @apply data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2;
1375
+ }
1376
+
1377
+ .cn-tooltip-arrow {
1378
+ @apply size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-none;
1379
+ }
1380
+
1381
+ .cn-tooltip-arrow-logical {
1382
+ @apply data-[side=inline-end]:top-1/2! data-[side=inline-end]:-start-1 data-[side=inline-end]:translate-x-[1.5px] rtl:data-[side=inline-end]:-translate-x-[1.5px] data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-end-1 data-[side=inline-start]:translate-x-[-1.5px] rtl:data-[side=inline-start]:-translate-x-[-1.5px] data-[side=inline-start]:-translate-y-1/2;
1383
+ }
1384
+
1385
+ /* MARK: Input Group */
1386
+ .cn-input-group {
1387
+ @apply border-transparent border-b-input bg-transparent has-[[data-slot=input-group-control]:focus-visible]:border-b-ring has-[[data-slot][aria-invalid=true]]:border-b-destructive dark:has-[[data-slot][aria-invalid=true]]:border-b-destructive/50 h-10 rounded-none border transition-[color,border-color] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-none has-data-[align=block-start]:rounded-none has-[textarea]:rounded-none has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3;
1388
+ }
1389
+
1390
+ .cn-input-group-addon {
1391
+ @apply text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-2 py-2 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-none **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-3.5;
1392
+ }
1393
+
1394
+ /* .cn-input-group-addon-align-inline-start {
1395
+ @apply has-[>button]:-ms-1 has-[>kbd]:-ms-1;
1396
+ }
1397
+
1398
+ .cn-input-group-addon-align-inline-end {
1399
+ @apply has-[>button]:-me-1 has-[>kbd]:-me-1;
1400
+ } */
1401
+
1402
+ .cn-input-group-addon-align-block-start {
1403
+ @apply pt-3 group-has-[>input]/input-group:pt-3.5 [.border-b]:pb-3.5;
1404
+ }
1405
+
1406
+ .cn-input-group-addon-align-block-end {
1407
+ @apply pb-3 group-has-[>input]/input-group:pb-3.5 [.border-t]:pt-3.5;
1408
+ }
1409
+
1410
+ .cn-input-group-button {
1411
+ @apply gap-2 rounded-none text-sm ;
1412
+ }
1413
+
1414
+ .cn-input-group-button-size-xs {
1415
+ @apply h-6 gap-1 rounded-none px-1.5 [&>svg:not([class*='size-'])]:size-3.5 text-xs;
1416
+ }
1417
+
1418
+ .cn-input-group-button-size-icon-xs {
1419
+ @apply size-6 p-0 has-[>svg]:p-0 text-xs;
1420
+ }
1421
+
1422
+ .cn-input-group-button-size-icon-sm {
1423
+ @apply size-8 p-0 has-[>svg]:p-0;
1424
+ }
1425
+
1426
+ .cn-input-group-text {
1427
+ @apply text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-3.5;
1428
+ }
1429
+
1430
+ .cn-input-group-input {
1431
+ @apply border-0 bg-transparent ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent group-has-[>[data-align=inline-start]]/input-group:ps-2 group-has-[>[data-align=inline-end]]/input-group:pe-2;
1432
+ }
1433
+
1434
+ .cn-input-group-textarea {
1435
+ @apply border-0 bg-transparent py-2.5 ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent;
1436
+ }
1437
+
1438
+ /* MARK: Menu Translucent */
1439
+ .cn-menu-translucent {
1440
+ @apply animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!;
1441
+ }
1442
+
1443
+ .cn-menu-translucent-aria {
1444
+ @apply **:data-[slot$=-item]:data-focused:bg-foreground/10;
1445
+ }
1446
+
1447
+ /* MARK: Bubble */
1448
+ .cn-bubble {
1449
+ @apply gap-1 data-[align=end]:self-end max-w-[80%] data-[variant=ghost]:max-w-full group-data-[align=end]/message:self-end;
1450
+ }
1451
+
1452
+ .cn-bubble-content {
1453
+ @apply rounded-none border border-transparent px-4 py-3 text-sm leading-relaxed [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-2 [button,a]:focus-visible:ring-ring/30 group-data-[align=end]/bubble:self-end;
1454
+ }
1455
+
1456
+ .cn-bubble-variant-default {
1457
+ @apply *:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80;
1458
+ }
1459
+
1460
+ .cn-bubble-variant-secondary {
1461
+ @apply *:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)];
1462
+ }
1463
+
1464
+ .cn-bubble-variant-muted {
1465
+ @apply *:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)];
1466
+ }
1467
+
1468
+ .cn-bubble-variant-tinted {
1469
+ @apply *:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)];
1470
+ }
1471
+
1472
+ .cn-bubble-variant-outline {
1473
+ @apply *:data-[slot=bubble-content]:bg-background *:data-[slot=bubble-content]:border-border [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30;
1474
+ }
1475
+
1476
+ .cn-bubble-variant-ghost {
1477
+ @apply *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50 border-none;
1478
+ }
1479
+
1480
+ .cn-bubble-variant-destructive {
1481
+ @apply *:data-[slot=bubble-content]:bg-destructive/10 dark:*:data-[slot=bubble-content]:bg-destructive/20 *:data-[slot=bubble-content]:text-destructive [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30;
1482
+ }
1483
+
1484
+ .cn-bubble-reactions {
1485
+ @apply rounded-none ring-3 ring-card bg-muted shrink-0 gap-1 px-2 py-0.5 has-[button]:p-0 text-sm;
1486
+ }
1487
+
1488
+ .cn-bubble-reactions-side-top {
1489
+ @apply top-0 -translate-y-3/4;
1490
+ }
1491
+
1492
+ .cn-bubble-reactions-side-bottom {
1493
+ @apply bottom-0 translate-y-3/4;
1494
+ }
1495
+
1496
+ .cn-bubble-reactions-align-start {
1497
+ @apply start-3;
1498
+ }
1499
+
1500
+ .cn-bubble-reactions-align-end {
1501
+ @apply end-3;
1502
+ }
1503
+
1504
+ .cn-bubble-group {
1505
+ @apply gap-2;
1506
+ }
1507
+
1508
+ /* MARK: Attachment */
1509
+ .cn-attachment {
1510
+ @apply rounded-none w-fit focus-within:ring-1 focus-within:ring-ring/30;
1511
+ }
1512
+
1513
+ .cn-attachment-orientation-horizontal {
1514
+ @apply min-w-40;
1515
+ }
1516
+
1517
+ .cn-attachment-orientation-vertical {
1518
+ @apply w-24 has-data-[slot=attachment-content]:w-30;
1519
+ }
1520
+
1521
+ .cn-attachment-size-default {
1522
+ @apply gap-2 has-data-[slot=attachment-content]:px-3 has-data-[slot=attachment-content]:py-2.5 has-data-[slot=attachment-media]:p-2.5 text-sm;
1523
+ }
1524
+
1525
+ .cn-attachment-size-sm {
1526
+ @apply gap-2.5 has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2 text-xs;
1527
+ }
1528
+
1529
+ .cn-attachment-size-xs {
1530
+ @apply gap-1.5 has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5 text-xs rounded-none;
1531
+ }
1532
+
1533
+ .cn-attachment-media {
1534
+ @apply bg-muted text-foreground w-10 rounded-none group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-none [&_svg:not([class*='size-'])]:size-4 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5 group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6!;
1535
+ }
1536
+
1537
+ .cn-attachment-media-variant-image {
1538
+ @apply opacity-60 group-data-[state=idle]/attachment:opacity-100 group-data-[state=done]/attachment:opacity-100;
1539
+ }
1540
+
1541
+ .cn-attachment-content {
1542
+ @apply leading-tight group-data-[orientation=vertical]/attachment:px-1;
1543
+ }
1544
+
1545
+ .cn-attachment-title {
1546
+ @apply font-medium;
1547
+ }
1548
+
1549
+ .cn-attachment-description {
1550
+ @apply mt-0.5 text-xs;
1551
+ }
1552
+
1553
+ .cn-attachment-actions {
1554
+ @apply group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:end-3 relative z-20 group-data-[orientation=vertical]/attachment:gap-1;
1555
+ }
1556
+
1557
+ .cn-attachment-group {
1558
+ @apply gap-3 scroll-px-1 py-1;
1559
+ }
1560
+
1561
+ .cn-attachment-trigger {
1562
+ @apply absolute inset-0 z-10 outline-none;
1563
+ }
1564
+
1565
+ /* MARK: Marker */
1566
+ .cn-marker {
1567
+ @apply gap-2 text-xs text-muted-foreground [a]:hover:text-foreground [a]:underline-offset-3 [a]:underline [&_svg:not([class*='size-'])]:size-4 min-h-4 text-start uppercase tracking-wide;
1568
+ }
1569
+
1570
+ .cn-marker-variant-separator {
1571
+ @apply before:h-px before:min-w-0 before:flex-1 before:bg-border after:h-px after:min-w-0 after:flex-1 after:bg-border before:me-1 after:ms-1;
1572
+ }
1573
+
1574
+ .cn-marker-variant-border {
1575
+ @apply border-b border-border pb-2;
1576
+ }
1577
+
1578
+ .cn-marker-icon {
1579
+ @apply size-4 [&_svg:not([class*='size-'])]:size-4;
1580
+ }
1581
+
1582
+ .cn-marker-content {
1583
+ @apply group-data-[variant=separator]/marker:flex-none group-data-[variant=separator]/marker:text-center *:[a]:hover:text-foreground *:[a]:underline *:[a]:underline-offset-3;
1584
+ }
1585
+
1586
+ /* MARK: Questionnaire */
1587
+ .cn-questionnaire {
1588
+ @apply gap-6;
1589
+ }
1590
+
1591
+ .cn-questionnaire-progress {
1592
+ @apply text-xs uppercase tracking-wide;
1593
+ }
1594
+
1595
+ .cn-questionnaire-item {
1596
+ @apply flex flex-col gap-5;
1597
+ }
1598
+
1599
+ .cn-questionnaire-title {
1600
+ @apply text-xs font-semibold uppercase tracking-wide [&:not(:has(~[data-slot=questionnaire-description]))]:mb-5;
1601
+ }
1602
+
1603
+ .cn-questionnaire-description {
1604
+ @apply text-sm normal-case tracking-normal;
1605
+ }
1606
+
1607
+ .cn-questionnaire-choices {
1608
+ @apply gap-3;
1609
+ }
1610
+
1611
+ .cn-questionnaire-choice {
1612
+ @apply hover:bg-muted/50 data-checked:bg-primary/5 data-checked:border-primary/30 dark:data-checked:border-primary/20 dark:data-checked:bg-primary/10 data-invalid:border-destructive has-[>input:focus-visible]:ring-ring/30 gap-3 rounded-none border border-input bg-transparent px-4 py-4 text-sm has-[>input:focus-visible]:ring-2;
1613
+ }
1614
+
1615
+ .cn-questionnaire-choice-indicator {
1616
+ @apply border-input group-data-checked/questionnaire-choice:border-foreground group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:bg-primary group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:text-primary-foreground group-data-[type=checkbox]/questionnaire-choice:group-data-checked/questionnaire-choice:border-primary size-4.5 translate-y-[--spacing(0.45)] group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5;
1617
+ }
1618
+
1619
+ .cn-questionnaire-choice-indicator-dot {
1620
+ @apply bg-foreground size-2;
1621
+ }
1622
+
1623
+ .cn-questionnaire-choice-indicator-check {
1624
+ @apply size-3.5;
1625
+ }
1626
+
1627
+ .cn-questionnaire-choice-content {
1628
+ @apply gap-1;
1629
+ }
1630
+
1631
+ .cn-questionnaire-choice-description {
1632
+ @apply text-muted-foreground;
1633
+ }
1634
+
1635
+ .cn-questionnaire-shortcut {
1636
+ @apply border-input bg-background text-muted-foreground size-5 translate-y-[--spacing(0.45)] group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 items-center justify-center rounded-none border font-mono text-[0.625rem] font-medium leading-none;
1637
+ }
1638
+
1639
+ .cn-questionnaire-input-wrapper {
1640
+ @apply w-full;
1641
+ }
1642
+
1643
+ .cn-questionnaire-input {
1644
+ @apply border-transparent border-b-input bg-transparent focus-visible:border-b-ring aria-invalid:border-b-destructive dark:aria-invalid:border-b-destructive/50 h-10 border px-0 py-1 text-base md:text-sm;
1645
+ }
1646
+
1647
+ .cn-questionnaire-error {
1648
+ @apply mt-2 text-sm;
1649
+ }
1650
+
1651
+ .cn-questionnaire-actions {
1652
+ @apply gap-2 sm:min-h-10;
1653
+ }
1654
+
1655
+ /* MARK: Trace */
1656
+ .cn-trace {
1657
+ @apply gap-3 *:has-[>[data-slot=trace-line]]:rounded-none *:has-[>[data-slot=trace-line]]:focus-visible:ring-2 *:has-[>[data-slot=trace-line]]:focus-visible:ring-ring/30;
1658
+ }
1659
+
1660
+ .cn-trace-collapsible-trigger {
1661
+ @apply gap-1 rounded-none focus-visible:ring-2 focus-visible:ring-ring/30;
1662
+ }
1663
+
1664
+ .cn-trace-line {
1665
+ @apply gap-2 text-sm;
1666
+ }
1667
+
1668
+ .cn-trace-icon {
1669
+ @apply size-4 [&_svg:not([class*='size-'])]:size-4 [[data-slot=trace-title]~&]:-ms-1;
1670
+ }
1671
+
1672
+ .cn-trace-collapsible-content {
1673
+ @apply duration-200;
1674
+ }
1675
+
1676
+ .cn-trace-collapsible-content-inner {
1677
+ @apply mt-3 mb-1 ms-[calc(--spacing(2)-1px)] border-s pe-1 ps-4 leading-relaxed;
1678
+ }
1679
+
1680
+ /* MARK: Code Block */
1681
+ .cn-code-block {
1682
+ @apply rounded-none text-sm data-[size=sm]:text-xs has-[>[data-slot=code-block-content]:focus-visible]:ring-2 has-[>[data-slot=code-block-content]:focus-visible]:ring-ring/30;
1683
+ }
1684
+
1685
+ .cn-code-block-variant-default {
1686
+ @apply border border-input text-foreground dark:bg-input/30 has-[>[data-slot=code-block-content]:focus-visible]:border-ring;
1687
+ }
1688
+
1689
+ .cn-code-block-variant-destructive {
1690
+ @apply border border-destructive/30 text-destructive dark:border-destructive/40;
1691
+ }
1692
+
1693
+ .cn-code-block-header {
1694
+ @apply gap-2 px-4 pt-4 text-muted-foreground group-data-[variant=destructive]/code-block:text-destructive group-data-[size=sm]/code-block:px-3 group-data-[size=sm]/code-block:pt-3;
1695
+ }
1696
+
1697
+ .cn-code-block-footer {
1698
+ @apply gap-2 px-4 pb-4 text-muted-foreground group-data-[size=sm]/code-block:px-3 group-data-[size=sm]/code-block:pb-3;
1699
+ }
1700
+
1701
+ .cn-code-block-title {
1702
+ @apply font-sans text-sm font-medium text-foreground group-data-[variant=destructive]/code-block:text-destructive *:[svg]:me-1.5 [&_svg:not([class*='size-'])]:size-4 group-data-[size=sm]/code-block:text-xs group-data-[size=sm]/code-block:[&_svg:not([class*='size-'])]:size-3.5;
1703
+ }
1704
+
1705
+ .cn-code-block-actions {
1706
+ @apply -my-1 -me-1.5 gap-1 [[data-slot=code-block]>&]:m-0 [[data-slot=code-block]>&]:top-3 [[data-slot=code-block]>&]:end-3 group-data-[size=sm]/code-block:[[data-slot=code-block]>&]:top-2 group-data-[size=sm]/code-block:[[data-slot=code-block]>&]:end-2 [[data-slot=code-block]>&]:*:[button]:bg-background [[data-slot=code-block]>&]:*:[button]:ring-1 [[data-slot=code-block]>&]:*:[button]:ring-foreground/10;
1707
+ }
1708
+
1709
+ .cn-code-block-copy-button {
1710
+ }
1711
+
1712
+ .cn-code-block-content {
1713
+ @apply px-4 py-4 leading-relaxed group-has-data-[slot=code-block-header]/code-block:pt-2 group-has-data-[slot=code-block-footer]/code-block:pb-2 group-data-[size=sm]/code-block:px-3 group-data-[size=sm]/code-block:py-3 group-data-[size=sm]/code-block:group-has-data-[slot=code-block-header]/code-block:pt-1.5;
1714
+ }
1715
+
1716
+ .cn-code-block-line {
1717
+ @apply -mx-4 px-4 in-data-numbered:gap-x-3 before:min-w-6 before:text-end before:text-muted-foreground after:start-1 after:text-muted-foreground group-data-[size=sm]/code-block:-mx-3 group-data-[size=sm]/code-block:px-3;
1718
+ }
1719
+
1720
+ .cn-code-block-line-variant-highlighted {
1721
+ @apply bg-muted;
1722
+ }
1723
+
1724
+ .cn-code-block-line-variant-added {
1725
+ @apply bg-muted after:content-['+'];
1726
+ }
1727
+
1728
+ .cn-code-block-line-variant-removed {
1729
+ @apply bg-destructive/10 after:text-destructive after:content-['−'];
1730
+ }
1731
+
1732
+ /* MARK: Message Scroller */
1733
+ .cn-message-scroller-content {
1734
+ @apply gap-8;
1735
+ }
1736
+
1737
+ /* MARK: Message */
1738
+ .cn-message {
1739
+ @apply text-sm gap-2;
1740
+ }
1741
+
1742
+ .cn-message-avatar {
1743
+ @apply min-w-8 group-has-data-[slot=message-footer]/message:-translate-y-8;
1744
+ }
1745
+
1746
+ .cn-message-content {
1747
+ @apply gap-2.5 group-data-[align=end]/message:*:data-slot:self-end;
1748
+ }
1749
+
1750
+ .cn-message-header {
1751
+ @apply text-xs font-medium text-muted-foreground px-4 group-has-data-[variant=ghost]/message:px-0 uppercase tracking-wide;
1752
+ }
1753
+
1754
+ .cn-message-footer {
1755
+ @apply text-xs font-medium text-muted-foreground px-4 group-has-data-[variant=ghost]/message:px-0 uppercase tracking-wide;
1756
+ }
1757
+
1758
+ .cn-message-group {
1759
+ @apply gap-2;
1760
+ }
1761
+
1762
+ /* MARK: React Aria */
1763
+ .cn-alert-dialog-overlay-aria {
1764
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-sm;
1765
+ }
1766
+
1767
+ .cn-alert-dialog-content-aria {
1768
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 bg-popover text-popover-foreground ring-foreground/10 gap-6 rounded-none p-6 shadow-md ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md;
1769
+ }
1770
+
1771
+ .cn-combobox-content-aria {
1772
+ @apply bg-popover text-popover-foreground data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 *:data-[slot=input-group]:bg-transparent *:data-[slot=input-group]:border-b-input max-h-72 min-w-36 overflow-hidden rounded-none shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1.5 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-transparent *:data-[slot=input-group]:focus-within:border-transparent *:data-[slot=input-group]:px-2.5;
1773
+ }
1774
+
1775
+ .cn-context-menu-content-aria {
1776
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
1777
+ }
1778
+
1779
+ .cn-dialog-overlay-aria {
1780
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 bg-black/20 duration-100 supports-backdrop-filter:backdrop-blur-sm;
1781
+ }
1782
+
1783
+ .cn-dialog-content-aria {
1784
+ @apply bg-popover text-popover-foreground data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 ring-foreground/10 grid max-w-[calc(100%-2rem)] gap-6 rounded-none p-6 text-sm shadow-md ring-1 duration-100 sm:max-w-md;
1785
+ }
1786
+
1787
+ .cn-dropdown-menu-content-aria {
1788
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-48 rounded-none p-1.5 shadow-md ring-1 duration-100;
1789
+ }
1790
+
1791
+ .cn-popover-content-aria {
1792
+ @apply bg-popover text-popover-foreground data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 flex flex-col gap-4 rounded-none p-4 text-sm shadow-md ring-1 duration-100;
1793
+ }
1794
+
1795
+ .cn-hover-card-content-aria {
1796
+ @apply data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground w-72 p-4 text-sm shadow-md ring-1 duration-100;
1797
+ }
1798
+
1799
+ .cn-select-content-aria {
1800
+ @apply bg-popover text-popover-foreground data-entering:animate-in data-exiting:animate-out data-exiting:fade-out-0 data-entering:fade-in-0 data-exiting:zoom-out-95 data-entering:zoom-in-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;
1801
+ }
1802
+
1803
+ .cn-tooltip-content-aria {
1804
+ @apply data-entering:animate-in data-entering:fade-in-0 data-entering:zoom-in-95 data-exiting:animate-out data-exiting:fade-out-0 data-exiting:zoom-out-95 data-[placement=bottom]:slide-in-from-top-2 data-[placement=left]:slide-in-from-right-2 data-[placement=right]:slide-in-from-left-2 data-[placement=top]:slide-in-from-bottom-2 inline-flex items-center gap-1.5 rounded-none px-3 py-1.5 text-xs has-data-[slot=kbd]:pe-1.5 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-none;
1805
+ }
1806
+
1807
+ .cn-context-menu-sub-content-aria {
1808
+ @apply ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none p-1.5 shadow-md ring-1 duration-100;
1809
+ }
1810
+
1811
+ .cn-dropdown-menu-sub-content-aria {
1812
+ @apply ring-foreground/10 bg-popover text-popover-foreground min-w-36 rounded-none p-1.5 shadow-md ring-1 duration-100;
1813
+ }
1814
+ }
1815
+
1816
+ /* MARK: WebJs base supplement. Layout utilities shadcn's base form keeps
1817
+ inline and the kit's base form does not, added here so this style renders
1818
+ as it does in shadcn/ui. Generated by packages/ui/scripts/port-styles.mjs
1819
+ from styles/supplement.json; do not edit by hand. */
1820
+ .style-sera {
1821
+ .cn-accordion {
1822
+ @apply flex flex-col;
1823
+ }
1824
+ .cn-accordion-content {
1825
+ @apply overflow-hidden;
1826
+ }
1827
+ .cn-accordion-trigger {
1828
+ @apply relative flex-1 items-start border border-transparent disabled:pointer-events-none disabled:opacity-50;
1829
+ }
1830
+ .cn-alert-description {
1831
+ @apply [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground;
1832
+ }
1833
+ .cn-alert-dialog-content {
1834
+ @apply top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 outline-none;
1835
+ }
1836
+ .cn-alert-title {
1837
+ @apply [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground;
1838
+ }
1839
+ .cn-avatar {
1840
+ @apply after:absolute after:inset-0 after:border after:border-border after:mix-blend-darken dark:after:mix-blend-lighten;
1841
+ }
1842
+ .cn-avatar-badge {
1843
+ @apply bg-blend-color;
1844
+ }
1845
+ .cn-avatar-image {
1846
+ @apply object-cover;
1847
+ }
1848
+ .cn-breadcrumb-list {
1849
+ @apply wrap-break-word;
1850
+ }
1851
+ .cn-button {
1852
+ @apply select-none;
1853
+ }
1854
+ .cn-card-header {
1855
+ @apply has-data-[slot=card-description]:grid-rows-[auto_auto];
1856
+ }
1857
+ .cn-checkbox {
1858
+ @apply relative after:absolute after:-inset-x-3 after:-inset-y-2;
1859
+ }
1860
+ .cn-context-menu-checkbox-item {
1861
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
1862
+ }
1863
+ .cn-context-menu-content {
1864
+ @apply max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin);
1865
+ }
1866
+ .cn-context-menu-item {
1867
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
1868
+ }
1869
+ .cn-context-menu-radio-item {
1870
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0;
1871
+ }
1872
+ .cn-context-menu-sub-content {
1873
+ @apply origin-(--radix-context-menu-content-transform-origin);
1874
+ }
1875
+ .cn-dialog-content {
1876
+ @apply top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2;
1877
+ }
1878
+ .cn-dropdown-menu-checkbox-item {
1879
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
1880
+ }
1881
+ .cn-dropdown-menu-content {
1882
+ @apply max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) data-[state=closed]:overflow-hidden;
1883
+ }
1884
+ .cn-dropdown-menu-item {
1885
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50;
1886
+ }
1887
+ .cn-dropdown-menu-radio-item {
1888
+ @apply data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0;
1889
+ }
1890
+ .cn-dropdown-menu-sub-content {
1891
+ @apply origin-(--radix-dropdown-menu-content-transform-origin);
1892
+ }
1893
+ .cn-empty {
1894
+ @apply w-full;
1895
+ }
1896
+ .cn-field-description {
1897
+ @apply group-has-data-horizontal/field:text-balance;
1898
+ }
1899
+ .cn-field-orientation-horizontal {
1900
+ @apply *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px;
1901
+ }
1902
+ .cn-field-orientation-responsive {
1903
+ @apply *:w-full @md/field-group:*:w-auto @md/field-group:*:data-[slot=field-label]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px;
1904
+ }
1905
+ .cn-field-orientation-vertical {
1906
+ @apply *:w-full;
1907
+ }
1908
+ .cn-hover-card-content {
1909
+ @apply origin-(--radix-hover-card-content-transform-origin);
1910
+ }
1911
+ .cn-menubar-checkbox-item {
1912
+ @apply data-disabled:pointer-events-none;
1913
+ }
1914
+ .cn-menubar-checkbox-item-indicator {
1915
+ @apply absolute flex items-center justify-center;
1916
+ }
1917
+ .cn-menubar-content {
1918
+ @apply origin-(--radix-menubar-content-transform-origin) overflow-hidden;
1919
+ }
1920
+ .cn-menubar-item {
1921
+ @apply data-disabled:pointer-events-none;
1922
+ }
1923
+ .cn-menubar-radio-item {
1924
+ @apply data-disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0;
1925
+ }
1926
+ .cn-menubar-radio-item-indicator {
1927
+ @apply absolute flex items-center justify-center;
1928
+ }
1929
+ .cn-menubar-separator {
1930
+ @apply -mx-1 my-1 h-px;
1931
+ }
1932
+ .cn-menubar-shortcut {
1933
+ @apply ms-auto;
1934
+ }
1935
+ .cn-menubar-sub-content {
1936
+ @apply origin-(--radix-menubar-content-transform-origin);
1937
+ }
1938
+ .cn-menubar-sub-trigger {
1939
+ @apply outline-none;
1940
+ }
1941
+ .cn-popover-content {
1942
+ @apply z-50 origin-(--radix-popover-content-transform-origin);
1943
+ }
1944
+ .cn-progress {
1945
+ @apply relative flex items-center overflow-x-hidden;
1946
+ }
1947
+ .cn-radio-group {
1948
+ @apply w-full;
1949
+ }
1950
+ .cn-radio-group-item {
1951
+ @apply relative after:absolute after:-inset-x-3 after:-inset-y-2;
1952
+ }
1953
+ .cn-switch {
1954
+ @apply after:absolute after:-inset-x-3 after:-inset-y-2 data-disabled:cursor-not-allowed data-disabled:opacity-50;
1955
+ }
1956
+ .cn-switch-thumb {
1957
+ @apply pointer-events-none block ring-0 transition-transform;
1958
+ }
1959
+ .cn-tabs {
1960
+ @apply data-horizontal:flex-col;
1961
+ }
1962
+ .cn-tabs-list {
1963
+ @apply group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col;
1964
+ }
1965
+ .cn-tabs-trigger {
1966
+ @apply group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start;
1967
+ }
1968
+ .cn-toggle-group {
1969
+ @apply flex-row gap-[--spacing(var(--gap))] data-vertical:flex-col data-vertical:items-stretch;
1970
+ }
1971
+ .cn-toggle-group-item {
1972
+ @apply cursor-default select-none aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-s-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-s group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t;
1973
+ }
1974
+ .cn-tooltip-content {
1975
+ @apply max-w-xs origin-(--radix-tooltip-content-transform-origin);
1976
+ }
1977
+ }