@egose/shadcn-theme-ng 0.0.28 → 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 (237) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +376 -34
  3. package/accordion/fesm2022/accordion.mjs +27 -39
  4. package/alert/README.md +343 -34
  5. package/alert/fesm2022/alert.mjs +47 -47
  6. package/alert-dialog/README.md +471 -5
  7. package/alert-dialog/fesm2022/alert-dialog.mjs +47 -47
  8. package/aspect-ratio/README.md +272 -5
  9. package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
  10. package/autocomplete/README.md +473 -34
  11. package/autocomplete/fesm2022/autocomplete.mjs +53 -71
  12. package/avatar/README.md +357 -5
  13. package/avatar/fesm2022/avatar.mjs +32 -32
  14. package/badge/README.md +289 -34
  15. package/badge/fesm2022/badge.mjs +57 -57
  16. package/basic-alert/README.md +324 -34
  17. package/basic-alert/fesm2022/basic-alert.mjs +6 -18
  18. package/breadcrumb/README.md +406 -5
  19. package/breadcrumb/fesm2022/breadcrumb.mjs +33 -39
  20. package/button/README.md +453 -34
  21. package/button/fesm2022/button.mjs +147 -219
  22. package/button/types/button.d.ts +7 -10
  23. package/button-group/README.md +318 -5
  24. package/button-group/fesm2022/button-group.mjs +20 -20
  25. package/calendar/README.md +328 -34
  26. package/calendar/fesm2022/calendar.mjs +29 -743
  27. package/card/README.md +331 -5
  28. package/card/fesm2022/card.mjs +33 -33
  29. package/carousel/README.md +333 -5
  30. package/carousel/fesm2022/carousel.mjs +39 -78
  31. package/checkbox/README.md +291 -34
  32. package/checkbox/fesm2022/checkbox.mjs +20 -58
  33. package/checkbox/types/checkbox.d.ts +5 -4
  34. package/collapsible/README.md +332 -5
  35. package/collapsible/fesm2022/collapsible.mjs +15 -15
  36. package/combobox/README.md +507 -5
  37. package/combobox/fesm2022/combobox.mjs +91 -224
  38. package/command/README.md +435 -5
  39. package/command/fesm2022/command.mjs +49 -109
  40. package/confirmation-dialog/README.md +272 -34
  41. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +15 -40
  42. package/confirmation-dialog/types/confirmation-dialog.d.ts +8 -4
  43. package/context-menu/README.md +366 -5
  44. package/context-menu/fesm2022/context-menu.mjs +9 -9
  45. package/date-picker/README.md +436 -34
  46. package/date-picker/fesm2022/date-picker.mjs +64 -267
  47. package/date-picker/types/date-picker.d.ts +7 -3
  48. package/dialog/README.md +419 -34
  49. package/dialog/fesm2022/dialog.mjs +45 -71
  50. package/drawer/README.md +395 -5
  51. package/drawer/fesm2022/drawer.mjs +44 -54
  52. package/dropdown-menu/README.md +417 -5
  53. package/dropdown-menu/fesm2022/dropdown-menu.mjs +82 -70
  54. package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
  55. package/empty/README.md +329 -5
  56. package/empty/fesm2022/empty.mjs +30 -30
  57. package/field/README.md +385 -5
  58. package/field/fesm2022/field.mjs +56 -72
  59. package/form-checkbox/README.md +283 -34
  60. package/form-checkbox/fesm2022/form-checkbox.mjs +25 -85
  61. package/form-checkbox/types/form-checkbox.d.ts +7 -1
  62. package/form-date-picker/README.md +293 -34
  63. package/form-date-picker/fesm2022/form-date-picker.mjs +31 -84
  64. package/form-date-picker/types/form-date-picker.d.ts +7 -1
  65. package/form-field/README.md +327 -34
  66. package/form-field/fesm2022/form-field.mjs +33 -19
  67. package/form-field/types/form-field.d.ts +28 -20
  68. package/form-field-simple/README.md +311 -34
  69. package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
  70. package/form-searchable-multiselect/README.md +332 -34
  71. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +31 -91
  72. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +7 -1
  73. package/form-select/README.md +321 -34
  74. package/form-select/fesm2022/form-select.mjs +32 -149
  75. package/form-select/types/form-select.d.ts +7 -1
  76. package/form-text-input/README.md +342 -34
  77. package/form-text-input/fesm2022/form-text-input.mjs +35 -149
  78. package/form-text-input/types/form-text-input.d.ts +9 -12
  79. package/form-textarea/README.md +318 -34
  80. package/form-textarea/fesm2022/form-textarea.mjs +34 -109
  81. package/form-textarea/types/form-textarea.d.ts +8 -1
  82. package/hover-card/README.md +256 -5
  83. package/hover-card/fesm2022/hover-card.mjs +19 -19
  84. package/icon/README.md +210 -34
  85. package/icon/fesm2022/icon.mjs +8 -8
  86. package/input/README.md +240 -34
  87. package/input/fesm2022/input.mjs +17 -12
  88. package/input/types/input.d.ts +2 -1
  89. package/input-group/README.md +335 -5
  90. package/input-group/fesm2022/input-group.mjs +34 -34
  91. package/input-otp/README.md +375 -5
  92. package/input-otp/fesm2022/input-otp.mjs +26 -26
  93. package/item/README.md +385 -5
  94. package/item/fesm2022/item.mjs +53 -53
  95. package/kbd/README.md +291 -5
  96. package/kbd/fesm2022/kbd.mjs +12 -12
  97. package/label/README.md +243 -34
  98. package/label/fesm2022/label.mjs +10 -10
  99. package/label/types/label.d.ts +1 -1
  100. package/layout-simple/README.md +174 -44
  101. package/layout-simple/fesm2022/layout-simple.mjs +508 -603
  102. package/layout-simple/types/layout-simple.d.ts +179 -128
  103. package/menu/README.md +418 -0
  104. package/menu/fesm2022/menu.mjs +455 -0
  105. package/menu/package.json +24 -0
  106. package/menu/types/menu.d.ts +137 -0
  107. package/menubar/README.md +343 -5
  108. package/menubar/fesm2022/menubar.mjs +13 -13
  109. package/native-select/README.md +323 -5
  110. package/native-select/fesm2022/native-select.mjs +19 -19
  111. package/navigation-menu/README.md +369 -5
  112. package/navigation-menu/fesm2022/navigation-menu.mjs +35 -47
  113. package/package.json +183 -154
  114. package/pagination/README.md +388 -5
  115. package/pagination/fesm2022/pagination.mjs +45 -331
  116. package/popover/README.md +302 -34
  117. package/popover/fesm2022/popover.mjs +30 -30
  118. package/progress/README.md +311 -5
  119. package/progress/fesm2022/progress.mjs +13 -13
  120. package/radio-group/README.md +335 -34
  121. package/radio-group/fesm2022/radio-group.mjs +26 -19
  122. package/radio-group/types/radio-group.d.ts +1 -1
  123. package/resizable/README.md +269 -5
  124. package/resizable/fesm2022/resizable.mjs +18 -26
  125. package/scroll-area/README.md +233 -5
  126. package/scroll-area/fesm2022/scroll-area.mjs +9 -9
  127. package/searchable-multiselect/README.md +294 -34
  128. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +28 -117
  129. package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
  130. package/select/README.md +408 -34
  131. package/select/fesm2022/select.mjs +71 -111
  132. package/select/types/select.d.ts +3 -1
  133. package/separator/README.md +193 -34
  134. package/separator/fesm2022/separator.mjs +9 -9
  135. package/separator/types/separator.d.ts +1 -1
  136. package/sheet/README.md +282 -34
  137. package/sheet/fesm2022/sheet.mjs +41 -53
  138. package/sidebar/README.md +457 -5
  139. package/sidebar/fesm2022/sidebar.mjs +125 -227
  140. package/skeleton/README.md +217 -5
  141. package/skeleton/fesm2022/skeleton.mjs +9 -9
  142. package/slider/README.md +273 -5
  143. package/slider/fesm2022/slider.mjs +10 -80
  144. package/sonner/README.md +317 -34
  145. package/sonner/fesm2022/sonner.mjs +13 -13
  146. package/spinner/README.md +255 -34
  147. package/spinner/fesm2022/spinner.mjs +11 -11
  148. package/switch/README.md +281 -34
  149. package/switch/fesm2022/switch.mjs +13 -15
  150. package/table/README.md +423 -5
  151. package/table/fesm2022/table.mjs +41 -41
  152. package/tabs/README.md +382 -34
  153. package/tabs/fesm2022/tabs.mjs +35 -111
  154. package/textarea/README.md +282 -5
  155. package/textarea/fesm2022/textarea.mjs +9 -9
  156. package/toggle/README.md +270 -5
  157. package/toggle/fesm2022/toggle.mjs +13 -13
  158. package/toggle-group/README.md +340 -5
  159. package/toggle-group/fesm2022/toggle-group.mjs +13 -13
  160. package/toggle-group/types/toggle-group.d.ts +13 -7
  161. package/tooltip/README.md +240 -34
  162. package/tooltip/fesm2022/tooltip.mjs +14 -14
  163. package/typography/README.md +271 -5
  164. package/typography/fesm2022/typography.mjs +53 -53
  165. package/typography/types/typography.d.ts +19 -19
  166. package/utils/README.md +274 -34
  167. package/utils/fesm2022/utils.mjs +68 -44
  168. package/accordion/fesm2022/accordion.mjs.map +0 -1
  169. package/alert/fesm2022/alert.mjs.map +0 -1
  170. package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
  171. package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
  172. package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
  173. package/avatar/fesm2022/avatar.mjs.map +0 -1
  174. package/badge/fesm2022/badge.mjs.map +0 -1
  175. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  176. package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
  177. package/button/fesm2022/button.mjs.map +0 -1
  178. package/button-group/fesm2022/button-group.mjs.map +0 -1
  179. package/calendar/fesm2022/calendar.mjs.map +0 -1
  180. package/card/fesm2022/card.mjs.map +0 -1
  181. package/carousel/fesm2022/carousel.mjs.map +0 -1
  182. package/checkbox/fesm2022/checkbox.mjs.map +0 -1
  183. package/collapsible/fesm2022/collapsible.mjs.map +0 -1
  184. package/combobox/fesm2022/combobox.mjs.map +0 -1
  185. package/command/fesm2022/command.mjs.map +0 -1
  186. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
  187. package/context-menu/fesm2022/context-menu.mjs.map +0 -1
  188. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  189. package/dialog/fesm2022/dialog.mjs.map +0 -1
  190. package/drawer/fesm2022/drawer.mjs.map +0 -1
  191. package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
  192. package/empty/fesm2022/empty.mjs.map +0 -1
  193. package/field/fesm2022/field.mjs.map +0 -1
  194. package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
  195. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  196. package/form-field/fesm2022/form-field.mjs.map +0 -1
  197. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  198. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
  199. package/form-select/fesm2022/form-select.mjs.map +0 -1
  200. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  201. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  202. package/hover-card/fesm2022/hover-card.mjs.map +0 -1
  203. package/icon/fesm2022/icon.mjs.map +0 -1
  204. package/input/fesm2022/input.mjs.map +0 -1
  205. package/input-group/fesm2022/input-group.mjs.map +0 -1
  206. package/input-otp/fesm2022/input-otp.mjs.map +0 -1
  207. package/item/fesm2022/item.mjs.map +0 -1
  208. package/kbd/fesm2022/kbd.mjs.map +0 -1
  209. package/label/fesm2022/label.mjs.map +0 -1
  210. package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
  211. package/menubar/fesm2022/menubar.mjs.map +0 -1
  212. package/native-select/fesm2022/native-select.mjs.map +0 -1
  213. package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
  214. package/pagination/fesm2022/pagination.mjs.map +0 -1
  215. package/popover/fesm2022/popover.mjs.map +0 -1
  216. package/progress/fesm2022/progress.mjs.map +0 -1
  217. package/radio-group/fesm2022/radio-group.mjs.map +0 -1
  218. package/resizable/fesm2022/resizable.mjs.map +0 -1
  219. package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
  220. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
  221. package/select/fesm2022/select.mjs.map +0 -1
  222. package/separator/fesm2022/separator.mjs.map +0 -1
  223. package/sheet/fesm2022/sheet.mjs.map +0 -1
  224. package/sidebar/fesm2022/sidebar.mjs.map +0 -1
  225. package/skeleton/fesm2022/skeleton.mjs.map +0 -1
  226. package/slider/fesm2022/slider.mjs.map +0 -1
  227. package/sonner/fesm2022/sonner.mjs.map +0 -1
  228. package/spinner/fesm2022/spinner.mjs.map +0 -1
  229. package/switch/fesm2022/switch.mjs.map +0 -1
  230. package/table/fesm2022/table.mjs.map +0 -1
  231. package/tabs/fesm2022/tabs.mjs.map +0 -1
  232. package/textarea/fesm2022/textarea.mjs.map +0 -1
  233. package/toggle/fesm2022/toggle.mjs.map +0 -1
  234. package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
  235. package/tooltip/fesm2022/tooltip.mjs.map +0 -1
  236. package/typography/fesm2022/typography.mjs.map +0 -1
  237. package/utils/fesm2022/utils.mjs.map +0 -1
