@egose/shadcn-theme-ng-tw 0.0.27 → 0.1.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 (316) hide show
  1. package/README.md +130 -13
  2. package/accordion/README.md +3 -0
  3. package/accordion/fesm2022/accordion.mjs +160 -0
  4. package/accordion/package.json +25 -0
  5. package/accordion/types/accordion.d.ts +49 -0
  6. package/alert/README.md +2 -63
  7. package/alert/fesm2022/alert.mjs +31 -26
  8. package/alert/package.json +25 -0
  9. package/alert-dialog/README.md +11 -0
  10. package/alert-dialog/fesm2022/alert-dialog.mjs +287 -0
  11. package/alert-dialog/package.json +25 -0
  12. package/alert-dialog/types/alert-dialog.d.ts +90 -0
  13. package/aspect-ratio/README.md +11 -0
  14. package/aspect-ratio/fesm2022/aspect-ratio.mjs +62 -0
  15. package/aspect-ratio/package.json +25 -0
  16. package/aspect-ratio/types/aspect-ratio.d.ts +21 -0
  17. package/autocomplete/README.md +3 -0
  18. package/autocomplete/fesm2022/autocomplete.mjs +409 -0
  19. package/autocomplete/package.json +24 -0
  20. package/autocomplete/types/autocomplete.d.ts +96 -0
  21. package/avatar/README.md +11 -0
  22. package/avatar/fesm2022/avatar.mjs +178 -0
  23. package/avatar/package.json +25 -0
  24. package/avatar/types/avatar.d.ts +50 -0
  25. package/badge/README.md +2 -63
  26. package/badge/fesm2022/badge.mjs +16 -10
  27. package/badge/package.json +25 -0
  28. package/basic-alert/README.md +2 -63
  29. package/basic-alert/fesm2022/basic-alert.mjs +12 -8
  30. package/basic-alert/package.json +24 -0
  31. package/basic-alert/{index.d.ts → types/basic-alert.d.ts} +1 -1
  32. package/breadcrumb/README.md +11 -0
  33. package/breadcrumb/fesm2022/breadcrumb.mjs +224 -0
  34. package/breadcrumb/package.json +25 -0
  35. package/breadcrumb/types/breadcrumb.d.ts +57 -0
  36. package/button/README.md +2 -63
  37. package/button/fesm2022/button.mjs +100 -26
  38. package/button/package.json +25 -0
  39. package/button/{index.d.ts → types/button.d.ts} +31 -10
  40. package/button-group/README.md +11 -0
  41. package/button-group/fesm2022/button-group.mjs +102 -0
  42. package/button-group/package.json +25 -0
  43. package/button-group/types/button-group.d.ts +30 -0
  44. package/calendar/README.md +2 -63
  45. package/calendar/fesm2022/calendar.mjs +869 -547
  46. package/calendar/package.json +24 -0
  47. package/calendar/types/calendar.d.ts +94 -0
  48. package/card/README.md +11 -0
  49. package/card/fesm2022/card.mjs +169 -0
  50. package/card/package.json +25 -0
  51. package/card/types/card.d.ts +54 -0
  52. package/carousel/README.md +11 -0
  53. package/carousel/fesm2022/carousel.mjs +309 -0
  54. package/carousel/package.json +25 -0
  55. package/carousel/types/carousel.d.ts +84 -0
  56. package/checkbox/README.md +3 -0
  57. package/checkbox/fesm2022/checkbox.mjs +153 -0
  58. package/checkbox/package.json +24 -0
  59. package/checkbox/types/checkbox.d.ts +56 -0
  60. package/collapsible/README.md +11 -0
  61. package/collapsible/fesm2022/collapsible.mjs +77 -0
  62. package/collapsible/package.json +25 -0
  63. package/collapsible/types/collapsible.d.ts +27 -0
  64. package/combobox/README.md +11 -0
  65. package/combobox/fesm2022/combobox.mjs +683 -0
  66. package/combobox/package.json +25 -0
  67. package/combobox/types/combobox.d.ts +151 -0
  68. package/command/README.md +11 -0
  69. package/command/fesm2022/command.mjs +361 -0
  70. package/command/package.json +25 -0
  71. package/command/types/command.d.ts +89 -0
  72. package/confirmation-dialog/README.md +3 -0
  73. package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +105 -0
  74. package/confirmation-dialog/package.json +24 -0
  75. package/confirmation-dialog/types/confirmation-dialog.d.ts +28 -0
  76. package/context-menu/README.md +11 -0
  77. package/context-menu/fesm2022/context-menu.mjs +89 -0
  78. package/context-menu/package.json +25 -0
  79. package/context-menu/types/context-menu.d.ts +34 -0
  80. package/date-picker/README.md +2 -63
  81. package/date-picker/fesm2022/date-picker.mjs +1274 -308
  82. package/date-picker/package.json +24 -0
  83. package/date-picker/types/date-picker.d.ts +555 -0
  84. package/dialog/README.md +3 -0
  85. package/dialog/fesm2022/dialog.mjs +307 -0
  86. package/dialog/package.json +24 -0
  87. package/dialog/types/dialog.d.ts +95 -0
  88. package/drawer/README.md +11 -0
  89. package/drawer/fesm2022/drawer.mjs +271 -0
  90. package/drawer/package.json +25 -0
  91. package/drawer/types/drawer.d.ts +76 -0
  92. package/dropdown-menu/README.md +11 -0
  93. package/dropdown-menu/fesm2022/dropdown-menu.mjs +554 -0
  94. package/dropdown-menu/package.json +25 -0
  95. package/dropdown-menu/types/dropdown-menu.d.ts +180 -0
  96. package/empty/README.md +11 -0
  97. package/empty/fesm2022/empty.mjs +151 -0
  98. package/empty/package.json +25 -0
  99. package/empty/types/empty.d.ts +54 -0
  100. package/field/README.md +11 -0
  101. package/field/fesm2022/field.mjs +367 -0
  102. package/field/package.json +25 -0
  103. package/field/types/field.d.ts +107 -0
  104. package/form-checkbox/README.md +3 -0
  105. package/form-checkbox/fesm2022/form-checkbox.mjs +172 -0
  106. package/form-checkbox/package.json +24 -0
  107. package/form-checkbox/types/form-checkbox.d.ts +33 -0
  108. package/form-date-picker/README.md +2 -63
  109. package/form-date-picker/fesm2022/form-date-picker.mjs +95 -53
  110. package/form-date-picker/package.json +24 -0
  111. package/form-date-picker/{index.d.ts → types/form-date-picker.d.ts} +7 -1
  112. package/form-field/README.md +2 -63
  113. package/form-field/fesm2022/form-field.mjs +54 -28
  114. package/form-field/package.json +25 -0
  115. package/form-field/types/form-field.d.ts +46 -0
  116. package/form-field-simple/README.md +2 -63
  117. package/form-field-simple/fesm2022/form-field-simple.mjs +15 -10
  118. package/form-field-simple/package.json +24 -0
  119. package/form-searchable-multiselect/README.md +3 -0
  120. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +178 -0
  121. package/form-searchable-multiselect/package.json +24 -0
  122. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +36 -0
  123. package/form-select/README.md +2 -63
  124. package/form-select/fesm2022/form-select.mjs +178 -84
  125. package/form-select/package.json +24 -0
  126. package/form-select/{index.d.ts → types/form-select.d.ts} +7 -1
  127. package/form-text-input/README.md +2 -63
  128. package/form-text-input/fesm2022/form-text-input.mjs +99 -82
  129. package/form-text-input/package.json +24 -0
  130. package/form-text-input/{index.d.ts → types/form-text-input.d.ts} +9 -12
  131. package/form-textarea/README.md +2 -63
  132. package/form-textarea/fesm2022/form-textarea.mjs +90 -47
  133. package/form-textarea/package.json +24 -0
  134. package/form-textarea/{index.d.ts → types/form-textarea.d.ts} +8 -1
  135. package/hover-card/README.md +11 -0
  136. package/hover-card/fesm2022/hover-card.mjs +123 -0
  137. package/hover-card/package.json +25 -0
  138. package/hover-card/types/hover-card.d.ts +36 -0
  139. package/icon/README.md +2 -63
  140. package/icon/fesm2022/icon.mjs +12 -10
  141. package/icon/package.json +25 -0
  142. package/input/README.md +2 -63
  143. package/input/fesm2022/input.mjs +25 -70
  144. package/input/package.json +25 -0
  145. package/input/types/input.d.ts +19 -0
  146. package/input-group/README.md +11 -0
  147. package/input-group/fesm2022/input-group.mjs +199 -0
  148. package/input-group/package.json +25 -0
  149. package/input-group/types/input-group.d.ts +52 -0
  150. package/input-otp/README.md +11 -0
  151. package/input-otp/fesm2022/input-otp.mjs +141 -0
  152. package/input-otp/package.json +25 -0
  153. package/input-otp/types/input-otp.d.ts +43 -0
  154. package/item/README.md +11 -0
  155. package/item/fesm2022/item.mjs +278 -0
  156. package/item/package.json +25 -0
  157. package/item/types/item.d.ts +101 -0
  158. package/kbd/README.md +11 -0
  159. package/kbd/fesm2022/kbd.mjs +61 -0
  160. package/kbd/package.json +25 -0
  161. package/kbd/types/kbd.d.ts +22 -0
  162. package/label/README.md +2 -63
  163. package/label/fesm2022/label.mjs +12 -11
  164. package/label/package.json +25 -0
  165. package/label/{index.d.ts → types/label.d.ts} +1 -1
  166. package/layout-simple/README.md +3 -0
  167. package/layout-simple/fesm2022/layout-simple.mjs +770 -0
  168. package/layout-simple/package.json +24 -0
  169. package/layout-simple/types/layout-simple.d.ts +167 -0
  170. package/menu/README.md +3 -0
  171. package/menu/fesm2022/menu.mjs +461 -0
  172. package/menu/package.json +24 -0
  173. package/menu/types/menu.d.ts +137 -0
  174. package/menubar/README.md +11 -0
  175. package/menubar/fesm2022/menubar.mjs +108 -0
  176. package/menubar/package.json +25 -0
  177. package/menubar/types/menubar.d.ts +40 -0
  178. package/native-select/README.md +11 -0
  179. package/native-select/fesm2022/native-select.mjs +207 -0
  180. package/native-select/package.json +25 -0
  181. package/native-select/types/native-select.d.ts +70 -0
  182. package/navigation-menu/README.md +11 -0
  183. package/navigation-menu/fesm2022/navigation-menu.mjs +206 -0
  184. package/navigation-menu/package.json +25 -0
  185. package/navigation-menu/types/navigation-menu.d.ts +54 -0
  186. package/package.json +284 -63
  187. package/pagination/README.md +11 -0
  188. package/pagination/fesm2022/pagination.mjs +808 -0
  189. package/pagination/package.json +25 -0
  190. package/pagination/types/pagination.d.ts +192 -0
  191. package/popover/README.md +2 -63
  192. package/popover/fesm2022/popover.mjs +124 -30
  193. package/popover/package.json +24 -0
  194. package/popover/types/popover.d.ts +54 -0
  195. package/progress/README.md +11 -0
  196. package/progress/fesm2022/progress.mjs +77 -0
  197. package/progress/package.json +25 -0
  198. package/progress/types/progress.d.ts +27 -0
  199. package/radio-group/README.md +3 -0
  200. package/radio-group/fesm2022/radio-group.mjs +207 -0
  201. package/radio-group/package.json +25 -0
  202. package/radio-group/types/radio-group.d.ts +71 -0
  203. package/resizable/README.md +11 -0
  204. package/resizable/fesm2022/resizable.mjs +111 -0
  205. package/resizable/package.json +25 -0
  206. package/resizable/types/resizable.d.ts +32 -0
  207. package/scroll-area/README.md +11 -0
  208. package/scroll-area/fesm2022/scroll-area.mjs +51 -0
  209. package/scroll-area/package.json +25 -0
  210. package/scroll-area/types/scroll-area.d.ts +16 -0
  211. package/searchable-multiselect/README.md +3 -0
  212. package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +272 -0
  213. package/searchable-multiselect/package.json +24 -0
  214. package/searchable-multiselect/types/searchable-multiselect.d.ts +45 -0
  215. package/select/README.md +2 -63
  216. package/select/fesm2022/select.mjs +382 -192
  217. package/select/package.json +25 -0
  218. package/select/types/select.d.ts +121 -0
  219. package/separator/README.md +2 -63
  220. package/separator/fesm2022/separator.mjs +17 -15
  221. package/separator/package.json +24 -0
  222. package/separator/{index.d.ts → types/separator.d.ts} +4 -5
  223. package/sheet/README.md +2 -63
  224. package/sheet/fesm2022/sheet.mjs +51 -44
  225. package/sheet/package.json +24 -0
  226. package/sidebar/README.md +11 -0
  227. package/sidebar/fesm2022/sidebar.mjs +950 -0
  228. package/sidebar/package.json +25 -0
  229. package/sidebar/types/sidebar.d.ts +237 -0
  230. package/skeleton/README.md +11 -0
  231. package/skeleton/fesm2022/skeleton.mjs +44 -0
  232. package/skeleton/package.json +25 -0
  233. package/skeleton/types/skeleton.d.ts +16 -0
  234. package/slider/README.md +11 -0
  235. package/slider/fesm2022/slider.mjs +144 -0
  236. package/slider/package.json +25 -0
  237. package/slider/types/slider.d.ts +19 -0
  238. package/sonner/README.md +2 -63
  239. package/sonner/fesm2022/sonner.mjs +30 -35
  240. package/sonner/package.json +25 -0
  241. package/spinner/README.md +2 -63
  242. package/spinner/fesm2022/spinner.mjs +18 -14
  243. package/spinner/package.json +25 -0
  244. package/switch/README.md +2 -63
  245. package/switch/fesm2022/switch.mjs +29 -28
  246. package/switch/package.json +25 -0
  247. package/table/README.md +11 -0
  248. package/table/fesm2022/table.mjs +211 -0
  249. package/table/package.json +25 -0
  250. package/table/types/table.d.ts +87 -0
  251. package/tabs/README.md +3 -0
  252. package/tabs/fesm2022/tabs.mjs +286 -0
  253. package/tabs/package.json +25 -0
  254. package/tabs/types/tabs.d.ts +71 -0
  255. package/textarea/README.md +11 -0
  256. package/textarea/fesm2022/textarea.mjs +47 -0
  257. package/textarea/package.json +25 -0
  258. package/textarea/types/textarea.d.ts +18 -0
  259. package/toggle/README.md +11 -0
  260. package/toggle/fesm2022/toggle.mjs +78 -0
  261. package/toggle/package.json +25 -0
  262. package/toggle/types/toggle.d.ts +27 -0
  263. package/toggle-group/README.md +11 -0
  264. package/toggle-group/fesm2022/toggle-group.mjs +117 -0
  265. package/toggle-group/package.json +25 -0
  266. package/toggle-group/types/toggle-group.d.ts +45 -0
  267. package/tooltip/README.md +3 -0
  268. package/tooltip/fesm2022/tooltip.mjs +72 -0
  269. package/tooltip/package.json +25 -0
  270. package/tooltip/types/tooltip.d.ts +22 -0
  271. package/typography/README.md +11 -0
  272. package/typography/fesm2022/typography.mjs +242 -0
  273. package/typography/package.json +25 -0
  274. package/typography/types/typography.d.ts +94 -0
  275. package/utils/README.md +2 -63
  276. package/utils/fesm2022/utils.mjs +209 -2
  277. package/utils/package.json +25 -0
  278. package/utils/types/utils.d.ts +13 -0
  279. package/alert/fesm2022/alert.mjs.map +0 -1
  280. package/badge/fesm2022/badge.mjs.map +0 -1
  281. package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
  282. package/button/fesm2022/button.mjs.map +0 -1
  283. package/calendar/fesm2022/calendar.mjs.map +0 -1
  284. package/calendar/index.d.ts +0 -111
  285. package/date-picker/fesm2022/date-picker.mjs.map +0 -1
  286. package/date-picker/index.d.ts +0 -227
  287. package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
  288. package/form-field/fesm2022/form-field.mjs.map +0 -1
  289. package/form-field/index.d.ts +0 -37
  290. package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
  291. package/form-select/fesm2022/form-select.mjs.map +0 -1
  292. package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
  293. package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
  294. package/icon/fesm2022/icon.mjs.map +0 -1
  295. package/input/fesm2022/input.mjs.map +0 -1
  296. package/input/index.d.ts +0 -41
  297. package/label/fesm2022/label.mjs.map +0 -1
  298. package/popover/fesm2022/popover.mjs.map +0 -1
  299. package/popover/index.d.ts +0 -30
  300. package/select/fesm2022/select.mjs.map +0 -1
  301. package/select/index.d.ts +0 -92
  302. package/separator/fesm2022/separator.mjs.map +0 -1
  303. package/sheet/fesm2022/sheet.mjs.map +0 -1
  304. package/sonner/fesm2022/sonner.mjs.map +0 -1
  305. package/spinner/fesm2022/spinner.mjs.map +0 -1
  306. package/switch/fesm2022/switch.mjs.map +0 -1
  307. package/utils/fesm2022/utils.mjs.map +0 -1
  308. package/utils/index.d.ts +0 -5
  309. /package/alert/{index.d.ts → types/alert.d.ts} +0 -0
  310. /package/badge/{index.d.ts → types/badge.d.ts} +0 -0
  311. /package/form-field-simple/{index.d.ts → types/form-field-simple.d.ts} +0 -0
  312. /package/icon/{index.d.ts → types/icon.d.ts} +0 -0
  313. /package/sheet/{index.d.ts → types/sheet.d.ts} +0 -0
  314. /package/sonner/{index.d.ts → types/sonner.d.ts} +0 -0
  315. /package/spinner/{index.d.ts → types/spinner.d.ts} +0 -0
  316. /package/switch/{index.d.ts → types/switch.d.ts} +0 -0
