@blueprint-platform/components 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/README.md +10 -2
  2. package/dist/generators/ui/files/shared/ui/accordion/src/index.ts +16 -0
  3. package/dist/generators/ui/files/shared/ui/accordion/src/lib/hlm-accordion-content.ts +27 -0
  4. package/dist/generators/ui/files/shared/ui/accordion/src/lib/hlm-accordion-item.ts +22 -0
  5. package/dist/generators/ui/files/shared/ui/accordion/src/lib/hlm-accordion-trigger.ts +40 -0
  6. package/dist/generators/ui/files/shared/ui/accordion/src/lib/hlm-accordion.ts +16 -0
  7. package/dist/generators/ui/files/shared/ui/alert/src/index.ts +16 -0
  8. package/dist/generators/ui/files/shared/ui/alert/src/lib/hlm-alert-action.ts +14 -0
  9. package/dist/generators/ui/files/shared/ui/alert/src/lib/hlm-alert-description.ts +17 -0
  10. package/dist/generators/ui/files/shared/ui/alert/src/lib/hlm-alert-title.ts +17 -0
  11. package/dist/generators/ui/files/shared/ui/alert/src/lib/hlm-alert.ts +36 -0
  12. package/dist/generators/ui/files/shared/ui/alert-dialog/src/index.ts +40 -0
  13. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-action.ts +11 -0
  14. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-cancel.ts +13 -0
  15. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-content.ts +25 -0
  16. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-description.ts +17 -0
  17. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-footer.ts +15 -0
  18. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-header.ts +15 -0
  19. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-media.ts +15 -0
  20. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-overlay.ts +28 -0
  21. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-portal.ts +8 -0
  22. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-title.ts +17 -0
  23. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog-trigger.ts +14 -0
  24. package/dist/generators/ui/files/shared/ui/alert-dialog/src/lib/hlm-alert-dialog.ts +25 -0
  25. package/dist/generators/ui/files/shared/ui/aspect-ratio/src/index.ts +5 -0
  26. package/dist/generators/ui/files/shared/ui/aspect-ratio/src/lib/hlm-aspect-ratio.ts +35 -0
  27. package/dist/generators/ui/files/shared/ui/attachment/src/index.ts +31 -0
  28. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-action.ts +15 -0
  29. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-actions.ts +15 -0
  30. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-content.ts +15 -0
  31. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-description.ts +15 -0
  32. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-group.ts +15 -0
  33. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-media.ts +36 -0
  34. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-title.ts +15 -0
  35. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment-trigger.ts +23 -0
  36. package/dist/generators/ui/files/shared/ui/attachment/src/lib/hlm-attachment.ts +47 -0
  37. package/dist/generators/ui/files/shared/ui/autocomplete/src/index.ts +40 -0
  38. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-content.ts +16 -0
  39. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-empty.ts +17 -0
  40. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-group.ts +14 -0
  41. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-input.ts +77 -0
  42. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-item.ts +36 -0
  43. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-label.ts +14 -0
  44. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-list.ts +17 -0
  45. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-portal.ts +8 -0
  46. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-search.ts +37 -0
  47. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-separator.ts +14 -0
  48. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete-status.ts +17 -0
  49. package/dist/generators/ui/files/shared/ui/autocomplete/src/lib/hlm-autocomplete.ts +44 -0
  50. package/dist/generators/ui/files/shared/ui/avatar/src/index.ts +22 -0
  51. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar-badge.ts +19 -0
  52. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar-fallback.ts +20 -0
  53. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar-group-count.ts +17 -0
  54. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar-group.ts +17 -0
  55. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar-image.ts +19 -0
  56. package/dist/generators/ui/files/shared/ui/avatar/src/lib/hlm-avatar.ts +31 -0
  57. package/dist/generators/ui/files/shared/ui/badge/src/index.ts +5 -0
  58. package/dist/generators/ui/files/shared/ui/badge/src/lib/hlm-badge.ts +40 -0
  59. package/dist/generators/ui/files/shared/ui/breadcrumb/src/index.ts +25 -0
  60. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-ellipsis.ts +27 -0
  61. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-item.ts +14 -0
  62. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-link.ts +36 -0
  63. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-list.ts +16 -0
  64. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-page.ts +17 -0
  65. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb-separator.ts +27 -0
  66. package/dist/generators/ui/files/shared/ui/breadcrumb/src/lib/hlm-breadcrumb.ts +13 -0
  67. package/dist/generators/ui/files/shared/ui/bubble/src/index.ts +16 -0
  68. package/dist/generators/ui/files/shared/ui/bubble/src/lib/hlm-bubble-content.ts +15 -0
  69. package/dist/generators/ui/files/shared/ui/bubble/src/lib/hlm-bubble-group.ts +12 -0
  70. package/dist/generators/ui/files/shared/ui/bubble/src/lib/hlm-bubble-reactions.ts +43 -0
  71. package/dist/generators/ui/files/shared/ui/bubble/src/lib/hlm-bubble.ts +53 -0
  72. package/dist/generators/ui/files/shared/ui/button/src/index.ts +6 -0
  73. package/dist/generators/ui/files/shared/ui/button/src/lib/hlm-button.token.ts +22 -0
  74. package/dist/generators/ui/files/shared/ui/button/src/lib/hlm-button.ts +72 -0
  75. package/dist/generators/ui/files/shared/ui/button-group/src/index.ts +13 -0
  76. package/dist/generators/ui/files/shared/ui/button-group/src/lib/hlm-button-group-separator.ts +21 -0
  77. package/dist/generators/ui/files/shared/ui/button-group/src/lib/hlm-button-group-text.ts +17 -0
  78. package/dist/generators/ui/files/shared/ui/button-group/src/lib/hlm-button-group.ts +36 -0
  79. package/dist/generators/ui/files/shared/ui/calendar/src/index.ts +16 -0
  80. package/dist/generators/ui/files/shared/ui/calendar/src/lib/hlm-calendar-multi.ts +195 -0
  81. package/dist/generators/ui/files/shared/ui/calendar/src/lib/hlm-calendar-range.ts +194 -0
  82. package/dist/generators/ui/files/shared/ui/calendar/src/lib/hlm-calendar.ts +189 -0
  83. package/dist/generators/ui/files/shared/ui/calendar/src/lib/hlm-month-year-calendar.ts +119 -0
  84. package/dist/generators/ui/files/shared/ui/card/src/index.ts +25 -0
  85. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-action.ts +12 -0
  86. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-content.ts +12 -0
  87. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-description.ts +12 -0
  88. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-footer.ts +12 -0
  89. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-header.ts +15 -0
  90. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card-title.ts +12 -0
  91. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card.token.ts +19 -0
  92. package/dist/generators/ui/files/shared/ui/card/src/lib/hlm-card.ts +22 -0
  93. package/dist/generators/ui/files/shared/ui/carousel/src/index.ts +22 -0
  94. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel-content.ts +17 -0
  95. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel-item.ts +22 -0
  96. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel-next.ts +54 -0
  97. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel-previous.ts +55 -0
  98. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel-slide-display.ts +33 -0
  99. package/dist/generators/ui/files/shared/ui/carousel/src/lib/hlm-carousel.ts +105 -0
  100. package/dist/generators/ui/files/shared/ui/checkbox/src/index.ts +5 -0
  101. package/dist/generators/ui/files/shared/ui/checkbox/src/lib/hlm-checkbox.ts +161 -0
  102. package/dist/generators/ui/files/shared/ui/collapsible/src/index.ts +13 -0
  103. package/dist/generators/ui/files/shared/ui/collapsible/src/lib/hlm-collapsible-content.ts +14 -0
  104. package/dist/generators/ui/files/shared/ui/collapsible/src/lib/hlm-collapsible-trigger.ts +9 -0
  105. package/dist/generators/ui/files/shared/ui/collapsible/src/lib/hlm-collapsible.ts +15 -0
  106. package/dist/generators/ui/files/shared/ui/combobox/src/index.ts +64 -0
  107. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-chip-input.ts +14 -0
  108. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-chip-remove.ts +18 -0
  109. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-chip.ts +35 -0
  110. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-chips.ts +35 -0
  111. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-content.ts +15 -0
  112. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-empty.ts +17 -0
  113. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-group.ts +14 -0
  114. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-input.ts +93 -0
  115. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-item.ts +36 -0
  116. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-label.ts +14 -0
  117. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-list.ts +17 -0
  118. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-multiple.ts +46 -0
  119. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-placeholder.ts +17 -0
  120. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-portal.ts +8 -0
  121. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-separator.ts +14 -0
  122. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-status.ts +17 -0
  123. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-trigger.ts +68 -0
  124. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-value-template.ts +5 -0
  125. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-value.ts +14 -0
  126. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox-values.ts +5 -0
  127. package/dist/generators/ui/files/shared/ui/combobox/src/lib/hlm-combobox.ts +46 -0
  128. package/dist/generators/ui/files/shared/ui/command/src/index.ts +37 -0
  129. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-dialog.ts +58 -0
  130. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-empty-state.ts +8 -0
  131. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-empty.ts +14 -0
  132. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-group-label.ts +15 -0
  133. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-group.ts +24 -0
  134. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-input.ts +41 -0
  135. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-item.ts +25 -0
  136. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-list.ts +23 -0
  137. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-separator.ts +16 -0
  138. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command-shortcut.ts +17 -0
  139. package/dist/generators/ui/files/shared/ui/command/src/lib/hlm-command.ts +25 -0
  140. package/dist/generators/ui/files/shared/ui/context-menu/src/index.ts +6 -0
  141. package/dist/generators/ui/files/shared/ui/context-menu/src/lib/hlm-context-menu-token.ts +22 -0
  142. package/dist/generators/ui/files/shared/ui/context-menu/src/lib/hlm-context-menu-trigger.ts +70 -0
  143. package/dist/generators/ui/files/shared/ui/date-picker/src/index.ts +38 -0
  144. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-multi-input.ts +104 -0
  145. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker-anchor.ts +23 -0
  146. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker-input.ts +105 -0
  147. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker-multi.token.ts +109 -0
  148. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker-multi.ts +220 -0
  149. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker-trigger.ts +104 -0
  150. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker.token.ts +69 -0
  151. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-picker.ts +203 -0
  152. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-range-input.ts +107 -0
  153. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-range-picker.token.ts +86 -0
  154. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-date-range-picker.ts +252 -0
  155. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-month-year-input.ts +105 -0
  156. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-month-year-picker.token.ts +89 -0
  157. package/dist/generators/ui/files/shared/ui/date-picker/src/lib/hlm-month-year-picker.ts +196 -0
  158. package/dist/generators/ui/files/shared/ui/dialog/src/index.ts +35 -0
  159. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-close.ts +9 -0
  160. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-content.ts +74 -0
  161. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-description.ts +17 -0
  162. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-footer.ts +15 -0
  163. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-header.ts +12 -0
  164. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-overlay.ts +27 -0
  165. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-portal.ts +8 -0
  166. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-title.ts +14 -0
  167. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog-trigger.ts +14 -0
  168. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog.service.ts +46 -0
  169. package/dist/generators/ui/files/shared/ui/dialog/src/lib/hlm-dialog.ts +24 -0
  170. package/dist/generators/ui/files/shared/ui/drawer/src/index.ts +34 -0
  171. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-close.ts +9 -0
  172. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-content.ts +38 -0
  173. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-description.ts +14 -0
  174. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-footer.ts +12 -0
  175. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-header.ts +15 -0
  176. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-overlay.ts +27 -0
  177. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-portal.ts +8 -0
  178. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-title.ts +14 -0
  179. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer-trigger.ts +9 -0
  180. package/dist/generators/ui/files/shared/ui/drawer/src/lib/hlm-drawer.ts +29 -0
  181. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/index.ts +49 -0
  182. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-checkbox-indicator.ts +21 -0
  183. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-checkbox.ts +54 -0
  184. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-focus-on-hover.ts +35 -0
  185. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-group.ts +14 -0
  186. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-item-sub-indicator.ts +19 -0
  187. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-item.ts +42 -0
  188. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-label.ts +20 -0
  189. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-radio-indicator.ts +21 -0
  190. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-radio.ts +49 -0
  191. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-separator.ts +12 -0
  192. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-shortcut.ts +15 -0
  193. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-sub-trigger.ts +52 -0
  194. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-sub.ts +53 -0
  195. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-token.ts +26 -0
  196. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu-trigger.ts +46 -0
  197. package/dist/generators/ui/files/shared/ui/dropdown-menu/src/lib/hlm-dropdown-menu.ts +57 -0
  198. package/dist/generators/ui/files/shared/ui/empty/src/index.ts +22 -0
  199. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty-content.ts +14 -0
  200. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty-description.ts +15 -0
  201. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty-header.ts +12 -0
  202. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty-media.ts +35 -0
  203. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty-title.ts +12 -0
  204. package/dist/generators/ui/files/shared/ui/empty/src/lib/hlm-empty.ts +15 -0
  205. package/dist/generators/ui/files/shared/ui/field/src/index.ts +34 -0
  206. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-content.ts +12 -0
  207. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-description.ts +53 -0
  208. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-error.ts +100 -0
  209. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-group.ts +15 -0
  210. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-label.ts +17 -0
  211. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-legend.ts +19 -0
  212. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-separator.ts +24 -0
  213. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-set.ts +15 -0
  214. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field-title.ts +15 -0
  215. package/dist/generators/ui/files/shared/ui/field/src/lib/hlm-field.ts +47 -0
  216. package/dist/generators/ui/files/shared/ui/hover-card/src/index.ts +16 -0
  217. package/dist/generators/ui/files/shared/ui/hover-card/src/lib/hlm-hover-card-content.ts +31 -0
  218. package/dist/generators/ui/files/shared/ui/hover-card/src/lib/hlm-hover-card-portal.ts +8 -0
  219. package/dist/generators/ui/files/shared/ui/hover-card/src/lib/hlm-hover-card-trigger.ts +23 -0
  220. package/dist/generators/ui/files/shared/ui/hover-card/src/lib/hlm-hover-card.ts +11 -0
  221. package/dist/generators/ui/files/shared/ui/input/src/index.ts +5 -0
  222. package/dist/generators/ui/files/shared/ui/input/src/lib/hlm-input.ts +21 -0
  223. package/dist/generators/ui/files/shared/ui/input-group/src/index.ts +22 -0
  224. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group-addon.ts +40 -0
  225. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group-button.ts +47 -0
  226. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group-input.ts +17 -0
  227. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group-text.ts +14 -0
  228. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group-textarea.ts +17 -0
  229. package/dist/generators/ui/files/shared/ui/input-group/src/lib/hlm-input-group.ts +18 -0
  230. package/dist/generators/ui/files/shared/ui/input-otp/src/index.ts +19 -0
  231. package/dist/generators/ui/files/shared/ui/input-otp/src/lib/hlm-input-otp-fake-caret.ts +13 -0
  232. package/dist/generators/ui/files/shared/ui/input-otp/src/lib/hlm-input-otp-group.ts +15 -0
  233. package/dist/generators/ui/files/shared/ui/input-otp/src/lib/hlm-input-otp-separator.ts +21 -0
  234. package/dist/generators/ui/files/shared/ui/input-otp/src/lib/hlm-input-otp-slot.ts +39 -0
  235. package/dist/generators/ui/files/shared/ui/input-otp/src/lib/hlm-input-otp.ts +12 -0
  236. package/dist/generators/ui/files/shared/ui/item/src/index.ts +35 -0
  237. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-actions.ts +12 -0
  238. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-content.ts +15 -0
  239. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-description.ts +15 -0
  240. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-footer.ts +12 -0
  241. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-group.ts +15 -0
  242. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-header.ts +12 -0
  243. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-media.ts +38 -0
  244. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-separator.ts +15 -0
  245. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-title.ts +15 -0
  246. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item-token.ts +41 -0
  247. package/dist/generators/ui/files/shared/ui/item/src/lib/hlm-item.ts +46 -0
  248. package/dist/generators/ui/files/shared/ui/kbd/src/index.ts +7 -0
  249. package/dist/generators/ui/files/shared/ui/kbd/src/lib/hlm-kbd-group.ts +14 -0
  250. package/dist/generators/ui/files/shared/ui/kbd/src/lib/hlm-kbd.ts +17 -0
  251. package/dist/generators/ui/files/shared/ui/label/src/index.ts +5 -0
  252. package/dist/generators/ui/files/shared/ui/label/src/lib/hlm-label.ts +17 -0
  253. package/dist/generators/ui/files/shared/ui/language-switcher/language-switcher.ts +52 -0
  254. package/dist/generators/ui/files/shared/ui/marker/src/index.ts +9 -0
  255. package/dist/generators/ui/files/shared/ui/marker/src/lib/hlm-marker-content.ts +15 -0
  256. package/dist/generators/ui/files/shared/ui/marker/src/lib/hlm-marker-icon.ts +15 -0
  257. package/dist/generators/ui/files/shared/ui/marker/src/lib/hlm-marker.ts +37 -0
  258. package/dist/generators/ui/files/shared/ui/menubar/src/index.ts +8 -0
  259. package/dist/generators/ui/files/shared/ui/menubar/src/lib/hlm-menubar-token.ts +22 -0
  260. package/dist/generators/ui/files/shared/ui/menubar/src/lib/hlm-menubar-trigger.ts +69 -0
  261. package/dist/generators/ui/files/shared/ui/menubar/src/lib/hlm-menubar.ts +16 -0
  262. package/dist/generators/ui/files/shared/ui/message/src/index.ts +22 -0
  263. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message-avatar.ts +15 -0
  264. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message-content.ts +15 -0
  265. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message-footer.ts +15 -0
  266. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message-group.ts +12 -0
  267. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message-header.ts +15 -0
  268. package/dist/generators/ui/files/shared/ui/message/src/lib/hlm-message.ts +24 -0
  269. package/dist/generators/ui/files/shared/ui/native-select/src/index.ts +13 -0
  270. package/dist/generators/ui/files/shared/ui/native-select/src/lib/hlm-native-select-opt-group.ts +12 -0
  271. package/dist/generators/ui/files/shared/ui/native-select/src/lib/hlm-native-select-option.ts +12 -0
  272. package/dist/generators/ui/files/shared/ui/native-select/src/lib/hlm-native-select.ts +161 -0
  273. package/dist/generators/ui/files/shared/ui/navigation-menu/src/index.ts +25 -0
  274. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-content.ts +24 -0
  275. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-item.ts +16 -0
  276. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-link.ts +19 -0
  277. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-list.ts +23 -0
  278. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-portal.ts +8 -0
  279. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu-trigger.ts +30 -0
  280. package/dist/generators/ui/files/shared/ui/navigation-menu/src/lib/hlm-navigation-menu.ts +24 -0
  281. package/dist/generators/ui/files/shared/ui/pagination/src/index.ts +31 -0
  282. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-numbered-pagination-query-params.ts +191 -0
  283. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-numbered-pagination.ts +290 -0
  284. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-content.ts +12 -0
  285. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-ellipsis.ts +27 -0
  286. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-item.ts +7 -0
  287. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-link.ts +51 -0
  288. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-next.ts +65 -0
  289. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination-previous.ts +65 -0
  290. package/dist/generators/ui/files/shared/ui/pagination/src/lib/hlm-pagination.ts +19 -0
  291. package/dist/generators/ui/files/shared/ui/popover/src/index.ts +25 -0
  292. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-content.ts +25 -0
  293. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-description.ts +12 -0
  294. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-header.ts +12 -0
  295. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-portal.ts +8 -0
  296. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-title.ts +12 -0
  297. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover-trigger.ts +14 -0
  298. package/dist/generators/ui/files/shared/ui/popover/src/lib/hlm-popover.ts +23 -0
  299. package/dist/generators/ui/files/shared/ui/progress/src/index.ts +7 -0
  300. package/dist/generators/ui/files/shared/ui/progress/src/lib/hlm-progress-indicator.ts +31 -0
  301. package/dist/generators/ui/files/shared/ui/progress/src/lib/hlm-progress.ts +14 -0
  302. package/dist/generators/ui/files/shared/ui/radio-group/src/index.ts +9 -0
  303. package/dist/generators/ui/files/shared/ui/radio-group/src/lib/hlm-radio-group.ts +44 -0
  304. package/dist/generators/ui/files/shared/ui/radio-group/src/lib/hlm-radio-indicator.ts +21 -0
  305. package/dist/generators/ui/files/shared/ui/radio-group/src/lib/hlm-radio.ts +130 -0
  306. package/dist/generators/ui/files/shared/ui/resizable/src/index.ts +13 -0
  307. package/dist/generators/ui/files/shared/ui/resizable/src/lib/hlm-resizable-group.ts +22 -0
  308. package/dist/generators/ui/files/shared/ui/resizable/src/lib/hlm-resizable-handle.ts +28 -0
  309. package/dist/generators/ui/files/shared/ui/resizable/src/lib/hlm-resizable-panel.ts +23 -0
  310. package/dist/generators/ui/files/shared/ui/scroll-area/src/index.ts +5 -0
  311. package/dist/generators/ui/files/shared/ui/scroll-area/src/lib/hlm-scroll-area.ts +21 -0
  312. package/dist/generators/ui/files/shared/ui/select/src/index.ts +52 -0
  313. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-content.ts +44 -0
  314. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-group.ts +14 -0
  315. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-item.ts +36 -0
  316. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-label.ts +14 -0
  317. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-multiple.ts +37 -0
  318. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-placeholder.ts +17 -0
  319. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-portal.ts +8 -0
  320. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-scroll-down.ts +22 -0
  321. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-scroll-up.ts +22 -0
  322. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-separator.ts +14 -0
  323. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-trigger.ts +58 -0
  324. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-value-template.ts +5 -0
  325. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-value.ts +18 -0
  326. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-values-content.ts +9 -0
  327. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select-values.ts +5 -0
  328. package/dist/generators/ui/files/shared/ui/select/src/lib/hlm-select.ts +37 -0
  329. package/dist/generators/ui/files/shared/ui/separator/src/index.ts +5 -0
  330. package/dist/generators/ui/files/shared/ui/separator/src/lib/hlm-separator.ts +19 -0
  331. package/dist/generators/ui/files/shared/ui/sheet/src/index.ts +34 -0
  332. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-close.ts +9 -0
  333. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-content.ts +66 -0
  334. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-description.ts +14 -0
  335. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-footer.ts +12 -0
  336. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-header.ts +12 -0
  337. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-overlay.ts +27 -0
  338. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-portal.ts +8 -0
  339. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-title.ts +14 -0
  340. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet-trigger.ts +9 -0
  341. package/dist/generators/ui/files/shared/ui/sheet/src/lib/hlm-sheet.ts +29 -0
  342. package/dist/generators/ui/files/shared/ui/sidebar/src/index.ts +75 -0
  343. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-content.ts +18 -0
  344. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-footer.ts +15 -0
  345. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-group-action.ts +18 -0
  346. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-group-content.ts +15 -0
  347. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-group-label.ts +18 -0
  348. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-group.ts +15 -0
  349. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-header.ts +15 -0
  350. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-input.ts +17 -0
  351. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-inset.ts +15 -0
  352. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-action.ts +24 -0
  353. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-badge.ts +18 -0
  354. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-button.ts +93 -0
  355. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-item.ts +15 -0
  356. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-skeleton.ts +33 -0
  357. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-sub-button.ts +41 -0
  358. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-sub-item.ts +15 -0
  359. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu-sub.ts +18 -0
  360. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-menu.ts +15 -0
  361. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-rail.ts +34 -0
  362. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-separator.ts +17 -0
  363. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-trigger.ts +35 -0
  364. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar-wrapper.ts +24 -0
  365. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar.service.ts +136 -0
  366. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar.token.ts +35 -0
  367. package/dist/generators/ui/files/shared/ui/sidebar/src/lib/hlm-sidebar.ts +139 -0
  368. package/dist/generators/ui/files/shared/ui/skeleton/src/index.ts +5 -0
  369. package/dist/generators/ui/files/shared/ui/skeleton/src/lib/hlm-skeleton.ts +14 -0
  370. package/dist/generators/ui/files/shared/ui/slider/src/index.ts +4 -0
  371. package/dist/generators/ui/files/shared/ui/slider/src/lib/hlm-slider.ts +81 -0
  372. package/dist/generators/ui/files/shared/ui/sonner/src/index.ts +5 -0
  373. package/dist/generators/ui/files/shared/ui/sonner/src/lib/hlm-toaster.ts +119 -0
  374. package/dist/generators/ui/files/shared/ui/spinner/src/index.ts +5 -0
  375. package/dist/generators/ui/files/shared/ui/spinner/src/lib/hlm-spinner.ts +31 -0
  376. package/dist/generators/ui/files/shared/ui/switch/src/index.ts +7 -0
  377. package/dist/generators/ui/files/shared/ui/switch/src/lib/hlm-switch-thumb.ts +15 -0
  378. package/dist/generators/ui/files/shared/ui/switch/src/lib/hlm-switch.ts +120 -0
  379. package/dist/generators/ui/files/shared/ui/table/src/index.ts +25 -0
  380. package/dist/generators/ui/files/shared/ui/table/src/lib/hlm-table.ts +129 -0
  381. package/dist/generators/ui/files/shared/ui/tabs/src/index.ts +22 -0
  382. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs-content-lazy.ts +8 -0
  383. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs-content.ts +18 -0
  384. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs-list.ts +36 -0
  385. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs-paginated-list.ts +118 -0
  386. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs-trigger.ts +24 -0
  387. package/dist/generators/ui/files/shared/ui/tabs/src/lib/hlm-tabs.ts +24 -0
  388. package/dist/generators/ui/files/shared/ui/textarea/src/index.ts +5 -0
  389. package/dist/generators/ui/files/shared/ui/textarea/src/lib/hlm-textarea.ts +21 -0
  390. package/dist/generators/ui/files/shared/ui/theme-switcher/theme-switcher.ts +29 -0
  391. package/dist/generators/ui/files/shared/ui/toggle/src/index.ts +5 -0
  392. package/dist/generators/ui/files/shared/ui/toggle/src/lib/hlm-toggle.ts +52 -0
  393. package/dist/generators/ui/files/shared/ui/toggle-group/src/index.ts +8 -0
  394. package/dist/generators/ui/files/shared/ui/toggle-group/src/lib/hlm-toggle-group-item.ts +41 -0
  395. package/dist/generators/ui/files/shared/ui/toggle-group/src/lib/hlm-toggle-group.token.ts +12 -0
  396. package/dist/generators/ui/files/shared/ui/toggle-group/src/lib/hlm-toggle-group.ts +39 -0
  397. package/dist/generators/ui/files/shared/ui/tooltip/src/index.ts +5 -0
  398. package/dist/generators/ui/files/shared/ui/tooltip/src/lib/hlm-tooltip.ts +44 -0
  399. package/dist/generators/ui/files/shared/ui/typography/src/index.ts +40 -0
  400. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-blockquote.ts +13 -0
  401. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-code.ts +14 -0
  402. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-h1.ts +13 -0
  403. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-h2.ts +14 -0
  404. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-h3.ts +13 -0
  405. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-h4.ts +13 -0
  406. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-large.ts +13 -0
  407. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-lead.ts +13 -0
  408. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-muted.ts +13 -0
  409. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-p.ts +13 -0
  410. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-small.ts +13 -0
  411. package/dist/generators/ui/files/shared/ui/typography/src/lib/hlm-ul.ts +13 -0
  412. package/dist/generators/ui/files/shared/ui/user-menu/user-menu.html +64 -0
  413. package/dist/generators/ui/files/shared/ui/user-menu/user-menu.scss +3 -0
  414. package/dist/generators/ui/files/shared/ui/user-menu/user-menu.ts +30 -0
  415. package/dist/generators/ui/files/shared/ui/utils/src/index.ts +2 -0
  416. package/dist/generators/ui/files/shared/ui/utils/src/lib/hlm.ts +313 -0
  417. package/dist/generators/ui/files/shared/ui/utils/src/lib/provide-spartan-hlm.ts +34 -0
  418. package/dist/generators/ui/lib/npm-deps.d.ts +14 -0
  419. package/dist/generators/ui/lib/npm-deps.d.ts.map +1 -0
  420. package/dist/generators/ui/lib/npm-deps.js +72 -0
  421. package/dist/generators/ui/lib/resolve-deps.d.ts +25 -0
  422. package/dist/generators/ui/lib/resolve-deps.d.ts.map +1 -0
  423. package/dist/generators/ui/lib/resolve-deps.js +75 -0
  424. package/dist/generators/ui/schema.d.ts +14 -0
  425. package/dist/generators/ui/schema.json +42 -0
  426. package/dist/generators/ui/ui.d.ts +4 -0
  427. package/dist/generators/ui/ui.d.ts.map +1 -0
  428. package/dist/generators/ui/ui.js +84 -0
  429. package/dist/index.d.ts +2 -0
  430. package/dist/index.d.ts.map +1 -0
  431. package/dist/index.js +2 -0
  432. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  433. package/generators.json +12 -0
  434. package/package.json +75 -4
