@ojiepermana/angular 21.3.4 → 22.0.1

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 (290) hide show
  1. package/README.md +10 -6
  2. package/component/accordion/README.md +195 -0
  3. package/component/alert/README.md +182 -0
  4. package/component/alert-dialog/README.md +239 -0
  5. package/component/aspect-ratio/README.md +112 -0
  6. package/component/avatar/README.md +176 -0
  7. package/component/badge/README.md +133 -0
  8. package/component/breadcrumb/README.md +216 -0
  9. package/component/button/README.md +139 -0
  10. package/component/button-group/README.md +208 -0
  11. package/component/calendar/README.md +132 -0
  12. package/component/card/README.md +220 -0
  13. package/component/carousel/README.md +276 -0
  14. package/component/checkbox/README.md +149 -0
  15. package/component/collapsible/README.md +195 -0
  16. package/component/combobox/README.md +198 -0
  17. package/component/command/README.md +275 -0
  18. package/component/composer/README.md +235 -0
  19. package/component/composer/package.json +4 -0
  20. package/component/context-menu/README.md +267 -0
  21. package/component/date-picker/README.md +177 -0
  22. package/component/dialog/README.md +237 -0
  23. package/component/drawer/README.md +145 -0
  24. package/component/dropdown-menu/README.md +311 -0
  25. package/component/editor/README.md +136 -0
  26. package/component/editor/package.json +4 -0
  27. package/component/empty/README.md +183 -0
  28. package/component/empty/package.json +4 -0
  29. package/component/form/README.md +210 -0
  30. package/component/hover-card/README.md +146 -0
  31. package/component/hover-card/package.json +4 -0
  32. package/component/input/README.md +159 -0
  33. package/component/input-group/README.md +239 -0
  34. package/component/input-otp/README.md +278 -0
  35. package/component/input-otp/package.json +4 -0
  36. package/component/item/README.md +247 -0
  37. package/component/kanban/README.md +81 -0
  38. package/component/kanban/package.json +4 -0
  39. package/component/kbd/README.md +139 -0
  40. package/component/kbd/package.json +4 -0
  41. package/component/label/README.md +136 -0
  42. package/component/menubar/README.md +269 -0
  43. package/component/menubar/package.json +4 -0
  44. package/component/native-select/README.md +176 -0
  45. package/component/native-select/package.json +4 -0
  46. package/component/navigation-menu/README.md +160 -0
  47. package/component/navigation-menu/package.json +4 -0
  48. package/component/pagination/README.md +144 -0
  49. package/component/pillbox/README.md +67 -0
  50. package/component/pillbox/package.json +4 -0
  51. package/component/popover/README.md +43 -0
  52. package/component/progress/README.md +160 -0
  53. package/component/radio/README.md +209 -0
  54. package/component/resizable/README.md +168 -0
  55. package/component/resizable/package.json +4 -0
  56. package/component/scroll-area/README.md +143 -0
  57. package/component/select/README.md +174 -0
  58. package/component/separator/README.md +170 -0
  59. package/component/sheet/README.md +183 -0
  60. package/component/skeleton/README.md +158 -0
  61. package/component/slider/README.md +207 -0
  62. package/component/spinner/README.md +160 -0
  63. package/component/spinner/package.json +4 -0
  64. package/component/switch/README.md +166 -0
  65. package/component/table/README.md +291 -0
  66. package/component/tabs/README.md +219 -0
  67. package/component/textarea/README.md +154 -0
  68. package/component/timeline/README.md +94 -0
  69. package/component/timeline/package.json +4 -0
  70. package/component/toast/README.md +321 -0
  71. package/component/toggle/README.md +131 -0
  72. package/component/toggle/package.json +4 -0
  73. package/component/toggle-group/README.md +206 -0
  74. package/component/toggle-group/package.json +4 -0
  75. package/component/tooltip/README.md +211 -0
  76. package/fesm2022/ojiepermana-angular-component-accordion.mjs +45 -30
  77. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +1 -1
  78. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +95 -61
  79. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +1 -1
  80. package/fesm2022/ojiepermana-angular-component-alert.mjs +30 -21
  81. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +1 -1
  82. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +11 -7
  83. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +1 -1
  84. package/fesm2022/ojiepermana-angular-component-avatar.mjs +50 -34
  85. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +1 -1
  86. package/fesm2022/ojiepermana-angular-component-badge.mjs +9 -6
  87. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +1 -1
  88. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +49 -35
  89. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +1 -1
  90. package/fesm2022/ojiepermana-angular-component-button-group.mjs +25 -17
  91. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +1 -1
  92. package/fesm2022/ojiepermana-angular-component-button.mjs +11 -7
  93. package/fesm2022/ojiepermana-angular-component-button.mjs.map +1 -1
  94. package/fesm2022/ojiepermana-angular-component-calendar.mjs +23 -13
  95. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +1 -1
  96. package/fesm2022/ojiepermana-angular-component-card.mjs +51 -36
  97. package/fesm2022/ojiepermana-angular-component-card.mjs.map +1 -1
  98. package/fesm2022/ojiepermana-angular-component-carousel.mjs +66 -42
  99. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +1 -1
  100. package/fesm2022/ojiepermana-angular-component-chart.mjs +494 -283
  101. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +1 -1
  102. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +23 -13
  103. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +1 -1
  104. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +28 -20
  105. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +1 -1
  106. package/fesm2022/ojiepermana-angular-component-combobox.mjs +27 -18
  107. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +1 -1
  108. package/fesm2022/ojiepermana-angular-component-command.mjs +77 -52
  109. package/fesm2022/ojiepermana-angular-component-command.mjs.map +1 -1
  110. package/fesm2022/ojiepermana-angular-component-composer.mjs +352 -0
  111. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +1 -0
  112. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +9 -6
  113. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +1 -1
  114. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +34 -19
  115. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +1 -1
  116. package/fesm2022/ojiepermana-angular-component-dialog.mjs +55 -38
  117. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +1 -1
  118. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +1 -1
  119. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +108 -74
  120. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +1 -1
  121. package/fesm2022/ojiepermana-angular-component-editor.mjs +717 -0
  122. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +1 -0
  123. package/fesm2022/ojiepermana-angular-component-empty.mjs +145 -0
  124. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +1 -0
  125. package/fesm2022/ojiepermana-angular-component-form.mjs +200 -42
  126. package/fesm2022/ojiepermana-angular-component-form.mjs.map +1 -1
  127. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +297 -0
  128. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +1 -0
  129. package/fesm2022/ojiepermana-angular-component-input-group.mjs +48 -33
  130. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +1 -1
  131. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +514 -0
  132. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +1 -0
  133. package/fesm2022/ojiepermana-angular-component-input.mjs +7 -5
  134. package/fesm2022/ojiepermana-angular-component-input.mjs.map +1 -1
  135. package/fesm2022/ojiepermana-angular-component-item.mjs +76 -53
  136. package/fesm2022/ojiepermana-angular-component-item.mjs.map +1 -1
  137. package/fesm2022/ojiepermana-angular-component-kanban.mjs +314 -0
  138. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +1 -0
  139. package/fesm2022/ojiepermana-angular-component-kbd.mjs +55 -0
  140. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +1 -0
  141. package/fesm2022/ojiepermana-angular-component-label.mjs +9 -6
  142. package/fesm2022/ojiepermana-angular-component-label.mjs.map +1 -1
  143. package/fesm2022/ojiepermana-angular-component-menubar.mjs +308 -0
  144. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +1 -0
  145. package/fesm2022/ojiepermana-angular-component-native-select.mjs +67 -0
  146. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +1 -0
  147. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +413 -0
  148. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +1 -0
  149. package/fesm2022/ojiepermana-angular-component-pagination.mjs +65 -31
  150. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +1 -1
  151. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +812 -0
  152. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +1 -0
  153. package/fesm2022/ojiepermana-angular-component-popover.mjs +18 -12
  154. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +1 -1
  155. package/fesm2022/ojiepermana-angular-component-progress.mjs +17 -10
  156. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +1 -1
  157. package/fesm2022/ojiepermana-angular-component-radio.mjs +47 -17
  158. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +1 -1
  159. package/fesm2022/ojiepermana-angular-component-resizable.mjs +481 -0
  160. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +1 -0
  161. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +15 -9
  162. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +1 -1
  163. package/fesm2022/ojiepermana-angular-component-select.mjs +71 -26
  164. package/fesm2022/ojiepermana-angular-component-select.mjs.map +1 -1
  165. package/fesm2022/ojiepermana-angular-component-separator.mjs +11 -7
  166. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +1 -1
  167. package/fesm2022/ojiepermana-angular-component-sheet.mjs +91 -42
  168. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +1 -1
  169. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +7 -5
  170. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +1 -1
  171. package/fesm2022/ojiepermana-angular-component-slider.mjs +401 -7
  172. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +1 -1
  173. package/fesm2022/ojiepermana-angular-component-spinner.mjs +60 -0
  174. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +1 -0
  175. package/fesm2022/ojiepermana-angular-component-switch.mjs +47 -15
  176. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +1 -1
  177. package/fesm2022/ojiepermana-angular-component-table.mjs +56 -40
  178. package/fesm2022/ojiepermana-angular-component-table.mjs.map +1 -1
  179. package/fesm2022/ojiepermana-angular-component-tabs.mjs +58 -38
  180. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +1 -1
  181. package/fesm2022/ojiepermana-angular-component-textarea.mjs +8 -6
  182. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +1 -1
  183. package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -0
  184. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +1 -0
  185. package/fesm2022/ojiepermana-angular-component-toast.mjs +28 -4
  186. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +1 -1
  187. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +289 -0
  188. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +1 -0
  189. package/fesm2022/ojiepermana-angular-component-toggle.mjs +82 -0
  190. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +1 -0
  191. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +304 -6
  192. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +1 -1
  193. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +1 -1
  194. package/fesm2022/ojiepermana-angular-layout-component.mjs +45 -24
  195. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +1 -1
  196. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +1 -1
  197. package/fesm2022/ojiepermana-angular-layout-services.mjs +7 -5
  198. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +1 -1
  199. package/fesm2022/ojiepermana-angular-layout-shell.mjs +3 -3
  200. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +1 -1
  201. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +9 -6
  202. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +1 -1
  203. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +1 -1
  204. package/fesm2022/{ojiepermana-angular-layout-empty.mjs → ojiepermana-angular-layout-type-empty.mjs} +4 -4
  205. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +1 -0
  206. package/fesm2022/{ojiepermana-angular-layout-horizontal.mjs → ojiepermana-angular-layout-type-horizontal.mjs} +26 -17
  207. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +1 -0
  208. package/fesm2022/{ojiepermana-angular-layout-vertical.mjs → ojiepermana-angular-layout-type-vertical.mjs} +28 -18
  209. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +1 -0
  210. package/fesm2022/ojiepermana-angular-layout.mjs +74 -50
  211. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  212. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +1 -1
  213. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +11 -7
  214. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +1 -1
  215. package/fesm2022/ojiepermana-angular-navigation-item.mjs +27 -16
  216. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +1 -1
  217. package/fesm2022/ojiepermana-angular-navigation-service.mjs +29 -20
  218. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +1 -1
  219. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +71 -43
  220. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +1 -1
  221. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +261 -24
  222. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +1 -1
  223. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +1 -1
  224. package/fesm2022/ojiepermana-angular-theme-services.mjs +19 -11
  225. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +1 -1
  226. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +1 -1
  227. package/fesm2022/ojiepermana-angular-theme.mjs +19 -11
  228. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  229. package/generator/api/bin/src/emit/client.js +4 -2
  230. package/generator/api/bin/src/writer/index.js +2 -2
  231. package/generator/guide/bin/schematics/build/index.js +3 -2
  232. package/generator/guide/bin/src/engine/component.js +2 -2
  233. package/generator/guide/bin/src/engine/index.js +3 -3
  234. package/generator/guide/bin/src/engine/render.js +10 -5
  235. package/layout/type/empty/package.json +4 -0
  236. package/layout/type/horizontal/package.json +4 -0
  237. package/layout/type/vertical/package.json +4 -0
  238. package/navigation/topbar/README.md +196 -0
  239. package/package.json +89 -25
  240. package/theme/README.md +110 -3
  241. package/theme/styles/integrations/material/autocomplete.css +178 -0
  242. package/theme/styles/integrations/material/button.css +468 -0
  243. package/theme/styles/integrations/material/dialog.css +152 -0
  244. package/theme/styles/integrations/material/select.css +175 -0
  245. package/theme/styles/integrations/material/slide-toggle.css +234 -0
  246. package/theme/styles/integrations/material/slider.css +194 -0
  247. package/theme/styles/integrations/material/tabs.css +229 -0
  248. package/theme/styles/integrations/material.css +70 -60
  249. package/types/ojiepermana-angular-component-combobox.d.ts +1 -2
  250. package/types/ojiepermana-angular-component-composer.d.ts +90 -0
  251. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +2 -0
  252. package/types/ojiepermana-angular-component-editor.d.ts +123 -0
  253. package/types/ojiepermana-angular-component-empty.d.ts +50 -0
  254. package/types/ojiepermana-angular-component-form.d.ts +52 -3
  255. package/types/ojiepermana-angular-component-hover-card.d.ts +74 -0
  256. package/types/ojiepermana-angular-component-input-otp.d.ts +136 -0
  257. package/types/ojiepermana-angular-component-kanban.d.ts +70 -0
  258. package/types/ojiepermana-angular-component-kbd.d.ts +16 -0
  259. package/types/ojiepermana-angular-component-menubar.d.ts +67 -0
  260. package/types/ojiepermana-angular-component-native-select.d.ts +26 -0
  261. package/types/ojiepermana-angular-component-navigation-menu.d.ts +96 -0
  262. package/types/ojiepermana-angular-component-pagination.d.ts +10 -4
  263. package/types/ojiepermana-angular-component-pillbox.d.ts +157 -0
  264. package/types/ojiepermana-angular-component-radio.d.ts +7 -1
  265. package/types/ojiepermana-angular-component-resizable.d.ts +99 -0
  266. package/types/ojiepermana-angular-component-select.d.ts +17 -5
  267. package/types/ojiepermana-angular-component-sheet.d.ts +3 -1
  268. package/types/ojiepermana-angular-component-slider.d.ts +59 -1
  269. package/types/ojiepermana-angular-component-spinner.d.ts +13 -0
  270. package/types/ojiepermana-angular-component-switch.d.ts +13 -3
  271. package/types/ojiepermana-angular-component-timeline.d.ts +63 -0
  272. package/types/ojiepermana-angular-component-toast.d.ts +12 -3
  273. package/types/ojiepermana-angular-component-toggle-group.d.ts +89 -0
  274. package/types/ojiepermana-angular-component-toggle.d.ts +25 -0
  275. package/types/ojiepermana-angular-component-tooltip.d.ts +72 -5
  276. package/types/{ojiepermana-angular-layout-horizontal.d.ts → ojiepermana-angular-layout-type-horizontal.d.ts} +3 -3
  277. package/types/{ojiepermana-angular-layout-vertical.d.ts → ojiepermana-angular-layout-type-vertical.d.ts} +3 -3
  278. package/types/ojiepermana-angular-layout.d.ts +5 -5
  279. package/types/ojiepermana-angular-navigation-item.d.ts +1 -1
  280. package/types/ojiepermana-angular-navigation-service.d.ts +7 -7
  281. package/types/ojiepermana-angular-navigation-sidebar.d.ts +8 -8
  282. package/types/ojiepermana-angular-navigation-topbar.d.ts +24 -4
  283. package/types/ojiepermana-angular-navigation-types.d.ts +14 -8
  284. package/fesm2022/ojiepermana-angular-layout-empty.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs.map +0 -1
  286. package/fesm2022/ojiepermana-angular-layout-vertical.mjs.map +0 -1
  287. package/layout/empty/package.json +0 -4
  288. package/layout/horizontal/package.json +0 -4
  289. package/layout/vertical/package.json +0 -4
  290. /package/types/{ojiepermana-angular-layout-empty.d.ts → ojiepermana-angular-layout-type-empty.d.ts} +0 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Angular Material dialog overrides.