package/README.md CHANGED
@@ -14,17 +14,28 @@ npm install @egose/shadcn-theme-ng
14
14
  npm install @egose/shadcn-theme-ng-tw
15
15
  ```
16
16
 
17
- `pnpm` / `yarn` equivalents work too. Make sure your project's versions satisfy the peer ranges below.
17
+ `pnpm` / `yarn` equivalents work too. npm installs peer dependencies automatically when it can resolve compatible
18
+ versions; applications must keep their existing framework versions inside the supported ranges below.
18
19
 
19
20
  ### Peer dependencies
20
21
 
21
- | Package | Supported version |
22
- | ------------------- | ------------------- |
23
- | `@angular/common` | `^20.2.0` |
24
- | `@angular/core` | `^20.2.0` |
25
- | `@spartan-ng/brain` | `^0.0.1-alpha.512+` |
22
+ | Package | Supported version | Tested version |
23
+ | ------------------- | ------------------ | -------------- |
24
+ | `@angular/cdk` | `>=22.0.0 <23.0.0` | `22.1.3` |
25
+ | `@angular/common` | `>=22.0.0 <23.0.0` | `22.1.3` |
26
+ | `@angular/core` | `>=22.0.0 <23.0.0` | `22.1.3` |
27
+ | `@angular/forms` | `>=22.0.0 <23.0.0` | `22.1.3` |
28
+ | `@angular/router` | `>=22.0.0 <23.0.0` | `22.1.3` |
29
+ | `@ng-icons/core` | `>=35.0.1 <36.0.0` | `35.0.1` |
30
+ | `@spartan-ng/brain` | `>=1.3.2 <2.0.0` | `1.3.2` |
31
+ | `rxjs` | `>=7.8.0 <8.0.0` | `7.8.2` |
26
32
 
27
- `@spartan-ng/brain` is the underlying primitive library that powers most components.
33
+ Angular and CDK must use the same major version. The tested consumer contract is Angular 22, CDK 22, and Spartan 1.3.2;
34
+ the ranges above are copied from the published peer metadata and validated with strict isolated installs.
35
+
36
+ Runtime implementation dependencies such as `@ng-icons/lucide`, `@ng-icons/tabler-icons`, `class-variance-authority`,
37
+ `clsx`, `embla-carousel`, `embla-carousel-angular`, `ngx-scrollbar`, `ngx-sonner`, `tailwind-merge`, and `tslib` are
38
+ installed transitively. Do not install them directly unless your application also imports them.
28
39
 
29
40
  ### Tailwind variants
30
41
 
@@ -37,6 +48,59 @@ There are two published variants of this package. They produce identical markup
37
48
 
38
49
  If your project mixes shadcn styles with other Tailwind utilities that share class names, use the `-tw` variant to avoid collisions.
39
50
 
51
+ Class utilities are normalized to one unprefixed canonical representation during packaging. The plain artifact emits
52
+ unprefixed utilities, while the `-tw` artifact prefixes every recognized utility with `tw:`. Generated JavaScript source
53
+ maps are intentionally excluded because this post-build class and package-identity transformation invalidates ng-packagr's
54
+ maps; shipping no map is safer than shipping a map that points at different generated code.
55
+
56
+ ## Release preparation
57
+
58
+ Prepare both release candidates without publishing by supplying the intended version explicitly:
59
+
60
+ ```bash
61
+ pnpm --dir packages/angular prepare:release --version 1.2.3
62
+ ```
63
+
64
+ This runs `@repo-toolkit/publish-package` with `publish.config.mjs`: it serially
65
+ builds, validates, and packs the plain (`release/plain` → `@egose/shadcn-theme-ng`)
66
+ and `tw:` (`release/tw` → `@egose/shadcn-theme-ng-tw`) variants. The inspectable
67
+ stages and two exact `.tgz` artifacts are written under `packages/angular/release/`.
68
+ Neither package is published unless both candidates pass every step. Publishing is
69
+ intended to run from protected CI with npm trusted publishing/OIDC; `--otp` remains
70
+ available for manual publishes (passed to the toolkit publish command, never logged).
71
+
72
+ ## Source tests
73
+
74
+ Headless-test prerequisite (local and CI): the Karma suites need a
75
+ Chrome-compatible binary. The repository-supported setup downloads it into
76
+ the repo-local `.puppeteer-cache/` directory:
77
+
78
+ ```bash
79
+ pnpm --dir packages/angular install:browser
80
+ ```
81
+
82
+ Alternatively, set `CHROME_BIN` to any Chrome/Chromium binary yourself
83
+ (`test/karma.conf.js` honors a pre-set `CHROME_BIN`, then falls back to a
84
+ system Chrome).
85
+
86
+ Focused library tests are intentionally separate from staged-package and artifact validation:
87
+
88
+ ```bash
89
+ # One selected library
90
+ pnpm --dir packages/angular test:library form-text-input
91
+ pnpm --dir packages/angular test:library utils
92
+
93
+ # Source export contracts plus every selected library, serially and headlessly
94
+ pnpm --dir packages/angular test:libraries
95
+
96
+ # The example shell and router behavior
97
+ pnpm --dir packages/angular/@examples/standard test:ci
98
+ ```
99
+
100
+ The browser suites share `packages/angular/test/setup.ts`, which provides zoneless Angular setup and assertions for form
101
+ bindings and resource teardown. DOM reconciliation uses real `MutationObserver` and animation-frame scheduling; server-mode
102
+ coverage verifies those browser resources are not created. All CI commands disable watch mode so they terminate after one run.
103
+
40
104
  ## Import forms
41
105
 
42
106
  Import each component via its own npm subpath:
@@ -72,23 +136,27 @@ export class MyModule {}
72
136
 
73
137
  Import by component name. Component `NameX` is reachable at `@egose/shadcn-theme-ng/<name-x>` (kebab-case). The current surface:
74
138
 
75
- `accordion`, `alert`, `autocomplete`, `badge`, `basic-alert`, `button`, `calendar`, `checkbox`, `confirmation-dialog`, `date-picker`, `dialog`, `form-checkbox`, `form-date-picker`, `form-field`, `form-field-simple`, `form-searchable-multiselect`, `form-select`, `form-text-input`, `form-textarea`, `icon`, `input`, `label`, `layout-simple`, `menu`, `popover`, `radio-group`, `searchable-multiselect`, `select`, `separator`, `sheet`, `sonner`, `spinner`, `switch`, `tabs`, `tooltip`, `utils`.
139
+ <!-- BEGIN GENERATED SUBPATHS -->
140
+
141
+ `accordion`, `alert`, `alert-dialog`, `aspect-ratio`, `autocomplete`, `avatar`, `badge`, `basic-alert`, `breadcrumb`, `button`, `button-group`, `calendar`, `card`, `carousel`, `checkbox`, `collapsible`, `combobox`, `command`, `confirmation-dialog`, `context-menu`, `date-picker`, `dialog`, `drawer`, `dropdown-menu`, `empty`, `field`, `form-checkbox`, `form-date-picker`, `form-field`, `form-field-simple`, `form-searchable-multiselect`, `form-select`, `form-text-input`, `form-textarea`, `hover-card`, `icon`, `input`, `input-group`, `input-otp`, `item`, `kbd`, `label`, `layout-simple`, `menu`, `menubar`, `native-select`, `navigation-menu`, `pagination`, `popover`, `progress`, `radio-group`, `resizable`, `scroll-area`, `searchable-multiselect`, `select`, `separator`, `sheet`, `sidebar`, `skeleton`, `slider`, `sonner`, `spinner`, `switch`, `table`, `tabs`, `textarea`, `toggle`, `toggle-group`, `tooltip`, `typography`, `utils`.
142
+
143
+ <!-- END GENERATED SUBPATHS -->
76
144
 
77
145
  Anything not in this list is not part of the public surface. The published `exports` map in `package.json` reflects this set exactly — if a subpath is not listed, do not assume it is importable.
78
146
 
79
147
  ## Quick start (Angular standalone)
80
148
 
81
149
  ```ts