@@ -0,0 +1,35 @@
1
+ import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';
2
+ import { NgIcon, provideIcons } from '@ng-icons/core';
3
+ import { lucidePanelLeft } from '@ng-icons/lucide';
4
+ import { HlmButton, provideBrnButtonConfig } from '@blueprint-platform/ui/button';
5
+ import { HlmSidebarService } from './hlm-sidebar.service';
6
+
7
+ @Component({
8
+ // eslint-disable-next-line @angular-eslint/component-selector
9
+ selector: 'button[hlmSidebarTrigger]',
10
+ imports: [NgIcon],
11
+ providers: [
12
+ provideIcons({ lucidePanelLeft }),
13
+ provideBrnButtonConfig({ variant: 'ghost', size: 'icon-sm' }),
14
+ ],
15
+ changeDetection: ChangeDetectionStrategy.OnPush,
16
+ hostDirectives: [{ directive: HlmButton, inputs: ['variant', 'size'] }],
17
+ host: {
18
+ 'data-slot': 'sidebar-trigger',
19
+ 'data-sidebar': 'trigger',
20
+ '(click)': '_onClick()',
21
+ },
22
+ template: `
23
+ <ng-icon name="lucidePanelLeft" />
24
+ <span class="sr-only">{{ srOnlyText() }}</span>
25
+ `,
26
+ })
27
+ export class HlmSidebarTrigger {
28
+ private readonly _sidebarService = inject(HlmSidebarService);
29
+
30
+ public readonly srOnlyText = input<string>('Toggle Sidebar');
31
+
32
+ protected _onClick(): void {
33
+ this._sidebarService.toggleSidebar();
34
+ }
35
+ }
@@ -0,0 +1,24 @@
1
+ import { Directive, input } from '@angular/core';
2
+ import { classes } from '@blueprint-platform/ui/utils';
3
+ import { injectHlmSidebarConfig } from './hlm-sidebar.token';
4
+
5
+ @Directive({
6
+ selector: '[hlmSidebarWrapper],hlm-sidebar-wrapper',
7
+ host: {
8
+ 'data-slot': 'sidebar-wrapper',
9
+ '[style.--sidebar-width]': 'sidebarWidth()',
10
+ '[style.--sidebar-width-icon]': 'sidebarWidthIcon()',
11
+ },
12
+ })
13
+ export class HlmSidebarWrapper {
14
+ private readonly _config = injectHlmSidebarConfig();
15
+
16
+ public readonly sidebarWidth = input<string>(this._config.sidebarWidth);
17
+ public readonly sidebarWidthIcon = input<string>(this._config.sidebarWidthIcon);
18
+
19
+ constructor() {
20
+ classes(
21
+ () => 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',
22
+ );
23
+ }
24
+ }
@@ -0,0 +1,136 @@
1
+ import { isPlatformServer } from '@angular/common';
2
+ import {
3
+ afterNextRender,
4
+ computed,
5
+ DestroyRef,
6
+ DOCUMENT,
7
+ inject,
8
+ Injectable,
9
+ PLATFORM_ID,
10
+ REQUEST,
11
+ type Signal,
12
+ signal,
13
+ } from '@angular/core';
14
+ import { injectHlmSidebarConfig } from './hlm-sidebar.token';
15
+
16
+ export type SidebarVariant = 'sidebar' | 'floating' | 'inset';
17
+
18
+ @Injectable({ providedIn: 'root' })
19
+ export class HlmSidebarService {
20
+ private readonly _platformId = inject(PLATFORM_ID);
21
+ private readonly _request = inject(REQUEST, { optional: true });
22
+ private readonly _config = injectHlmSidebarConfig();
23
+ private readonly _document = inject(DOCUMENT);
24
+ private readonly _window = this._document.defaultView;
25
+ private readonly _open = signal<boolean>(this._config.defaultOpen);
26
+ private readonly _openMobile = signal<boolean>(false);
27
+ private readonly _isMobile = signal<boolean>(false);
28
+ private readonly _variant = signal<SidebarVariant>('sidebar');
29
+ private _mediaQuery: MediaQueryList | null = null;
30
+
31
+ public readonly open: Signal<boolean> = this._open.asReadonly();
32
+ public readonly openMobile: Signal<boolean> = this._openMobile.asReadonly();
33
+ public readonly isMobile: Signal<boolean> = this._isMobile.asReadonly();
34
+ public readonly variant: Signal<SidebarVariant> = this._variant.asReadonly();
35
+
36
+ public readonly state = computed<'expanded' | 'collapsed'>(() =>
37
+ this._open() ? 'expanded' : 'collapsed',
38
+ );
39
+
40
+ constructor() {
41
+ const destroyRef = inject(DestroyRef);
42
+ this.restoreStateFromCookie();
43
+
44
+ afterNextRender(() => {
45
+ if (!this._window || typeof this._window.matchMedia !== 'function') return;
46
+
47
+ // Initialize MediaQueryList
48
+ this._mediaQuery = this._window.matchMedia(`(max-width: ${this._config.mobileBreakpoint})`);
49
+ this._isMobile.set(this._mediaQuery.matches);
50
+
51
+ // Add media query listener
52
+ const mediaQueryHandler = (e: MediaQueryListEvent) => {
53
+ this._isMobile.set(e.matches);
54
+ // If switching from mobile to desktop, close mobile sidebar
55
+ if (!e.matches) this._openMobile.set(false);
56
+ };
57
+ this._mediaQuery.addEventListener('change', mediaQueryHandler);
58
+
59
+ // Add keyboard shortcut listener
60
+ const keydownHandler = (event: KeyboardEvent) => {
61
+ if (
62
+ event.key === this._config.sidebarKeyboardShortcut &&
63
+ (event.ctrlKey || event.metaKey)
64
+ ) {
65
+ event.preventDefault();
66
+ this.toggleSidebar();
67
+ }
68
+ };
69
+ this._window.addEventListener('keydown', keydownHandler);
70
+
71
+ // Add resize listener with debounce
72
+ let resizeTimeout: number;
73
+ const resizeHandler = () => {
74
+ if (!this._window) return;
75
+
76
+ if (resizeTimeout) this._window.clearTimeout(resizeTimeout);
77
+ resizeTimeout = this._window.setTimeout(() => {
78
+ if (this._mediaQuery) this._isMobile.set(this._mediaQuery.matches);
79
+ }, 100);
80
+ };
81
+ this._window.addEventListener('resize', resizeHandler);
82
+
83
+ // Cleanup listeners on destroy
84
+ destroyRef.onDestroy(() => {
85
+ if (!this._window) return;
86
+
87
+ if (this._mediaQuery) this._mediaQuery.removeEventListener('change', mediaQueryHandler);
88
+ this._window.removeEventListener('keydown', keydownHandler);
89
+ this._window.removeEventListener('resize', resizeHandler);
90
+ if (resizeTimeout) this._window.clearTimeout(resizeTimeout);
91
+ });
92
+ });
93
+ }
94
+
95
+ public setOpen(open: boolean): void {
96
+ this._open.set(open);
97
+ this._document.cookie = `${this._config.sidebarCookieName}=${open}; path=/; max-age=${this._config.sidebarCookieMaxAge}`;
98
+ }
99
+
100
+ public setOpenMobile(open: boolean): void {
101
+ if (this._isMobile()) {
102
+ this._openMobile.set(open);
103
+ }
104
+ }
105
+
106
+ public setVariant(variant: SidebarVariant): void {
107
+ this._variant.set(variant);
108
+ }
109
+
110
+ public toggleSidebar(): void {
111
+ if (this._isMobile()) {
112
+ this._openMobile.update((value) => !value);
113
+ } else {
114
+ this.setOpen(!this._open());
115
+ }
116
+ }
117
+
118
+ private restoreStateFromCookie(): void {
119
+ const cookieString = isPlatformServer(this._platformId)
120
+ ? this._request?.headers.get('cookie')
121
+ : this._document.cookie;
122
+
123
+ if (!cookieString) return;
124
+
125
+ const prefix = `${this._config.sidebarCookieName}=`;
126
+ const cookieValue = cookieString
127
+ .split(';')
128
+ .map((c) => c.trim())
129
+ .find((c) => c.startsWith(prefix))
130
+ ?.slice(prefix.length);
131
+
132
+ if (cookieValue !== undefined) {
133
+ this._open.set(cookieValue === 'true');
134
+ }
135
+ }
136
+ }
@@ -0,0 +1,35 @@
1
+ import { inject, InjectionToken, type ValueProvider } from '@angular/core';
2
+
3
+ export interface HlmSidebarConfig {
4
+ defaultOpen: boolean;
5
+ sidebarWidth: string;
6
+ sidebarWidthMobile: string;
7
+ sidebarWidthIcon: string;
8
+ sidebarCookieName: string;
9
+ sidebarCookieMaxAge: number;
10
+ sidebarKeyboardShortcut: string;
11
+ mobileBreakpoint: string;
12
+ closeMobileSidebarOnMenuButtonClick: boolean;
13
+ }
14
+
15
+ const defaultConfig: HlmSidebarConfig = {
16
+ defaultOpen: true,
17
+ sidebarWidth: '16rem',
18
+ sidebarWidthMobile: '18rem',
19
+ sidebarWidthIcon: '3rem',
20
+ sidebarCookieName: 'sidebar_state',
21
+ sidebarCookieMaxAge: 60 * 60 * 24 * 7, // 7 days in seconds
22
+ sidebarKeyboardShortcut: 'b',
23
+ mobileBreakpoint: '768px',
24
+ closeMobileSidebarOnMenuButtonClick: false,
25
+ };
26
+
27
+ const HlmSidebarConfigToken = new InjectionToken<HlmSidebarConfig>('HlmSidebarConfig');
28
+
29
+ export function provideHlmSidebarConfig(config: Partial<HlmSidebarConfig>): ValueProvider {
30
+ return { provide: HlmSidebarConfigToken, useValue: { ...defaultConfig, ...config } };
31
+ }
32
+
33
+ export function injectHlmSidebarConfig(): HlmSidebarConfig {
34
+ return inject(HlmSidebarConfigToken, { optional: true }) ?? defaultConfig;
35
+ }
@@ -0,0 +1,139 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, effect, inject, input } from '@angular/core';
3
+ import { HlmSheetImports } from '@blueprint-platform/ui/sheet';
4
+ import { classes, hlm } from '@blueprint-platform/ui/utils';
5
+ import type { ClassValue } from 'clsx';
6
+ import { HlmSidebarService, type SidebarVariant } from './hlm-sidebar.service';
7
+ import { injectHlmSidebarConfig } from './hlm-sidebar.token';
8
+
9
+ @Component({
10
+ selector: 'hlm-sidebar',
11
+ imports: [NgTemplateOutlet, HlmSheetImports],
12
+ changeDetection: ChangeDetectionStrategy.OnPush,
13
+ host: {
14
+ '[attr.data-slot]': '_dataSlot()',
15
+ '[attr.data-state]': '_dataState()',
16
+ '[attr.data-collapsible]': '_dataCollapsible()',
17
+ '[attr.data-variant]': '_dataVariant()',
18
+ '[attr.data-side]': '_dataSide()',
19
+ },
20
+ template: `
21
+ <ng-template #contentContainer>
22
+ <ng-content />
23
+ </ng-template>
24
+
25
+ @if (collapsible() === 'none') {
26
+ <ng-container *ngTemplateOutlet="contentContainer"></ng-container>
27
+ } @else if (_sidebarService.isMobile()) {
28
+ <hlm-sheet
29
+ [side]="side()"
30
+ [state]="_sidebarService.openMobile() ? 'open' : 'closed'"
31
+ (stateChanged)="_sidebarService.setOpenMobile($event === 'open')"
32
+ >
33
+ <hlm-sheet-content
34
+ *hlmSheetPortal="let ctx"
35
+ data-slot="sidebar"
36
+ data-sidebar="sidebar"
37
+ data-mobile="true"
38
+ class="bg-sidebar text-sidebar-foreground h-svh w-(--sidebar-width) p-0 [&>button]:hidden"
39
+ [style.--sidebar-width]="sidebarWidthMobile()"
40
+ >
41
+ <div class="flex h-full w-full flex-col">
42
+ <ng-container *ngTemplateOutlet="contentContainer" />
43
+ </div>
44
+ </hlm-sheet-content>
45
+ </hlm-sheet>
46
+ } @else {
47
+ <!-- Sidebar gap on desktop -->
48
+ <div data-slot="sidebar-gap" [class]="_sidebarGapComputedClass()"></div>
49
+ <div
50
+ data-slot="sidebar-container"
51
+ [attr.data-side]="_dataSide()"
52
+ [class]="_sidebarContainerComputedClass()"
53
+ >
54
+ <div
55
+ data-sidebar="sidebar"
56
+ data-slot="sidebar-inner"
57
+ class="bg-sidebar group-data-[variant=floating]:ring-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 flex size-full flex-col"
58
+ >
59
+ <ng-container *ngTemplateOutlet="contentContainer" />
60
+ </div>
61
+ </div>
62
+ }
63
+ `,
64
+ })
65
+ export class HlmSidebar {
66
+ protected readonly _sidebarService = inject(HlmSidebarService);
67
+ private readonly _config = injectHlmSidebarConfig();
68
+ public readonly sidebarWidthMobile = input<string>(this._config.sidebarWidthMobile);
69
+
70
+ public readonly side = input<'left' | 'right'>('left');
71
+ public readonly variant = input<SidebarVariant>(this._sidebarService.variant());
72
+ public readonly collapsible = input<'offcanvas' | 'icon' | 'none'>('offcanvas');
73
+
74
+ protected readonly _sidebarGapComputedClass = computed(() =>
75
+ hlm(
76
+ 'transition-[width] duration-200 ease-linear relative w-(--sidebar-width) bg-transparent',
77
+ 'group-data-[collapsible=offcanvas]:w-0',
78
+ 'group-data-[side=right]:rotate-180',
79
+ this.variant() === 'floating' || this.variant() === 'inset'
80
+ ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'
81
+ : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',
82
+ ),
83
+ );
84
+
85
+ public readonly sidebarContainerClass = input<ClassValue>('');
86
+ protected readonly _sidebarContainerComputedClass = computed(() =>
87
+ hlm(
88
+ 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex',
89
+ this.variant() === 'floating' || this.variant() === 'inset'
90
+ ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
91
+ : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',
92
+ this.sidebarContainerClass(),
93
+ ),
94
+ );
95
+
96
+ protected readonly _dataSlot = computed(() => {
97
+ return !this._sidebarService.isMobile() ? 'sidebar' : undefined;
98
+ });
99
+
100
+ private readonly _collapsibleAndNonMobile = computed(() => {
101
+ return this.collapsible() !== 'none' && !this._sidebarService.isMobile();
102
+ });
103
+
104
+ protected readonly _dataState = computed(() => {
105
+ return this._collapsibleAndNonMobile() ? this._sidebarService.state() : undefined;
106
+ });
107
+
108
+ protected readonly _dataCollapsible = computed(() => {
109
+ if (this._collapsibleAndNonMobile()) {
110
+ return this._sidebarService.state() === 'collapsed' ? this.collapsible() : '';
111
+ }
112
+ return undefined;
113
+ });
114
+
115
+ protected readonly _dataVariant = computed(() => {
116
+ return this._collapsibleAndNonMobile() ? this.variant() : undefined;
117
+ });
118
+
119
+ protected readonly _dataSide = computed(() => {
120
+ return this._collapsibleAndNonMobile() ? this.side() : undefined;
121
+ });
122
+
123
+ constructor() {
124
+ // Sync variant input with service
125
+ effect(() => {
126
+ this._sidebarService.setVariant(this.variant());
127
+ });
128
+
129
+ classes(() => {
130
+ if (this.collapsible() === 'none') {
131
+ return hlm('bg-sidebar text-sidebar-foreground flex h-svh w-(--sidebar-width) flex-col');
132
+ } else if (this._sidebarService.isMobile()) {
133
+ return '';
134
+ } else {
135
+ return hlm('group peer text-sidebar-foreground hidden md:block');
136
+ }
137
+ });
138
+ }
139
+ }
@@ -0,0 +1,5 @@
1
+ import { HlmSkeleton } from './lib/hlm-skeleton';
2
+
3
+ export * from './lib/hlm-skeleton';
4
+
5
+ export const HlmSkeletonImports = [HlmSkeleton] as const;
@@ -0,0 +1,14 @@
1
+ import { Directive } from '@angular/core';
2
+ import { classes } from '@blueprint-platform/ui/utils';
3
+
4
+ @Directive({
5
+ selector: '[hlmSkeleton],hlm-skeleton',
6
+ host: {
7
+ 'data-slot': 'skeleton',
8
+ },
9
+ })
10
+ export class HlmSkeleton {
11
+ constructor() {
12
+ classes(() => 'bg-muted rounded-md block motion-safe:animate-pulse');
13
+ }
14
+ }
@@ -0,0 +1,4 @@
1
+ export * from './lib/hlm-slider';
2
+ import { HlmSlider } from './lib/hlm-slider';
3
+
4
+ export const HlmSliderImports = [HlmSlider] as const;
@@ -0,0 +1,81 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { BrnSlider, BrnSliderImports, injectBrnSlider } from '@spartan-ng/brain/slider';
3
+ import { classes } from '@blueprint-platform/ui/utils';
4
+
5
+ @Component({
6
+ selector: 'hlm-slider, brn-slider [hlm]',
7
+ imports: [BrnSliderImports],
8
+ changeDetection: ChangeDetectionStrategy.OnPush,
9
+ hostDirectives: [
10
+ {
11
+ directive: BrnSlider,
12
+ inputs: [
13
+ 'id',
14
+ 'value',
15
+ 'disabled',
16
+ 'min',
17
+ 'max',
18
+ 'step',
19
+ 'minStepsBetweenThumbs',
20
+ 'inverted',
21
+ 'orientation',
22
+ 'showTicks',
23
+ 'maxTicks',
24
+ 'tickLabelInterval',
25
+ 'formatTick',
26
+ 'draggableRange',
27
+ 'draggableRangeOnly',
28
+ 'aria-label',
29
+ 'aria-labelledby',
30
+ ],
31
+ outputs: ['valueChange'],
32
+ },
33
+ ],
34
+ template: `
35
+ <div
36
+ class="relative flex w-full items-center group-data-vertical:w-auto group-data-vertical:flex-col"
37
+ >
38
+ <div
39
+ brnSliderTrack
40
+ class="bg-muted rounded-full data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1 relative grow overflow-hidden"
41
+ >
42
+ <div
43
+ class="bg-primary absolute select-none data-draggable-range:cursor-move data-horizontal:h-full data-vertical:w-full"
44
+ brnSliderRange
45
+ ></div>
46
+ </div>
47
+
48
+ @for (i of _slider.thumbIndexes(); track i) {
49
+ <span
50
+ class="border-ring ring-ring/50 size-3 rounded-full border bg-white transition-[color,box-shadow] hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 absolute block shrink-0 select-none after:absolute after:-inset-2"
51
+ brnSliderThumb
52
+ ></span>
53
+ }
54
+ </div>
55
+
56
+ @if (_slider.showTicks()) {
57
+ <div
58
+ class="px-1.5 group-data-vertical:px-0 group-data-vertical:py-1.5 text-muted-foreground mt-3 flex w-full items-start justify-between gap-1 text-xs font-medium group-data-horizontal:group-data-inverted:flex-row-reverse group-data-vertical:ms-3 group-data-vertical:mt-0 group-data-vertical:w-auto group-data-vertical:flex-col-reverse group-data-vertical:group-data-inverted:flex-col"
59
+ >
60
+ <div
61
+ *brnSliderTick="let tick; let formattedTick = formattedTick"
62
+ class="group flex w-0 flex-col items-center justify-center gap-2 group-data-vertical:h-0 group-data-vertical:w-auto group-data-vertical:flex-row"
63
+ >
64
+ <div
65
+ class="bg-muted-foreground/70 h-1 w-px group-data-vertical:h-px group-data-vertical:w-1 group-data-horizontal:group-data-[skip]:h-0.5 group-data-vertical:group-data-[skip]:w-0.5"
66
+ ></div>
67
+ <div class="text-center group-data-[skip]:opacity-0">{{ formattedTick }}</div>
68
+ </div>
69
+ </div>
70
+ }
71
+ `,
72
+ })
73
+ export class HlmSlider {
74
+ protected readonly _slider = injectBrnSlider();
75
+
76
+ constructor() {
77
+ classes(() => [
78
+ 'group flex w-full touch-none flex-col select-none data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-row data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
79
+ ]);
80
+ }
81
+ }
@@ -0,0 +1,5 @@
1
+ import { HlmToaster } from './lib/hlm-toaster';
2
+
3
+ export * from './lib/hlm-toaster';
4
+
5
+ export const HlmToasterImports = [HlmToaster] as const;
@@ -0,0 +1,119 @@
1
+ import type { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
+ import {
3
+ ChangeDetectionStrategy,
4
+ Component,
5
+ booleanAttribute,
6
+ computed,
7
+ input,
8
+ numberAttribute,
9
+ } from '@angular/core';
10
+ import { NgIcon, provideIcons } from '@ng-icons/core';
11
+ import {
12
+ lucideCircleCheck,
13
+ lucideInfo,
14
+ lucideLoader2,
15
+ lucideOctagonX,
16
+ lucideTriangleAlert,
17
+ } from '@ng-icons/lucide';
18
+ import { BrnSonnerImports, type ToasterProps } from '@spartan-ng/brain/sonner';
19
+ import { hlm } from '@blueprint-platform/ui/utils';
20
+ import type { ClassValue } from 'clsx';
21
+
22
+ @Component({
23
+ selector: 'hlm-toaster',
24
+ imports: [BrnSonnerImports, NgIcon],
25
+ providers: [
26
+ provideIcons({
27
+ lucideCircleCheck,
28
+ lucideInfo,
29
+ lucideTriangleAlert,
30
+ lucideOctagonX,
31
+ lucideLoader2,
32
+ }),
33
+ ],
34
+ changeDetection: ChangeDetectionStrategy.OnPush,
35
+ template: `
36
+ <brn-sonner-toaster
37
+ [class]="_computedClass()"
38
+ [invert]="invert()"
39
+ [theme]="theme()"
40
+ [position]="position()"
41
+ [hotKey]="hotKey()"
42
+ [richColors]="richColors()"
43
+ [expand]="expand()"
44
+ [duration]="duration()"
45
+ [visibleToasts]="visibleToasts()"
46
+ [closeButton]="closeButton()"
47
+ [toastOptions]="_computedToastOptions()"
48
+ [offset]="offset()"
49
+ [style]="userStyle()"
50
+ >
51
+ <ng-template #loadingIcon>
52
+ <ng-icon
53
+ name="lucideLoader2"
54
+ class="overflow-visible! text-base [&>svg]:motion-safe:animate-spin"
55
+ />
56
+ </ng-template>
57
+ <ng-template #successIcon>
58
+ <ng-icon name="lucideCircleCheck" class="overflow-visible! text-base" />
59
+ </ng-template>
60
+ <ng-template #errorIcon>
61
+ <ng-icon name="lucideOctagonX" class="overflow-visible! text-base" />
62
+ </ng-template>
63
+ <ng-template #infoIcon>
64
+ <ng-icon name="lucideInfo" class="overflow-visible! text-base" />
65
+ </ng-template>
66
+ <ng-template #warningIcon>
67
+ <ng-icon name="lucideTriangleAlert" class="overflow-visible! text-base" />
68
+ </ng-template>
69
+ </brn-sonner-toaster>
70
+ `,
71
+ })
72
+ export class HlmToaster {
73
+ public readonly invert = input<ToasterProps['invert'], BooleanInput>(false, {
74
+ transform: booleanAttribute,
75
+ });
76
+ public readonly theme = input<ToasterProps['theme']>('light');
77
+ public readonly position = input<ToasterProps['position']>('bottom-right');
78
+ public readonly hotKey = input<ToasterProps['hotkey']>(['altKey', 'KeyT']);
79
+ public readonly richColors = input<ToasterProps['richColors'], BooleanInput>(false, {
80
+ transform: booleanAttribute,
81
+ });
82
+ public readonly expand = input<ToasterProps['expand'], BooleanInput>(false, {
83
+ transform: booleanAttribute,
84
+ });
85
+ public readonly duration = input<ToasterProps['duration'], NumberInput>(4000, {
86
+ transform: numberAttribute,
87
+ });
88
+ public readonly visibleToasts = input<ToasterProps['visibleToasts'], NumberInput>(3, {
89
+ transform: numberAttribute,
90
+ });
91
+ public readonly closeButton = input<ToasterProps['closeButton'], BooleanInput>(false, {
92
+ transform: booleanAttribute,
93
+ });
94
+ public readonly toastOptions = input<ToasterProps['toastOptions']>({});
95
+
96
+ protected readonly _computedToastOptions = computed(() => {
97
+ const options = this.toastOptions();
98
+ return {
99
+ ...options,
100
+ classes: {
101
+ ...options?.classes,
102
+ toast: hlm('rounded-2xl!', options?.classes?.toast),
103
+ },
104
+ };
105
+ });
106
+ public readonly offset = input<ToasterProps['offset']>(null);
107
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
108
+ public readonly userStyle = input<Record<string, string>>(
109
+ {
110
+ '--normal-bg': 'var(--popover)',
111
+ '--normal-text': 'var(--popover-foreground)',
112
+ '--normal-border': 'var(--border)',
113
+ '--border-radius': 'var(--radius)',
114
+ },
115
+ { alias: 'style' },
116
+ );
117
+
118
+ protected readonly _computedClass = computed(() => hlm('toaster group', this.userClass()));
119
+ }
@@ -0,0 +1,5 @@
1
+ import { HlmSpinner } from './lib/hlm-spinner';
2
+
3
+ export * from './lib/hlm-spinner';
4
+
5
+ export const HlmSpinnerImports = [HlmSpinner] as const;
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import { NgIcon, provideIcons } from '@ng-icons/core';
3
+ import { lucideLoader2 } from '@ng-icons/lucide';
4
+ import { classes } from '@blueprint-platform/ui/utils';
5
+
6
+ @Component({
7
+ selector: 'hlm-spinner',
8
+ imports: [NgIcon],
9
+ providers: [provideIcons({ lucideLoader2 })],
10
+ changeDetection: ChangeDetectionStrategy.OnPush,
11
+ host: {
12
+ 'data-slot': 'spinner',
13
+ role: 'status',
14
+ '[attr.aria-label]': 'ariaLabel()',
15
+ },
16
+ template: ` <ng-icon [name]="icon()" /> `,
17
+ })
18
+ export class HlmSpinner {
19
+ /**
20
+ * The name of the icon to be used as the spinner.
21
+ * Use provideIcons({ ... }) to register custom icons.
22
+ */
23
+ public readonly icon = input<string>('lucideLoader2');
24
+
25
+ /** Aria label for the spinner for accessibility. */
26
+ public readonly ariaLabel = input<string>('Loading', { alias: 'aria-label' });
27
+
28
+ constructor() {
29
+ classes(() => 'inline-flex text-[length:--spacing(4)] motion-safe:animate-spin');
30
+ }
31
+ }
@@ -0,0 +1,7 @@
1
+ import { HlmSwitch } from './lib/hlm-switch';
2
+ import { HlmSwitchThumb } from './lib/hlm-switch-thumb';
3
+
4
+ export * from './lib/hlm-switch';
5
+ export * from './lib/hlm-switch-thumb';
6
+
7
+ export const HlmSwitchImports = [HlmSwitch, HlmSwitchThumb] as const;
@@ -0,0 +1,15 @@
1
+ import { Directive } from '@angular/core';
2
+ import { classes } from '@blueprint-platform/ui/utils';
3
+
4
+ @Directive({
5
+ selector: 'brn-switch-thumb[hlm],[hlmSwitchThumb]',
6
+ host: { 'data-slot': 'switch-thumb' },
7
+ })
8
+ export class HlmSwitchThumb {
9
+ constructor() {
10
+ classes(
11
+ () =>
12
+ 'bg-background dark:data-unchecked:bg-foreground dark:data-checked:bg-primary-foreground rounded-full group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-unchecked:translate-x-0 data-checked:ltr:translate-x-[calc(100%-2px)] data-checked:rtl:-translate-x-[calc(100%-2px)] pointer-events-none block ring-0 transition-transform',
13
+ );
14
+ }
15
+ }