3
+ *
4
+ * The dialog keeps MatDialog focus management, ARIA roles, and overlay
5
+ * behavior while the surface follows the local shadcn-like theme tokens.
6
+ */
7
+ @layer tokens {
8
+ :root,
9
+ [data-style='default'] {
10
+ --mat-dialog-container-color: hsl(var(--popover));
11
+ --mat-dialog-container-shape: var(--radius-lg);
12
+ --mat-dialog-container-elevation-shadow: var(--shadow-lg);
13
+ --mat-dialog-container-max-width: min(calc(100vw - 2rem), 32rem);
14
+ --mat-dialog-container-small-max-width: calc(100vw - 2rem);
15
+ --mat-dialog-container-min-width: 0;
16
+ --mat-dialog-actions-alignment: flex-end;
17
+ --mat-dialog-actions-padding: 1rem 1.5rem 1.5rem;
18
+ --mat-dialog-content-padding: 0 1.5rem 1.5rem;
19
+ --mat-dialog-headline-padding: 1.5rem 1.5rem 0.5rem;
20
+ --mat-dialog-with-actions-content-padding: 0 1.5rem 0.25rem;
21
+ --mat-dialog-subhead-color: hsl(var(--popover-foreground));
22
+ --mat-dialog-supporting-text-color: hsl(var(--muted-foreground));
23
+ --mat-dialog-subhead-font: var(--font-sans);
24
+ --mat-dialog-subhead-line-height: 1.75rem;
25
+ --mat-dialog-subhead-size: 1.125rem;
26
+ --mat-dialog-subhead-tracking: 0;
27
+ --mat-dialog-subhead-weight: 600;
28
+ --mat-dialog-supporting-text-font: var(--font-sans);
29
+ --mat-dialog-supporting-text-line-height: 1.5rem;
30
+ --mat-dialog-supporting-text-size: 0.875rem;
31
+ --mat-dialog-supporting-text-tracking: 0;
32
+ --mat-dialog-supporting-text-weight: 400;
33
+
34
+ --ui-mat-dialog-backdrop-background: hsl(var(--foreground) / 0.5);
35
+ --ui-mat-dialog-border-color: hsl(var(--border));
36
+ --ui-mat-dialog-border-width: var(--border-width);
37
+ --ui-mat-dialog-actions-border-color: transparent;
38
+ --ui-mat-dialog-focus-ring-color: hsl(var(--ring));
39
+ }
40
+
41
+ [data-style='sharp'] {
42
+ --mat-dialog-container-shape: 0;
43
+ --mat-dialog-container-elevation-shadow: none;
44
+ --ui-mat-dialog-backdrop-background: hsl(var(--foreground) / 0.42);
45
+ }
46
+
47
+ [data-style='brutal'] {
48
+ --mat-dialog-container-shape: 0;
49
+ --mat-dialog-container-elevation-shadow: var(--shadow-lg);
50
+ --ui-mat-dialog-backdrop-background: hsl(var(--foreground) / 0.36);
51
+ --ui-mat-dialog-border-color: hsl(var(--foreground));
52
+ --ui-mat-dialog-border-width: var(--border-width);
53
+ }
54
+
55
+ [data-style='soft'] {
56
+ --mat-dialog-container-shape: calc(var(--radius-lg) + 0.375rem);
57
+ --mat-dialog-container-elevation-shadow: var(--shadow-lg);
58
+ --ui-mat-dialog-backdrop-background: hsl(var(--foreground) / 0.32);
59
+ --ui-mat-dialog-border-color: hsl(var(--border) / 0.72);
60
+ }
61
+ }
62
+
63
+ @layer components {
64
+ .cdk-overlay-backdrop.cdk-overlay-dark-backdrop {
65
+ background-color: var(--ui-mat-dialog-backdrop-background);
66
+ }
67
+
68
+ .cdk-overlay-pane.mat-mdc-dialog-panel {
69
+ @apply box-border;
70
+ }
71
+
72
+ .cdk-overlay-pane.mat-mdc-dialog-panel.ui-mat-dialog-wide {
73
+ --mat-dialog-container-max-width: min(calc(100vw - 2rem), 42rem);
74
+ }
75
+
76
+ .cdk-overlay-pane.mat-mdc-dialog-panel.ui-mat-dialog-compact {
77
+ --mat-dialog-container-max-width: min(calc(100vw - 2rem), 26rem);
78
+ }
79
+
80
+ .cdk-overlay-pane.mat-mdc-dialog-panel.ui-mat-dialog-alert {
81
+ --ui-mat-dialog-border-color: hsl(var(--destructive) / 0.42);
82
+ }
83
+
84
+ .mat-mdc-dialog-container {
85
+ @apply text-popover-foreground;
86
+ }
87
+
88
+ .mat-mdc-dialog-container .mat-mdc-dialog-surface {
89
+ @apply border bg-popover text-popover-foreground;
90
+
91
+ border-color: var(--ui-mat-dialog-border-color) !important;
92
+ border-width: var(--ui-mat-dialog-border-width) !important;
93
+ border-radius: var(--mat-dialog-container-shape) !important;
94
+ background-color: var(--mat-dialog-container-color) !important;
95
+ box-shadow: var(--mat-dialog-container-elevation-shadow) !important;
96
+ }
97
+
98
+ .mat-mdc-dialog-container .mat-mdc-dialog-surface:focus-visible {
99
+ outline: 2px solid var(--ui-mat-dialog-focus-ring-color);
100
+ outline-offset: 2px;
101
+ }
102
+
103
+ .mat-mdc-dialog-container .mat-mdc-dialog-title {
104
+ @apply m-0 text-lg font-semibold text-popover-foreground;
105
+
106
+ letter-spacing: 0;
107
+ }
108
+
109
+ .mat-mdc-dialog-container .mat-mdc-dialog-title::before {
110
+ display: none;
111
+ }
112
+
113
+ .mat-mdc-dialog-container .mat-mdc-dialog-content {
114
+ @apply text-sm text-muted-foreground;
115
+
116
+ line-height: 1.5rem;
117
+ }
118
+
119
+ .mat-mdc-dialog-container .mat-mdc-dialog-content p + p {
120
+ @apply mt-3;
121
+ }
122
+
123
+ .mat-mdc-dialog-container .mat-mdc-dialog-actions {
124
+ @apply gap-2;
125
+
126
+ min-height: auto;
127
+ border-top-color: var(--ui-mat-dialog-actions-border-color);
128
+ }
129
+
130
+ .mat-mdc-dialog-container .mat-mdc-dialog-actions .mat-mdc-button-base + .mat-mdc-button-base,
131
+ .mat-mdc-dialog-container .mat-mdc-dialog-actions .mat-button-base + .mat-button-base {
132
+ margin-left: 0;
133
+ }
134
+
135
+ [data-style='brutal'] .mat-mdc-dialog-container .mat-mdc-dialog-surface {
136
+ @apply border-2;
137
+ }
138
+
139
+ [data-style='sharp'] .mat-mdc-dialog-container .mat-mdc-dialog-surface {
140
+ @apply shadow-none;
141
+ }
142
+
143
+ @media (max-width: 640px) {
144
+ .mat-mdc-dialog-container .mat-mdc-dialog-actions {
145
+ @apply flex-col-reverse items-stretch;
146
+ }
147
+
148
+ .mat-mdc-dialog-container .mat-mdc-dialog-actions button {
149
+ @apply w-full;
150
+ }
151
+ }
152
+ }
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Angular Material select overrides.
3
+ *
4
+ * Global Material tokens handle typography and colors; this file tightens the
5
+ * trigger, overlay panel, and option rows into the local shadcn-like surface.
6
+ */
7
+ @layer tokens {
8
+ :root,
9
+ [data-style='default'] {
10
+ --mat-select-container-elevation-shadow: var(--shadow-md);
11
+ --mat-select-panel-background-color: hsl(var(--popover));
12
+ --mat-select-enabled-trigger-text-color: hsl(var(--foreground));
13
+ --mat-select-placeholder-text-color: hsl(var(--muted-foreground));
14
+ --mat-select-enabled-arrow-color: hsl(var(--muted-foreground));
15
+ --mat-select-focused-arrow-color: hsl(var(--ring));
16
+
17
+ --ui-mat-select-border-color: hsl(var(--border));
18
+ --ui-mat-select-border-width: var(--border-width);
19
+ --ui-mat-select-active-border-color: hsl(var(--ring));
20
+ --ui-mat-select-panel-radius: var(--radius-md);
21
+ --ui-mat-select-option-radius: 0;
22
+ --ui-mat-select-option-min-height: 2.25rem;
23
+ --ui-mat-select-option-padding-x: 0.5rem;
24
+ --ui-mat-select-option-gap: 0.5rem;
25
+ --ui-mat-select-hover-background: hsl(var(--accent) / 0.72);
26
+ --ui-mat-select-focus-background: hsl(var(--accent));
27
+ --ui-mat-select-selected-background: hsl(var(--accent));
28
+ --ui-mat-select-selected-foreground: hsl(var(--accent-foreground));
29
+ }
30
+
31
+ [data-style='sharp'] {
32
+ --mat-select-container-elevation-shadow: none;
33
+ --ui-mat-select-panel-radius: 0;
34
+ --ui-mat-select-hover-background: hsl(var(--muted));
35
+ --ui-mat-select-focus-background: hsl(var(--muted));
36
+ --ui-mat-select-selected-background: hsl(var(--muted));
37
+ }
38
+
39
+ [data-style='brutal'] {
40
+ --mat-select-container-elevation-shadow: var(--shadow-lg);
41
+ --mat-select-enabled-arrow-color: hsl(var(--foreground));
42
+ --mat-select-focused-arrow-color: hsl(var(--foreground));
43
+
44
+ --ui-mat-select-border-color: hsl(var(--foreground));
45
+ --ui-mat-select-active-border-color: hsl(var(--foreground));
46
+ --ui-mat-select-panel-radius: 0;
47
+ --ui-mat-select-hover-background: hsl(var(--primary) / 0.14);
48
+ --ui-mat-select-focus-background: hsl(var(--primary));
49
+ --ui-mat-select-selected-background: hsl(var(--primary));
50
+ --ui-mat-select-selected-foreground: hsl(var(--primary-foreground));
51
+ }
52
+
53
+ [data-style='soft'] {
54
+ --mat-select-container-elevation-shadow: var(--shadow-lg);
55
+ --ui-mat-select-border-color: hsl(var(--border) / 0.72);
56
+ --ui-mat-select-active-border-color: hsl(var(--ring) / 0.8);
57
+ --ui-mat-select-panel-radius: var(--radius-lg);
58
+ --ui-mat-select-hover-background: hsl(var(--accent) / 0.6);
59
+ --ui-mat-select-focus-background: hsl(var(--accent) / 0.82);
60
+ --ui-mat-select-selected-background: hsl(var(--accent) / 0.82);
61
+ }
62
+ }
63
+
64
+ @layer components {
65
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mat-mdc-text-field-wrapper {
66
+ @apply relative z-10;
67
+ }
68
+
69
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mdc-notched-outline__leading,
70
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mdc-notched-outline__notch,
71
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mdc-notched-outline__trailing {
72
+ @apply border-ring;
73
+
74
+ border-color: var(--ui-mat-select-active-border-color) !important;
75
+ border-width: var(--ui-mat-select-border-width) !important;
76
+ }
77
+
78
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mdc-notched-outline__leading {
79
+ @apply rounded-bl-none;
80
+
81
+ border-bottom-color: var(--ui-mat-select-border-color) !important;
82
+ border-bottom-left-radius: 0 !important;
83
+ }
84
+
85
+ .mat-mdc-form-field:has(.mat-mdc-select.mat-select-open) .mdc-notched-outline__trailing {
86
+ @apply rounded-br-none;
87
+
88
+ border-bottom-color: var(--ui-mat-select-border-color) !important;
89
+ border-bottom-right-radius: 0 !important;
90
+ }
91
+
92
+ .mat-mdc-select-trigger {
93
+ @apply min-w-0 gap-2;
94
+ }
95
+
96
+ .mat-mdc-select-value,
97
+ .mat-mdc-select-value-text,
98
+ .mat-mdc-select-min-line {
99
+ @apply min-w-0 truncate;
100
+ }
101
+
102
+ .mat-mdc-select-arrow-wrapper {
103
+ @apply transition-transform;
104
+ }
105
+
106
+ .cdk-overlay-pane div.mat-mdc-select-panel {
107
+ --mat-option-label-text-color: hsl(var(--popover-foreground));
108
+ --mat-option-hover-state-layer-color: var(--ui-mat-select-hover-background);
109
+ --mat-option-focus-state-layer-color: var(--ui-mat-select-focus-background);
110
+ --mat-option-selected-state-layer-color: var(--ui-mat-select-selected-background);
111
+ --mat-option-selected-state-label-text-color: var(--ui-mat-select-selected-foreground);
112
+
113
+ @apply border p-1 text-foreground;
114
+
115
+ border-color: var(--ui-mat-select-border-color) !important;
116
+ border-width: var(--ui-mat-select-border-width) !important;
117
+ border-radius: var(--ui-mat-select-panel-radius) !important;
118
+ background-color: var(--mat-select-panel-background-color) !important;
119
+ box-shadow: var(--mat-select-container-elevation-shadow) !important;
120
+ }
121
+
122
+ .cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel {
123
+ @apply rounded-t-none border-ring;
124
+
125
+ margin-top: calc(var(--ui-mat-select-border-width) * -1);
126
+ border-color: var(--ui-mat-select-active-border-color) !important;
127
+ border-top-left-radius: 0 !important;
128
+ border-top-right-radius: 0 !important;
129
+ }
130
+
131
+ .cdk-overlay-pane.mat-mdc-select-panel-above div.mat-mdc-select-panel {
132
+ @apply rounded-b-none border-ring;
133
+
134
+ margin-bottom: calc(var(--ui-mat-select-border-width) * -1);
135
+ border-color: var(--ui-mat-select-active-border-color) !important;
136
+ border-bottom-left-radius: 0 !important;
137
+ border-bottom-right-radius: 0 !important;
138
+ }
139
+
140
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-option.mdc-list-item {
141
+ @apply min-h-9 px-2 text-sm transition-colors;
142
+
143
+ min-height: var(--ui-mat-select-option-min-height);
144
+ border-radius: var(--ui-mat-select-option-radius);
145
+ gap: var(--ui-mat-select-option-gap);
146
+ padding-inline: var(--ui-mat-select-option-padding-x);
147
+ }
148
+
149
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-option .mdc-list-item__primary-text {
150
+ @apply flex min-w-0 items-center gap-2 truncate;
151
+ }
152
+
153
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),
154
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-option.mat-mdc-option-active.mdc-list-item {
155
+ color: var(--ui-mat-select-selected-foreground);
156
+ }
157
+
158
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) {
159
+ color: var(--ui-mat-select-selected-foreground);
160
+ }
161
+
162
+ .cdk-overlay-pane div.mat-mdc-select-panel .mat-mdc-optgroup-label {
163
+ @apply min-h-8 px-2 text-xs font-semibold uppercase text-muted-foreground;
164
+
165
+ letter-spacing: 0.08em;
166
+ }
167
+
168
+ [data-style='brutal'] .cdk-overlay-pane div.mat-mdc-select-panel {
169
+ @apply border-2;
170
+ }
171
+
172
+ [data-style='sharp'] .cdk-overlay-pane div.mat-mdc-select-panel {
173
+ @apply shadow-none;
174
+ }
175
+ }
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Angular Material slide-toggle overrides.
3
+ *
4
+ * MatSlideToggle keeps its button-based switch semantics, form integration,
5
+ * label projection, and keyboard handling while the visible switch follows
6
+ * local theme tokens.
7
+ */
8
+ @layer tokens {
9
+ :root,
10
+ [data-style='default'] {
11
+ --ui-mat-slide-toggle-track-border-color: hsl(var(--border));
12
+ --ui-mat-slide-toggle-track-border-width: var(--border-width);
13
+ --ui-mat-slide-toggle-track-radius: 9999px;
14
+ --ui-mat-slide-toggle-handle-radius: 9999px;
15
+ --ui-mat-slide-toggle-focus-outline-color: hsl(var(--ring));
16
+
17
+ --mat-slide-toggle-track-width: 2.25rem;
18
+ --mat-slide-toggle-track-height: 1.25rem;
19
+ --mat-slide-toggle-track-shape: var(--ui-mat-slide-toggle-track-radius);
20
+ --mat-slide-toggle-track-outline-color: var(--ui-mat-slide-toggle-track-border-color);
21
+ --mat-slide-toggle-track-outline-width: var(--ui-mat-slide-toggle-track-border-width);
22
+ --mat-slide-toggle-selected-track-outline-color: transparent;
23
+ --mat-slide-toggle-selected-track-outline-width: var(--ui-mat-slide-toggle-track-border-width);
24
+ --mat-slide-toggle-disabled-unselected-track-outline-color: hsl(var(--border) / 0.72);
25
+ --mat-slide-toggle-disabled-unselected-track-outline-width: var(--ui-mat-slide-toggle-track-border-width);
26
+
27
+ --mat-slide-toggle-handle-width: 1rem;
28
+ --mat-slide-toggle-handle-height: 1rem;
29
+ --mat-slide-toggle-handle-shape: var(--ui-mat-slide-toggle-handle-radius);
30
+ --mat-slide-toggle-selected-handle-size: 1rem;
31
+ --mat-slide-toggle-unselected-handle-size: 1rem;
32
+ --mat-slide-toggle-with-icon-handle-size: 1rem;
33
+ --mat-slide-toggle-pressed-handle-size: 1.125rem;
34
+ --mat-slide-toggle-selected-handle-horizontal-margin: 0;
35
+ --mat-slide-toggle-selected-with-icon-handle-horizontal-margin: 0;
36
+ --mat-slide-toggle-selected-pressed-handle-horizontal-margin: 0;
37
+ --mat-slide-toggle-unselected-handle-horizontal-margin: 0;
38
+ --mat-slide-toggle-unselected-with-icon-handle-horizontal-margin: 0;
39
+ --mat-slide-toggle-unselected-pressed-handle-horizontal-margin: 0;
40
+ --mat-slide-toggle-handle-elevation-shadow: 0 1px 2px hsl(var(--foreground) / 0.14);
41
+ --mat-slide-toggle-disabled-handle-elevation-shadow: none;
42
+
43
+ --mat-slide-toggle-selected-track-color: hsl(var(--primary));
44
+ --mat-slide-toggle-selected-hover-track-color: hsl(var(--primary));
45
+ --mat-slide-toggle-selected-focus-track-color: hsl(var(--primary));
46
+ --mat-slide-toggle-selected-pressed-track-color: hsl(var(--primary));
47
+ --mat-slide-toggle-selected-handle-color: hsl(var(--primary-foreground));
48
+ --mat-slide-toggle-selected-hover-handle-color: hsl(var(--primary-foreground));
49
+ --mat-slide-toggle-selected-focus-handle-color: hsl(var(--primary-foreground));
50
+ --mat-slide-toggle-selected-pressed-handle-color: hsl(var(--primary-foreground));
51
+
52
+ --mat-slide-toggle-unselected-track-color: hsl(var(--input));
53
+ --mat-slide-toggle-unselected-hover-track-color: hsl(var(--input));
54
+ --mat-slide-toggle-unselected-focus-track-color: hsl(var(--input));
55
+ --mat-slide-toggle-unselected-pressed-track-color: hsl(var(--input));
56
+ --mat-slide-toggle-unselected-handle-color: hsl(var(--background));
57
+ --mat-slide-toggle-unselected-hover-handle-color: hsl(var(--background));
58
+ --mat-slide-toggle-unselected-focus-handle-color: hsl(var(--background));
59
+ --mat-slide-toggle-unselected-pressed-handle-color: hsl(var(--background));
60
+ --mat-slide-toggle-handle-surface-color: hsl(var(--background));
61
+
62
+ --mat-slide-toggle-selected-icon-color: transparent;
63
+ --mat-slide-toggle-disabled-selected-icon-color: transparent;
64
+ --mat-slide-toggle-unselected-icon-color: transparent;
65
+ --mat-slide-toggle-disabled-unselected-icon-color: transparent;
66
+ --mat-slide-toggle-selected-icon-size: 0;
67
+ --mat-slide-toggle-unselected-icon-size: 0;
68
+
69
+ --mat-slide-toggle-selected-hover-state-layer-color: hsl(var(--primary));
70
+ --mat-slide-toggle-selected-focus-state-layer-color: hsl(var(--ring));
71
+ --mat-slide-toggle-selected-pressed-state-layer-color: hsl(var(--primary));
72
+ --mat-slide-toggle-selected-hover-state-layer-opacity: 0.12;
73
+ --mat-slide-toggle-selected-focus-state-layer-opacity: 0.18;
74
+ --mat-slide-toggle-selected-pressed-state-layer-opacity: 0.18;
75
+ --mat-slide-toggle-unselected-hover-state-layer-color: hsl(var(--foreground));
76
+ --mat-slide-toggle-unselected-focus-state-layer-color: hsl(var(--ring));
77
+ --mat-slide-toggle-unselected-pressed-state-layer-color: hsl(var(--foreground));
78
+ --mat-slide-toggle-unselected-hover-state-layer-opacity: 0.1;
79
+ --mat-slide-toggle-unselected-focus-state-layer-opacity: 0.18;
80
+ --mat-slide-toggle-unselected-pressed-state-layer-opacity: 0.14;
81
+ --mat-slide-toggle-state-layer-size: 2rem;
82
+ --mat-slide-toggle-touch-target-display: block;
83
+ --mat-slide-toggle-touch-target-size: 2.75rem;
84
+
85
+ --mat-slide-toggle-disabled-track-opacity: 1;
86
+ --mat-slide-toggle-disabled-handle-opacity: 0.55;
87
+ --mat-slide-toggle-disabled-selected-handle-opacity: 0.55;
88
+ --mat-slide-toggle-disabled-unselected-handle-opacity: 0.55;
89
+ --mat-slide-toggle-disabled-selected-track-color: hsl(var(--muted));
90
+ --mat-slide-toggle-disabled-unselected-track-color: hsl(var(--muted));
91
+ --mat-slide-toggle-disabled-selected-handle-color: hsl(var(--muted-foreground));
92
+ --mat-slide-toggle-disabled-unselected-handle-color: hsl(var(--muted-foreground));
93
+ --mat-slide-toggle-disabled-label-text-color: hsl(var(--muted-foreground));
94
+
95
+ --mat-slide-toggle-label-text-color: hsl(var(--foreground));
96
+ --mat-slide-toggle-label-text-font: var(--font-sans);
97
+ --mat-slide-toggle-label-text-line-height: 1.25rem;
98
+ --mat-slide-toggle-label-text-size: 0.875rem;
99
+ --mat-slide-toggle-label-text-tracking: 0;
100
+ --mat-slide-toggle-label-text-weight: 500;
101
+ }
102
+
103
+ [data-style='sharp'] {
104
+ --ui-mat-slide-toggle-track-radius: 0;
105
+ --ui-mat-slide-toggle-handle-radius: 0;
106
+
107
+ --mat-slide-toggle-track-shape: 0;
108
+ --mat-slide-toggle-handle-shape: 0;
109
+ --mat-slide-toggle-handle-elevation-shadow: none;
110
+ }
111
+
112
+ [data-style='brutal'] {
113
+ --ui-mat-slide-toggle-track-border-color: hsl(var(--foreground));
114
+ --ui-mat-slide-toggle-track-border-width: var(--border-width);
115
+ --ui-mat-slide-toggle-track-radius: 0;
116
+ --ui-mat-slide-toggle-handle-radius: 0;
117
+ --ui-mat-slide-toggle-focus-outline-color: hsl(var(--foreground));
118
+
119
+ --mat-slide-toggle-selected-track-color: hsl(var(--foreground));
120
+ --mat-slide-toggle-selected-hover-track-color: hsl(var(--foreground));
121
+ --mat-slide-toggle-selected-focus-track-color: hsl(var(--foreground));
122
+ --mat-slide-toggle-selected-pressed-track-color: hsl(var(--foreground));
123
+ --mat-slide-toggle-track-shape: 0;
124
+ --mat-slide-toggle-handle-shape: 0;
125
+ --mat-slide-toggle-selected-handle-color: hsl(var(--background));
126
+ --mat-slide-toggle-selected-hover-handle-color: hsl(var(--primary));
127
+ --mat-slide-toggle-selected-focus-handle-color: hsl(var(--primary));
128
+ --mat-slide-toggle-selected-pressed-handle-color: hsl(var(--primary));
129
+ --mat-slide-toggle-unselected-track-color: hsl(var(--background));
130
+ --mat-slide-toggle-unselected-hover-track-color: hsl(var(--background));
131
+ --mat-slide-toggle-unselected-focus-track-color: hsl(var(--background));
132
+ --mat-slide-toggle-unselected-pressed-track-color: hsl(var(--background));
133
+ --mat-slide-toggle-unselected-handle-color: hsl(var(--foreground));
134
+ --mat-slide-toggle-unselected-hover-handle-color: hsl(var(--foreground));
135
+ --mat-slide-toggle-unselected-focus-handle-color: hsl(var(--foreground));
136
+ --mat-slide-toggle-unselected-pressed-handle-color: hsl(var(--foreground));
137
+ --mat-slide-toggle-handle-elevation-shadow: var(--shadow-sm);
138
+ --mat-slide-toggle-selected-hover-state-layer-color: hsl(var(--foreground));
139
+ --mat-slide-toggle-unselected-hover-state-layer-color: hsl(var(--foreground));
140
+ }
141
+
142
+ [data-style='soft'] {
143
+ --ui-mat-slide-toggle-track-border-color: hsl(var(--border) / 0.7);
144
+
145
+ --mat-slide-toggle-track-width: 2.5rem;
146
+ --mat-slide-toggle-track-height: 1.375rem;
147
+ --mat-slide-toggle-handle-width: 1.125rem;
148
+ --mat-slide-toggle-handle-height: 1.125rem;
149
+ --mat-slide-toggle-selected-handle-size: 1.125rem;
150
+ --mat-slide-toggle-unselected-handle-size: 1.125rem;
151
+ --mat-slide-toggle-with-icon-handle-size: 1.125rem;
152
+ --mat-slide-toggle-pressed-handle-size: 1.25rem;
153
+ --mat-slide-toggle-unselected-track-color: hsl(var(--accent) / 0.72);
154
+ --mat-slide-toggle-unselected-hover-track-color: hsl(var(--accent) / 0.82);
155
+ --mat-slide-toggle-handle-elevation-shadow: 0 2px 6px hsl(var(--foreground) / 0.14);
156
+ }
157
+ }
158
+
159
+ @layer components {
160
+ .mat-mdc-slide-toggle {
161
+ @apply inline-flex align-middle text-foreground;
162
+ }
163
+
164
+ .mat-mdc-slide-toggle .mat-internal-form-field {
165
+ @apply inline-flex items-center gap-2;
166
+ }
167
+
168
+ .mat-mdc-slide-toggle .mdc-switch {
169
+ @apply shrink-0 transition-transform;
170
+ }
171
+
172
+ .mat-mdc-slide-toggle .mdc-switch:enabled:hover,
173
+ .mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch:enabled {
174
+ transform: translateY(-1px);
175
+ }
176
+
177
+ .mat-mdc-slide-toggle .mdc-switch:focus-visible {
178
+ outline: 2px solid var(--ui-mat-slide-toggle-focus-outline-color);
179
+ outline-offset: 3px;
180
+ }
181
+
182
+ .mat-mdc-slide-toggle .mdc-switch__track {
183
+ @apply transition-colors;
184
+ }
185
+
186
+ .mat-mdc-slide-toggle .mdc-switch__handle::before,
187
+ .mat-mdc-slide-toggle .mdc-switch__handle::after,
188
+ .mat-mdc-slide-toggle .mdc-switch__shadow {
189
+ border-radius: inherit;
190
+ }
191
+
192
+ .mat-mdc-slide-toggle .mdc-switch__ripple,
193
+ .mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,
194
+ .mat-mdc-slide-toggle .mdc-switch__ripple::after,
195
+ .mat-mdc-slide-toggle .mat-focus-indicator::before {
196
+ border-radius: var(--ui-mat-slide-toggle-handle-radius);
197
+ }
198
+
199
+ .mat-mdc-slide-toggle .mdc-label {
200
+ @apply cursor-pointer p-0 text-sm font-medium;
201
+ }
202
+
203
+ .mat-mdc-slide-toggle.mat-mdc-slide-toggle-disabled-interactive,
204
+ .mat-mdc-slide-toggle:has(.mdc-switch--disabled) {
205
+ @apply opacity-70;
206
+ }
207
+
208
+ .mat-mdc-slide-toggle[aria-invalid='true'] {
209
+ --ui-mat-slide-toggle-track-border-color: hsl(var(--destructive) / 0.7);
210
+ --ui-mat-slide-toggle-focus-outline-color: hsl(var(--destructive));
211
+ --mat-slide-toggle-selected-track-color: hsl(var(--destructive));
212
+ --mat-slide-toggle-selected-hover-track-color: hsl(var(--destructive));
213
+ --mat-slide-toggle-selected-focus-track-color: hsl(var(--destructive));
214
+ --mat-slide-toggle-selected-pressed-track-color: hsl(var(--destructive));
215
+ --mat-slide-toggle-selected-handle-color: hsl(var(--destructive-foreground));
216
+ --mat-slide-toggle-selected-hover-handle-color: hsl(var(--destructive-foreground));
217
+ --mat-slide-toggle-selected-focus-handle-color: hsl(var(--destructive-foreground));
218
+ --mat-slide-toggle-selected-pressed-handle-color: hsl(var(--destructive-foreground));
219
+ --mat-slide-toggle-unselected-track-color: hsl(var(--destructive) / 0.16);
220
+ --mat-slide-toggle-unselected-hover-track-color: hsl(var(--destructive) / 0.2);
221
+ --mat-slide-toggle-unselected-focus-track-color: hsl(var(--destructive) / 0.2);
222
+ --mat-slide-toggle-unselected-pressed-track-color: hsl(var(--destructive) / 0.24);
223
+ --mat-slide-toggle-unselected-handle-color: hsl(var(--destructive));
224
+ --mat-slide-toggle-unselected-hover-handle-color: hsl(var(--destructive));
225
+ --mat-slide-toggle-unselected-focus-handle-color: hsl(var(--destructive));
226
+ --mat-slide-toggle-unselected-pressed-handle-color: hsl(var(--destructive));
227
+ --mat-slide-toggle-label-text-color: hsl(var(--destructive));
228
+ }
229
+
230
+ [data-style='sharp'] .mat-mdc-slide-toggle .mdc-switch:enabled:hover,
231
+ [data-style='sharp'] .mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch:enabled {
232
+ transform: none;
233
+ }
234
+ }