@ojiepermana/angular 21.3.3 → 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 (291) 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/README.md +8 -5
  230. package/generator/api/bin/src/emit/client.js +4 -2
  231. package/generator/api/bin/src/writer/index.js +47 -5
  232. package/generator/guide/bin/schematics/build/index.js +3 -2
  233. package/generator/guide/bin/src/engine/component.js +2 -2
  234. package/generator/guide/bin/src/engine/index.js +3 -3
  235. package/generator/guide/bin/src/engine/render.js +10 -5
  236. package/layout/type/empty/package.json +4 -0
  237. package/layout/type/horizontal/package.json +4 -0
  238. package/layout/type/vertical/package.json +4 -0
  239. package/navigation/topbar/README.md +196 -0
  240. package/package.json +89 -25
  241. package/theme/README.md +110 -3
  242. package/theme/styles/integrations/material/autocomplete.css +178 -0
  243. package/theme/styles/integrations/material/button.css +468 -0
  244. package/theme/styles/integrations/material/dialog.css +152 -0
  245. package/theme/styles/integrations/material/select.css +175 -0
  246. package/theme/styles/integrations/material/slide-toggle.css +234 -0
  247. package/theme/styles/integrations/material/slider.css +194 -0
  248. package/theme/styles/integrations/material/tabs.css +229 -0
  249. package/theme/styles/integrations/material.css +70 -60
  250. package/types/ojiepermana-angular-component-combobox.d.ts +1 -2
  251. package/types/ojiepermana-angular-component-composer.d.ts +90 -0
  252. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +2 -0
  253. package/types/ojiepermana-angular-component-editor.d.ts +123 -0
  254. package/types/ojiepermana-angular-component-empty.d.ts +50 -0
  255. package/types/ojiepermana-angular-component-form.d.ts +52 -3
  256. package/types/ojiepermana-angular-component-hover-card.d.ts +74 -0
  257. package/types/ojiepermana-angular-component-input-otp.d.ts +136 -0
  258. package/types/ojiepermana-angular-component-kanban.d.ts +70 -0
  259. package/types/ojiepermana-angular-component-kbd.d.ts +16 -0
  260. package/types/ojiepermana-angular-component-menubar.d.ts +67 -0
  261. package/types/ojiepermana-angular-component-native-select.d.ts +26 -0
  262. package/types/ojiepermana-angular-component-navigation-menu.d.ts +96 -0
  263. package/types/ojiepermana-angular-component-pagination.d.ts +10 -4
  264. package/types/ojiepermana-angular-component-pillbox.d.ts +157 -0
  265. package/types/ojiepermana-angular-component-radio.d.ts +7 -1
  266. package/types/ojiepermana-angular-component-resizable.d.ts +99 -0
  267. package/types/ojiepermana-angular-component-select.d.ts +17 -5
  268. package/types/ojiepermana-angular-component-sheet.d.ts +3 -1
  269. package/types/ojiepermana-angular-component-slider.d.ts +59 -1
  270. package/types/ojiepermana-angular-component-spinner.d.ts +13 -0
  271. package/types/ojiepermana-angular-component-switch.d.ts +13 -3
  272. package/types/ojiepermana-angular-component-timeline.d.ts +63 -0
  273. package/types/ojiepermana-angular-component-toast.d.ts +12 -3
  274. package/types/ojiepermana-angular-component-toggle-group.d.ts +89 -0
  275. package/types/ojiepermana-angular-component-toggle.d.ts +25 -0
  276. package/types/ojiepermana-angular-component-tooltip.d.ts +72 -5
  277. package/types/{ojiepermana-angular-layout-horizontal.d.ts → ojiepermana-angular-layout-type-horizontal.d.ts} +3 -3
  278. package/types/{ojiepermana-angular-layout-vertical.d.ts → ojiepermana-angular-layout-type-vertical.d.ts} +3 -3
  279. package/types/ojiepermana-angular-layout.d.ts +5 -5
  280. package/types/ojiepermana-angular-navigation-item.d.ts +1 -1
  281. package/types/ojiepermana-angular-navigation-service.d.ts +7 -7
  282. package/types/ojiepermana-angular-navigation-sidebar.d.ts +8 -8
  283. package/types/ojiepermana-angular-navigation-topbar.d.ts +24 -4
  284. package/types/ojiepermana-angular-navigation-types.d.ts +14 -8
  285. package/fesm2022/ojiepermana-angular-layout-empty.mjs.map +0 -1
  286. package/fesm2022/ojiepermana-angular-layout-horizontal.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-layout-vertical.mjs.map +0 -1
  288. package/layout/empty/package.json +0 -4
  289. package/layout/horizontal/package.json +0 -4
  290. package/layout/vertical/package.json +0 -4
  291. /package/types/{ojiepermana-angular-layout-empty.d.ts → ojiepermana-angular-layout-type-empty.d.ts} +0 -0
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Angular Material autocomplete overrides.
3
+ *
4
+ * The public API remains CSS-only: Material tokens do the broad work, while
5
+ * the component selectors below tighten the overlay into a shadcn-like popover.
6
+ */
7
+ @layer tokens {
8
+ :root,
9
+ [data-style='default'] {
10
+ --mat-autocomplete-background-color: hsl(var(--popover));
11
+ --mat-autocomplete-container-shape: var(--radius-md);
12
+ --mat-autocomplete-container-elevation-shadow: var(--shadow-md);
13
+
14
+ --ui-mat-autocomplete-border-color: hsl(var(--border));
15
+ --ui-mat-autocomplete-border-width: var(--border-width);
16
+ --ui-mat-autocomplete-active-border-color: hsl(var(--ring));
17
+ --ui-mat-autocomplete-option-radius: 0;
18
+ --ui-mat-autocomplete-option-min-height: 2.25rem;
19
+ --ui-mat-autocomplete-option-padding-x: 0.5rem;
20
+ --ui-mat-autocomplete-option-gap: 0.5rem;
21
+ --ui-mat-autocomplete-hover-background: hsl(var(--accent) / 0.72);
22
+ --ui-mat-autocomplete-active-background: hsl(var(--accent));
23
+ --ui-mat-autocomplete-active-foreground: hsl(var(--accent-foreground));
24
+ --ui-mat-autocomplete-selected-background: hsl(var(--accent));
25
+ --ui-mat-autocomplete-selected-foreground: hsl(var(--accent-foreground));
26
+ }
27
+
28
+ [data-style='sharp'] {
29
+ --mat-autocomplete-container-shape: 0;
30
+ --mat-autocomplete-container-elevation-shadow: none;
31
+ --ui-mat-autocomplete-option-radius: 0;
32
+ --ui-mat-autocomplete-hover-background: hsl(var(--muted));
33
+ --ui-mat-autocomplete-active-background: hsl(var(--muted));
34
+ --ui-mat-autocomplete-selected-background: hsl(var(--muted));
35
+ }
36
+
37
+ [data-style='brutal'] {
38
+ --mat-autocomplete-container-shape: 0;
39
+ --mat-autocomplete-container-elevation-shadow: var(--shadow-lg);
40
+ --ui-mat-autocomplete-border-color: hsl(var(--foreground));
41
+ --ui-mat-autocomplete-border-width: var(--border-width);
42
+ --ui-mat-autocomplete-active-border-color: hsl(var(--foreground));
43
+ --ui-mat-autocomplete-option-radius: 0;
44
+ --ui-mat-autocomplete-hover-background: hsl(var(--primary) / 0.14);
45
+ --ui-mat-autocomplete-active-background: hsl(var(--primary));
46
+ --ui-mat-autocomplete-active-foreground: hsl(var(--primary-foreground));
47
+ --ui-mat-autocomplete-selected-background: hsl(var(--primary));
48
+ --ui-mat-autocomplete-selected-foreground: hsl(var(--primary-foreground));
49
+ }
50
+
51
+ [data-style='soft'] {
52
+ --mat-autocomplete-container-shape: var(--radius-lg);
53
+ --mat-autocomplete-container-elevation-shadow: var(--shadow-lg);
54
+ --ui-mat-autocomplete-border-color: hsl(var(--border) / 0.72);
55
+ --ui-mat-autocomplete-active-border-color: hsl(var(--ring) / 0.8);
56
+ --ui-mat-autocomplete-option-radius: 0;
57
+ --ui-mat-autocomplete-hover-background: hsl(var(--accent) / 0.6);
58
+ --ui-mat-autocomplete-active-background: hsl(var(--accent) / 0.82);
59
+ --ui-mat-autocomplete-selected-background: hsl(var(--accent) / 0.82);
60
+ }
61
+ }
62
+
63
+ @layer components {
64
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mat-mdc-text-field-wrapper {
65
+ @apply relative z-10;
66
+ }
67
+
68
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mdc-notched-outline__leading,
69
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mdc-notched-outline__notch,
70
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mdc-notched-outline__trailing {
71
+ @apply border-ring;
72
+
73
+ border-color: var(--ui-mat-autocomplete-active-border-color) !important;
74
+ border-width: var(--ui-mat-autocomplete-border-width) !important;
75
+ }
76
+
77
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mdc-notched-outline__leading {
78
+ @apply rounded-bl-none;
79
+
80
+ border-bottom-color: var(--ui-mat-autocomplete-border-color) !important;
81
+ border-bottom-left-radius: 0 !important;
82
+ }
83
+
84
+ .mat-mdc-form-field:has(.mat-mdc-autocomplete-trigger[aria-expanded='true']) .mdc-notched-outline__trailing {
85
+ @apply rounded-br-none;
86
+
87
+ border-bottom-color: var(--ui-mat-autocomplete-border-color) !important;
88
+ border-bottom-right-radius: 0 !important;
89
+ }
90
+
91
+ .ui-mat-autocomplete-trigger[aria-expanded='true'] {
92
+ @apply rounded-b-none border-ring;
93
+
94
+ border-color: var(--ui-mat-autocomplete-active-border-color) !important;
95
+ border-bottom-color: var(--ui-mat-autocomplete-border-color) !important;
96
+ border-width: var(--ui-mat-autocomplete-border-width) !important;
97
+ border-bottom-left-radius: 0 !important;
98
+ border-bottom-right-radius: 0 !important;
99
+ box-shadow: none !important;
100
+ }
101
+
102
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel {
103
+ --mat-option-label-text-color: hsl(var(--popover-foreground));
104
+ --mat-option-hover-state-layer-color: var(--ui-mat-autocomplete-hover-background);
105
+ --mat-option-focus-state-layer-color: var(--ui-mat-autocomplete-active-background);
106
+ --mat-option-selected-state-layer-color: var(--ui-mat-autocomplete-selected-background);
107
+ --mat-option-selected-state-label-text-color: var(--ui-mat-autocomplete-selected-foreground);
108
+
109
+ @apply border p-1 text-foreground;
110
+
111
+ border-color: var(--ui-mat-autocomplete-border-color) !important;
112
+ border-width: var(--ui-mat-autocomplete-border-width) !important;
113
+ border-radius: var(--mat-autocomplete-container-shape) !important;
114
+ background-color: var(--mat-autocomplete-background-color) !important;
115
+ box-shadow: var(--mat-autocomplete-container-elevation-shadow) !important;
116
+ }
117
+
118
+ .cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel,
119
+ .mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel {
120
+ border-radius: var(--mat-autocomplete-container-shape) !important;
121
+ }
122
+
123
+ .cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible {
124
+ @apply rounded-t-none border-ring;
125
+
126
+ margin-top: calc(var(--ui-mat-autocomplete-border-width) * -1);
127
+ border-color: var(--ui-mat-autocomplete-active-border-color) !important;
128
+ border-top-left-radius: 0 !important;
129
+ border-top-right-radius: 0 !important;
130
+ }
131
+
132
+ .mat-mdc-autocomplete-panel-above div.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible {
133
+ @apply rounded-b-none border-ring;
134
+
135
+ margin-bottom: calc(var(--ui-mat-autocomplete-border-width) * -1);
136
+ border-color: var(--ui-mat-autocomplete-active-border-color) !important;
137
+ border-bottom-left-radius: 0 !important;
138
+ border-bottom-right-radius: 0 !important;
139
+ }
140
+
141
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel .mat-mdc-option.mdc-list-item {
142
+ @apply min-h-9 px-2 text-sm transition-colors;
143
+
144
+ min-height: var(--ui-mat-autocomplete-option-min-height);
145
+ border-radius: var(--ui-mat-autocomplete-option-radius);
146
+ gap: var(--ui-mat-autocomplete-option-gap);
147
+ padding-inline: var(--ui-mat-autocomplete-option-padding-x);
148
+ }
149
+
150
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel .mat-mdc-option .mdc-list-item__primary-text {
151
+ @apply flex min-w-0 items-center gap-2 truncate;
152
+ }
153
+
154
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel .mat-mdc-option:hover:not(.mdc-list-item--disabled),
155
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel .mat-mdc-option.mat-mdc-option-active.mdc-list-item {
156
+ color: var(--ui-mat-autocomplete-active-foreground);
157
+ }
158
+
159
+ .cdk-overlay-pane
160
+ div.mat-mdc-autocomplete-panel
161
+ .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) {
162
+ color: var(--ui-mat-autocomplete-selected-foreground);
163
+ }
164
+
165
+ .cdk-overlay-pane div.mat-mdc-autocomplete-panel .mat-mdc-optgroup-label {
166
+ @apply min-h-8 px-2 text-xs font-semibold uppercase text-muted-foreground;
167
+
168
+ letter-spacing: 0.08em;
169
+ }
170
+
171
+ [data-style='brutal'] .cdk-overlay-pane div.mat-mdc-autocomplete-panel {
172
+ @apply border-2;
173
+ }
174
+
175
+ [data-style='sharp'] .cdk-overlay-pane div.mat-mdc-autocomplete-panel {
176
+ @apply shadow-none;
177
+ }
178
+ }
@@ -0,0 +1,468 @@
1
+ /**
2
+ * Angular Material button overrides.
3
+ *
4
+ * Material buttons keep their native button and anchor semantics, keyboard
5
+ * behavior, ripple handling, and focus monitoring while the visible surfaces
6
+ * follow local theme tokens.
7
+ */
8
+ @layer tokens {
9
+ :root,
10
+ [data-style='default'] {
11
+ --ui-mat-button-border-width: var(--border-width);
12
+ --ui-mat-button-outline-color: hsl(var(--border));
13
+ --ui-mat-button-focus-outline-color: hsl(var(--ring));
14
+ --ui-mat-button-shape: var(--radius-sm);
15
+ --ui-mat-button-icon-shape: var(--radius-md);
16
+ --ui-mat-button-fab-shape: var(--radius-lg);
17
+ --ui-mat-button-brutal-shadow: 2px 2px 0 0 hsl(var(--foreground));
18
+
19
+ --mat-button-text-container-height: 2.25rem;
20
+ --mat-button-filled-container-height: 2.25rem;
21
+ --mat-button-outlined-container-height: 2.25rem;
22
+ --mat-button-protected-container-height: 2.25rem;
23
+ --mat-button-tonal-container-height: 2.25rem;
24
+
25
+ --mat-button-text-container-shape: var(--ui-mat-button-shape);
26
+ --mat-button-filled-container-shape: var(--ui-mat-button-shape);
27
+ --mat-button-outlined-container-shape: var(--ui-mat-button-shape);
28
+ --mat-button-protected-container-shape: var(--ui-mat-button-shape);
29
+ --mat-button-tonal-container-shape: var(--ui-mat-button-shape);
30
+
31
+ --mat-button-text-horizontal-padding: 0.875rem;
32
+ --mat-button-text-with-icon-horizontal-padding: 1rem;
33
+ --mat-button-filled-horizontal-padding: 1rem;
34
+ --mat-button-outlined-horizontal-padding: 1rem;
35
+ --mat-button-protected-horizontal-padding: 1rem;
36
+ --mat-button-tonal-horizontal-padding: 1rem;
37
+
38
+ --mat-button-text-label-text-font: var(--font-sans);
39
+ --mat-button-text-label-text-size: 0.875rem;
40
+ --mat-button-text-label-text-tracking: 0;
41
+ --mat-button-text-label-text-transform: none;
42
+ --mat-button-text-label-text-weight: 500;
43
+ --mat-button-filled-label-text-font: var(--font-sans);
44
+ --mat-button-filled-label-text-size: 0.875rem;
45
+ --mat-button-filled-label-text-tracking: 0;
46
+ --mat-button-filled-label-text-transform: none;
47
+ --mat-button-filled-label-text-weight: 500;
48
+ --mat-button-outlined-label-text-font: var(--font-sans);
49
+ --mat-button-outlined-label-text-size: 0.875rem;
50
+ --mat-button-outlined-label-text-tracking: 0;
51
+ --mat-button-outlined-label-text-transform: none;
52
+ --mat-button-outlined-label-text-weight: 500;
53
+ --mat-button-protected-label-text-font: var(--font-sans);
54
+ --mat-button-protected-label-text-size: 0.875rem;
55
+ --mat-button-protected-label-text-tracking: 0;
56
+ --mat-button-protected-label-text-transform: none;
57
+ --mat-button-protected-label-text-weight: 500;
58
+ --mat-button-tonal-label-text-font: var(--font-sans);
59
+ --mat-button-tonal-label-text-size: 0.875rem;
60
+ --mat-button-tonal-label-text-tracking: 0;
61
+ --mat-button-tonal-label-text-transform: none;
62
+ --mat-button-tonal-label-text-weight: 500;
63
+
64
+ --mat-button-text-label-text-color: hsl(var(--foreground));
65
+ --mat-button-text-state-layer-color: hsl(var(--foreground));
66
+ --mat-button-text-ripple-color: hsl(var(--foreground) / 0.12);
67
+ --mat-button-text-hover-state-layer-opacity: 0.08;
68
+ --mat-button-text-focus-state-layer-opacity: 0.12;
69
+ --mat-button-text-pressed-state-layer-opacity: 0.14;
70
+ --mat-button-text-disabled-label-text-color: hsl(var(--muted-foreground));
71
+ --mat-button-text-disabled-state-layer-color: hsl(var(--muted-foreground));
72
+
73
+ --mat-button-filled-container-color: hsl(var(--primary));
74
+ --mat-button-filled-label-text-color: hsl(var(--primary-foreground));
75
+ --mat-button-filled-state-layer-color: hsl(var(--primary-foreground));
76
+ --mat-button-filled-ripple-color: hsl(var(--primary-foreground) / 0.16);
77
+ --mat-button-filled-hover-state-layer-opacity: 0.08;
78
+ --mat-button-filled-focus-state-layer-opacity: 0.12;
79
+ --mat-button-filled-pressed-state-layer-opacity: 0.14;
80
+ --mat-button-filled-disabled-container-color: hsl(var(--muted));
81
+ --mat-button-filled-disabled-label-text-color: hsl(var(--muted-foreground));
82
+ --mat-button-filled-disabled-state-layer-color: hsl(var(--muted-foreground));
83
+
84
+ --mat-button-outlined-label-text-color: hsl(var(--foreground));
85
+ --mat-button-outlined-outline-color: var(--ui-mat-button-outline-color);
86
+ --mat-button-outlined-outline-width: var(--ui-mat-button-border-width);
87
+ --mat-button-outlined-state-layer-color: hsl(var(--foreground));
88
+ --mat-button-outlined-ripple-color: hsl(var(--foreground) / 0.12);
89
+ --mat-button-outlined-hover-state-layer-opacity: 0.08;
90
+ --mat-button-outlined-focus-state-layer-opacity: 0.12;
91
+ --mat-button-outlined-pressed-state-layer-opacity: 0.14;
92
+ --mat-button-outlined-disabled-outline-color: hsl(var(--border) / 0.72);
93
+ --mat-button-outlined-disabled-label-text-color: hsl(var(--muted-foreground));
94
+ --mat-button-outlined-disabled-state-layer-color: hsl(var(--muted-foreground));
95
+
96
+ --mat-button-protected-container-color: hsl(var(--card));
97
+ --mat-button-protected-label-text-color: hsl(var(--foreground));
98
+ --mat-button-protected-state-layer-color: hsl(var(--foreground));
99
+ --mat-button-protected-ripple-color: hsl(var(--foreground) / 0.12);
100
+ --mat-button-protected-hover-state-layer-opacity: 0.08;
101
+ --mat-button-protected-focus-state-layer-opacity: 0.12;
102
+ --mat-button-protected-pressed-state-layer-opacity: 0.14;
103
+ --mat-button-protected-container-elevation-shadow: var(--shadow-sm);
104
+ --mat-button-protected-hover-container-elevation-shadow: var(--shadow);
105
+ --mat-button-protected-focus-container-elevation-shadow: var(--shadow);
106
+ --mat-button-protected-pressed-container-elevation-shadow: var(--shadow-sm);
107
+ --mat-button-protected-disabled-container-color: hsl(var(--muted));
108
+ --mat-button-protected-disabled-label-text-color: hsl(var(--muted-foreground));
109
+ --mat-button-protected-disabled-state-layer-color: hsl(var(--muted-foreground));
110
+ --mat-button-protected-disabled-container-elevation-shadow: none;
111
+
112
+ --mat-button-tonal-container-color: hsl(var(--secondary));
113
+ --mat-button-tonal-label-text-color: hsl(var(--secondary-foreground));
114
+ --mat-button-tonal-state-layer-color: hsl(var(--secondary-foreground));
115
+ --mat-button-tonal-ripple-color: hsl(var(--secondary-foreground) / 0.16);
116
+ --mat-button-tonal-hover-state-layer-opacity: 0.08;
117
+ --mat-button-tonal-focus-state-layer-opacity: 0.12;
118
+ --mat-button-tonal-pressed-state-layer-opacity: 0.14;
119
+ --mat-button-tonal-disabled-container-color: hsl(var(--muted));
120
+ --mat-button-tonal-disabled-label-text-color: hsl(var(--muted-foreground));
121
+ --mat-button-tonal-disabled-state-layer-color: hsl(var(--muted-foreground));
122
+
123
+ --mat-icon-button-icon-size: 1rem;
124
+ --mat-icon-button-container-shape: var(--ui-mat-button-icon-shape);
125
+ --mat-icon-button-state-layer-size: 2.25rem;
126
+ --mat-icon-button-touch-target-size: 2.25rem;
127
+ --mat-icon-button-touch-target-display: block;
128
+ --mat-icon-button-icon-color: hsl(var(--foreground));
129
+ --mat-icon-button-state-layer-color: hsl(var(--foreground));
130
+ --mat-icon-button-ripple-color: hsl(var(--foreground) / 0.12);
131
+ --mat-icon-button-hover-state-layer-opacity: 0.08;
132
+ --mat-icon-button-focus-state-layer-opacity: 0.12;
133
+ --mat-icon-button-pressed-state-layer-opacity: 0.14;
134
+ --mat-icon-button-disabled-icon-color: hsl(var(--muted-foreground));
135
+ --mat-icon-button-disabled-state-layer-color: hsl(var(--muted-foreground));
136
+
137
+ --mat-fab-container-color: hsl(var(--primary));
138
+ --mat-fab-foreground-color: hsl(var(--primary-foreground));
139
+ --mat-fab-state-layer-color: hsl(var(--primary-foreground));
140
+ --mat-fab-ripple-color: hsl(var(--primary-foreground) / 0.18);
141
+ --mat-fab-hover-state-layer-opacity: 0.08;
142
+ --mat-fab-focus-state-layer-opacity: 0.12;
143
+ --mat-fab-pressed-state-layer-opacity: 0.14;
144
+ --mat-fab-container-shape: var(--ui-mat-button-fab-shape);
145
+ --mat-fab-container-elevation-shadow: var(--shadow);
146
+ --mat-fab-hover-container-elevation-shadow: var(--shadow-md);
147
+ --mat-fab-focus-container-elevation-shadow: var(--shadow-md);
148
+ --mat-fab-pressed-container-elevation-shadow: var(--shadow);
149
+ --mat-fab-touch-target-size: 2.75rem;
150
+ --mat-fab-touch-target-display: block;
151
+ --mat-fab-disabled-state-container-color: hsl(var(--muted));
152
+ --mat-fab-disabled-state-foreground-color: hsl(var(--muted-foreground));
153
+ --mat-fab-disabled-state-layer-color: hsl(var(--muted-foreground));
154
+
155
+ --mat-fab-small-container-color: hsl(var(--secondary));
156
+ --mat-fab-small-foreground-color: hsl(var(--secondary-foreground));
157
+ --mat-fab-small-state-layer-color: hsl(var(--secondary-foreground));
158
+ --mat-fab-small-ripple-color: hsl(var(--secondary-foreground) / 0.18);
159
+ --mat-fab-small-hover-state-layer-opacity: 0.08;
160
+ --mat-fab-small-focus-state-layer-opacity: 0.12;
161
+ --mat-fab-small-pressed-state-layer-opacity: 0.14;
162
+ --mat-fab-small-container-shape: var(--ui-mat-button-icon-shape);
163
+ --mat-fab-small-container-elevation-shadow: var(--shadow-sm);
164
+ --mat-fab-small-hover-container-elevation-shadow: var(--shadow);
165
+ --mat-fab-small-focus-container-elevation-shadow: var(--shadow);
166
+ --mat-fab-small-pressed-container-elevation-shadow: var(--shadow-sm);
167
+ --mat-fab-small-touch-target-size: 2.25rem;
168
+ --mat-fab-small-touch-target-display: block;
169
+ --mat-fab-small-disabled-state-container-color: hsl(var(--muted));
170
+ --mat-fab-small-disabled-state-foreground-color: hsl(var(--muted-foreground));
171
+ --mat-fab-small-disabled-state-layer-color: hsl(var(--muted-foreground));
172
+
173
+ --mat-fab-extended-container-height: 2.75rem;
174
+ --mat-fab-extended-container-shape: var(--ui-mat-button-fab-shape);
175
+ --mat-fab-extended-container-elevation-shadow: var(--shadow);
176
+ --mat-fab-extended-hover-container-elevation-shadow: var(--shadow-md);
177
+ --mat-fab-extended-focus-container-elevation-shadow: var(--shadow-md);
178
+ --mat-fab-extended-pressed-container-elevation-shadow: var(--shadow);
179
+ --mat-fab-extended-label-text-font: var(--font-sans);
180
+ --mat-fab-extended-label-text-size: 0.875rem;
181
+ --mat-fab-extended-label-text-tracking: 0;
182
+ --mat-fab-extended-label-text-weight: 500;
183
+ }
184
+
185
+ [data-style='sharp'] {
186
+ --ui-mat-button-shape: 0;
187
+ --ui-mat-button-icon-shape: 0;
188
+ --ui-mat-button-fab-shape: 0;
189
+
190
+ --mat-button-text-container-shape: 0;
191
+ --mat-button-filled-container-shape: 0;
192
+ --mat-button-outlined-container-shape: 0;
193
+ --mat-button-protected-container-shape: 0;
194
+ --mat-button-tonal-container-shape: 0;
195
+ --mat-icon-button-container-shape: 0;
196
+ --mat-fab-container-shape: 0;
197
+ --mat-fab-small-container-shape: 0;
198
+ --mat-fab-extended-container-shape: 0;
199
+
200
+ --mat-button-protected-container-elevation-shadow: none;
201
+ --mat-button-protected-hover-container-elevation-shadow: none;
202
+ --mat-button-protected-focus-container-elevation-shadow: none;
203
+ --mat-button-protected-pressed-container-elevation-shadow: none;
204
+ --mat-fab-container-elevation-shadow: none;
205
+ --mat-fab-hover-container-elevation-shadow: none;
206
+ --mat-fab-focus-container-elevation-shadow: none;
207
+ --mat-fab-pressed-container-elevation-shadow: none;
208
+ --mat-fab-small-container-elevation-shadow: none;
209
+ --mat-fab-small-hover-container-elevation-shadow: none;
210
+ --mat-fab-small-focus-container-elevation-shadow: none;
211
+ --mat-fab-small-pressed-container-elevation-shadow: none;
212
+ --mat-fab-extended-container-elevation-shadow: none;
213
+ --mat-fab-extended-hover-container-elevation-shadow: none;
214
+ --mat-fab-extended-focus-container-elevation-shadow: none;
215
+ --mat-fab-extended-pressed-container-elevation-shadow: none;
216
+ }
217
+
218
+ [data-style='brutal'] {
219
+ --ui-mat-button-outline-color: hsl(var(--foreground));
220
+ --ui-mat-button-focus-outline-color: hsl(var(--foreground));
221
+ --ui-mat-button-shape: 0;
222
+ --ui-mat-button-icon-shape: 0;
223
+ --ui-mat-button-fab-shape: 0;
224
+
225
+ --mat-button-text-container-shape: 0;
226
+ --mat-button-filled-container-shape: 0;
227
+ --mat-button-outlined-container-shape: 0;
228
+ --mat-button-protected-container-shape: 0;
229
+ --mat-button-tonal-container-shape: 0;
230
+ --mat-icon-button-container-shape: 0;
231
+ --mat-fab-container-shape: 0;
232
+ --mat-fab-small-container-shape: 0;
233
+ --mat-fab-extended-container-shape: 0;
234
+
235
+ --mat-button-filled-container-color: hsl(var(--foreground));
236
+ --mat-button-filled-label-text-color: hsl(var(--background));
237
+ --mat-button-filled-state-layer-color: hsl(var(--background));
238
+ --mat-button-filled-ripple-color: hsl(var(--background) / 0.18);
239
+ --mat-button-protected-container-color: hsl(var(--background));
240
+ --mat-button-protected-label-text-color: hsl(var(--foreground));
241
+ --mat-button-protected-state-layer-color: hsl(var(--foreground));
242
+ --mat-button-protected-ripple-color: hsl(var(--foreground) / 0.12);
243
+ --mat-button-protected-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
244
+ --mat-button-protected-hover-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
245
+ --mat-button-protected-focus-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
246
+ --mat-button-protected-pressed-container-elevation-shadow: none;
247
+ --mat-button-tonal-container-color: hsl(var(--accent));
248
+ --mat-button-tonal-label-text-color: hsl(var(--accent-foreground));
249
+ --mat-button-tonal-state-layer-color: hsl(var(--accent-foreground));
250
+ --mat-icon-button-icon-color: hsl(var(--foreground));
251
+ --mat-icon-button-state-layer-color: hsl(var(--foreground));
252
+
253
+ --mat-fab-container-color: hsl(var(--foreground));
254
+ --mat-fab-foreground-color: hsl(var(--background));
255
+ --mat-fab-state-layer-color: hsl(var(--background));
256
+ --mat-fab-ripple-color: hsl(var(--background) / 0.18);
257
+ --mat-fab-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
258
+ --mat-fab-hover-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
259
+ --mat-fab-focus-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
260
+ --mat-fab-pressed-container-elevation-shadow: none;
261
+
262
+ --mat-fab-small-container-color: hsl(var(--background));
263
+ --mat-fab-small-foreground-color: hsl(var(--foreground));
264
+ --mat-fab-small-state-layer-color: hsl(var(--foreground));
265
+ --mat-fab-small-ripple-color: hsl(var(--foreground) / 0.18);
266
+ --mat-fab-small-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
267
+ --mat-fab-small-hover-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
268
+ --mat-fab-small-focus-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
269
+ --mat-fab-small-pressed-container-elevation-shadow: none;
270
+
271
+ --mat-fab-extended-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
272
+ --mat-fab-extended-hover-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
273
+ --mat-fab-extended-focus-container-elevation-shadow: var(--ui-mat-button-brutal-shadow);
274
+ --mat-fab-extended-pressed-container-elevation-shadow: none;
275
+ }
276
+
277
+ [data-style='soft'] {
278
+ --ui-mat-button-outline-color: hsl(var(--border) / 0.72);
279
+ --ui-mat-button-shape: var(--radius-md);
280
+ --ui-mat-button-icon-shape: var(--radius-lg);
281
+ --ui-mat-button-fab-shape: calc(var(--radius-lg) + 0.25rem);
282
+
283
+ --mat-button-text-container-shape: var(--radius-md);
284
+ --mat-button-filled-container-shape: var(--radius-md);
285
+ --mat-button-outlined-container-shape: var(--radius-md);
286
+ --mat-button-protected-container-shape: var(--radius-md);
287
+ --mat-button-tonal-container-shape: var(--radius-md);
288
+ --mat-icon-button-container-shape: var(--radius-lg);
289
+ --mat-fab-container-shape: calc(var(--radius-lg) + 0.25rem);
290
+ --mat-fab-small-container-shape: var(--radius-lg);
291
+ --mat-fab-extended-container-shape: calc(var(--radius-lg) + 0.25rem);
292
+
293
+ --mat-button-protected-container-color: hsl(var(--background));
294
+ --mat-button-protected-container-elevation-shadow: 0 10px 24px hsl(var(--foreground) / 0.08);
295
+ --mat-button-protected-hover-container-elevation-shadow: 0 14px 28px hsl(var(--foreground) / 0.1);
296
+ --mat-button-protected-focus-container-elevation-shadow: 0 14px 28px hsl(var(--foreground) / 0.1);
297
+ --mat-button-protected-pressed-container-elevation-shadow: 0 8px 18px hsl(var(--foreground) / 0.08);
298
+ --mat-button-tonal-container-color: hsl(var(--accent));
299
+ --mat-button-tonal-label-text-color: hsl(var(--accent-foreground));
300
+ --mat-button-tonal-state-layer-color: hsl(var(--accent-foreground));
301
+
302
+ --mat-fab-container-elevation-shadow: 0 12px 28px hsl(var(--foreground) / 0.14);
303
+ --mat-fab-hover-container-elevation-shadow: 0 16px 32px hsl(var(--foreground) / 0.16);
304
+ --mat-fab-focus-container-elevation-shadow: 0 16px 32px hsl(var(--foreground) / 0.16);
305
+ --mat-fab-pressed-container-elevation-shadow: 0 10px 20px hsl(var(--foreground) / 0.14);
306
+ --mat-fab-small-container-elevation-shadow: 0 8px 20px hsl(var(--foreground) / 0.1);
307
+ --mat-fab-small-hover-container-elevation-shadow: 0 12px 24px hsl(var(--foreground) / 0.12);
308
+ --mat-fab-small-focus-container-elevation-shadow: 0 12px 24px hsl(var(--foreground) / 0.12);
309
+ --mat-fab-small-pressed-container-elevation-shadow: 0 8px 18px hsl(var(--foreground) / 0.1);
310
+ --mat-fab-extended-container-elevation-shadow: 0 12px 28px hsl(var(--foreground) / 0.14);
311
+ --mat-fab-extended-hover-container-elevation-shadow: 0 16px 32px hsl(var(--foreground) / 0.16);
312
+ --mat-fab-extended-focus-container-elevation-shadow: 0 16px 32px hsl(var(--foreground) / 0.16);
313
+ --mat-fab-extended-pressed-container-elevation-shadow: 0 10px 20px hsl(var(--foreground) / 0.14);
314
+ }
315
+ }
316
+
317
+ @layer components {
318
+ .mat-mdc-button-base,
319
+ .mat-mdc-fab-base {
320
+ @apply align-middle transition-[transform,box-shadow,border-color,background-color,color];
321
+ }
322
+
323
+ .mat-mdc-button-base .mat-mdc-button-ripple,
324
+ .mat-mdc-button-base .mat-mdc-button-persistent-ripple,
325
+ .mat-mdc-button-base .mat-mdc-button-persistent-ripple::before,
326
+ .mat-mdc-button-base .mat-focus-indicator,
327
+ .mat-mdc-button-base .mat-focus-indicator::before,
328
+ .mat-mdc-fab-base .mat-mdc-button-ripple,
329
+ .mat-mdc-fab-base .mat-mdc-button-persistent-ripple,
330
+ .mat-mdc-fab-base .mat-mdc-button-persistent-ripple::before,
331
+ .mat-mdc-fab-base .mat-focus-indicator,
332
+ .mat-mdc-fab-base .mat-focus-indicator::before {
333
+ border-radius: inherit;
334
+ }
335
+
336
+ .mat-mdc-button-base:focus-visible > .mat-focus-indicator::before,
337
+ .mat-mdc-fab-base:focus-visible > .mat-focus-indicator::before {
338
+ outline: 2px solid var(--ui-mat-button-focus-outline-color);
339
+ outline-offset: 3px;
340
+ }
341
+
342
+ .mat-mdc-button-base:hover:not([disabled]):not(.mat-mdc-button-disabled),
343
+ .mat-mdc-fab-base:hover:not([disabled]):not(.mat-mdc-button-disabled) {
344
+ transform: translateY(-1px);
345
+ }
346
+
347
+ .mat-mdc-button-base .mat-icon,
348
+ .mat-mdc-fab-base .mat-icon {
349
+ @apply text-base;
350
+ }
351
+
352
+ button.mat-mdc-button,
353
+ a.mat-mdc-button,
354
+ button.mat-mdc-unelevated-button,
355
+ a.mat-mdc-unelevated-button,
356
+ button.mat-mdc-raised-button,
357
+ a.mat-mdc-raised-button,
358
+ button.mat-mdc-outlined-button,
359
+ a.mat-mdc-outlined-button,
360
+ button.mat-tonal-button,
361
+ a.mat-tonal-button,
362
+ button.mat-mdc-button .mdc-button__ripple,
363
+ a.mat-mdc-button .mdc-button__ripple,
364
+ button.mat-mdc-unelevated-button .mdc-button__ripple,
365
+ a.mat-mdc-unelevated-button .mdc-button__ripple,
366
+ button.mat-mdc-raised-button .mdc-button__ripple,
367
+ a.mat-mdc-raised-button .mdc-button__ripple,
368
+ button.mat-mdc-outlined-button .mdc-button__ripple,
369
+ a.mat-mdc-outlined-button .mdc-button__ripple,
370
+ button.mat-tonal-button .mdc-button__ripple,
371
+ a.mat-tonal-button .mdc-button__ripple {
372
+ border-radius: var(--ui-mat-button-shape);
373
+ }
374
+
375
+ button.mat-mdc-icon-button,
376
+ a.mat-mdc-icon-button,
377
+ button.mat-mdc-mini-fab,
378
+ a.mat-mdc-mini-fab {
379
+ border-radius: var(--ui-mat-button-icon-shape);
380
+ }
381
+
382
+ button.mat-mdc-fab,
383
+ a.mat-mdc-fab,
384
+ button.mat-mdc-extended-fab,
385
+ a.mat-mdc-extended-fab {
386
+ border-radius: var(--ui-mat-button-fab-shape);
387
+ }
388
+
389
+ button.mat-mdc-icon-button.mat-mdc-button-base,
390
+ a.mat-mdc-icon-button.mat-mdc-button-base {
391
+ width: var(--mat-icon-button-state-layer-size);
392
+ height: var(--mat-icon-button-state-layer-size);
393
+ padding: 0.625rem;
394
+ }
395
+
396
+ [data-style='default'] .mat-mdc-fab,
397
+ [data-style='sharp'] .mat-mdc-fab,
398
+ [data-style='brutal'] .mat-mdc-fab,
399
+ [data-style='soft'] .mat-mdc-fab {
400
+ width: 2.75rem;
401
+ height: 2.75rem;
402
+ }
403
+
404
+ [data-style='default'] .mat-mdc-mini-fab,
405
+ [data-style='sharp'] .mat-mdc-mini-fab,
406
+ [data-style='brutal'] .mat-mdc-mini-fab,
407
+ [data-style='soft'] .mat-mdc-mini-fab {
408
+ width: 2.25rem;
409
+ height: 2.25rem;
410
+ }
411
+
412
+ [data-style='default'] .mat-mdc-extended-fab,
413
+ [data-style='sharp'] .mat-mdc-extended-fab,
414
+ [data-style='brutal'] .mat-mdc-extended-fab,
415
+ [data-style='soft'] .mat-mdc-extended-fab {
416
+ @apply px-4;
417
+
418
+ height: var(--mat-fab-extended-container-height);
419
+ min-width: 0;
420
+ }
421
+
422
+ .mat-mdc-button[disabled],
423
+ .mat-mdc-unelevated-button[disabled],
424
+ .mat-mdc-raised-button[disabled],
425
+ .mat-mdc-outlined-button[disabled],
426
+ .mat-tonal-button[disabled],
427
+ .mat-mdc-button.mat-mdc-button-disabled,
428
+ .mat-mdc-unelevated-button.mat-mdc-button-disabled,
429
+ .mat-mdc-raised-button.mat-mdc-button-disabled,
430
+ .mat-mdc-outlined-button.mat-mdc-button-disabled,
431
+ .mat-tonal-button.mat-mdc-button-disabled,
432
+ .mat-mdc-icon-button[disabled],
433
+ .mat-mdc-icon-button.mat-mdc-button-disabled,
434
+ .mat-mdc-fab[disabled],
435
+ .mat-mdc-fab.mat-mdc-button-disabled,
436
+ .mat-mdc-mini-fab[disabled],
437
+ .mat-mdc-mini-fab.mat-mdc-button-disabled,
438
+ .mat-mdc-extended-fab[disabled],
439
+ .mat-mdc-extended-fab.mat-mdc-button-disabled {
440
+ @apply opacity-70;
441
+ }
442
+
443
+ [data-style='sharp'] .mat-mdc-button-base:hover:not([disabled]):not(.mat-mdc-button-disabled),
444
+ [data-style='sharp'] .mat-mdc-fab-base:hover:not([disabled]):not(.mat-mdc-button-disabled) {
445
+ transform: none;
446
+ }
447
+
448
+ [data-style='brutal'] .mat-mdc-unelevated-button,
449
+ [data-style='brutal'] .mat-mdc-raised-button,
450
+ [data-style='brutal'] .mat-mdc-outlined-button,
451
+ [data-style='brutal'] .mat-tonal-button,
452
+ [data-style='brutal'] .mat-mdc-fab,
453
+ [data-style='brutal'] .mat-mdc-mini-fab,
454
+ [data-style='brutal'] .mat-mdc-extended-fab {
455
+ box-shadow: var(--ui-mat-button-brutal-shadow);
456
+ }
457
+
458
+ [data-style='brutal'] .mat-mdc-unelevated-button:hover:not([disabled]):not(.mat-mdc-button-disabled),
459
+ [data-style='brutal'] .mat-mdc-raised-button:hover:not([disabled]):not(.mat-mdc-button-disabled),
460
+ [data-style='brutal'] .mat-mdc-outlined-button:hover:not([disabled]):not(.mat-mdc-button-disabled),
461
+ [data-style='brutal'] .mat-tonal-button:hover:not([disabled]):not(.mat-mdc-button-disabled),
462
+ [data-style='brutal'] .mat-mdc-fab:hover:not([disabled]):not(.mat-mdc-button-disabled),
463
+ [data-style='brutal'] .mat-mdc-mini-fab:hover:not([disabled]):not(.mat-mdc-button-disabled),
464
+ [data-style='brutal'] .mat-mdc-extended-fab:hover:not([disabled]):not(.mat-mdc-button-disabled) {
465
+ transform: translate(1px, 1px);
466
+ box-shadow: none;
467
+ }
468
+ }