@ojiepermana/angular 22.1.11 → 22.1.12

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 (340) hide show
  1. package/README.md +32 -26
  2. package/chart/README.md +272 -0
  3. package/component/README.md +89 -0
  4. package/component/accordion/README.md +195 -0
  5. package/component/alert/README.md +184 -0
  6. package/component/alert-dialog/README.md +255 -0
  7. package/component/aspect-ratio/README.md +116 -0
  8. package/component/avatar/README.md +182 -0
  9. package/component/badge/README.md +143 -0
  10. package/component/breadcrumb/README.md +223 -0
  11. package/component/button/README.md +141 -0
  12. package/component/button-group/README.md +214 -0
  13. package/component/calendar/README.md +137 -0
  14. package/component/card/README.md +232 -0
  15. package/component/carousel/README.md +276 -0
  16. package/component/checkbox/README.md +153 -0
  17. package/component/collapsible/README.md +216 -0
  18. package/component/combobox/README.md +202 -0
  19. package/component/command/README.md +287 -0
  20. package/component/composer/README.md +241 -0
  21. package/component/context-menu/README.md +268 -0
  22. package/component/date-picker/README.md +202 -0
  23. package/component/dialog/README.md +276 -0
  24. package/component/drawer/README.md +147 -0
  25. package/component/dropdown-menu/README.md +336 -0
  26. package/component/editor/README.md +152 -0
  27. package/component/empty/README.md +193 -0
  28. package/component/form/README.md +216 -0
  29. package/component/hover-card/README.md +150 -0
  30. package/component/icon/README.md +25 -0
  31. package/component/input/README.md +160 -0
  32. package/component/input-group/README.md +245 -0
  33. package/component/input-otp/README.md +331 -0
  34. package/component/item/README.md +254 -0
  35. package/component/kanban/README.md +81 -0
  36. package/component/kbd/README.md +141 -0
  37. package/component/label/README.md +137 -0
  38. package/component/menubar/README.md +270 -0
  39. package/component/native-select/README.md +176 -0
  40. package/component/navigation-menu/README.md +165 -0
  41. package/component/pagination/README.md +151 -0
  42. package/component/pillbox/README.md +68 -0
  43. package/component/popover/README.md +54 -0
  44. package/component/progress/README.md +160 -0
  45. package/component/radio/README.md +212 -0
  46. package/component/resizable/README.md +178 -0
  47. package/component/scroll-area/README.md +150 -0
  48. package/component/select/README.md +228 -0
  49. package/component/separator/README.md +175 -0
  50. package/component/sheet/README.md +190 -0
  51. package/component/skeleton/README.md +158 -0
  52. package/component/slider/README.md +207 -0
  53. package/component/spinner/README.md +160 -0
  54. package/component/switch/README.md +170 -0
  55. package/component/table/README.md +292 -0
  56. package/component/tabs/README.md +220 -0
  57. package/component/textarea/README.md +169 -0
  58. package/component/timeline/README.md +94 -0
  59. package/component/toast/README.md +173 -0
  60. package/component/toggle/README.md +133 -0
  61. package/component/toggle-group/README.md +234 -0
  62. package/component/tooltip/README.md +230 -0
  63. package/fesm2022/ojiepermana-angular-chart-area.mjs +289 -3
  64. package/fesm2022/ojiepermana-angular-chart-bar.mjs +722 -3
  65. package/fesm2022/ojiepermana-angular-chart-core.mjs +1482 -3
  66. package/fesm2022/ojiepermana-angular-chart-line.mjs +294 -3
  67. package/fesm2022/ojiepermana-angular-chart-pie.mjs +291 -3
  68. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1301 -3
  69. package/fesm2022/ojiepermana-angular-chart-radar.mjs +421 -3
  70. package/fesm2022/ojiepermana-angular-chart-radial.mjs +295 -3
  71. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +306 -3
  72. package/fesm2022/ojiepermana-angular-chart.mjs +12 -3
  73. package/fesm2022/ojiepermana-angular-component-accordion.mjs +267 -3
  74. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +359 -3
  75. package/fesm2022/ojiepermana-angular-component-alert.mjs +101 -3
  76. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +31 -3
  77. package/fesm2022/ojiepermana-angular-component-avatar.mjs +139 -3
  78. package/fesm2022/ojiepermana-angular-component-badge.mjs +57 -3
  79. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +192 -3
  80. package/fesm2022/ojiepermana-angular-component-button-group.mjs +95 -3
  81. package/fesm2022/ojiepermana-angular-component-button.mjs +73 -3
  82. package/fesm2022/ojiepermana-angular-component-calendar.mjs +718 -3
  83. package/fesm2022/ojiepermana-angular-component-card.mjs +167 -3
  84. package/fesm2022/ojiepermana-angular-component-carousel.mjs +326 -3
  85. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +190 -3
  86. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +117 -3
  87. package/fesm2022/ojiepermana-angular-component-combobox.mjs +327 -3
  88. package/fesm2022/ojiepermana-angular-component-command.mjs +351 -3
  89. package/fesm2022/ojiepermana-angular-component-composer.mjs +359 -3
  90. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +158 -3
  91. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +482 -3
  92. package/fesm2022/ojiepermana-angular-component-dialog.mjs +400 -3
  93. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -3
  94. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +689 -3
  95. package/fesm2022/ojiepermana-angular-component-editor.mjs +511 -3
  96. package/fesm2022/ojiepermana-angular-component-empty.mjs +134 -3
  97. package/fesm2022/ojiepermana-angular-component-form.mjs +438 -3
  98. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +273 -3
  99. package/fesm2022/ojiepermana-angular-component-icon.mjs +139 -3
  100. package/fesm2022/ojiepermana-angular-component-input-group.mjs +176 -3
  101. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +550 -3
  102. package/fesm2022/ojiepermana-angular-component-input.mjs +52 -3
  103. package/fesm2022/ojiepermana-angular-component-item.mjs +264 -3
  104. package/fesm2022/ojiepermana-angular-component-kanban.mjs +310 -3
  105. package/fesm2022/ojiepermana-angular-component-kbd.mjs +48 -3
  106. package/fesm2022/ojiepermana-angular-component-label.mjs +27 -3
  107. package/fesm2022/ojiepermana-angular-component-menubar.mjs +327 -3
  108. package/fesm2022/ojiepermana-angular-component-native-select.mjs +62 -3
  109. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +378 -3
  110. package/fesm2022/ojiepermana-angular-component-pagination.mjs +238 -3
  111. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +999 -3
  112. package/fesm2022/ojiepermana-angular-component-popover.mjs +201 -3
  113. package/fesm2022/ojiepermana-angular-component-progress.mjs +57 -3
  114. package/fesm2022/ojiepermana-angular-component-radio.mjs +180 -3
  115. package/fesm2022/ojiepermana-angular-component-resizable.mjs +493 -3
  116. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +51 -3
  117. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +227 -3
  118. package/fesm2022/ojiepermana-angular-component-select.mjs +609 -3
  119. package/fesm2022/ojiepermana-angular-component-separator.mjs +31 -3
  120. package/fesm2022/ojiepermana-angular-component-sheet.mjs +407 -3
  121. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +25 -3
  122. package/fesm2022/ojiepermana-angular-component-slider.mjs +456 -3
  123. package/fesm2022/ojiepermana-angular-component-spinner.mjs +56 -3
  124. package/fesm2022/ojiepermana-angular-component-switch.mjs +145 -3
  125. package/fesm2022/ojiepermana-angular-component-table.mjs +155 -3
  126. package/fesm2022/ojiepermana-angular-component-tabs.mjs +315 -3
  127. package/fesm2022/ojiepermana-angular-component-textarea.mjs +46 -3
  128. package/fesm2022/ojiepermana-angular-component-timeline.mjs +237 -3
  129. package/fesm2022/ojiepermana-angular-component-toast.mjs +241 -3
  130. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +290 -3
  131. package/fesm2022/ojiepermana-angular-component-toggle.mjs +76 -3
  132. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +519 -3
  133. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +310 -3
  134. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +62 -3
  135. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +34 -3
  136. package/fesm2022/ojiepermana-angular-component-utils.mjs +3 -2
  137. package/fesm2022/ojiepermana-angular-component.mjs +4 -4
  138. package/fesm2022/ojiepermana-angular-navigation-core.mjs +21 -3
  139. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +20 -3
  140. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-CDBxQ8rk.mjs +91 -0
  141. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +512 -0
  142. package/fesm2022/ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs +623 -0
  143. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +404 -0
  144. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +466 -0
  145. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +2642 -0
  146. package/fesm2022/ojiepermana-angular-navigation-service.mjs +725 -3
  147. package/fesm2022/ojiepermana-angular-navigation-types.mjs +65 -4
  148. package/fesm2022/ojiepermana-angular-navigation.mjs +4 -10
  149. package/fesm2022/ojiepermana-angular-sdk.mjs +204 -4
  150. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1387 -3
  151. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +331 -3
  152. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +45 -4
  153. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1044 -3
  154. package/fesm2022/ojiepermana-angular-theme-layout.mjs +729 -3
  155. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +381 -3
  156. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +267 -3
  157. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +361 -3
  158. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +198 -3
  159. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +110 -3
  160. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -2
  161. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +338 -3
  162. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +160 -4
  163. package/fesm2022/ojiepermana-angular-theme-shell.mjs +811 -3
  164. package/fesm2022/ojiepermana-angular-theme-styles.mjs +783 -3
  165. package/fesm2022/ojiepermana-angular-theme.mjs +4 -4
  166. package/fesm2022/ojiepermana-angular.mjs +6 -11
  167. package/navigation/README.md +374 -0
  168. package/package.json +81 -20
  169. package/sdk/README.md +212 -0
  170. package/sdk/schematics/collection.json +20 -0
  171. package/sdk/schematics/init/index.js +83 -0
  172. package/sdk/schematics/init/schema.json +19 -0
  173. package/sdk/schematics/ng-add/index.js +147 -0
  174. package/sdk/schematics/ng-add/schema.json +14 -0
  175. package/sdk/schematics/package.json +3 -0
  176. package/sdk/schematics/sdk/index.js +175 -0
  177. package/sdk/schematics/sdk/schema.json +19 -0
  178. package/sdk/sdk.config.example.json +24 -0
  179. package/sdk/src/config/loader.js +43 -0
  180. package/sdk/src/config/schema.js +59 -0
  181. package/sdk/src/emit/client.js +251 -0
  182. package/sdk/src/emit/metadata.js +310 -0
  183. package/sdk/src/emit/models.js +104 -0
  184. package/sdk/src/emit/navigation.js +56 -0
  185. package/sdk/src/emit/operations.js +118 -0
  186. package/sdk/src/emit/public-api.js +54 -0
  187. package/sdk/src/emit/services.js +110 -0
  188. package/sdk/src/engine.js +67 -0
  189. package/sdk/src/layout/per-domain.js +360 -0
  190. package/sdk/src/package.json +3 -0
  191. package/sdk/src/parser/bundle.js +25 -0
  192. package/sdk/src/parser/ir.js +429 -0
  193. package/sdk/src/parser/types.js +7 -0
  194. package/sdk/src/render/template.js +152 -0
  195. package/sdk/src/writer/index.js +286 -0
  196. package/theme/README.md +126 -0
  197. package/theme/component/settings/README.md +135 -0
  198. package/theme/layout/README.md +539 -0
  199. package/theme/page/README.md +453 -0
  200. package/theme/shell/README.md +340 -0
  201. package/theme/styles/README.md +178 -0
  202. package/theme/styles/css/base/components.css +553 -0
  203. package/theme/styles/css/base/index.css +14 -0
  204. package/theme/styles/css/base/package.css +9 -0
  205. package/theme/styles/css/base/prefers-dark.css +86 -0
  206. package/theme/styles/css/base/print.css +62 -0
  207. package/theme/styles/css/base/status.css +38 -0
  208. package/theme/styles/css/base/tailwind.css +165 -0
  209. package/theme/styles/css/base/theme.css +373 -0
  210. package/theme/styles/css/base/tokens.css +361 -0
  211. package/theme/styles/css/color/amber.css +72 -0
  212. package/theme/styles/css/color/blue.css +72 -0
  213. package/theme/styles/css/color/brand.css +38 -0
  214. package/theme/styles/css/color/cyan.css +72 -0
  215. package/theme/styles/css/color/emerald.css +72 -0
  216. package/theme/styles/css/color/fuchsia.css +72 -0
  217. package/theme/styles/css/color/green.css +72 -0
  218. package/theme/styles/css/color/index.css +19 -0
  219. package/theme/styles/css/color/indigo.css +72 -0
  220. package/theme/styles/css/color/lime.css +72 -0
  221. package/theme/styles/css/color/orange.css +72 -0
  222. package/theme/styles/css/color/pink.css +72 -0
  223. package/theme/styles/css/color/purple.css +72 -0
  224. package/theme/styles/css/color/red.css +72 -0
  225. package/theme/styles/css/color/rose.css +72 -0
  226. package/theme/styles/css/color/sky.css +72 -0
  227. package/theme/styles/css/color/teal.css +72 -0
  228. package/theme/styles/css/color/violet.css +72 -0
  229. package/theme/styles/css/color/yellow.css +72 -0
  230. package/theme/styles/css/index.css +18 -0
  231. package/theme/styles/css/neutral/gray.css +63 -0
  232. package/theme/styles/css/neutral/index.css +11 -0
  233. package/theme/styles/css/neutral/mauve.css +63 -0
  234. package/theme/styles/css/neutral/mist.css +63 -0
  235. package/theme/styles/css/neutral/neutral.css +63 -0
  236. package/theme/styles/css/neutral/olive.css +63 -0
  237. package/theme/styles/css/neutral/slate.css +63 -0
  238. package/theme/styles/css/neutral/stone.css +63 -0
  239. package/theme/styles/css/neutral/taupe.css +63 -0
  240. package/theme/styles/css/neutral/zinc.css +63 -0
  241. package/theme/styles/css/radius/index.css +30 -0
  242. package/theme/styles/css/space/index.css +20 -0
  243. package/types/ojiepermana-angular-chart-area.d.ts +76 -1
  244. package/types/ojiepermana-angular-chart-bar.d.ts +201 -1
  245. package/types/ojiepermana-angular-chart-core.d.ts +811 -1
  246. package/types/ojiepermana-angular-chart-line.d.ts +75 -1
  247. package/types/ojiepermana-angular-chart-pie.d.ts +131 -1
  248. package/types/ojiepermana-angular-chart-primitives.d.ts +291 -1
  249. package/types/ojiepermana-angular-chart-radar.d.ts +116 -1
  250. package/types/ojiepermana-angular-chart-radial.d.ts +116 -1
  251. package/types/ojiepermana-angular-chart-scatter.d.ts +125 -1
  252. package/types/ojiepermana-angular-chart.d.ts +2 -1
  253. package/types/ojiepermana-angular-component-accordion.d.ts +85 -1
  254. package/types/ojiepermana-angular-component-alert-dialog.d.ts +140 -1
  255. package/types/ojiepermana-angular-component-alert.d.ts +42 -1
  256. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +12 -1
  257. package/types/ojiepermana-angular-component-avatar.d.ts +56 -1
  258. package/types/ojiepermana-angular-component-badge.d.ts +24 -1
  259. package/types/ojiepermana-angular-component-breadcrumb.d.ts +46 -1
  260. package/types/ojiepermana-angular-component-button-group.d.ts +26 -1
  261. package/types/ojiepermana-angular-component-button.d.ts +27 -1
  262. package/types/ojiepermana-angular-component-calendar.d.ts +111 -1
  263. package/types/ojiepermana-angular-component-card.d.ts +69 -1
  264. package/types/ojiepermana-angular-component-carousel.d.ts +86 -1
  265. package/types/ojiepermana-angular-component-checkbox.d.ts +42 -1
  266. package/types/ojiepermana-angular-component-collapsible.d.ts +42 -1
  267. package/types/ojiepermana-angular-component-combobox.d.ts +60 -1
  268. package/types/ojiepermana-angular-component-command.d.ts +130 -1
  269. package/types/ojiepermana-angular-component-composer.d.ts +90 -1
  270. package/types/ojiepermana-angular-component-context-menu.d.ts +54 -1
  271. package/types/ojiepermana-angular-component-date-picker.d.ts +109 -1
  272. package/types/ojiepermana-angular-component-dialog.d.ts +136 -1
  273. package/types/ojiepermana-angular-component-drawer.d.ts +1 -1
  274. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +248 -1
  275. package/types/ojiepermana-angular-component-editor.d.ts +135 -1
  276. package/types/ojiepermana-angular-component-empty.d.ts +50 -1
  277. package/types/ojiepermana-angular-component-form.d.ts +159 -1
  278. package/types/ojiepermana-angular-component-hover-card.d.ts +75 -1
  279. package/types/ojiepermana-angular-component-icon.d.ts +89 -1
  280. package/types/ojiepermana-angular-component-input-group.d.ts +51 -1
  281. package/types/ojiepermana-angular-component-input-otp.d.ts +155 -1
  282. package/types/ojiepermana-angular-component-input.d.ts +21 -1
  283. package/types/ojiepermana-angular-component-item.d.ts +93 -1
  284. package/types/ojiepermana-angular-component-kanban.d.ts +70 -1
  285. package/types/ojiepermana-angular-component-kbd.d.ts +16 -1
  286. package/types/ojiepermana-angular-component-label.d.ts +11 -1
  287. package/types/ojiepermana-angular-component-menubar.d.ts +93 -1
  288. package/types/ojiepermana-angular-component-native-select.d.ts +26 -1
  289. package/types/ojiepermana-angular-component-navigation-menu.d.ts +104 -1
  290. package/types/ojiepermana-angular-component-pagination.d.ts +33 -1
  291. package/types/ojiepermana-angular-component-pillbox.d.ts +222 -1
  292. package/types/ojiepermana-angular-component-popover.d.ts +66 -1
  293. package/types/ojiepermana-angular-component-progress.d.ts +17 -1
  294. package/types/ojiepermana-angular-component-radio.d.ts +60 -1
  295. package/types/ojiepermana-angular-component-resizable.d.ts +117 -1
  296. package/types/ojiepermana-angular-component-scroll-area.d.ts +19 -1
  297. package/types/ojiepermana-angular-component-segmented-control.d.ts +58 -1
  298. package/types/ojiepermana-angular-component-select.d.ts +122 -1
  299. package/types/ojiepermana-angular-component-separator.d.ts +14 -1
  300. package/types/ojiepermana-angular-component-sheet.d.ts +130 -1
  301. package/types/ojiepermana-angular-component-skeleton.d.ts +10 -1
  302. package/types/ojiepermana-angular-component-slider.d.ts +83 -1
  303. package/types/ojiepermana-angular-component-spinner.d.ts +13 -1
  304. package/types/ojiepermana-angular-component-switch.d.ts +44 -1
  305. package/types/ojiepermana-angular-component-table.d.ts +57 -1
  306. package/types/ojiepermana-angular-component-tabs.d.ts +124 -1
  307. package/types/ojiepermana-angular-component-textarea.d.ts +17 -1
  308. package/types/ojiepermana-angular-component-timeline.d.ts +64 -1
  309. package/types/ojiepermana-angular-component-toast.d.ts +64 -1
  310. package/types/ojiepermana-angular-component-toggle-group.d.ts +90 -1
  311. package/types/ojiepermana-angular-component-toggle.d.ts +25 -1
  312. package/types/ojiepermana-angular-component-tooltip.d.ts +143 -1
  313. package/types/ojiepermana-angular-component-utils-core.d.ts +184 -1
  314. package/types/ojiepermana-angular-component-utils-overlay.d.ts +21 -1
  315. package/types/ojiepermana-angular-component-utils-scale.d.ts +19 -1
  316. package/types/ojiepermana-angular-component-utils.d.ts +2 -1
  317. package/types/ojiepermana-angular-component.d.ts +2 -1
  318. package/types/ojiepermana-angular-navigation-core.d.ts +59 -1
  319. package/types/ojiepermana-angular-navigation-icon.d.ts +12 -1
  320. package/types/ojiepermana-angular-navigation-service.d.ts +116 -1
  321. package/types/ojiepermana-angular-navigation-types.d.ts +144 -1
  322. package/types/ojiepermana-angular-navigation.d.ts +507 -1
  323. package/types/ojiepermana-angular-sdk.d.ts +89 -1
  324. package/types/ojiepermana-angular-theme-component-settings.d.ts +154 -1
  325. package/types/ojiepermana-angular-theme-layout-services.d.ts +147 -1
  326. package/types/ojiepermana-angular-theme-layout-types.d.ts +40 -1
  327. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +299 -1
  328. package/types/ojiepermana-angular-theme-layout.d.ts +129 -1
  329. package/types/ojiepermana-angular-theme-page-core.d.ts +157 -1
  330. package/types/ojiepermana-angular-theme-page-filter.d.ts +77 -1
  331. package/types/ojiepermana-angular-theme-page-root.d.ts +88 -1
  332. package/types/ojiepermana-angular-theme-page-side.d.ts +50 -1
  333. package/types/ojiepermana-angular-theme-page-slots.d.ts +40 -1
  334. package/types/ojiepermana-angular-theme-page.d.ts +5 -1
  335. package/types/ojiepermana-angular-theme-shell-services.d.ts +193 -1
  336. package/types/ojiepermana-angular-theme-shell-types.d.ts +105 -1
  337. package/types/ojiepermana-angular-theme-shell.d.ts +100 -1
  338. package/types/ojiepermana-angular-theme-styles.d.ts +319 -1
  339. package/types/ojiepermana-angular-theme.d.ts +2 -1
  340. package/types/ojiepermana-angular.d.ts +5 -5
