@loomui-ng/ui 0.0.0-stage → 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 (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -2
  3. package/accordion/README.md +38 -0
  4. package/alert/README.md +32 -0
  5. package/alert-dialog/README.md +37 -0
  6. package/aspect-ratio/README.md +24 -0
  7. package/attachment/README.md +40 -0
  8. package/avatar/README.md +34 -0
  9. package/badge/README.md +29 -0
  10. package/breadcrumb/README.md +33 -0
  11. package/bubble/README.md +32 -0
  12. package/button/README.md +31 -0
  13. package/button-group/README.md +30 -0
  14. package/calendar/README.md +35 -0
  15. package/card/README.md +41 -0
  16. package/carousel/README.md +41 -0
  17. package/chart/README.md +25 -0
  18. package/checkbox/README.md +31 -0
  19. package/collapsible/README.md +31 -0
  20. package/combobox/README.md +47 -0
  21. package/command/README.md +44 -0
  22. package/context-menu/README.md +36 -0
  23. package/data-table/README.md +39 -0
  24. package/date-picker/README.md +23 -0
  25. package/dialog/README.md +52 -0
  26. package/direction/README.md +19 -0
  27. package/drawer/README.md +37 -0
  28. package/dropdown-menu/README.md +46 -0
  29. package/empty/README.md +38 -0
  30. package/fesm2022/loomui-ng-ui-accordion.mjs +555 -0
  31. package/fesm2022/loomui-ng-ui-accordion.mjs.map +1 -0
  32. package/fesm2022/loomui-ng-ui-alert-dialog.mjs +652 -0
  33. package/fesm2022/loomui-ng-ui-alert-dialog.mjs.map +1 -0
  34. package/fesm2022/loomui-ng-ui-alert.mjs +286 -0
  35. package/fesm2022/loomui-ng-ui-alert.mjs.map +1 -0
  36. package/fesm2022/loomui-ng-ui-aspect-ratio.mjs +97 -0
  37. package/fesm2022/loomui-ng-ui-aspect-ratio.mjs.map +1 -0
  38. package/fesm2022/loomui-ng-ui-attachment.mjs +713 -0
  39. package/fesm2022/loomui-ng-ui-attachment.mjs.map +1 -0
  40. package/fesm2022/loomui-ng-ui-avatar.mjs +561 -0
  41. package/fesm2022/loomui-ng-ui-avatar.mjs.map +1 -0
  42. package/fesm2022/loomui-ng-ui-badge.mjs +102 -0
  43. package/fesm2022/loomui-ng-ui-badge.mjs.map +1 -0
  44. package/fesm2022/loomui-ng-ui-breadcrumb.mjs +520 -0
  45. package/fesm2022/loomui-ng-ui-breadcrumb.mjs.map +1 -0
  46. package/fesm2022/loomui-ng-ui-bubble.mjs +386 -0
  47. package/fesm2022/loomui-ng-ui-bubble.mjs.map +1 -0
  48. package/fesm2022/loomui-ng-ui-button-group.mjs +193 -0
  49. package/fesm2022/loomui-ng-ui-button-group.mjs.map +1 -0
  50. package/fesm2022/loomui-ng-ui-button.mjs +162 -0
  51. package/fesm2022/loomui-ng-ui-button.mjs.map +1 -0
  52. package/fesm2022/loomui-ng-ui-calendar.mjs +681 -0
  53. package/fesm2022/loomui-ng-ui-calendar.mjs.map +1 -0
  54. package/fesm2022/loomui-ng-ui-card.mjs +461 -0
  55. package/fesm2022/loomui-ng-ui-card.mjs.map +1 -0
  56. package/fesm2022/loomui-ng-ui-carousel.mjs +532 -0
  57. package/fesm2022/loomui-ng-ui-carousel.mjs.map +1 -0
  58. package/fesm2022/loomui-ng-ui-chart.mjs +373 -0
  59. package/fesm2022/loomui-ng-ui-chart.mjs.map +1 -0
  60. package/fesm2022/loomui-ng-ui-checkbox.mjs +265 -0
  61. package/fesm2022/loomui-ng-ui-checkbox.mjs.map +1 -0
  62. package/fesm2022/loomui-ng-ui-collapsible.mjs +274 -0
  63. package/fesm2022/loomui-ng-ui-collapsible.mjs.map +1 -0
  64. package/fesm2022/loomui-ng-ui-combobox.mjs +971 -0
  65. package/fesm2022/loomui-ng-ui-combobox.mjs.map +1 -0
  66. package/fesm2022/loomui-ng-ui-command.mjs +982 -0
  67. package/fesm2022/loomui-ng-ui-command.mjs.map +1 -0
  68. package/fesm2022/loomui-ng-ui-context-menu.mjs +1359 -0
  69. package/fesm2022/loomui-ng-ui-context-menu.mjs.map +1 -0
  70. package/fesm2022/loomui-ng-ui-data-table.mjs +535 -0
  71. package/fesm2022/loomui-ng-ui-data-table.mjs.map +1 -0
  72. package/fesm2022/loomui-ng-ui-date-picker.mjs +312 -0
  73. package/fesm2022/loomui-ng-ui-date-picker.mjs.map +1 -0
  74. package/fesm2022/loomui-ng-ui-dialog.mjs +508 -0
  75. package/fesm2022/loomui-ng-ui-dialog.mjs.map +1 -0
  76. package/fesm2022/loomui-ng-ui-direction.mjs +112 -0
  77. package/fesm2022/loomui-ng-ui-direction.mjs.map +1 -0
  78. package/fesm2022/loomui-ng-ui-drawer.mjs +590 -0
  79. package/fesm2022/loomui-ng-ui-drawer.mjs.map +1 -0
  80. package/fesm2022/loomui-ng-ui-dropdown-menu.mjs +1322 -0
  81. package/fesm2022/loomui-ng-ui-dropdown-menu.mjs.map +1 -0
  82. package/fesm2022/loomui-ng-ui-empty.mjs +408 -0
  83. package/fesm2022/loomui-ng-ui-empty.mjs.map +1 -0
  84. package/fesm2022/loomui-ng-ui-field.mjs +630 -0
  85. package/fesm2022/loomui-ng-ui-field.mjs.map +1 -0
  86. package/fesm2022/loomui-ng-ui-hover-card.mjs +230 -0
  87. package/fesm2022/loomui-ng-ui-hover-card.mjs.map +1 -0
  88. package/fesm2022/loomui-ng-ui-icon.mjs +498 -0
  89. package/fesm2022/loomui-ng-ui-icon.mjs.map +1 -0
  90. package/fesm2022/loomui-ng-ui-input-group.mjs +463 -0
  91. package/fesm2022/loomui-ng-ui-input-group.mjs.map +1 -0
  92. package/fesm2022/loomui-ng-ui-input-otp.mjs +586 -0
  93. package/fesm2022/loomui-ng-ui-input-otp.mjs.map +1 -0
  94. package/fesm2022/loomui-ng-ui-input.mjs +289 -0
  95. package/fesm2022/loomui-ng-ui-input.mjs.map +1 -0
  96. package/fesm2022/loomui-ng-ui-item.mjs +598 -0
  97. package/fesm2022/loomui-ng-ui-item.mjs.map +1 -0
  98. package/fesm2022/loomui-ng-ui-kbd.mjs +129 -0
  99. package/fesm2022/loomui-ng-ui-kbd.mjs.map +1 -0
  100. package/fesm2022/loomui-ng-ui-label.mjs +68 -0
  101. package/fesm2022/loomui-ng-ui-label.mjs.map +1 -0
  102. package/fesm2022/loomui-ng-ui-marker.mjs +234 -0
  103. package/fesm2022/loomui-ng-ui-marker.mjs.map +1 -0
  104. package/fesm2022/loomui-ng-ui-menubar.mjs +1523 -0
  105. package/fesm2022/loomui-ng-ui-menubar.mjs.map +1 -0
  106. package/fesm2022/loomui-ng-ui-message-scroller.mjs +519 -0
  107. package/fesm2022/loomui-ng-ui-message-scroller.mjs.map +1 -0
  108. package/fesm2022/loomui-ng-ui-message.mjs +408 -0
  109. package/fesm2022/loomui-ng-ui-message.mjs.map +1 -0
  110. package/fesm2022/loomui-ng-ui-native-select.mjs +389 -0
  111. package/fesm2022/loomui-ng-ui-native-select.mjs.map +1 -0
  112. package/fesm2022/loomui-ng-ui-navigation-menu.mjs +609 -0
  113. package/fesm2022/loomui-ng-ui-navigation-menu.mjs.map +1 -0
  114. package/fesm2022/loomui-ng-ui-pagination.mjs +611 -0
  115. package/fesm2022/loomui-ng-ui-pagination.mjs.map +1 -0
  116. package/fesm2022/loomui-ng-ui-popover.mjs +358 -0
  117. package/fesm2022/loomui-ng-ui-popover.mjs.map +1 -0
  118. package/fesm2022/loomui-ng-ui-progress.mjs +159 -0
  119. package/fesm2022/loomui-ng-ui-progress.mjs.map +1 -0
  120. package/fesm2022/loomui-ng-ui-questionnaire.mjs +1012 -0
  121. package/fesm2022/loomui-ng-ui-questionnaire.mjs.map +1 -0
  122. package/fesm2022/loomui-ng-ui-radio-group.mjs +399 -0
  123. package/fesm2022/loomui-ng-ui-radio-group.mjs.map +1 -0
  124. package/fesm2022/loomui-ng-ui-resizable.mjs +518 -0
  125. package/fesm2022/loomui-ng-ui-resizable.mjs.map +1 -0
  126. package/fesm2022/loomui-ng-ui-scroll-area.mjs +135 -0
  127. package/fesm2022/loomui-ng-ui-scroll-area.mjs.map +1 -0
  128. package/fesm2022/loomui-ng-ui-select.mjs +863 -0
  129. package/fesm2022/loomui-ng-ui-select.mjs.map +1 -0
  130. package/fesm2022/loomui-ng-ui-separator.mjs +114 -0
  131. package/fesm2022/loomui-ng-ui-separator.mjs.map +1 -0
  132. package/fesm2022/loomui-ng-ui-sheet.mjs +530 -0
  133. package/fesm2022/loomui-ng-ui-sheet.mjs.map +1 -0
  134. package/fesm2022/loomui-ng-ui-sidebar.mjs +1918 -0
  135. package/fesm2022/loomui-ng-ui-sidebar.mjs.map +1 -0
  136. package/fesm2022/loomui-ng-ui-skeleton.mjs +69 -0
  137. package/fesm2022/loomui-ng-ui-skeleton.mjs.map +1 -0
  138. package/fesm2022/loomui-ng-ui-slider.mjs +390 -0
  139. package/fesm2022/loomui-ng-ui-slider.mjs.map +1 -0
  140. package/fesm2022/loomui-ng-ui-spinner.mjs +85 -0
  141. package/fesm2022/loomui-ng-ui-spinner.mjs.map +1 -0
  142. package/fesm2022/loomui-ng-ui-switch.mjs +212 -0
  143. package/fesm2022/loomui-ng-ui-switch.mjs.map +1 -0
  144. package/fesm2022/loomui-ng-ui-table.mjs +559 -0
  145. package/fesm2022/loomui-ng-ui-table.mjs.map +1 -0
  146. package/fesm2022/loomui-ng-ui-tabs.mjs +544 -0
  147. package/fesm2022/loomui-ng-ui-tabs.mjs.map +1 -0
  148. package/fesm2022/loomui-ng-ui-textarea.mjs +206 -0
  149. package/fesm2022/loomui-ng-ui-textarea.mjs.map +1 -0
  150. package/fesm2022/loomui-ng-ui-toast.mjs +432 -0
  151. package/fesm2022/loomui-ng-ui-toast.mjs.map +1 -0
  152. package/fesm2022/loomui-ng-ui-toggle-group.mjs +477 -0
  153. package/fesm2022/loomui-ng-ui-toggle-group.mjs.map +1 -0
  154. package/fesm2022/loomui-ng-ui-toggle.mjs +219 -0
  155. package/fesm2022/loomui-ng-ui-toggle.mjs.map +1 -0
  156. package/fesm2022/loomui-ng-ui-tooltip.mjs +240 -0
  157. package/fesm2022/loomui-ng-ui-tooltip.mjs.map +1 -0
  158. package/fesm2022/loomui-ng-ui-typography.mjs +129 -0
  159. package/fesm2022/loomui-ng-ui-typography.mjs.map +1 -0
  160. package/fesm2022/loomui-ng-ui-utils.mjs +1533 -0
  161. package/fesm2022/loomui-ng-ui-utils.mjs.map +1 -0
  162. package/fesm2022/loomui-ng-ui.mjs +4 -0
  163. package/fesm2022/loomui-ng-ui.mjs.map +1 -0
  164. package/field/README.md +43 -0
  165. package/hover-card/README.md +31 -0
  166. package/icon/README.md +42 -0
  167. package/input/README.md +26 -0
  168. package/input-group/README.md +40 -0
  169. package/input-otp/README.md +35 -0
  170. package/item/README.md +33 -0
  171. package/kbd/README.md +21 -0
  172. package/label/README.md +24 -0
  173. package/marker/README.md +24 -0
  174. package/menubar/README.md +40 -0
  175. package/message/README.md +32 -0
  176. package/message-scroller/README.md +40 -0
  177. package/native-select/README.md +26 -0
  178. package/navigation-menu/README.md +39 -0
  179. package/package.json +325 -3
  180. package/pagination/README.md +37 -0
  181. package/popover/README.md +37 -0
  182. package/progress/README.md +25 -0
  183. package/questionnaire/README.md +52 -0
  184. package/radio-group/README.md +33 -0
  185. package/resizable/README.md +37 -0
  186. package/scroll-area/README.md +25 -0
  187. package/select/README.md +45 -0
  188. package/separator/README.md +28 -0
  189. package/sheet/README.md +38 -0
  190. package/sidebar/README.md +60 -0
  191. package/skeleton/README.md +21 -0
  192. package/slider/README.md +29 -0
  193. package/spinner/README.md +15 -0
  194. package/styles/loomui.css +330 -0
  195. package/switch/README.md +29 -0
  196. package/table/README.md +31 -0
  197. package/tabs/README.md +42 -0
  198. package/textarea/README.md +28 -0
  199. package/toast/README.md +27 -0
  200. package/toggle/README.md +27 -0
  201. package/toggle-group/README.md +37 -0
  202. package/tooltip/README.md +31 -0
  203. package/types/loomui-ng-ui-accordion.d.ts +141 -0
  204. package/types/loomui-ng-ui-alert-dialog.d.ts +175 -0
  205. package/types/loomui-ng-ui-alert.d.ts +77 -0
  206. package/types/loomui-ng-ui-aspect-ratio.d.ts +31 -0
  207. package/types/loomui-ng-ui-attachment.d.ts +192 -0
  208. package/types/loomui-ng-ui-avatar.d.ts +147 -0
  209. package/types/loomui-ng-ui-badge.d.ts +32 -0
  210. package/types/loomui-ng-ui-breadcrumb.d.ts +118 -0
  211. package/types/loomui-ng-ui-bubble.d.ts +100 -0
  212. package/types/loomui-ng-ui-button-group.d.ts +51 -0
  213. package/types/loomui-ng-ui-button.d.ts +57 -0
  214. package/types/loomui-ng-ui-calendar.d.ts +171 -0
  215. package/types/loomui-ng-ui-card.d.ts +123 -0
  216. package/types/loomui-ng-ui-carousel.d.ts +140 -0
  217. package/types/loomui-ng-ui-chart.d.ts +95 -0
  218. package/types/loomui-ng-ui-checkbox.d.ts +62 -0
  219. package/types/loomui-ng-ui-collapsible.d.ts +74 -0
  220. package/types/loomui-ng-ui-combobox.d.ts +229 -0
  221. package/types/loomui-ng-ui-command.d.ts +231 -0
  222. package/types/loomui-ng-ui-context-menu.d.ts +288 -0
  223. package/types/loomui-ng-ui-data-table.d.ts +111 -0
  224. package/types/loomui-ng-ui-date-picker.d.ts +63 -0
  225. package/types/loomui-ng-ui-dialog.d.ts +127 -0
  226. package/types/loomui-ng-ui-direction.d.ts +42 -0
  227. package/types/loomui-ng-ui-drawer.d.ts +149 -0
  228. package/types/loomui-ng-ui-dropdown-menu.d.ts +258 -0
  229. package/types/loomui-ng-ui-empty.d.ts +109 -0
  230. package/types/loomui-ng-ui-field.d.ts +169 -0
  231. package/types/loomui-ng-ui-hover-card.d.ts +62 -0
  232. package/types/loomui-ng-ui-icon.d.ts +156 -0
  233. package/types/loomui-ng-ui-input-group.d.ts +130 -0
  234. package/types/loomui-ng-ui-input-otp.d.ts +149 -0
  235. package/types/loomui-ng-ui-input.d.ts +89 -0
  236. package/types/loomui-ng-ui-item.d.ts +157 -0
  237. package/types/loomui-ng-ui-kbd.d.ts +36 -0
  238. package/types/loomui-ng-ui-label.d.ts +19 -0
  239. package/types/loomui-ng-ui-marker.d.ts +61 -0
  240. package/types/loomui-ng-ui-menubar.d.ts +321 -0
  241. package/types/loomui-ng-ui-message-scroller.d.ts +138 -0
  242. package/types/loomui-ng-ui-message.d.ts +109 -0
  243. package/types/loomui-ng-ui-native-select.d.ts +84 -0
  244. package/types/loomui-ng-ui-navigation-menu.d.ts +160 -0
  245. package/types/loomui-ng-ui-pagination.d.ts +130 -0
  246. package/types/loomui-ng-ui-popover.d.ts +90 -0
  247. package/types/loomui-ng-ui-progress.d.ts +39 -0
  248. package/types/loomui-ng-ui-questionnaire.d.ts +274 -0
  249. package/types/loomui-ng-ui-radio-group.d.ts +109 -0
  250. package/types/loomui-ng-ui-resizable.d.ts +121 -0
  251. package/types/loomui-ng-ui-scroll-area.d.ts +44 -0
  252. package/types/loomui-ng-ui-select.d.ts +204 -0
  253. package/types/loomui-ng-ui-separator.d.ts +35 -0
  254. package/types/loomui-ng-ui-sheet.d.ts +124 -0
  255. package/types/loomui-ng-ui-sidebar.d.ts +485 -0
  256. package/types/loomui-ng-ui-skeleton.d.ts +20 -0
  257. package/types/loomui-ng-ui-slider.d.ts +103 -0
  258. package/types/loomui-ng-ui-spinner.d.ts +19 -0
  259. package/types/loomui-ng-ui-switch.d.ts +56 -0
  260. package/types/loomui-ng-ui-table.d.ts +148 -0
  261. package/types/loomui-ng-ui-tabs.d.ts +148 -0
  262. package/types/loomui-ng-ui-textarea.d.ts +52 -0
  263. package/types/loomui-ng-ui-toast.d.ts +97 -0
  264. package/types/loomui-ng-ui-toggle-group.d.ts +138 -0
  265. package/types/loomui-ng-ui-toggle.d.ts +63 -0
  266. package/types/loomui-ng-ui-tooltip.d.ts +63 -0
  267. package/types/loomui-ng-ui-typography.d.ts +42 -0
  268. package/types/loomui-ng-ui-utils.d.ts +392 -0
  269. package/types/loomui-ng-ui.d.ts +5 -0
  270. package/typography/README.md +29 -0
@@ -0,0 +1,274 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@loomui-ng/ui/utils";
3
+ export declare const questionnaireClass = "flex w-full min-w-0 flex-col gap-4 mx-auto max-w-md mt-auto";
4
+ export declare const questionnaireProgressClass = "min-h-[1lh] w-fit min-w-[14ch] text-xs font-medium text-muted-foreground tabular-nums";
5
+ export declare const questionnaireItemClass = "flex min-w-0 flex-col gap-4 border-0 p-0 outline-none data-active:animate-in data-active:fade-in-0 data-active:slide-in-from-bottom-2 data-active:duration-300 motion-reduce:animate-none";
6
+ export declare const questionnaireTitleClass = "cn-font-heading text-base leading-snug font-medium text-pretty [&:not(:has(~[data-slot=questionnaire-description]))]:mb-4 group-data-[size=sm]/card:text-sm";
7
+ export declare const questionnaireDescriptionClass = "text-sm text-pretty text-muted-foreground";
8
+ export declare const questionnaireChoicesClass = "group/questionnaire-choices grid min-w-0 gap-2";
9
+ export declare const questionnaireChoiceClass = "group/questionnaire-choice relative flex min-h-11 cursor-pointer items-start gap-2.5 rounded-lg border border-input bg-transparent px-3 py-2.5 text-start text-sm transition-colors outline-none select-none hover:bg-muted/50 has-[>input:focus-visible]:border-ring has-[>input:focus-visible]:ring-3 has-[>input:focus-visible]:ring-ring/50 data-invalid:border-destructive dark:bg-input/20 data-checked:border-primary/40 data-checked:bg-muted dark:data-checked:bg-muted data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50";
10
+ export declare const questionnaireChoiceInputClass = "absolute inset-0 z-10 size-full cursor-pointer opacity-0";
11
+ export declare const questionnaireChoiceIndicatorClass = "pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[4px] border border-input group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:bg-input/30 dark:group-data-checked/questionnaire-choice:bg-primary";
12
+ export declare const questionnaireChoiceIndicatorDotClass = "hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block";
13
+ export declare const questionnaireChoiceLabelClass = "flex min-w-0 flex-1 flex-col gap-0.5 leading-snug";
14
+ export declare const questionnaireChoiceShortcutClass = "pointer-events-none ms-auto hidden size-5 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-md border border-input bg-background font-mono text-[0.625rem] leading-none font-medium text-muted-foreground group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[shortcut]/questionnaire-choice:inline-flex";
15
+ export declare const questionnaireInputWrapperClass = "group/questionnaire-input relative w-full min-w-0";
16
+ export declare const questionnaireInputClass = "h-8 min-h-11 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-[color,box-shadow,background-color] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 sm:min-h-0 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground";
17
+ export declare const questionnaireErrorClass = "mt-2 text-sm text-destructive";
18
+ export declare const questionnaireActionsClass = "grid min-h-11 w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2 sm:min-h-8";
19
+ export declare const UI_QUESTIONNAIRE_GENERATED: readonly [];
20
+ /**
21
+ * Step-by-step form. Observed root: <form novalidate data-current data-total data-first data-last data-shortcuts>;
22
+ * one <fieldset> per question (hidden + inert unless active) with data-status/required/multiple.
23
+ *
24
+ * <form uiQuestionnaire #q="uiQuestionnaire" (submitted)="save($event)">
25
+ * <div uiQuestionnaireProgress></div>
26
+ * <fieldset uiQuestionnaireItem name="plan" required>
27
+ * <legend uiQuestionnaireTitle>Pick a plan</legend>
28
+ * <div uiQuestionnaireChoices>
29
+ * <label uiQuestionnaireChoice value="free">Free</label>
30
+ * </div>
31
+ * </fieldset>
32
+ * <div uiQuestionnaireActions>…buttons call q.previous() / q.next() / q.submit()…</div>
33
+ * </form>
34
+ *
35
+ * Keys (observed in the docs; wiring is own reconstruction): letter/number shortcuts pick a choice, Enter = next,
36
+ * Ctrl/Cmd+Enter = submit. UNKNOWN: ArrowUp/Down inside choices relies on native radio-group behavior only.
37
+ */
38
+ export declare class UiQuestionnaire {
39
+ readonly items: import("@angular/core").Signal<readonly any[]>;
40
+ readonly current: import("@angular/core").ModelSignal<number>;
41
+ readonly shortcuts: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
42
+ readonly userClass: import("@angular/core").InputSignal<string>;
43
+ /** Emits { [itemName]: string | string[] } after every required question validated. */
44
+ readonly submitted: import("@angular/core").OutputEmitterRef<Record<string, string | string[]>>;
45
+ readonly total: import("@angular/core").Signal<number>;
46
+ readonly isFirst: import("@angular/core").Signal<boolean>;
47
+ readonly isLast: import("@angular/core").Signal<boolean>;
48
+ protected readonly classes: import("@angular/core").Signal<string>;
49
+ readonly activeItem: import("@angular/core").Signal<any>;
50
+ previous(): void;
51
+ /** Validates the active question first (when required); `skip` bypasses it for optional questions. */
52
+ next(): void;
53
+ skip(): void;
54
+ submit(): void;
55
+ private readonly el;
56
+ protected onKey(e: KeyboardEvent): void;
57
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaire, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiQuestionnaire, "form[uiQuestionnaire], ui-questionnaire", ["uiQuestionnaire"], {
59
+ "current": {
60
+ "alias": "current";
61
+ "required": false;
62
+ "isSignal": true;
63
+ };
64
+ "shortcuts": {
65
+ "alias": "shortcuts";
66
+ "required": false;
67
+ "isSignal": true;
68
+ };
69
+ "userClass": {
70
+ "alias": "class";
71
+ "required": false;
72
+ "isSignal": true;
73
+ };
74
+ }, {
75
+ "current": "currentChange";
76
+ "submitted": "submitted";
77
+ }, ["items"], ["*"], true, [{
78
+ directive: typeof i1.UiElementHost;
79
+ inputs: {};
80
+ outputs: {};
81
+ }]>;
82
+ }
83
+ export declare class UiQuestionnaireProgress {
84
+ protected readonly root: UiQuestionnaire;
85
+ readonly userClass: import("@angular/core").InputSignal<string>;
86
+ protected readonly classes: import("@angular/core").Signal<string>;
87
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireProgress, never>;
88
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiQuestionnaireProgress, "div[uiQuestionnaireProgress], ui-questionnaire-progress", never, {
89
+ "userClass": {
90
+ "alias": "class";
91
+ "required": false;
92
+ "isSignal": true;
93
+ };
94
+ }, {}, never, never, true, [{
95
+ directive: typeof i1.UiElementHost;
96
+ inputs: {};
97
+ outputs: {};
98
+ }]>;
99
+ }
100
+ export declare class UiQuestionnaireItem {
101
+ private readonly root;
102
+ readonly id: string;
103
+ readonly name: import("@angular/core").InputSignal<string>;
104
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
105
+ readonly multiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
106
+ readonly userClass: import("@angular/core").InputSignal<string>;
107
+ readonly values: import("@angular/core").WritableSignal<string[]>;
108
+ readonly text: import("@angular/core").WritableSignal<string>;
109
+ readonly error: import("@angular/core").WritableSignal<string>;
110
+ protected readonly errorClass = "mt-2 text-sm text-destructive";
111
+ readonly index: import("@angular/core").Signal<number>;
112
+ readonly active: import("@angular/core").Signal<boolean>;
113
+ readonly answered: import("@angular/core").Signal<boolean>;
114
+ readonly status: import("@angular/core").Signal<"invalid" | "answered" | "pending">;
115
+ protected readonly classes: import("@angular/core").Signal<string>;
116
+ toggle(value: string): void;
117
+ validate(): boolean;
118
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireItem, never>;
119
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiQuestionnaireItem, "fieldset[uiQuestionnaireItem], ui-questionnaire-item", ["uiQuestionnaireItem"], {
120
+ "name": {
121
+ "alias": "name";
122
+ "required": false;
123
+ "isSignal": true;
124
+ };
125
+ "required": {
126
+ "alias": "required";
127
+ "required": false;
128
+ "isSignal": true;
129
+ };
130
+ "multiple": {
131
+ "alias": "multiple";
132
+ "required": false;
133
+ "isSignal": true;
134
+ };
135
+ "userClass": {
136
+ "alias": "class";
137
+ "required": false;
138
+ "isSignal": true;
139
+ };
140
+ }, {}, never, ["*"], true, [{
141
+ directive: typeof i1.UiElementHost;
142
+ inputs: {};
143
+ outputs: {};
144
+ }]>;
145
+ }
146
+ export declare class UiQuestionnaireTitle {
147
+ readonly userClass: import("@angular/core").InputSignal<string>;
148
+ protected readonly classes: import("@angular/core").Signal<string>;
149
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireTitle, never>;
150
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiQuestionnaireTitle, "legend[uiQuestionnaireTitle], ui-questionnaire-title", never, {
151
+ "userClass": {
152
+ "alias": "class";
153
+ "required": false;
154
+ "isSignal": true;
155
+ };
156
+ }, {}, never, never, true, [{
157
+ directive: typeof i1.UiElementHost;
158
+ inputs: {};
159
+ outputs: {};
160
+ }]>;
161
+ }
162
+ export declare class UiQuestionnaireDescription {
163
+ readonly userClass: import("@angular/core").InputSignal<string>;
164
+ protected readonly classes: import("@angular/core").Signal<string>;
165
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireDescription, never>;
166
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiQuestionnaireDescription, "p[uiQuestionnaireDescription], ui-questionnaire-description", never, {
167
+ "userClass": {
168
+ "alias": "class";
169
+ "required": false;
170
+ "isSignal": true;
171
+ };
172
+ }, {}, never, never, true, [{
173
+ directive: typeof i1.UiElementHost;
174
+ inputs: {};
175
+ outputs: {};
176
+ }]>;
177
+ }
178
+ export declare class UiQuestionnaireChoices {
179
+ readonly userClass: import("@angular/core").InputSignal<string>;
180
+ protected readonly classes: import("@angular/core").Signal<string>;
181
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireChoices, never>;
182
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiQuestionnaireChoices, "div[uiQuestionnaireChoices], ui-questionnaire-choices", never, {
183
+ "userClass": {
184
+ "alias": "class";
185
+ "required": false;
186
+ "isSignal": true;
187
+ };
188
+ }, {}, never, never, true, [{
189
+ directive: typeof i1.UiElementHost;
190
+ inputs: {};
191
+ outputs: {};
192
+ }]>;
193
+ }
194
+ /** One option; projected content becomes the label. `shortcut` defaults to the 1-based position within its question. */
195
+ export declare class UiQuestionnaireChoice {
196
+ protected readonly item: UiQuestionnaireItem;
197
+ protected readonly root: UiQuestionnaire;
198
+ private readonly el;
199
+ readonly value: import("@angular/core").InputSignal<string>;
200
+ readonly shortcut: import("@angular/core").InputSignal<string>;
201
+ readonly userClass: import("@angular/core").InputSignal<string>;
202
+ protected readonly checked: import("@angular/core").Signal<boolean>;
203
+ protected readonly shortcutKey: import("@angular/core").Signal<string>;
204
+ protected readonly classes: import("@angular/core").Signal<string>;
205
+ protected readonly inputClass = "absolute inset-0 z-10 size-full cursor-pointer opacity-0";
206
+ protected readonly indicatorClass = "pointer-events-none relative flex size-4 shrink-0 translate-y-[--spacing(0.45)] items-center justify-center rounded-[4px] border border-input group-has-data-[slot=questionnaire-choice-description]/questionnaire-choice:translate-y-0.5 group-data-[type=radio]/questionnaire-choice:rounded-full group-data-checked/questionnaire-choice:border-primary group-data-checked/questionnaire-choice:bg-primary group-data-checked/questionnaire-choice:text-primary-foreground dark:bg-input/30 dark:group-data-checked/questionnaire-choice:bg-primary";
207
+ protected readonly dotClass = "hidden size-2 rounded-full bg-primary-foreground group-data-[type=checkbox]/questionnaire-choice:hidden group-data-checked/questionnaire-choice:block";
208
+ protected readonly labelClass = "flex min-w-0 flex-1 flex-col gap-0.5 leading-snug";
209
+ protected readonly shortcutClass: string;
210
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireChoice, never>;
211
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiQuestionnaireChoice, "label[uiQuestionnaireChoice], ui-questionnaire-choice", never, {
212
+ "value": {
213
+ "alias": "value";
214
+ "required": true;
215
+ "isSignal": true;
216
+ };
217
+ "shortcut": {
218
+ "alias": "shortcut";
219
+ "required": false;
220
+ "isSignal": true;
221
+ };
222
+ "userClass": {
223
+ "alias": "class";
224
+ "required": false;
225
+ "isSignal": true;
226
+ };
227
+ }, {}, never, ["*"], true, [{
228
+ directive: typeof i1.UiElementHost;
229
+ inputs: {};
230
+ outputs: {};
231
+ }]>;
232
+ }
233
+ /** Free-text answer. */
234
+ export declare class UiQuestionnaireInput {
235
+ protected readonly item: UiQuestionnaireItem;
236
+ readonly placeholder: import("@angular/core").InputSignal<string>;
237
+ readonly userClass: import("@angular/core").InputSignal<string>;
238
+ protected readonly classes: import("@angular/core").Signal<string>;
239
+ protected readonly inputClass = "h-8 min-h-11 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-[color,box-shadow,background-color] outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 sm:min-h-0 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground";
240
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireInput, never>;
241
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiQuestionnaireInput, "div[uiQuestionnaireInput], ui-questionnaire-input", never, {
242
+ "placeholder": {
243
+ "alias": "placeholder";
244
+ "required": false;
245
+ "isSignal": true;
246
+ };
247
+ "userClass": {
248
+ "alias": "class";
249
+ "required": false;
250
+ "isSignal": true;
251
+ };
252
+ }, {}, never, never, true, [{
253
+ directive: typeof i1.UiElementHost;
254
+ inputs: {};
255
+ outputs: {};
256
+ }]>;
257
+ }
258
+ export declare class UiQuestionnaireActions {
259
+ readonly userClass: import("@angular/core").InputSignal<string>;
260
+ protected readonly classes: import("@angular/core").Signal<string>;
261
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiQuestionnaireActions, never>;
262
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiQuestionnaireActions, "div[uiQuestionnaireActions], ui-questionnaire-actions", never, {
263
+ "userClass": {
264
+ "alias": "class";
265
+ "required": false;
266
+ "isSignal": true;
267
+ };
268
+ }, {}, never, never, true, [{
269
+ directive: typeof i1.UiElementHost;
270
+ inputs: {};
271
+ outputs: {};
272
+ }]>;
273
+ }
274
+ export declare const UI_QUESTIONNAIRE: readonly [typeof UiQuestionnaire, typeof UiQuestionnaireProgress, typeof UiQuestionnaireItem, typeof UiQuestionnaireTitle, typeof UiQuestionnaireDescription, typeof UiQuestionnaireChoices, typeof UiQuestionnaireChoice, typeof UiQuestionnaireInput, typeof UiQuestionnaireActions];
@@ -0,0 +1,109 @@
1
+ import { Directionality } from "@angular/cdk/bidi";
2
+ import { ControlValueAccessor } from "@angular/forms";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@loomui-ng/ui/utils";
5
+ export declare const radioGroupClass = "grid gap-2 w-full";
6
+ export declare const radioGroupItemClass = "group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none group-has-[:focus-visible]/field-label:ring-0 group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:data-checked:border-primary dark:data-checked:bg-primary";
7
+ export declare const radioGroupIndicatorClass = "flex size-4 items-center justify-center";
8
+ export declare const UI_RADIO_GROUP_GENERATED: readonly [];
9
+ /**
10
+ * <div uiRadioGroup [(value)]="plan">
11
+ * <button uiRadioGroupItem value="a" id="a"></button><label uiLabel for="a">A</label>
12
+ * </div>
13
+ * Arrow keys move focus AND select (Radix). Roving tabindex: the selected item (else the first) is the tab stop.
14
+ */
15
+ export declare class UiRadioGroup implements ControlValueAccessor {
16
+ readonly value: import("@angular/core").ModelSignal<string>;
17
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
18
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
19
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal" | undefined>;
20
+ readonly userClass: import("@angular/core").InputSignal<string>;
21
+ protected readonly dir: Directionality;
22
+ private readonly cvaDisabled;
23
+ readonly isDisabled: import("@angular/core").Signal<boolean>;
24
+ readonly items: import("@angular/core").Signal<readonly any[]>;
25
+ protected readonly classes: import("@angular/core").Signal<string>;
26
+ private onChange;
27
+ onTouched: () => void;
28
+ readonly tabStop: import("@angular/core").Signal<any>;
29
+ select(v: string): void;
30
+ protected onKeydown(e: KeyboardEvent): void;
31
+ writeValue(v: string | null): void;
32
+ registerOnChange(fn: (v: string) => void): void;
33
+ registerOnTouched(fn: () => void): void;
34
+ setDisabledState(d: boolean): void;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiRadioGroup, never>;
36
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiRadioGroup, "[uiRadioGroup], ui-radio-group", ["uiRadioGroup"], {
37
+ "value": {
38
+ "alias": "value";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "required": {
43
+ "alias": "required";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "disabled": {
48
+ "alias": "disabled";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ "orientation": {
53
+ "alias": "orientation";
54
+ "required": false;
55
+ "isSignal": true;
56
+ };
57
+ "userClass": {
58
+ "alias": "class";
59
+ "required": false;
60
+ "isSignal": true;
61
+ };
62
+ }, {
63
+ "value": "valueChange";
64
+ }, ["items"], never, true, [{
65
+ directive: typeof i1.UiElementHost;
66
+ inputs: {};
67
+ outputs: {};
68
+ }]>;
69
+ }
70
+ export declare class UiRadioGroupItem {
71
+ protected readonly group: UiRadioGroup;
72
+ readonly el: HTMLElement;
73
+ readonly value: import("@angular/core").InputSignal<string>;
74
+ readonly disabledInput: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
75
+ readonly invalid: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
76
+ readonly userClass: import("@angular/core").InputSignal<string>;
77
+ protected readonly checked: import("@angular/core").Signal<boolean>;
78
+ isDisabled: () => boolean;
79
+ protected readonly classes: import("@angular/core").Signal<string>;
80
+ protected onFocus(): void;
81
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiRadioGroupItem, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiRadioGroupItem, "button[uiRadioGroupItem], ui-radio-group-item", never, {
83
+ "value": {
84
+ "alias": "value";
85
+ "required": false;
86
+ "isSignal": true;
87
+ };
88
+ "disabledInput": {
89
+ "alias": "disabled";
90
+ "required": false;
91
+ "isSignal": true;
92
+ };
93
+ "invalid": {
94
+ "alias": "invalid";
95
+ "required": false;
96
+ "isSignal": true;
97
+ };
98
+ "userClass": {
99
+ "alias": "class";
100
+ "required": false;
101
+ "isSignal": true;
102
+ };
103
+ }, {}, never, never, true, [{
104
+ directive: typeof i1.UiElementHost;
105
+ inputs: {};
106
+ outputs: {};
107
+ }]>;
108
+ }
109
+ export declare const UI_RADIO_GROUP: readonly [typeof UiRadioGroup, typeof UiRadioGroupItem];
@@ -0,0 +1,121 @@
1
+ import { Directionality } from "@angular/cdk/bidi";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@loomui-ng/ui/utils";
4
+ export declare const resizablePanelGroupClass = "flex h-full w-full aria-[orientation=vertical]:flex-col";
5
+ export declare const resizableHandleClass = "relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:start-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90 after:start-1/2 rtl:after:translate-x-1/2 rtl:aria-[orientation=horizontal]:after:-translate-x-0";
6
+ export declare const UI_RESIZABLE_GENERATED: readonly [];
7
+ /**
8
+ * <div uiResizablePanelGroup direction="horizontal" class="max-w-sm rounded-lg border">
9
+ * <div uiResizablePanel [defaultSize]="50">One</div>
10
+ * <div uiResizableHandle withHandle></div>
11
+ * <div uiResizablePanel [defaultSize]="50">Two</div>
12
+ * </div>
13
+ * Observed (react-resizable-panels): group `data-group`, panel `data-panel`, handle role="separator" tabindex=0
14
+ * aria-valuemin/max/now, aria-orientation (perpendicular to the group), data-separator inactive|hover|active.
15
+ * Own implementation (the original wraps a React library): pointer drag + keyboard (arrows ±step, Home/End).
16
+ */
17
+ export declare class UiResizablePanelGroup {
18
+ readonly direction: import("@angular/core").InputSignal<"horizontal" | "vertical">;
19
+ readonly userClass: import("@angular/core").InputSignal<string>;
20
+ readonly dir: Directionality;
21
+ readonly el: HTMLElement;
22
+ readonly panels: import("@angular/core").Signal<readonly any[]>;
23
+ readonly sizes: import("@angular/core").WritableSignal<number[]>;
24
+ protected readonly classes: import("@angular/core").Signal<string>;
25
+ constructor();
26
+ /** Move the boundary after panel `i` by `delta` percent (positive grows panel i). */
27
+ resize(i: number, delta: number): void;
28
+ isRtl(): boolean;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiResizablePanelGroup, never>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiResizablePanelGroup, "[uiResizablePanelGroup], ui-resizable-panel-group", ["uiResizablePanelGroup"], {
31
+ "direction": {
32
+ "alias": "direction";
33
+ "required": false;
34
+ "isSignal": true;
35
+ };
36
+ "userClass": {
37
+ "alias": "class";
38
+ "required": false;
39
+ "isSignal": true;
40
+ };
41
+ }, {}, ["panels"], never, true, [{
42
+ directive: typeof i1.UiElementHost;
43
+ inputs: {};
44
+ outputs: {};
45
+ }]>;
46
+ }
47
+ export declare class UiResizablePanel {
48
+ private readonly group;
49
+ readonly defaultSize: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
50
+ readonly minSize: import("@angular/core").InputSignalWithTransform<number, unknown>;
51
+ readonly maxSize: import("@angular/core").InputSignalWithTransform<number, unknown>;
52
+ readonly userClass: import("@angular/core").InputSignal<string>;
53
+ readonly index: import("@angular/core").Signal<number>;
54
+ readonly size: import("@angular/core").Signal<number>;
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiResizablePanel, never>;
56
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiResizablePanel, "[uiResizablePanel], ui-resizable-panel", never, {
57
+ "defaultSize": {
58
+ "alias": "defaultSize";
59
+ "required": false;
60
+ "isSignal": true;
61
+ };
62
+ "minSize": {
63
+ "alias": "minSize";
64
+ "required": false;
65
+ "isSignal": true;
66
+ };
67
+ "maxSize": {
68
+ "alias": "maxSize";
69
+ "required": false;
70
+ "isSignal": true;
71
+ };
72
+ "userClass": {
73
+ "alias": "class";
74
+ "required": false;
75
+ "isSignal": true;
76
+ };
77
+ }, {}, never, never, true, [{
78
+ directive: typeof i1.UiElementHost;
79
+ inputs: {};
80
+ outputs: {};
81
+ }]>;
82
+ }
83
+ export declare class UiResizableHandle {
84
+ protected readonly group: UiResizablePanelGroup;
85
+ private readonly el;
86
+ readonly withHandle: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
87
+ readonly keyboardStep: import("@angular/core").InputSignalWithTransform<number, unknown>;
88
+ readonly userClass: import("@angular/core").InputSignal<string>;
89
+ protected readonly hover: import("@angular/core").WritableSignal<boolean>;
90
+ private readonly dragging;
91
+ protected readonly state: import("@angular/core").Signal<"drag" | "hover" | "inactive">;
92
+ protected readonly classes: import("@angular/core").Signal<string>;
93
+ /** Handle i sits between panel i and i+1: index = number of handles before it. */
94
+ private index;
95
+ protected valueNow(): number;
96
+ protected onPointerDown(e: PointerEvent): void;
97
+ protected onKeydown(e: KeyboardEvent): void;
98
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiResizableHandle, never>;
99
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiResizableHandle, "[uiResizableHandle], ui-resizable-handle", never, {
100
+ "withHandle": {
101
+ "alias": "withHandle";
102
+ "required": false;
103
+ "isSignal": true;
104
+ };
105
+ "keyboardStep": {
106
+ "alias": "keyboardStep";
107
+ "required": false;
108
+ "isSignal": true;
109
+ };
110
+ "userClass": {
111
+ "alias": "class";
112
+ "required": false;
113
+ "isSignal": true;
114
+ };
115
+ }, {}, never, never, true, [{
116
+ directive: typeof i1.UiElementHost;
117
+ inputs: {};
118
+ outputs: {};
119
+ }]>;
120
+ }
121
+ export declare const UI_RESIZABLE: readonly [typeof UiResizablePanelGroup, typeof UiResizablePanel, typeof UiResizableHandle];
@@ -0,0 +1,44 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@loomui-ng/ui/utils";
3
+ export declare const scrollAreaClass = "relative w-96 whitespace-nowrap";
4
+ export declare const scrollAreaViewportClass = "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1";
5
+ export declare const UI_SCROLL_AREA_GENERATED: readonly [];
6
+ /**
7
+ * <div uiScrollArea class="h-72 w-48 rounded-md border"><div uiScrollAreaViewport>…long content…</div></div>
8
+ *
9
+ * Deviation: Radix draws custom overlay scrollbars (`scroll-area-scrollbar` / `scroll-area-thumb`, mounted on demand and not
10
+ * present in the captured idle DOM). This version scrolls natively and styles the native thin scrollbar instead.
11
+ */
12
+ export declare class UiScrollArea {
13
+ readonly userClass: import("@angular/core").InputSignal<string>;
14
+ protected readonly classes: import("@angular/core").Signal<string>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiScrollArea, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiScrollArea, "[uiScrollArea], ui-scroll-area", never, {
17
+ "userClass": {
18
+ "alias": "class";
19
+ "required": false;
20
+ "isSignal": true;
21
+ };
22
+ }, {}, never, never, true, [{
23
+ directive: typeof i1.UiElementHost;
24
+ inputs: {};
25
+ outputs: {};
26
+ }]>;
27
+ }
28
+ export declare class UiScrollAreaViewport {
29
+ readonly userClass: import("@angular/core").InputSignal<string>;
30
+ protected readonly classes: import("@angular/core").Signal<string>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiScrollAreaViewport, never>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiScrollAreaViewport, "[uiScrollAreaViewport], ui-scroll-area-viewport", never, {
33
+ "userClass": {
34
+ "alias": "class";
35
+ "required": false;
36
+ "isSignal": true;
37
+ };
38
+ }, {}, never, never, true, [{
39
+ directive: typeof i1.UiElementHost;
40
+ inputs: {};
41
+ outputs: {};
42
+ }]>;
43
+ }
44
+ export declare const UI_SCROLL_AREA: readonly [typeof UiScrollArea, typeof UiScrollAreaViewport];