82
- import { Component } from "@angular/core";
83
- import { HlmButtonImports } from "@egose/shadcn-theme-ng/button";
84
- import { EgLayoutSimple, MenuItem } from "@egose/shadcn-theme-ng/layout-simple";
150
+ import { Component } from '@angular/core';
151
+ import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
152
+ import { EgLayoutSimple, MenuItem } from '@egose/shadcn-theme-ng/layout-simple';
85
153
 
86
154
  @Component({
87
155
  selector: "app-demo",
88
156
  standalone: true,
89
- imports: [...HlmButtonImports],
157
+ imports: [EgLayoutSimple, ...HlmButtonImports],
90
158
  template: \`
91
- <eg-layout-simple [menuItems]="items">
159
+ <eg-layout-simple [leftMenus]="items">
92
160
  <button hlmBtn variant="primary">Click</button>
93
161
  </eg-layout-simple>
94
162
  \`,
@@ -98,6 +166,55 @@ export class DemoComponent {
98
166
  }
99
167
  ```
100
168
 
169
+ ## Date picker values
170
+
171
+ `hlm-date-picker` emits a native JS `Date` (or `null` when cleared) via the `dateChange` output. Read it in the
172
+ controller with `(dateChange)`, a template ref (`picker.value()`), or a form binding (`ngModel`/`formControlName`,
173
+ the picker is a `ControlValueAccessor`):
174
+
175
+ ```html
176
+ <hlm-date-picker (dateChange)="onDate($event)">
177
+ <hlm-date-picker-input placeholder="Pick a date" />
178
+ </hlm-date-picker>
179
+ ```
180
+
181
+ ```ts
182
+ onDate(date: Date | null) {
183
+ // date is a JS Date, e.g. 2026-09-23T00:00:00 local time (or null on clear)
184
+ }
185
+ ```
186
+
187
+ Unlike the React `FormDatePicker` (which normalizes to local midnight), the Angular picker passes dates through
188
+ untouched by default: calendar clicks usually arrive at local midnight already, but dates typed into the input are
189
+ parsed with `new Date(value)`, where `"YYYY-MM-DD"` means UTC midnight — so the time portion can be non-zero. To
190
+ normalize every value reaching the controller to local midnight, provide a custom config (no library changes needed):
191
+
192
+ ```ts
193
+ import { provideHlmDatePickerConfig } from '@egose/shadcn-theme-ng/date-picker';
194
+
195
+ @Component({
196
+ // ...
197
+ providers: [
198
+ provideHlmDatePickerConfig({
199
+ // Strip the time portion, mirroring React's normalizeDate.
200
+ transformDate: (date: Date) => new Date(date.getFullYear(), date.getMonth(), date.getDate()),
201
+ // Parse typed "YYYY-MM-DD" as a local date instead of new Date(value) (UTC).
202
+ parseDate: (value: string) => {
203
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
204
+ if (!match) return null;
205
+ const date = new Date(+match[1], +match[2] - 1, +match[3]);
206
+ return isNaN(date.getTime()) ? null : date;
207
+ },
208
+ }),
209
+ ],
210
+ })
211
+ export class MyComponent {}
212
+ ```
213
+
214
+ `transformDate` runs on every path into the model (calendar selection, typed input, `writeValue`), so the controller
215
+ then always sees local-midnight dates. Related: the picker stays open after selection by default; add the
216
+ `autoCloseOnSelect` attribute (or set it in the same config) to close it on select.
217
+
101
218
  ## Working example
102
219
 
103
220
  A complete Angular consumer app lives at [`@examples/standard`](https://github.com/egose/shadcn-theme/tree/main/packages/angular/@examples/standard) — see its `src/app/...` for real usage of `@egose/shadcn-theme-ng/button`, `.../layout-simple`, `.../form-text-input`, `.../autocomplete`, `.../select`, `.../form-checkbox`, `.../sheet`, etc.
@@ -0,0 +1,3 @@
1
+ # Accordion Subpath
2
+
3
+ This project ships only as `@egose/shadcn-theme-ng/accordion` or `@egose/shadcn-theme-ng-tw/accordion`. See the [package README](../../README.md) for installation, compatibility, Tailwind variant, test, and release guidance. Do not publish this project directory independently.
@@ -0,0 +1,160 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, computed, Directive, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import * as i1 from '@spartan-ng/brain/accordion';
4
+ import { BrnAccordion, BrnAccordionContent, BrnAccordionItem, BrnAccordionTrigger } from '@spartan-ng/brain/accordion';
5
+ import { hlm } from '@egose/shadcn-theme-ng-tw/utils';
6
+ import { provideIcons } from '@ng-icons/core';
7
+ import { lucideChevronDown } from '@ng-icons/lucide';
8
+ import { provideHlmIconConfig } from '@egose/shadcn-theme-ng-tw/icon';
9
+
10
+ class HlmAccordion {
11
+ _brn = inject(BrnAccordion);
12
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
13
+ _computedClass = computed(() => hlm('tw:flex', this._brn.orientation() === 'horizontal' ? 'tw:flex-row' : 'tw:flex-col', this.userClass()), /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });
16
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAccordion, isStandalone: true, selector: "[hlmAccordion], hlm-accordion", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordion, inputs: ["type", "type", "orientation", "orientation"] }], ngImport: i0 });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordion, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: '[hlmAccordion], hlm-accordion',
22
+ host: {
23
+ '[class]': '_computedClass()',
24
+ },
25
+ hostDirectives: [{ directive: BrnAccordion, inputs: ['type', 'orientation'] }],
26
+ }]
27
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
28
+
29
+ class HlmAccordionContent extends BrnAccordionContent {
30
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
31
+ _computedClass = computed(() => {
32
+ const gridRows = this.state() === 'open' ? 'tw:grid-rows-[1fr]' : 'tw:hidden';
33
+ return hlm('tw:grid tw:text-sm tw:transition-all', gridRows, this.userClass());
34
+ }, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
36
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionContent, deps: null, target: i0.ɵɵFactoryTarget.Component });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmAccordionContent, isStandalone: true, selector: "hlm-accordion-content", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, usesInheritance: true, ngImport: i0, template: `
38
+ <div [attr.inert]="_inert()" style="tw:overflow:hidden">
39
+ <div class="tw:flex tw:flex-col tw:gap-4 tw:text-balance tw:pb-4 tw:pt-0">
40
+ <ng-content />
41
+ </div>
42
+ </div>
43
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionContent, decorators: [{
46
+ type: Component,
47
+ args: [{
48
+ selector: 'hlm-accordion-content',
49
+ template: `
50
+ <div [attr.inert]="_inert()" style="tw:overflow:hidden">
51
+ <div class="tw:flex tw:flex-col tw:gap-4 tw:text-balance tw:pb-4 tw:pt-0">
52
+ <ng-content />
53
+ </div>
54
+ </div>
55
+ `,
56
+ changeDetection: ChangeDetectionStrategy.OnPush,
57
+ encapsulation: ViewEncapsulation.None,
58
+ host: {
59
+ '[class]': '_computedClass()',
60
+ },
61
+ }]
62
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
63
+
64
+ class HlmAccordionIcon {
65
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
66
+ _computedClass = computed(() => hlm('tw:text-muted-foreground tw:pointer-events-none tw:size-4 tw:shrink-0 tw:translate-y-0.5 tw:transition-transform tw:duration-200', this.userClass()), /* @ts-ignore */
67
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
69
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAccordionIcon, isStandalone: true, selector: "ng-icon[egAccordionIcon], ng-icon[hlmAccIcon]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ size: 'sm' })], ngImport: i0 });
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionIcon, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: 'ng-icon[egAccordionIcon], ng-icon[hlmAccIcon]',
75
+ providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ size: 'sm' })],
76
+ host: {
77
+ '[class]': '_computedClass()',
78
+ },
79
+ }]
80
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
81
+
82
+ class HlmAccordionItem {
83
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
84
+ _computedClass = computed(() => hlm('tw:border-border tw:flex tw:flex-1 tw:flex-col tw:border-b', this.userClass()), /* @ts-ignore */
85
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
87
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAccordionItem, isStandalone: true, selector: "[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordionItem, inputs: ["isOpened", "isOpened"] }], ngImport: i0 });
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionItem, decorators: [{
90
+ type: Directive,
91
+ args: [{
92
+ selector: '[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item',
93
+ host: {
94
+ '[class]': '_computedClass()',
95
+ },
96
+ hostDirectives: [
97
+ {
98
+ directive: BrnAccordionItem,
99
+ inputs: ['isOpened'],
100
+ },
101
+ ],
102
+ }]
103
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
104
+
105
+ class HlmAccordionTrigger {
106
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
107
+ _computedClass = computed(() => hlm('tw:focus-visible:border-ring tw:focus-visible:ring-ring/50 tw:flex tw:flex-1 tw:items-start tw:justify-between tw:gap-4 tw:rounded-md tw:py-4 tw:text-left tw:text-sm tw:font-medium tw:outline-none tw:transition-all tw:hover:underline tw:focus-visible:ring-[3px] tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:[&[data-state=open]>[egAccIcon]]:rotate-180', this.userClass()), /* @ts-ignore */
108
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
109
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
110
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAccordionTrigger, isStandalone: true, selector: "[hlmAccordionTrigger]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--tw-ring-offset-shadow": "\"0 0 #000\"", "class": "_computedClass()" } }, hostDirectives: [{ directive: i1.BrnAccordionTrigger }], ngImport: i0 });
111
+ }
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionTrigger, decorators: [{
113
+ type: Directive,
114
+ args: [{
115
+ selector: '[hlmAccordionTrigger]',
116
+ host: {
117
+ '[style.--tw-ring-offset-shadow]': '"0 0 #000"',
118
+ '[class]': '_computedClass()',
119
+ },
120
+ hostDirectives: [BrnAccordionTrigger],
121
+ }]
122
+ }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
123
+
124
+ /*
125
+ * Public API Surface of accordion
126
+ */
127
+ const HlmAccordionImports = [
128
+ HlmAccordion,
129
+ HlmAccordionItem,
130
+ HlmAccordionTrigger,
131
+ HlmAccordionIcon,
132
+ HlmAccordionContent,
133
+ ];
134
+ class HlmAccordionModule {
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
136
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionModule, imports: [HlmAccordion,
137
+ HlmAccordionItem,
138
+ HlmAccordionTrigger,
139
+ HlmAccordionIcon,
140
+ HlmAccordionContent], exports: [HlmAccordion,
141
+ HlmAccordionItem,
142
+ HlmAccordionTrigger,
143
+ HlmAccordionIcon,
144
+ HlmAccordionContent] });
145
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionModule });
146
+ }
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAccordionModule, decorators: [{
148
+ type: NgModule,
149
+ args: [{
150
+ imports: [...HlmAccordionImports],
151
+ exports: [...HlmAccordionImports],
152
+ }]
153
+ }] });
154
+
155
+ /**
156
+ * Generated bundle index. Do not edit.
157
+ */
158
+
159
+ export { HlmAccordion, HlmAccordionContent, HlmAccordionIcon, HlmAccordionImports, HlmAccordionItem, HlmAccordionModule, HlmAccordionTrigger };
160
+
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "accordion",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^20.2.0 || ^22.0.0",
6
+ "@angular/core": "^20.2.0 || ^22.0.0",
7
+ "@spartan-ng/brain": "^0.0.1-alpha.512"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "sideEffects": false,
13
+ "module": "fesm2022/accordion.mjs",
14
+ "typings": "types/accordion.d.ts",
15
+ "exports": {
16
+ "./package.json": {
17
+ "default": "./package.json"
18
+ },
19
+ ".": {
20
+ "types": "./types/accordion.d.ts",
21
+ "default": "./fesm2022/accordion.mjs"
22
+ }
23
+ },
24
+ "type": "module"
25
+ }
@@ -0,0 +1,49 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ClassValue } from 'clsx';
3
+ import * as i1 from '@spartan-ng/brain/accordion';
4
+ import { BrnAccordionContent } from '@spartan-ng/brain/accordion';
5
+
6
+ declare class HlmAccordion {
7
+ private readonly _brn;
8
+ readonly userClass: i0.InputSignal<ClassValue>;
9
+ protected readonly _computedClass: i0.Signal<string>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordion, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HlmAccordion, "[hlmAccordion], hlm-accordion", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.BrnAccordion; inputs: { "type": "type"; "orientation": "orientation"; }; outputs: {}; }]>;
12
+ }
13
+
14
+ declare class HlmAccordionContent extends BrnAccordionContent {
15
+ readonly userClass: i0.InputSignal<ClassValue>;
16
+ protected readonly _computedClass: i0.Signal<string>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordionContent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<HlmAccordionContent, "hlm-accordion-content", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
19
+ }
20
+
21
+ declare class HlmAccordionIcon {
22
+ readonly userClass: i0.InputSignal<ClassValue>;
23
+ protected readonly _computedClass: i0.Signal<string>;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordionIcon, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HlmAccordionIcon, "ng-icon[egAccordionIcon], ng-icon[hlmAccIcon]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
26
+ }
27
+
28
+ declare class HlmAccordionItem {
29
+ readonly userClass: i0.InputSignal<ClassValue>;
30
+ protected readonly _computedClass: i0.Signal<string>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordionItem, never>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HlmAccordionItem, "[hlmAccordionItem],brn-accordion-item[hlm],hlm-accordion-item", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.BrnAccordionItem; inputs: { "isOpened": "isOpened"; }; outputs: {}; }]>;
33
+ }
34
+
35
+ declare class HlmAccordionTrigger {
36
+ readonly userClass: i0.InputSignal<ClassValue>;
37
+ protected readonly _computedClass: i0.Signal<string>;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordionTrigger, never>;
39
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HlmAccordionTrigger, "[hlmAccordionTrigger]", never, { "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.BrnAccordionTrigger; inputs: {}; outputs: {}; }]>;
40
+ }
41
+
42
+ declare const HlmAccordionImports: readonly [typeof HlmAccordion, typeof HlmAccordionItem, typeof HlmAccordionTrigger, typeof HlmAccordionIcon, typeof HlmAccordionContent];
43
+ declare class HlmAccordionModule {
44
+ static ɵfac: i0.ɵɵFactoryDeclaration<HlmAccordionModule, never>;
45
+ static ɵmod: i0.ɵɵNgModuleDeclaration<HlmAccordionModule, never, [typeof HlmAccordion, typeof HlmAccordionItem, typeof HlmAccordionTrigger, typeof HlmAccordionIcon, typeof HlmAccordionContent], [typeof HlmAccordion, typeof HlmAccordionItem, typeof HlmAccordionTrigger, typeof HlmAccordionIcon, typeof HlmAccordionContent]>;
46
+ static ɵinj: i0.ɵɵInjectorDeclaration<HlmAccordionModule>;
47
+ }
48
+
49
+ export { HlmAccordion, HlmAccordionContent, HlmAccordionIcon, HlmAccordionImports, HlmAccordionItem, HlmAccordionModule, HlmAccordionTrigger };
package/alert/README.md CHANGED
@@ -1,64 +1,3 @@
1
- # Alert
1
+ # Alert Subpath
2
2
 
3
- This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
-
9
- ```bash
10
- ng generate component component-name
11
- ```
12
-
13
- For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
-
15
- ```bash
16
- ng generate --help
17
- ```
18
-
19
- ## Building
20
-
21
- To build the library, run:
22
-
23
- ```bash
24
- ng build alert
25
- ```
26
-
27
- This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
-
29
- ### Publishing the Library
30
-
31
- Once the project is built, you can publish your library by following these steps:
32
-
33
- 1. Navigate to the `dist` directory:
34
-
35
- ```bash
36
- cd dist/alert
37
- ```
38
-
39
- 2. Run the `npm publish` command to publish your library to the npm registry:
40
- ```bash
41
- npm publish
42
- ```
43
-
44
- ## Running unit tests
45
-
46
- To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
-
48
- ```bash
49
- ng test
50
- ```
51
-
52
- ## Running end-to-end tests
53
-
54
- For end-to-end (e2e) testing, run:
55
-
56
- ```bash
57
- ng e2e
58
- ```
59
-
60
- Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
-
62
- ## Additional Resources
63
-
64
- For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
3
+ This project ships only as `@egose/shadcn-theme-ng/alert` or `@egose/shadcn-theme-ng-tw/alert`. See the [package README](../../README.md) for installation, compatibility, Tailwind variant, test, and release guidance. Do not publish this project directory independently.
@@ -68,7 +68,7 @@ const alertVariants = cva('tw:relative tw:w-full tw:items-start tw:gap-y-0.5 tw:
68
68
  class: 'tw:bg-dark/20 tw:text-dark tw:[&>[hlmAlertDescription]]:text-dark',
69
69
  },
70
70
  {
71
- variant: 'accent',
71
+ variant: "tw:accent",
72
72
  appearance: 'light',
73
73
  class: 'tw:bg-accent/20 tw:text-accent tw:[&>[hlmAlertDescription]]:text-accent',
74
74
  },
@@ -99,17 +99,20 @@ const alertVariants = cva('tw:relative tw:w-full tw:items-start tw:gap-y-0.5 tw:
99
99
  },
100
100
  });
101
101
  class HlmAlert {
102
- userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
103
- variant = input('primary', ...(ngDevMode ? [{ debugName: "variant" }] : []));
104
- appearance = input('solid', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
102
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
103
+ variant = input('primary', /* @ts-ignore */
104
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
105
+ appearance = input('solid', /* @ts-ignore */
106
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
105
107
  _computedClass = computed(() => hlm(alertVariants({
106
108
  variant: this.variant(),
107
109
  appearance: this.appearance(),
108
- }), this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
109
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlert, deps: [], target: i0.ɵɵFactoryTarget.Directive });
110
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: HlmAlert, isStandalone: true, selector: "[hlmAlert]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "alert" }, properties: { "class": "_computedClass()" } }, ngImport: i0 });
110
+ }), this.userClass()), /* @ts-ignore */
111
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
112
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlert, deps: [], target: i0.ɵɵFactoryTarget.Directive });
113
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAlert, isStandalone: true, selector: "[hlmAlert]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "alert" }, properties: { "class": "_computedClass()" } }, ngImport: i0 });
111
114
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlert, decorators: [{
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlert, decorators: [{
113
116
  type: Directive,
114
117
  args: [{
115
118
  selector: '[hlmAlert]',
@@ -121,12 +124,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
121
124
  }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }] } });
122
125
 
123
126
  class HlmAlertDescription {
124
- userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
125
- _computedClass = computed(() => hlm('tw:text-current tw:col-start-2 tw:grid tw:justify-items-start tw:gap-1 tw:text-sm tw:[&_p]:leading-relaxed', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
126
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
127
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: HlmAlertDescription, isStandalone: true, selector: "[hlmAlertDesc],[hlmAlertDescription]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
127
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
128
+ _computedClass = computed(() => hlm('tw:text-current tw:col-start-2 tw:grid tw:justify-items-start tw:gap-1 tw:text-sm tw:[&_p]:leading-relaxed', this.userClass()), /* @ts-ignore */
129
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
131
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAlertDescription, isStandalone: true, selector: "[hlmAlertDesc],[hlmAlertDescription]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
128
132
  }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertDescription, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertDescription, decorators: [{
130
134
  type: Directive,
131
135
  args: [{
132
136
  selector: '[hlmAlertDesc],[hlmAlertDescription]',
@@ -137,10 +141,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
137
141
  }], propDecorators: { userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
138
142
 
139
143
  class HlmAlertIcon {
140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
141
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: HlmAlertIcon, isStandalone: true, selector: "[hlmAlertIcon]", providers: [provideHlmIconConfig({ size: 'sm' })], ngImport: i0 });
144
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
145
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmAlertIcon, isStandalone: true, selector: "[hlmAlertIcon]", providers: [provideHlmIconConfig({ size: 'sm' })], ngImport: i0 });
142
146
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertIcon, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertIcon, decorators: [{
144
148
  type: Directive,
145
149
  args: [{
146
150
  selector: '[hlmAlertIcon]',
@@ -149,12 +153,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
149
153
  }] });
150
154
 
151
155
  class HlmAlertTitle {
152
- userClass = input('', ...(ngDevMode ? [{ debugName: "userClass", alias: 'class' }] : [{ alias: 'class' }]));
153
- _computedClass = computed(() => hlm('tw:col-start-2 tw:line-clamp-1 tw:min-h-4 tw:text-md tw:font-semibold tw:tracking-tight', this.userClass()), ...(ngDevMode ? [{ debugName: "_computedClass" }] : []));
154
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
155
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: HlmAlertTitle, isStandalone: true, selector: "[hlmAlertTitle]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
156
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
157
+ _computedClass = computed(() => hlm('tw:col-start-2 tw:line-clamp-1 tw:min-h-4 tw:text-md tw:font-semibold tw:tracking-tight', this.userClass()), /* @ts-ignore */
158
+ ...(ngDevMode ? [{ debugName: "_computedClass" }] : /* istanbul ignore next */ []));
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
160
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: HlmAlertTitle, isStandalone: true, selector: "[hlmAlertTitle]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, ngImport: i0 });
156
161
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertTitle, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertTitle, decorators: [{
158
163
  type: Directive,
159
164
  args: [{
160
165
  selector: '[hlmAlertTitle]',
@@ -169,11 +174,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
169
174
  */
170
175
  const HlmAlertImports = [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertIcon];
171
176
  class HlmAlertModule {
172
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
173
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertModule, imports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertIcon], exports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertIcon] });
174
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertModule });
177
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
178
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertModule, imports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertIcon], exports: [HlmAlert, HlmAlertTitle, HlmAlertDescription, HlmAlertIcon] });
179
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertModule });
175
180
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: HlmAlertModule, decorators: [{
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAlertModule, decorators: [{
177
182
  type: NgModule,
178
183
  args: [{
179
184
  imports: [...HlmAlertImports],
@@ -186,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
186
191
  */
187
192
 
188
193
  export { HlmAlert, HlmAlertDescription, HlmAlertIcon, HlmAlertImports, HlmAlertModule, HlmAlertTitle };
189
- //# sourceMappingURL=alert.mjs.map
194
+