@@ -0,0 +1,182 @@
1
+ # Avatar
2
+
3
+ Rounded image with an automatic text fallback when the image fails to load.
4
+
5
+ This Angular implementation follows the shadcn Avatar information architecture while adapting it to standalone Angular imports, signal-friendly inputs, and local menu primitives.
6
+
7
+ ## Import
8
+
9
+ ```ts
10
+ import {
11
+ AvatarBadgeComponent,
12
+ AvatarComponent,
13
+ AvatarFallbackComponent,
14
+ AvatarGroupComponent,
15
+ AvatarGroupCountComponent,
16
+ AvatarImageComponent,
17
+ } from '@ojiepermana/angular/component/avatar';
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ```html
23
+ <Avatar size="lg">
24
+ <AvatarImage src="/me.jpg" alt="Ada Lovelace" />
25
+ <AvatarFallback>AL</AvatarFallback>
26
+ <AvatarBadge class="bg-emerald-600" aria-hidden="true"></AvatarBadge>
27
+ </Avatar>
28
+ ```
29
+
30
+ If `src` fails to load, the `<img>` is removed and the fallback becomes visible.
31
+
32
+ ## Composition
33
+
34
+ ```text
35
+ Avatar
36
+ ├── AvatarImage
37
+ ├── AvatarFallback
38
+ └── AvatarBadge
39
+
40
+ AvatarGroup
41
+ ├── Avatar
42
+ │ ├── AvatarImage
43
+ │ ├── AvatarFallback
44
+ │ └── AvatarBadge
45
+ ├── Avatar
46
+ │ ├── AvatarImage
47
+ │ ├── AvatarFallback
48
+ │ └── AvatarBadge
49
+ └── AvatarGroupCount
50
+ ```
51
+
52
+ ## Common patterns
53
+
54
+ ### Basic avatar
55
+
56
+ ```html
57
+ <Avatar>
58
+ <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" class="grayscale" />
59
+ <AvatarFallback>CN</AvatarFallback>
60
+ </Avatar>
61
+ ```
62
+
63
+ ### Presence badge
64
+
65
+ Use `AvatarBadge` for online status, synced state, or a compact icon action.
66
+
67
+ ```html
68
+ <Avatar>
69
+ <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" />
70
+ <AvatarFallback>ER</AvatarFallback>
71
+ <AvatarBadge class="bg-emerald-600" aria-hidden="true"></AvatarBadge>
72
+ </Avatar>
73
+ ```
74
+
75
+ ### Avatar group
76
+
77
+ `AvatarGroup` applies the overlapping stack treatment, while `AvatarGroupCount` handles the overflow counter.
78
+
79
+ ```html
80
+ <AvatarGroup class="grayscale">
81
+ <Avatar>
82
+ <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
83
+ <AvatarFallback>CN</AvatarFallback>
84
+ </Avatar>
85
+ <Avatar>
86
+ <AvatarImage src="https://github.com/maxleiter.png" alt="@maxleiter" />
87
+ <AvatarFallback>ML</AvatarFallback>
88
+ </Avatar>
89
+ <Avatar>
90
+ <AvatarImage src="https://github.com/evilrabbit.png" alt="@evilrabbit" />
91
+ <AvatarFallback>ER</AvatarFallback>
92
+ </Avatar>
93
+ <AvatarGroupCount>+3</AvatarGroupCount>
94
+ </AvatarGroup>
95
+ ```
96
+
97
+ ### Size variants
98
+
99
+ Use the root `size` input instead of repeating manual width and height classes.
100
+
101
+ ```html
102
+ <div class="flex items-center gap-3">
103
+ <Avatar size="sm">...</Avatar>
104
+ <Avatar>...</Avatar>
105
+ <Avatar size="lg">...</Avatar>
106
+ </div>
107
+ ```
108
+
109
+ ### Dropdown trigger composition
110
+
111
+ Avatar stays presentational. When it opens a menu, wrap it in a button and let the button or menu trigger own focus and keyboard handling.
112
+
113
+ ```html
114
+ <button
115
+ Button
116
+ variant="ghost"
117
+ size="icon"
118
+ class="h-10 w-10 rounded-full p-0"
119
+ [MenuTrigger]="accountMenu"
120
+ >
121
+ <Avatar>
122
+ <AvatarImage src="https://github.com/shadcn.png" alt="Ada Lovelace" />
123
+ <AvatarFallback>AL</AvatarFallback>
124
+ </Avatar>
125
+ </button>
126
+ ```
127
+
128
+ ### RTL
129
+
130
+ Avatar itself does not need different markup in right-to-left layouts. Set `dir="rtl"` on the surrounding surface.
131
+
132
+ ```html
133
+ <section dir="rtl" lang="ar" class="flex items-center gap-4 text-right">
134
+ <Avatar>
135
+ <AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" class="grayscale" />
136
+ <AvatarFallback>CN</AvatarFallback>
137
+ </Avatar>
138
+ </section>
139
+ ```
140
+
141
+ ## API reference
142
+
143
+ | Primitive | Input(s) |
144
+ | --------------------------- | -------------------------------- |
145
+ | `AvatarComponent` | `size`, `class` |
146
+ | `AvatarImageComponent` | `src` (required), `alt`, `class` |
147
+ | `AvatarFallbackComponent` | `class` |
148
+ | `AvatarBadgeComponent` | `class` |
149
+ | `AvatarGroupComponent` | `class` |
150
+ | `AvatarGroupCountComponent` | `class` |
151
+
152
+ `AvatarComponent.size` accepts `'default' | 'sm' | 'lg'` and defaults to `'default'`.
153
+
154
+ ## Styling and theming
155
+
156
+ Tokens consumed: `--muted`, `--muted-foreground`, `--background`, `--primary`, and `--primary-foreground`.
157
+
158
+ The default avatar size is `h-10 w-10`. Use the `size` input for the common variants and pass `class` for brand-specific overrides such as grayscale, custom borders, or alternate badge colors.
159
+
160
+ `AvatarBadge` is the right place for presence color overrides, and `AvatarGroupCount` can be restyled when overflow counters should match a specific product palette.
161
+
162
+ ## Accessibility
163
+
164
+ Always pass a meaningful `alt` to `<AvatarImage>`. If the avatar is purely
165
+ decorative (user's name already shown), use `alt=""`. The fallback text is
166
+ readable by screen readers.
167
+
168
+ Keep fallback text short, typically initials, so it remains legible in smaller sizes.
169
+
170
+ ## Keyboard interactions
171
+
172
+ Avatar itself is not interactive. If it is used to open a menu, dialog, or popover, wrap it in a native button or another focusable trigger primitive so Tab, Enter, and Space behavior stays with the interactive host.
173
+
174
+ ## Angular notes
175
+
176
+ - `size` is exposed as a typed Angular input on `Avatar`.
177
+ - Grouping is handled by dedicated primitives instead of utility-only composition, which keeps Angular templates explicit and reusable.
178
+ - Image fallback is handled internally by hiding the `<img>` after its `error` event.
179
+
180
+ ## Source parity
181
+
182
+ This Angular implementation follows the shadcn Avatar concepts, examples, and API shape while adapting menu composition to the local `Button` plus menu primitives and Angular standalone imports.
@@ -0,0 +1,143 @@
1
+ # Badge
2
+
3
+ Displays a badge or a semantic element that looks like a badge.
4
+
5
+ Use Badge for status pills, small metadata labels, compact counts, and lightweight link-like callouts that should keep the badge silhouette.
6
+
7
+ ## Import
8
+
9
+ ```ts
10
+ import { BadgeComponent } from '@ojiepermana/angular/component/badge';
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Use `<Badge>` for the default host element or apply `[Badge]` to a semantic host such as `<span>` or `<a>` when the badge should inherit native behavior.
16
+
17
+ ```html
18
+ <Badge>New</Badge>
19
+ <Badge variant="secondary">Secondary</Badge>
20
+ <Badge variant="destructive">Error</Badge>
21
+ <Badge variant="outline">Outline</Badge>
22
+ <Badge variant="ghost">Ghost</Badge>
23
+
24
+ <span Badge variant="secondary">v1.0</span>
25
+
26
+ <a Badge variant="link" href="#billing">
27
+ Open billing
28
+ <svg
29
+ aria-hidden="true"
30
+ viewBox="0 0 24 24"
31
+ fill="none"
32
+ stroke="currentColor"
33
+ stroke-width="2"
34
+ class="size-3"
35
+ >
36
+ <path d="M7 17L17 7" />
37
+ <path d="M9 7h8v8" />
38
+ </svg>
39
+ </a>
40
+ ```
41
+
42
+ ## Common patterns
43
+
44
+ ### Variants
45
+
46
+ The Angular primitive follows the current shadcn badge palette and adds `ghost` plus `link` variants to cover low-emphasis and anchor-style treatments.
47
+
48
+ ```html
49
+ <div class="flex flex-wrap gap-2">
50
+ <Badge>Default</Badge>
51
+ <Badge variant="secondary">Secondary</Badge>
52
+ <Badge variant="destructive">Destructive</Badge>
53
+ <Badge variant="outline">Outline</Badge>
54
+ <Badge variant="ghost">Ghost</Badge>
55
+ </div>
56
+ ```
57
+
58
+ ### With icon
59
+
60
+ Project an inline SVG or icon component directly inside the badge. The primitive adds compact spacing and sizes direct child SVGs automatically.
61
+
62
+ ```html
63
+ <Badge variant="secondary">
64
+ <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
65
+ <path d="M20 7L9 18l-5-5" />
66
+ </svg>
67
+ Verified
68
+ </Badge>
69
+ ```
70
+
71
+ ### With spinner
72
+
73
+ Spinner content can be projected like any other inline element.
74
+
75
+ ```html
76
+ <Badge variant="destructive">
77
+ <span
78
+ aria-hidden="true"
79
+ class="size-3 animate-spin rounded-full border-2 border-current border-r-transparent"
80
+ ></span>
81
+ Deleting
82
+ </Badge>
83
+ ```
84
+
85
+ ### Link host
86
+
87
+ shadcn React uses `asChild` for links. In Angular, use a semantic anchor host directly.
88
+
89
+ ```html
90
+ <a Badge variant="link" href="#link">Open Link</a>
91
+ ```
92
+
93
+ ### Custom colors
94
+
95
+ Custom color treatments are plain classes on the host.
96
+
97
+ ```html
98
+ <Badge class="border-transparent bg-sky-100 text-sky-800">Blue</Badge>
99
+ <Badge class="border-transparent bg-emerald-100 text-emerald-800">Green</Badge>
100
+ ```
101
+
102
+ ## API reference
103
+
104
+ ### `BadgeComponent`
105
+
106
+ | Input | Type | Default |
107
+ | --------- | ----------------------------------------------------------------------------- | ----------- |
108
+ | `variant` | `'default' \| 'secondary' \| 'destructive' \| 'outline' \| 'ghost' \| 'link'` | `'default'` |
109
+ | `class` | `string` | `''` |
110
+
111
+ ## Styling and theming
112
+
113
+ The base badge uses `border-border` for visible outlines instead of inheriting border color from text. Variant classes override that border when the badge should render as a filled pill.
114
+
115
+ Pass `class` to add custom backgrounds, foreground colors, spacing, or width behavior. Direct child SVGs inherit `currentColor` and receive compact sizing automatically.
116
+
117
+ Powered by `class-variance-authority`. Re-export: `badgeVariants` and `BadgeVariant`.
118
+
119
+ ```ts
120
+ import { badgeVariants } from '@ojiepermana/angular/component/badge';
121
+
122
+ const className = badgeVariants({ variant: 'link' });
123
+ ```
124
+
125
+ ## Accessibility
126
+
127
+ - Keep meaningful text inside the badge when it communicates a state, label, or count.
128
+ - Do not rely on color alone to distinguish success, warning, or destructive meaning.
129
+ - When the badge should be interactive, use a semantic host like `<a Badge>` so native keyboard and screen-reader behavior stay intact.
130
+
131
+ ## Keyboard interactions
132
+
133
+ Static badges are not focusable. Anchors and other semantic hosts keep their native keyboard behavior, so Tab and Enter handling stays with the host element rather than the badge primitive itself.
134
+
135
+ ## Angular notes
136
+
137
+ - Angular uses the selector `Badge` for the default element host and `[Badge]` for semantic hosts.
138
+ - React `asChild` maps to choosing the correct host element directly in Angular templates.
139
+ - `variant` is an Angular `input()` on the badge component, so it works on both element and attribute hosts.
140
+
141
+ ## Source parity
142
+
143
+ This Angular badge follows the shadcn Badge information architecture and examples while translating React-specific `asChild` composition into semantic Angular host elements.
@@ -0,0 +1,223 @@
1
+ # Breadcrumb
2
+
3
+ Displays the path to the current resource using a hierarchy of links.
4
+
5
+ Use Breadcrumb for hierarchical navigation trails in docs, account areas, settings surfaces, and deep app routes where users need a quick sense of where they are.
6
+
7
+ ## Import
8
+
9
+ ```ts
10
+ import {
11
+ BreadcrumbComponent,
12
+ BreadcrumbEllipsisComponent,
13
+ BreadcrumbItemComponent,
14
+ BreadcrumbLinkComponent,
15
+ BreadcrumbListComponent,
16
+ BreadcrumbPageComponent,
17
+ BreadcrumbSeparatorComponent,
18
+ } from '@ojiepermana/angular/component/breadcrumb';
19
+ import { RouterLink } from '@angular/router';
20
+ ```
21
+
22
+ ## Composition
23
+
24
+ The Angular structure matches the shadcn breadcrumb composition while translating it to Angular selectors and native router-friendly anchors.
25
+
26
+ ```text
27
+ Breadcrumb
28
+ └── ol[BreadcrumbList]
29
+ ├── li[BreadcrumbItem]
30
+ │ └── a[BreadcrumbLink]
31
+ ├── li[BreadcrumbSeparator]
32
+ ├── li[BreadcrumbItem]
33
+ │ └── a[BreadcrumbLink]
34
+ ├── li[BreadcrumbSeparator]
35
+ └── li[BreadcrumbItem]
36
+ └── span[BreadcrumbPage]
37
+ ```
38
+
39
+ ## Basic usage
40
+
41
+ Prefer a semantic `<nav Breadcrumb>` root, then build the trail from list, item, link, separator, and current-page parts.
42
+
43
+ ```html
44
+ <nav Breadcrumb>
45
+ <ol BreadcrumbList>
46
+ <li BreadcrumbItem>
47
+ <a BreadcrumbLink routerLink="/">Home</a>
48
+ </li>
49
+ <li BreadcrumbSeparator></li>
50
+ <li BreadcrumbItem>
51
+ <a BreadcrumbLink routerLink="/ui/shadcn/button">Components</a>
52
+ </li>
53
+ <li BreadcrumbSeparator></li>
54
+ <li BreadcrumbItem>
55
+ <span BreadcrumbPage>Breadcrumb</span>
56
+ </li>
57
+ </ol>
58
+ </nav>
59
+ ```
60
+
61
+ ## Common patterns
62
+
63
+ ### Custom separator
64
+
65
+ Project custom children into `BreadcrumbSeparator` to swap the default chevron for a slash, dot, brand icon, or other neutral divider.
66
+
67
+ ```html
68
+ <nav Breadcrumb>
69
+ <ol BreadcrumbList>
70
+ <li BreadcrumbItem><a BreadcrumbLink href="/">Home</a></li>
71
+ <li BreadcrumbSeparator>
72
+ <svg class="h-2.5 w-2.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
73
+ <circle cx="12" cy="12" r="3"></circle>
74
+ </svg>
75
+ </li>
76
+ <li BreadcrumbItem><a BreadcrumbLink href="/components">Components</a></li>
77
+ <li BreadcrumbSeparator>
78
+ <svg class="h-2.5 w-2.5" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
79
+ <circle cx="12" cy="12" r="3"></circle>
80
+ </svg>
81
+ </li>
82
+ <li BreadcrumbItem><span BreadcrumbPage>Breadcrumb</span></li>
83
+ </ol>
84
+ </nav>
85
+ ```
86
+
87
+ ### Collapsed trail
88
+
89
+ Use `BreadcrumbEllipsis` when the trail is too long to show in full. Wrap it in a labeled button when the ellipsis should open an overflow menu.
90
+
91
+ ```html
92
+ <nav Breadcrumb>
93
+ <ol BreadcrumbList>
94
+ <li BreadcrumbItem><a BreadcrumbLink routerLink="/">Home</a></li>
95
+ <li BreadcrumbSeparator></li>
96
+ <li BreadcrumbItem><span BreadcrumbEllipsis></span></li>
97
+ <li BreadcrumbSeparator></li>
98
+ <li BreadcrumbItem><a BreadcrumbLink routerLink="/docs/components">Components</a></li>
99
+ <li BreadcrumbSeparator></li>
100
+ <li BreadcrumbItem><span BreadcrumbPage>Breadcrumb</span></li>
101
+ </ol>
102
+ </nav>
103
+ ```
104
+
105
+ ### Dropdown composition
106
+
107
+ Compose a breadcrumb item with the local menu primitives when an intermediate node should expose related destinations instead of linking directly.
108
+
109
+ ```html
110
+ <nav Breadcrumb>
111
+ <ol BreadcrumbList>
112
+ <li BreadcrumbItem><a BreadcrumbLink routerLink="/">Home</a></li>
113
+ <li BreadcrumbSeparator></li>
114
+ <li BreadcrumbItem>
115
+ <button
116
+ Button
117
+ type="button"
118
+ variant="ghost"
119
+ class="h-auto gap-1 px-2 py-1 font-normal text-muted-foreground hover:text-foreground"
120
+ [MenuTrigger]="componentsMenu"
121
+ >
122
+ Components
123
+ <svg
124
+ class="h-3.5 w-3.5"
125
+ viewBox="0 0 24 24"
126
+ fill="none"
127
+ stroke="currentColor"
128
+ stroke-width="2"
129
+ >
130
+ <polyline points="6 9 12 15 18 9"></polyline>
131
+ </svg>
132
+ </button>
133
+
134
+ <ng-template MenuContent #componentsMenu="MenuContent">
135
+ <MenuSurface class="w-44">
136
+ <MenuLabel>Components</MenuLabel>
137
+ <button MenuItem>Documentation</button>
138
+ <button MenuItem>Themes</button>
139
+ <button MenuItem>GitHub</button>
140
+ </MenuSurface>
141
+ </ng-template>
142
+ </li>
143
+ <li BreadcrumbSeparator></li>
144
+ <li BreadcrumbItem><span BreadcrumbPage>Breadcrumb</span></li>
145
+ </ol>
146
+ </nav>
147
+ ```
148
+
149
+ ### RouterLink integration
150
+
151
+ The shadcn React examples use `asChild` for custom routing components. In Angular, apply `routerLink` or `href` directly to the anchor that carries `BreadcrumbLink`.
152
+
153
+ ```html
154
+ <a BreadcrumbLink routerLink="/ui/shadcn">Components</a>
155
+ <a BreadcrumbLink href="https://ui.shadcn.com/docs/components/radix/breadcrumb">shadcn docs</a>
156
+ ```
157
+
158
+ ### RTL
159
+
160
+ Set `dir="rtl"` on the breadcrumb root or an ancestor container. The structure stays the same while the visual flow shifts to right-to-left.
161
+
162
+ ```html
163
+ <nav Breadcrumb dir="rtl" lang="ar">
164
+ <ol BreadcrumbList class="justify-end">
165
+ <li BreadcrumbItem><a BreadcrumbLink href="/">الرئيسية</a></li>
166
+ <li BreadcrumbSeparator></li>
167
+ <li BreadcrumbItem><a BreadcrumbLink href="/components">المكونات</a></li>
168
+ <li BreadcrumbSeparator></li>
169
+ <li BreadcrumbItem><span BreadcrumbPage>مسار التنقل</span></li>
170
+ </ol>
171
+ </nav>
172
+ ```
173
+
174
+ ## API reference
175
+
176
+ ### `BreadcrumbComponent`
177
+
178
+ | Input | Type | Default |
179
+ | ------- | -------- | ------- |
180
+ | `class` | `string` | `''` |
181
+
182
+ Use on `Breadcrumb` or `nav[Breadcrumb]`. The root always emits `aria-label="breadcrumb"` and keeps the custom-element form block-level.
183
+
184
+ ### Parts
185
+
186
+ | Part | Selector | Input |
187
+ | ------------------------------ | -------------------------- | ------- |
188
+ | `BreadcrumbListComponent` | `ol[BreadcrumbList]` | `class` |
189
+ | `BreadcrumbItemComponent` | `li[BreadcrumbItem]` | `class` |
190
+ | `BreadcrumbLinkComponent` | `a[BreadcrumbLink]` | `class` |
191
+ | `BreadcrumbPageComponent` | `span[BreadcrumbPage]` | `class` |
192
+ | `BreadcrumbSeparatorComponent` | `li[BreadcrumbSeparator]` | `class` |
193
+ | `BreadcrumbEllipsisComponent` | `span[BreadcrumbEllipsis]` | `class` |
194
+
195
+ `BreadcrumbSeparatorComponent` accepts projected children to replace the default chevron icon.
196
+
197
+ ## Styling and theming
198
+
199
+ The breadcrumb follows the shared theme tokens for foreground and muted text. Pass `class` to the list or individual parts to control spacing, alignment, color, and embedded layouts.
200
+
201
+ For example, use `class="justify-end"` on `BreadcrumbList` for RTL alignment or `class="max-w-full"` on the root to fit a constrained header.
202
+
203
+ ## Accessibility
204
+
205
+ - Root `<nav>` exposes `aria-label="breadcrumb"`.
206
+ - The current page uses `<span BreadcrumbPage>` which emits `role="link"`, `aria-current="page"`, and `aria-disabled="true"` so the trail announces the current location.
207
+ - Separators and ellipses are `aria-hidden` and `role="presentation"`.
208
+ - If `BreadcrumbEllipsis` becomes interactive, wrap it in a labeled button so the overflow action is announced correctly.
209
+
210
+ ## Keyboard interactions
211
+
212
+ - Links use native anchor keyboard behavior.
213
+ - Overflow menu buttons rely on the local `Button` and `MenuTrigger` primitives for Enter, Space, ArrowDown, and Escape handling.
214
+
215
+ ## Angular notes
216
+
217
+ - Prefer `<nav Breadcrumb>` for a semantic navigation landmark.
218
+ - `<Breadcrumb>` is also supported and renders as a block-level host by default.
219
+ - The React `asChild` examples map to Angular-native composition: put `routerLink` or `href` directly on `<a BreadcrumbLink>`.
220
+
221
+ ## Source parity
222
+
223
+ This Angular implementation follows the shadcn breadcrumb information architecture while translating React-specific patterns such as `asChild` and dropdown composition into Angular RouterLink, button, and menu primitives.
@@ -0,0 +1,141 @@
1
+ # Button
2
+
3
+ Displays a native button or anchor that looks like a shadcn-style button, translated to Angular attribute selectors and standalone imports.
4
+
5
+ Use Button for primary actions, secondary actions, icon-only controls, and semantic links that should share the same visual language.
6
+
7
+ ## Import
8
+
9
+ ```ts
10
+ import { ButtonComponent } from '@ojiepermana/angular/component/button';
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```html
16
+ <button Button type="button" variant="default">Save</button>
17
+ <button Button variant="outline" size="sm">Cancel</button>
18
+ <a Button variant="link" href="/learn-more">Learn more</a>
19
+ ```
20
+
21
+ Choose the correct native host for the job: `<button>` for actions and `<a>` for navigation.
22
+
23
+ ## Common patterns
24
+
25
+ ### Variants
26
+
27
+ Use `variant` for emphasis: `default`, `secondary`, `destructive`, `outline`, `ghost`, or `link`.
28
+
29
+ ```html
30
+ <button Button variant="default">Save</button>
31
+ <button Button variant="secondary">Duplicate</button>
32
+ <button Button variant="destructive">Delete</button>
33
+ <button Button variant="outline">Outline</button>
34
+ <button Button variant="ghost">Ghost</button>
35
+ <a Button variant="link" href="/learn-more">Learn more</a>
36
+ ```
37
+
38
+ ### Sizes
39
+
40
+ Use `size` for compact or icon-only controls: `xs`, `sm`, `default`, `lg`, `icon-xs`, `icon-sm`, `icon`, `icon-lg`.
41
+
42
+ ```html
43
+ <button Button size="xs" variant="outline">Extra small</button>
44
+ <button Button size="sm" variant="outline">Small</button>
45
+ <button Button size="default" variant="outline">Default</button>
46
+ <button Button size="lg" variant="outline">Large</button>
47
+ <button Button size="icon-xs" variant="outline" aria-label="Extra small icon button">+</button>
48
+ <button Button size="icon-sm" variant="outline" aria-label="Small icon button">+</button>
49
+ <button Button size="icon" variant="outline" aria-label="Default icon button">+</button>
50
+ <button Button size="icon-lg" variant="outline" aria-label="Large icon button">+</button>
51
+ ```
52
+
53
+ ### Rounded buttons
54
+
55
+ Pass `class="rounded-full"` when you want a pill or circular button without changing the base API.
56
+
57
+ ```html
58
+ <button Button variant="outline" class="rounded-full px-5">Invite teammate</button>
59
+ <button Button variant="outline" size="icon" class="rounded-full" aria-label="Scroll to top">
60
+ <svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
61
+ <path d="m12 19 0-14" />
62
+ <path d="m5 12 7-7 7 7" />
63
+ </svg>
64
+ </button>
65
+ ```
66
+
67
+ ### Loading and disabled states
68
+
69
+ Project a spinner element into the button and set `disabled` while async work is pending.
70
+
71
+ ```html
72
+ <button Button variant="outline" disabled>
73
+ <span
74
+ aria-hidden="true"
75
+ class="inline-block h-3.5 w-3.5 animate-spin rounded-full border-2 border-current border-t-transparent"
76
+ ></span>
77
+ Generating
78
+ </button>
79
+ ```
80
+
81
+ ### Semantic host mapping
82
+
83
+ React's `asChild` pattern maps to choosing the right native host directly in Angular templates.
84
+
85
+ ```html
86
+ <button Button type="button">Save changes</button>
87
+ <a Button href="/account" variant="link">Go to account</a>
88
+ ```
89
+
90
+ ## API reference
91
+
92
+ | Input | Type | Default |
93
+ | --------- | ------------------------------------------------------------------------------------ | ----------- |
94
+ | `variant` | `'default' \| 'secondary' \| 'destructive' \| 'outline' \| 'ghost' \| 'link'` | `'default'` |
95
+ | `size` | `'xs' \| 'sm' \| 'default' \| 'lg' \| 'icon-xs' \| 'icon-sm' \| 'icon' \| 'icon-lg'` | `'default'` |
96
+ | `class` | `string` | `''` |
97
+
98
+ The selected variant + size are also exposed via `data-variant` / `data-size`
99
+ attributes on the host for styling overrides.
100
+
101
+ Hosts: `button[Button]` and `a[Button]`.
102
+
103
+ Re-exports: `buttonVariants`, `ButtonVariant`, `ButtonSize`.
104
+
105
+ ## Styling and theming
106
+
107
+ Tokens: `--primary`, `--primary-foreground`, `--secondary`, `--destructive`,
108
+ `--border`, `--accent`, `--ring`.
109
+
110
+ Every state (hover, focus-visible, active, disabled) is covered by the variants.
111
+ Focus-visible uses a 2px `ring-ring` outline for keyboard users.
112
+
113
+ Pass `class` to layer width, shape, and spacing overrides such as `rounded-full`, `w-full`, or responsive layout utilities.
114
+
115
+ The local primitive already opts into `cursor-pointer` for interactive hosts, so you do not need an extra Tailwind base-layer override to restore button cursors.
116
+
117
+ ## Accessibility
118
+
119
+ Attribute selectors force you to pick a real semantic element:
120
+
121
+ - Use `<button Button>` for actions that don't navigate.
122
+ - Use `<a Button href="…">` for navigation.
123
+ - Add an `aria-label` to icon-only buttons.
124
+ - Use `type="button"` inside forms unless the button should submit.
125
+
126
+ Avoid faking buttons with `<div>` — keyboard and screen-reader support depend on
127
+ the native element.
128
+
129
+ ## Keyboard interactions
130
+
131
+ - Native buttons support Tab, Enter, and Space automatically.
132
+ - Anchors with `href` participate in normal link focus and Enter activation.
133
+
134
+ ## Angular notes
135
+
136
+ - Import `ButtonComponent` into the standalone component that renders the host element.
137
+ - There is no Angular `asChild` input; pick the semantic host element directly.
138
+
139
+ ## Source parity
140
+
141
+ This Angular version follows the shadcn Button information architecture while translating examples to native hosts, standalone imports, and Angular-friendly template patterns.