package/drawer/README.md CHANGED
@@ -1,11 +1,401 @@
1
- # Drawer
1
+ # Drawer (`@egose/shadcn-theme-ng/drawer`)
2
2
 
3
- This project was generated using [Angular CLI](https://github.com/angular/angular-cli).
3
+ A swipeable bottom/side panel in the shadcn/ui Drawer (vaul-style) look: overlay + sliding content with header, title, description, and footer slots. Equivalent to shadcn/ui `Drawer`.
4
4
 
5
- ## Building
5
+ The Angular implementation is a thin styling layer over the headless
6
+ [`BrnDrawer*` primitives from `@spartan-ng/brain/drawer`](https://www.spartan-ng.com/) (built on the
7
+ brain dialog core): `HlmDrawer` extends `BrnDrawer`, `HlmDrawerContent` composes `BrnDrawerHandle`
8
+ with direction-aware slide animations, and trigger/close/title/description/overlay directives compose
9
+ their `Brn*` counterparts via `hostDirectives`. Styling uses `hlm()` / `classes()` from
10
+ `@egose/shadcn-theme-ng/utils`.
6
11
 
7
- To build the library, run:
12
+ > **Ships as:** `@egose/shadcn-theme-ng/drawer` and `@egose/shadcn-theme-ng-tw/drawer`
13
+ > (the `tw:`-prefixed Tailwind variant). Both expose the identical TypeScript surface; only the
14
+ > emitted Tailwind class strings differ. See the [package README](../../README.md) for install
15
+ > steps, peer dependencies, and Tailwind setup. Do not publish this project directory independently.
16
+
17
+ ## Installation
8
18
 
9
19
  ```bash
10
- ng build drawer
20
+ # Plain Tailwind (no prefix)
21
+ npm install @egose/shadcn-theme-ng
22
+
23
+ # tw:-prefixed Tailwind variant
24
+ npm install @egose/shadcn-theme-ng-tw
25
+ ```
26
+
27
+ Peer dependencies (Angular, `@spartan-ng/brain`, `@ng-icons/*`, `rxjs`, …) are documented in the
28
+ [package README](../../README.md#peer-dependencies). This subpath has no extra runtime component
29
+ dependencies beyond `@egose/shadcn-theme-ng/utils`.
30
+
31
+ ## Imports
32
+
33
+ All symbols are exported from the subpath root (`projects/drawer/src/public-api.ts`):
34
+
35
+ ```ts
36
+ import {
37
+ HlmDrawer,
38
+ HlmDrawerContent,
39
+ HlmDrawerTrigger,
40
+ HlmDrawerClose,
41
+ HlmDrawerOverlay,
42
+ HlmDrawerPortal,
43
+ HlmDrawerTitle,
44
+ HlmDrawerDescription,
45
+ HlmDrawerHeader,
46
+ HlmDrawerFooter,
47
+ HlmDrawerImports,
48
+ HlmDrawerModule,
49
+ } from '@egose/shadcn-theme-ng/drawer';
50
+ // tw variant: replace with '@egose/shadcn-theme-ng-tw/drawer'
51
+ ```
52
+
53
+ Standalone component — spread the `*Imports` array:
54
+
55
+ ```ts
56
+ import { Component } from '@angular/core';
57
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
58
+
59
+ @Component({
60
+ selector: 'app-demo',
61
+ standalone: true,
62
+ imports: [...HlmDrawerImports],
63
+ template: `...`,
64
+ })
65
+ export class DemoComponent {}
66
+ ```
67
+
68
+ NgModule-based consumer — import the module:
69
+
70
+ ```ts
71
+ import { NgModule } from '@angular/core';
72
+ import { HlmDrawerModule } from '@egose/shadcn-theme-ng/drawer';
73
+
74
+ @NgModule({ imports: [HlmDrawerModule] })
75
+ export class DemoModule {}
11
76
  ```
77
+
78
+ ## Anatomy / Structure
79
+
80
+ ```html
81
+ <hlm-drawer>
82
+ <button hlmBtn variant="outline" hlmDrawerTrigger>Open drawer</button>
83
+
84
+ <hlm-drawer-content>
85
+ <div hlmDrawerHeader>
86
+ <h2 hlmDrawerTitle>Edit profile</h2>
87
+ <p hlmDrawerDescription>Make changes here.</p>
88
+ </div>
89
+
90
+ <p class="tw:px-4">Drawer body…</p>
91
+
92
+ <div hlmDrawerFooter>
93
+ <button hlmBtn hlmDrawerClose>Close</button>
94
+ </div>
95
+ </hlm-drawer-content>
96
+ </hlm-drawer>
97
+ ```
98
+
99
+ Real selectors (from source):
100
+
101
+ | Class | Selector(s) | Kind |
102
+ | ---------------------- | ---------------------------------------- | ------------------------------- |
103
+ | `HlmDrawer` | `hlm-drawer` | Component (extends `BrnDrawer`) |
104
+ | `HlmDrawerContent` | `hlm-drawer-content` | Component |
105
+ | `HlmDrawerTrigger` | `button[hlmDrawerTrigger]` | Directive (thin wrapper) |
106
+ | `HlmDrawerClose` | `button[hlmDrawerClose]` | Directive (thin wrapper) |
107
+ | `HlmDrawerOverlay` | `[hlmDrawerOverlay], hlm-drawer-overlay` | Directive |
108
+ | `HlmDrawerPortal` | `[hlmDrawerPortal]` | Directive |
109
+ | `HlmDrawerTitle` | `[hlmDrawerTitle]` | Directive |
110
+ | `HlmDrawerDescription` | `[hlmDrawerDescription]` | Directive |
111
+ | `HlmDrawerHeader` | `[hlmDrawerHeader], hlm-drawer-header` | Directive |
112
+ | `HlmDrawerFooter` | `[hlmDrawerFooter], hlm-drawer-footer` | Directive |
113
+
114
+ ## API reference
115
+
116
+ ### `HlmDrawer` — `hlm-drawer`
117
+
118
+ Root drawer state host. Extends `BrnDrawer` (and provides `BrnDialog` + `BrnDrawer` tokens). Renders `<hlm-drawer-overlay />` plus projected content. `exportAs: 'hlmDrawer'`.
119
+
120
+ No new inputs/outputs — direction and dialog options come from the trigger (`direction`) and brain defaults.
121
+
122
+ ### `HlmDrawerContent` — `hlm-drawer-content`
123
+
124
+ The sliding panel. Hosts `BrnDrawerHandle` (swipe/drag, `closeThreshold` input forwarded), exposes `data-vaul-drawer-direction` and `data-state`, and renders the drag handle bar for bottom drawers plus projected content.
125
+
126
+ | Input (forwarded) | Type | Description |
127
+ | ----------------- | ------------------------------ | ------------------------------------- |
128
+ | `closeThreshold` | forwarded to `BrnDrawerHandle` | Drag distance that closes the drawer. |
129
+
130
+ | Member | Description |
131
+ | ------- | ------------------------------------------------------------------------------------ |
132
+ | `state` | Current open state signal (from the exposed state provider, defaults to `'closed'`). |
133
+
134
+ Direction styling (`bottom` default, plus `top` / `left` / `right`) is driven by the trigger's `direction` via `data-vaul-drawer-direction` selectors.
135
+
136
+ ### `HlmDrawerTrigger` — `button[hlmDrawerTrigger]`
137
+
138
+ Thin wrapper. Forwards `id`, `direction`, `type` to `BrnDrawerTrigger` via `hostDirectives`. Set `direction="left" | "right" | "top" | "bottom"` here.
139
+
140
+ ### `HlmDrawerClose` — `button[hlmDrawerClose]`
141
+
142
+ Thin wrapper around `BrnDrawerClose`. Place on any `<button>` inside the drawer to close it.
143
+
144
+ ### `HlmDrawerOverlay` — `[hlmDrawerOverlay], hlm-drawer-overlay`
145
+
146
+ Backdrop. Wraps `BrnDrawerOverlay`; merges `class` via `hlm()`.
147
+
148
+ | Input | Type | Default | Description |
149
+ | ------- | ------------ | ------- | --------------------------------------------------- |
150
+ | `class` | `ClassValue` | `''` | Extra classes merged over the base overlay classes. |
151
+
152
+ ### `HlmDrawerPortal` — `[hlmDrawerPortal]`
153
+
154
+ Thin wrapper forwarding `context` and `class` to `BrnDrawerContent` for portal-based content.
155
+
156
+ ### `HlmDrawerTitle` — `[hlmDrawerTitle]` / `HlmDrawerDescription` — `[hlmDrawerDescription]`
157
+
158
+ Accessible title/description. Wrap `BrnDrawerTitle` / `BrnDrawerDescription` plus shadcn typography. No inputs.
159
+
160
+ ### `HlmDrawerHeader` / `HlmDrawerFooter`
161
+
162
+ Pure layout directives, no inputs. Header centers text on top/bottom drawers; footer stacks actions with `mt-auto`.
163
+
164
+ ## Examples
165
+
166
+ ### 1. Basic bottom drawer
167
+
168
+ ```ts
169
+ import { Component } from '@angular/core';
170
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
171
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
172
+
173
+ @Component({
174
+ selector: 'app-basic-drawer',
175
+ standalone: true,
176
+ imports: [...HlmDrawerImports, HlmButton],
177
+ template: `
178
+ <hlm-drawer>
179
+ <button hlmBtn variant="outline" hlmDrawerTrigger>Open drawer</button>
180
+ <hlm-drawer-content>
181
+ <div hlmDrawerHeader>
182
+ <h2 hlmDrawerTitle>Are you sure?</h2>
183
+ <p hlmDrawerDescription>This action cannot be undone.</p>
184
+ </div>
185
+ <div hlmDrawerFooter>
186
+ <button hlmBtn hlmDrawerClose>Close</button>
187
+ </div>
188
+ </hlm-drawer-content>
189
+ </hlm-drawer>
190
+ `,
191
+ })
192
+ export class BasicDrawerComponent {}
193
+ ```
194
+
195
+ ### 2. Direction variants (left / right / top)
196
+
197
+ ```ts
198
+ import { Component } from '@angular/core';
199
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
200
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
201
+
202
+ @Component({
203
+ selector: 'app-directions',
204
+ standalone: true,
205
+ imports: [...HlmDrawerImports, HlmButton],
206
+ template: `
207
+ <hlm-drawer>
208
+ <button hlmBtn variant="outline" hlmDrawerTrigger direction="right">Right panel</button>
209
+ <hlm-drawer-content>
210
+ <div hlmDrawerHeader>
211
+ <h2 hlmDrawerTitle>Right drawer</h2>
212
+ <p hlmDrawerDescription>Slides in from the right.</p>
213
+ </div>
214
+ <div hlmDrawerFooter>
215
+ <button hlmBtn variant="outline" hlmDrawerClose>Close</button>
216
+ </div>
217
+ </hlm-drawer-content>
218
+ </hlm-drawer>
219
+
220
+ <hlm-drawer>
221
+ <button hlmBtn variant="outline" hlmDrawerTrigger direction="left">Left panel</button>
222
+ <hlm-drawer-content>
223
+ <div hlmDrawerHeader>
224
+ <h2 hlmDrawerTitle>Left drawer</h2>
225
+ <p hlmDrawerDescription>Slides in from the left.</p>
226
+ </div>
227
+ </hlm-drawer-content>
228
+ </hlm-drawer>
229
+ `,
230
+ })
231
+ export class DirectionsComponent {}
232
+ ```
233
+
234
+ ### 3. Form drawer with footer actions
235
+
236
+ ```ts
237
+ import { Component, inject } from '@angular/core';
238
+ import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
239
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
240
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
241
+ import { HlmLabel } from '@egose/shadcn-theme-ng/label';
242
+ import { HlmInput } from '@egose/shadcn-theme-ng/input';
243
+
244
+ @Component({
245
+ selector: 'app-form-drawer',
246
+ standalone: true,
247
+ imports: [ReactiveFormsModule, HlmLabel, HlmInput, HlmButton, ...HlmDrawerImports],
248
+ template: `
249
+ <hlm-drawer>
250
+ <button hlmBtn hlmDrawerTrigger>New goal</button>
251
+ <hlm-drawer-content>
252
+ <div hlmDrawerHeader>
253
+ <h2 hlmDrawerTitle>New goal</h2>
254
+ <p hlmDrawerDescription>Set a goal for this week.</p>
255
+ </div>
256
+ <form [formGroup]="form" class="tw:grid tw:gap-4 tw:px-4">
257
+ <label hlmLabel for="goal">Goal</label>
258
+ <input hlmInput id="goal" formControlName="goal" placeholder="Exercise 3x" />
259
+ </form>
260
+ <div hlmDrawerFooter>
261
+ <button hlmBtn [disabled]="form.invalid" hlmDrawerClose (click)="save()">Save</button>
262
+ <button hlmBtn variant="outline" hlmDrawerClose>Cancel</button>
263
+ </div>
264
+ </hlm-drawer-content>
265
+ </hlm-drawer>
266
+ `,
267
+ })
268
+ export class FormDrawerComponent {
269
+ private readonly fb = inject(FormBuilder);
270
+ readonly form = this.fb.group({ goal: ['', Validators.required] });
271
+ save() {
272
+ console.log(this.form.value);
273
+ }
274
+ }
275
+ ```
276
+
277
+ ### 4. Drag threshold + custom overlay
278
+
279
+ ```ts
280
+ import { Component } from '@angular/core';
281
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
282
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
283
+
284
+ @Component({
285
+ selector: 'app-threshold',
286
+ standalone: true,
287
+ imports: [...HlmDrawerImports, HlmButton],
288
+ template: `
289
+ <hlm-drawer>
290
+ <button hlmBtn variant="secondary" hlmDrawerTrigger>Player queue</button>
291
+ <hlm-drawer-content [closeThreshold]="0.4" class="tw:max-h-[60vh]">
292
+ <div hlmDrawerHeader>
293
+ <h2 hlmDrawerTitle>Up next</h2>
294
+ <p hlmDrawerDescription>Drag down past 40% to dismiss.</p>
295
+ </div>
296
+ <ul class="tw:px-4 tw:text-sm">
297
+ <li>Track 1 — Intro</li>
298
+ <li>Track 2 — Verse</li>
299
+ <li>Track 3 — Outro</li>
300
+ </ul>
301
+ <div hlmDrawerFooter>
302
+ <button hlmBtn variant="outline" hlmDrawerClose>Close</button>
303
+ </div>
304
+ </hlm-drawer-content>
305
+ </hlm-drawer>
306
+ `,
307
+ })
308
+ export class ThresholdComponent {}
309
+ ```
310
+
311
+ ### 5. Element + attribute header/footer spellings
312
+
313
+ ```ts
314
+ import { Component } from '@angular/core';
315
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
316
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
317
+
318
+ @Component({
319
+ selector: 'app-spellings',
320
+ standalone: true,
321
+ imports: [...HlmDrawerImports, HlmButton],
322
+ template: `
323
+ <hlm-drawer>
324
+ <button hlmBtn variant="ghost" hlmDrawerTrigger>Filters</button>
325
+ <hlm-drawer-content>
326
+ <hlm-drawer-header>
327
+ <h2 hlmDrawerTitle>Filters</h2>
328
+ <p hlmDrawerDescription>Refine the list below.</p>
329
+ </hlm-drawer-header>
330
+ <div class="tw:px-4 tw:text-sm">Filter controls…</div>
331
+ <hlm-drawer-footer>
332
+ <button hlmBtn hlmDrawerClose>Apply</button>
333
+ <button hlmBtn variant="ghost" hlmDrawerClose>Reset</button>
334
+ </hlm-drawer-footer>
335
+ </hlm-drawer-content>
336
+ </hlm-drawer>
337
+ `,
338
+ })
339
+ export class SpellingsComponent {}
340
+ ```
341
+
342
+ ### 6. Multi-step content inside one drawer
343
+
344
+ ```ts
345
+ import { Component, signal } from '@angular/core';
346
+ import { HlmDrawerImports } from '@egose/shadcn-theme-ng/drawer';
347
+ import { HlmButton } from '@egose/shadcn-theme-ng/button';
348
+
349
+ @Component({
350
+ selector: 'app-steps',
351
+ standalone: true,
352
+ imports: [...HlmDrawerImports, HlmButton],
353
+ template: `
354
+ <hlm-drawer>
355
+ <button hlmBtn hlmDrawerTrigger>Checkout</button>
356
+ <hlm-drawer-content>
357
+ <div hlmDrawerHeader>
358
+ <h2 hlmDrawerTitle>Step {{ step() }} of 2</h2>
359
+ <p hlmDrawerDescription>{{ step() === 1 ? 'Address' : 'Payment' }}</p>
360
+ </div>
361
+ <div class="tw:px-4 tw:text-sm">
362
+ @if (step() === 1) {
363
+ <p>Address form…</p>
364
+ } @else {
365
+ <p>Payment form…</p>
366
+ }
367
+ </div>
368
+ <div hlmDrawerFooter>
369
+ @if (step() === 1) {
370
+ <button hlmBtn (click)="step.set(2)">Next</button>
371
+ } @else {
372
+ <button hlmBtn (click)="step.set(1)" variant="outline">Back</button>
373
+ <button hlmBtn hlmDrawerClose>Pay</button>
374
+ }
375
+ </div>
376
+ </hlm-drawer-content>
377
+ </hlm-drawer>
378
+ `,
379
+ })
380
+ export class StepsComponent {
381
+ readonly step = signal(1);
382
+ }
383
+ ```
384
+
385
+ ## Accessibility notes
386
+
387
+ - Always include `hlmDrawerTitle` and `hlmDrawerDescription` so the panel is labelled and described (brain `BrnDrawerTitle` / `BrnDrawerDescription` wiring).
388
+ - Focus is trapped while open and restored to the trigger on close; escape and overlay click dismiss by default.
389
+ - The drag handle is visual; keyboard and screen-reader users rely on the close button — always provide a labelled `hlmDrawerClose` control.
390
+ - `data-state` and `data-vaul-drawer-direction` attributes let assistive and custom styles target open/closed and directional states.
391
+
392
+ ## Theming / CSS variables
393
+
394
+ No component-specific CSS variables. Panel geometry and slide animations are direction-aware via `data-vaul-drawer-direction` selectors; colors come from global tokens (`--background`, `--muted`, …). Extend with `class` on `hlm-drawer-content` / overlay.
395
+
396
+ ## Related subpaths
397
+
398
+ - `@egose/shadcn-theme-ng/dialog` — centered modal built on the same brain dialog core.
399
+ - `@egose/shadcn-theme-ng/sheet` — side-anchored panel alternative without swipe handling.
400
+ - `@egose/shadcn-theme-ng/button` — `hlmBtn` triggers and footer actions.
401
+ - `@egose/shadcn-theme-ng/separator` — dividers inside drawer bodies.
@@ -9,7 +9,7 @@ import { hlm, classes } from '@egose/shadcn-theme-ng/utils';
9
9
  class HlmDrawerOverlay {
10
10
  _classSettable = injectCustomClassSettable({ optional: true, host: true });
11
11
  userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
12
- _computedClass = computed(() => hlm('data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0', this.userClass()), /* @ts-ignore */
12
+ _computedClass = computed(() => hlm("data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/10 supports-backdrop-filter:backdrop-blur-xs transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0", this.userClass()), /* @ts-ignore */
13
13
  ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
14
14
  constructor() {
15
15
  effect(() => {
@@ -17,10 +17,10 @@ class HlmDrawerOverlay {
17
17
  untracked(() => this._classSettable?.setClassToCustomElement(classValue));
18
18
  });
19
19
  }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: HlmDrawerOverlay, isStandalone: true, selector: "[hlmDrawerOverlay],hlm-drawer-overlay", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.BrnDrawerOverlay }], ngImport: i0 });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmDrawerOverlay, isStandalone: true, selector: "[hlmDrawerOverlay],hlm-drawer-overlay", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, hostDirectives: [{ directive: i1.BrnDrawerOverlay }], ngImport: i0 });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerOverlay, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerOverlay, decorators: [{
24
24
  type: Directive,
25
25
  args: [{
26
26
  selector: '[hlmDrawerOverlay],hlm-drawer-overlay',
@@ -29,8 +29,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
29
29
  }], ctorParameters: () => [], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
30
30
 
31
31
  class HlmDrawer extends BrnDrawer {
32
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawer, deps: null, target: i0.ɵɵFactoryTarget.Component });
33
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawer, isStandalone: true, selector: "hlm-drawer", providers: [
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawer, deps: null, target: i0.ɵɵFactoryTarget.Component });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawer, isStandalone: true, selector: "hlm-drawer", providers: [
34
34
  {
35
35
  provide: BrnDialog,
36
36
  useExisting: forwardRef(() => HlmDrawer),
@@ -47,7 +47,7 @@ class HlmDrawer extends BrnDrawer {
47
47
  <ng-content />
48
48
  `, isInline: true, dependencies: [{ kind: "directive", type: HlmDrawerOverlay, selector: "[hlmDrawerOverlay],hlm-drawer-overlay", inputs: ["class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawer, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawer, decorators: [{
51
51
  type: Component,
52
52
  args: [{
53
53
  selector: 'hlm-drawer',
@@ -75,10 +75,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
75
75
  }] });
76
76
 
77
77
  class HlmDrawerClose {
78
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerClose, isStandalone: true, selector: "button[hlmDrawerClose]", host: { attributes: { "data-slot": "drawer-close" } }, hostDirectives: [{ directive: i1.BrnDrawerClose }], ngImport: i0 });
78
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
79
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerClose, isStandalone: true, selector: "button[hlmDrawerClose]", host: { attributes: { "data-slot": "drawer-close" } }, hostDirectives: [{ directive: i1.BrnDrawerClose }], ngImport: i0 });
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerClose, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerClose, decorators: [{
82
82
  type: Directive,
83
83
  args: [{
84
84
  selector: 'button[hlmDrawerClose]',
@@ -93,24 +93,19 @@ class HlmDrawerContent {
93
93
  state = this._stateProvider.state ?? signal('closed');
94
94
  constructor() {
95
95
  classes(() => [
96
- 'bg-background fixed z-50 flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm',
97
- 'group/drawer-content',
98
- 'data-open:animate-in data-closed:animate-out',
96
+ "bg-background fixed z-50 flex h-auto flex-col text-sm data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=right]:sm:max-w-sm",
97
+ "group/drawer-content",
98
+ "data-open:animate-in data-closed:animate-out",
99
99
  'data-[vaul-drawer-direction=bottom]:data-closed:slide-out-to-bottom data-[vaul-drawer-direction=bottom]:data-open:slide-in-from-bottom',
100
100
  'data-[vaul-drawer-direction=top]:data-closed:slide-out-to-top data-[vaul-drawer-direction=top]:data-open:slide-in-from-top',
101
101
  'data-[vaul-drawer-direction=left]:data-closed:slide-out-to-left data-[vaul-drawer-direction=left]:data-open:slide-in-from-left',
102
102
  'data-[vaul-drawer-direction=right]:data-closed:slide-out-to-right data-[vaul-drawer-direction=right]:data-open:slide-in-from-right',
103
103
  ]);
104
104
  }
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerContent, isStandalone: true, selector: "hlm-drawer-content", host: { attributes: { "data-slot": "drawer-content" }, properties: { "attr.data-vaul-drawer-direction": "_sideProvider.side()", "attr.data-state": "state()" } }, hostDirectives: [{ directive: i1.BrnDrawerHandle, inputs: ["closeThreshold", "closeThreshold"] }], ngImport: i0, template: `
107
- <div
108
- class="bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
109
- ></div>
110
- <ng-content />
111
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
106
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerContent, isStandalone: true, selector: "hlm-drawer-content", host: { attributes: { "data-slot": "drawer-content" }, properties: { "attr.data-vaul-drawer-direction": "_sideProvider.side()", "attr.data-state": "state()" } }, hostDirectives: [{ directive: i1.BrnDrawerHandle, inputs: ["closeThreshold", "closeThreshold"] }], ngImport: i0, template: "\n <div\n class=\"bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\"\n ></div>\n <ng-content />\n ", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
112
107
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerContent, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerContent, decorators: [{
114
109
  type: Component,
115
110
  args: [{
116
111
  selector: 'hlm-drawer-content',
@@ -121,23 +116,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
121
116
  '[attr.data-vaul-drawer-direction]': '_sideProvider.side()',
122
117
  '[attr.data-state]': 'state()',
123
118
  },
124
- template: `
125
- <div
126
- class="bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
127
- ></div>
128
- <ng-content />
129
- `,
119
+ template: "\n <div\n class=\"bg-muted mx-auto mt-4 hidden h-1.5 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\"\n ></div>\n <ng-content />\n ",
130
120
  }]
131
121
  }], ctorParameters: () => [] });
132
122
 
133
123
  class HlmDrawerDescription {
134
124
  constructor() {
135
- classes(() => 'text-muted-foreground text-sm');
125
+ classes(() => "text-muted-foreground text-sm");
136
126
  }
137
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
138
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerDescription, isStandalone: true, selector: "[hlmDrawerDescription]", host: { attributes: { "data-slot": "drawer-description" } }, hostDirectives: [{ directive: i1.BrnDrawerDescription }], ngImport: i0 });
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
128
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerDescription, isStandalone: true, selector: "[hlmDrawerDescription]", host: { attributes: { "data-slot": "drawer-description" } }, hostDirectives: [{ directive: i1.BrnDrawerDescription }], ngImport: i0 });
139
129
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerDescription, decorators: [{
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerDescription, decorators: [{
141
131
  type: Directive,
142
132
  args: [{
143
133
  selector: '[hlmDrawerDescription]',
@@ -148,12 +138,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
148
138
 
149
139
  class HlmDrawerFooter {
150
140
  constructor() {
151
- classes(() => 'gap-2 p-4 mt-auto flex flex-col');
141
+ classes(() => "gap-2 p-4 mt-auto flex flex-col");
152
142
  }
153
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
154
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerFooter, isStandalone: true, selector: "[hlmDrawerFooter],hlm-drawer-footer", host: { attributes: { "data-slot": "drawer-footer" } }, ngImport: i0 });
143
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
144
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerFooter, isStandalone: true, selector: "[hlmDrawerFooter],hlm-drawer-footer", host: { attributes: { "data-slot": "drawer-footer" } }, ngImport: i0 });
155
145
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerFooter, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerFooter, decorators: [{
157
147
  type: Directive,
158
148
  args: [{
159
149
  selector: '[hlmDrawerFooter],hlm-drawer-footer',
@@ -163,12 +153,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
163
153
 
164
154
  class HlmDrawerHeader {
165
155
  constructor() {
166
- classes(() => 'gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-start flex flex-col');
156
+ classes(() => "gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-start flex flex-col");
167
157
  }
168
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
169
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerHeader, isStandalone: true, selector: "[hlmDrawerHeader],hlm-drawer-header", host: { attributes: { "data-slot": "drawer-header" } }, ngImport: i0 });
158
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
159
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerHeader, isStandalone: true, selector: "[hlmDrawerHeader],hlm-drawer-header", host: { attributes: { "data-slot": "drawer-header" } }, ngImport: i0 });
170
160
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerHeader, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerHeader, decorators: [{
172
162
  type: Directive,
173
163
  args: [{
174
164
  selector: '[hlmDrawerHeader],hlm-drawer-header',
@@ -177,10 +167,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
177
167
  }], ctorParameters: () => [] });
178
168
 
179
169
  class HlmDrawerPortal {
180
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive });
181
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerPortal, isStandalone: true, selector: "[hlmDrawerPortal]", hostDirectives: [{ directive: i1.BrnDrawerContent, inputs: ["context", "context", "class", "class"] }], ngImport: i0 });
170
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive });
171
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerPortal, isStandalone: true, selector: "[hlmDrawerPortal]", hostDirectives: [{ directive: i1.BrnDrawerContent, inputs: ["context", "context", "class", "class"] }], ngImport: i0 });
182
172
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerPortal, decorators: [{
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerPortal, decorators: [{
184
174
  type: Directive,
185
175
  args: [{
186
176
  selector: '[hlmDrawerPortal]',
@@ -190,12 +180,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
190
180
 
191
181
  class HlmDrawerTitle {
192
182
  constructor() {
193
- classes(() => 'text-foreground font-medium');
183
+ classes(() => "text-foreground font-medium");
194
184
  }
195
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
196
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerTitle, isStandalone: true, selector: "[hlmDrawerTitle]", host: { attributes: { "data-slot": "drawer-title" } }, hostDirectives: [{ directive: i1.BrnDrawerTitle }], ngImport: i0 });
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
186
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerTitle, isStandalone: true, selector: "[hlmDrawerTitle]", host: { attributes: { "data-slot": "drawer-title" } }, hostDirectives: [{ directive: i1.BrnDrawerTitle }], ngImport: i0 });
197
187
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerTitle, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerTitle, decorators: [{
199
189
  type: Directive,
200
190
  args: [{
201
191
  selector: '[hlmDrawerTitle]',
@@ -205,10 +195,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
205
195
  }], ctorParameters: () => [] });
206
196
 
207
197
  class HlmDrawerTrigger {
208
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
209
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: HlmDrawerTrigger, isStandalone: true, selector: "button[hlmDrawerTrigger]", host: { attributes: { "data-slot": "drawer-trigger" } }, hostDirectives: [{ directive: i1.BrnDrawerTrigger, inputs: ["id", "id", "direction", "direction", "type", "type"] }], ngImport: i0 });
198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
199
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmDrawerTrigger, isStandalone: true, selector: "button[hlmDrawerTrigger]", host: { attributes: { "data-slot": "drawer-trigger" } }, hostDirectives: [{ directive: i1.BrnDrawerTrigger, inputs: ["id", "id", "direction", "direction", "type", "type"] }], ngImport: i0 });
210
200
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerTrigger, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerTrigger, decorators: [{
212
202
  type: Directive,
213
203
  args: [{
214
204
  selector: 'button[hlmDrawerTrigger]',
@@ -233,8 +223,8 @@ const HlmDrawerImports = [
233
223
  HlmDrawerTrigger,
234
224
  ];
235
225
  class HlmDrawerModule {
236
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
237
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerModule, imports: [HlmDrawer,
226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
227
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerModule, imports: [HlmDrawer,
238
228
  HlmDrawerClose,
239
229
  HlmDrawerContent,
240
230
  HlmDrawerDescription,
@@ -253,9 +243,9 @@ class HlmDrawerModule {
253
243
  HlmDrawerPortal,
254
244
  HlmDrawerTitle,
255
245
  HlmDrawerTrigger] });
256
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerModule });
246
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerModule });
257
247
  }
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: HlmDrawerModule, decorators: [{
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDrawerModule, decorators: [{
259
249
  type: NgModule,
260
250
  args: [{
261
251
  imports: [...HlmDrawerImports],
@@ -268,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
268
258
  */
269
259
 
270
260
  export { HlmDrawer, HlmDrawerClose, HlmDrawerContent, HlmDrawerDescription, HlmDrawerFooter, HlmDrawerHeader, HlmDrawerImports, HlmDrawerModule, HlmDrawerOverlay, HlmDrawerPortal, HlmDrawerTitle, HlmDrawerTrigger };
271
- //# sourceMappingURL=drawer.mjs.map
261
+