@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,28 @@
1
+ # Textarea
2
+
3
+ ```ts
4
+ import { UI_TEXTAREA } from '@loomui-ng/ui/textarea';
5
+ // add to the component `imports` array
6
+ ```
7
+
8
+ ```html
9
+ <textarea uiTextarea placeholder="Type here"></textarea>
10
+ ```
11
+
12
+ Same thing as custom elements (identical inputs; directives keep working):
13
+
14
+ ```html
15
+ <ui-textarea placeholder="Type here"></ui-textarea>
16
+ ```
17
+
18
+ | Input / output | Type / values | Default |
19
+ |---|---|---|
20
+ | `rows` | `number \| string \| null` | `null` |
21
+ | `cols` | `number \| string \| null` | `null` |
22
+ | `maxlength` | `number \| null` | `null` |
23
+ | `minlength` | `number \| null` | `null` |
24
+ | `wrap` | `string` | `''` |
25
+
26
+ Parts (selectors): `ui-textarea`, `textarea[uiTextarea]`.
27
+
28
+ Spec: `docs/behavior-specs/textarea.md` · Manual test: `docs/manual-tests/textarea.md`
@@ -0,0 +1,27 @@
1
+ # uiToast
2
+
3
+ ```ts
4
+ import { UiToaster, UiToastService } from '@loomui-ng/ui/toast';
5
+ // add to the component imports array
6
+ ```
7
+
8
+ ```html
9
+ // app root template
10
+ <ui-toaster position="bottom-right" />
11
+
12
+ // anywhere
13
+ private toast = inject(UiToastService);
14
+ this.toast.show('Event has been created', { description: 'Sunday', action: { label: 'Undo', onClick: () => {} } });
15
+ this.toast.success('Saved');
16
+ ```
17
+
18
+ | Input | Values | Default |
19
+ |---|---|---|
20
+ | `position` (ui-toaster) | `top-left` `top-center` `top-right` `bottom-left` `bottom-center` `bottom-right` | `bottom-right` |
21
+ | `visibleToasts` | number | `3` |
22
+ | `duration` | ms | `4000` |
23
+ | `theme` | `light` `dark` `system` | `system` |
24
+
25
+ Import libs/ui/toast/toast.css once (see libs/ui/README.md). Not implemented: swipe, close button, promise toasts.
26
+
27
+ Spec: docs/behavior-specs/toast.md - Manual checks: docs/manual-tests/toast.md
@@ -0,0 +1,27 @@
1
+ # Toggle
2
+
3
+ ```ts
4
+ import { UI_TOGGLE } from '@loomui-ng/ui/toggle';
5
+ // add to the component `imports` array
6
+ ```
7
+
8
+ ```html
9
+ <button uiToggle [(pressed)]="bold" aria-label="Bold">B</button>
10
+ ```
11
+
12
+ Same thing as custom elements (identical inputs; directives keep working):
13
+
14
+ ```html
15
+ <ui-toggle [(pressed)]="bold" aria-label="Bold">B</ui-toggle>
16
+ ```
17
+
18
+ | Input / output | Type / values | Default |
19
+ |---|---|---|
20
+ | `pressed` (model) | | `false` |
21
+ | `variant` | `NonNullable<ToggleVariants['variant']>` | `'default'` |
22
+ | `size` | `NonNullable<ToggleVariants['size']>` | `'default'` |
23
+ | `disabled` | | `false` |
24
+
25
+ Parts (selectors): `button[uiToggle], ui-toggle`.
26
+
27
+ Spec: `docs/behavior-specs/toggle.md` · Manual test: `docs/manual-tests/toggle.md`
@@ -0,0 +1,37 @@
1
+ # Toggle Group
2
+
3
+ ```ts
4
+ import { UI_TOGGLE_GROUP } from '@loomui-ng/ui/toggle-group';
5
+ // add to the component `imports` array
6
+ ```
7
+
8
+ ```html
9
+ <div uiToggleGroup type="multiple" [(value)]="v">
10
+ <button uiToggleGroupItem value="bold">B</button>
11
+ <button uiToggleGroupItem value="italic">I</button>
12
+ </div>
13
+ ```
14
+
15
+ Same thing as custom elements (identical inputs; directives keep working):
16
+
17
+ ```html
18
+ <ui-toggle-group type="multiple" [(value)]="v">
19
+ <ui-toggle-group-item value="bold">B</ui-toggle-group-item>
20
+ <ui-toggle-group-item value="italic">I</ui-toggle-group-item>
21
+ </ui-toggle-group>
22
+ ```
23
+
24
+ | Input / output | Type / values | Default |
25
+ |---|---|---|
26
+ | `type` | `'single' \| 'multiple'` | `'single'` |
27
+ | `value` (model) | `string[]` | `[]` |
28
+ | `variant` | `'default' \| 'outline'` | `'default'` |
29
+ | `size` | `'default' \| 'sm' \| 'lg'` | `'default'` |
30
+ | `spacing` | | `0` |
31
+ | `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` |
32
+ | `disabled` | | `false` |
33
+ | `disabledInput` | | `false` |
34
+
35
+ Parts (selectors): `[uiToggleGroup], ui-toggle-group`, `button[uiToggleGroupItem], ui-toggle-group-item`.
36
+
37
+ Spec: `docs/behavior-specs/toggle-group.md` · Manual test: `docs/manual-tests/toggle-group.md`
@@ -0,0 +1,31 @@
1
+ # uiTooltip
2
+
3
+ ```ts
4
+ import { UI_TOOLTIP } from '@loomui-ng/ui/tooltip';
5
+ // add to the component imports array
6
+ ```
7
+
8
+ ```html
9
+ <div uiTooltip [delay]="0" class="contents">
10
+ <button uiButton uiTooltipTrigger>Hover</button>
11
+ <div uiTooltipContent side="top">Add to library</div>
12
+ </div>
13
+ ```
14
+
15
+ Same thing as custom elements (identical inputs; directives keep working):
16
+
17
+ ```html
18
+ <ui-tooltip [delay]="0" class="contents">
19
+ <ui-button uiTooltipTrigger>Hover</ui-button>
20
+ <ui-tooltip-content side="top">Add to library</ui-tooltip-content>
21
+ </ui-tooltip>
22
+ ```
23
+
24
+ | Input | Values | Default |
25
+ |---|---|---|
26
+ | `delay` (uiTooltip) | ms | `0` |
27
+ | `side` / `align` / `sideOffset` | as Popover | `top`-less: `bottom` |
28
+
29
+ Opens on hover (delayed-open) and keyboard focus (instant-open); a visually hidden role=tooltip copy is referenced by aria-describedby.
30
+
31
+ Spec: docs/behavior-specs/tooltip.md - Manual checks: docs/manual-tests/tooltip.md
@@ -0,0 +1,141 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@loomui-ng/ui/utils";
3
+ export declare const accordionClass = "flex w-full flex-col";
4
+ export declare const accordionItemClass = "not-last:border-b border-b px-4 last:border-b-0";
5
+ export declare const accordionTriggerClass = "group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-start text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring disabled:pointer-events-none disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ms-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground";
6
+ export declare const accordionContentClass = "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up";
7
+ export declare const UI_ACCORDION_GENERATED: readonly [];
8
+ /**
9
+ * <div uiAccordion type="single" [(value)]="open" class="rounded-lg border">
10
+ * <div uiAccordionItem value="a">
11
+ * <button uiAccordionTrigger>Question</button>
12
+ * <div uiAccordionContent>Answer</div>
13
+ * </div>
14
+ * </div>
15
+ * `value` is always an array (single mode holds at most one entry).
16
+ */
17
+ export declare class UiAccordion {
18
+ readonly type: import("@angular/core").InputSignal<"single" | "multiple">;
19
+ readonly collapsible: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
20
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
21
+ readonly value: import("@angular/core").ModelSignal<string[]>;
22
+ readonly userClass: import("@angular/core").InputSignal<string>;
23
+ readonly baseId: string;
24
+ private readonly dir;
25
+ private readonly triggers;
26
+ protected readonly classes: import("@angular/core").Signal<string>;
27
+ isOpen(v: string): boolean;
28
+ toggle(v: string): void;
29
+ protected onKeydown(e: KeyboardEvent): void;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAccordion, never>;
31
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAccordion, "[uiAccordion], ui-accordion", ["uiAccordion"], {
32
+ "type": {
33
+ "alias": "type";
34
+ "required": false;
35
+ "isSignal": true;
36
+ };
37
+ "collapsible": {
38
+ "alias": "collapsible";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "orientation": {
43
+ "alias": "orientation";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "value": {
48
+ "alias": "value";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ "userClass": {
53
+ "alias": "class";
54
+ "required": false;
55
+ "isSignal": true;
56
+ };
57
+ }, {
58
+ "value": "valueChange";
59
+ }, ["triggers"], never, true, [{
60
+ directive: typeof i1.UiElementHost;
61
+ inputs: {};
62
+ outputs: {};
63
+ }]>;
64
+ }
65
+ export declare class UiAccordionItem {
66
+ protected readonly root: UiAccordion;
67
+ readonly value: import("@angular/core").InputSignal<string>;
68
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
69
+ readonly userClass: import("@angular/core").InputSignal<string>;
70
+ readonly open: import("@angular/core").Signal<boolean>;
71
+ readonly triggerId: import("@angular/core").Signal<string>;
72
+ readonly contentId: import("@angular/core").Signal<string>;
73
+ protected readonly classes: import("@angular/core").Signal<string>;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAccordionItem, never>;
75
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAccordionItem, "[uiAccordionItem], ui-accordion-item", never, {
76
+ "value": {
77
+ "alias": "value";
78
+ "required": false;
79
+ "isSignal": true;
80
+ };
81
+ "disabled": {
82
+ "alias": "disabled";
83
+ "required": false;
84
+ "isSignal": true;
85
+ };
86
+ "userClass": {
87
+ "alias": "class";
88
+ "required": false;
89
+ "isSignal": true;
90
+ };
91
+ }, {}, never, never, true, [{
92
+ directive: typeof i1.UiElementHost;
93
+ inputs: {};
94
+ outputs: {};
95
+ }]>;
96
+ }
97
+ export declare class UiAccordionTrigger {
98
+ protected readonly root: UiAccordion;
99
+ protected readonly item: UiAccordionItem;
100
+ readonly el: HTMLElement;
101
+ readonly userClass: import("@angular/core").InputSignal<string>;
102
+ isDisabled: () => boolean;
103
+ protected readonly classes: import("@angular/core").Signal<string>;
104
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAccordionTrigger, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiAccordionTrigger, "button[uiAccordionTrigger], ui-accordion-trigger", never, {
106
+ "userClass": {
107
+ "alias": "class";
108
+ "required": false;
109
+ "isSignal": true;
110
+ };
111
+ }, {}, never, ["*"], true, [{
112
+ directive: typeof i1.UiElementHost;
113
+ inputs: {};
114
+ outputs: {};
115
+ }]>;
116
+ }
117
+ export declare class UiAccordionContent {
118
+ protected readonly root: UiAccordion;
119
+ protected readonly item: UiAccordionItem;
120
+ private readonly el;
121
+ private readonly inner;
122
+ readonly userClass: import("@angular/core").InputSignal<string>;
123
+ /** Stays true during the exit animation so `animate-accordion-up` can play. */
124
+ protected readonly present: import("@angular/core").WritableSignal<boolean>;
125
+ protected readonly classes: import("@angular/core").Signal<string>;
126
+ constructor();
127
+ private setHeight;
128
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAccordionContent, never>;
129
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiAccordionContent, "[uiAccordionContent], ui-accordion-content", never, {
130
+ "userClass": {
131
+ "alias": "class";
132
+ "required": false;
133
+ "isSignal": true;
134
+ };
135
+ }, {}, never, ["*"], true, [{
136
+ directive: typeof i1.UiElementHost;
137
+ inputs: {};
138
+ outputs: {};
139
+ }]>;
140
+ }
141
+ export declare const UI_ACCORDION: readonly [typeof UiAccordion, typeof UiAccordionItem, typeof UiAccordionTrigger, typeof UiAccordionContent];
@@ -0,0 +1,175 @@
1
+ import * as i1 from "@loomui-ng/ui/utils";
2
+ import { ModalContentConfig, UiModalContentBase, UiModalRoot } from "@loomui-ng/ui/utils";
3
+ import * as i0 from "@angular/core";
4
+ export declare const alertDialogOverlayClass = "fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0";
5
+ export declare const alertDialogContentClass = "group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm rtl:translate-x-1/2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95";
6
+ export declare const alertDialogHeaderClass = "grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]";
7
+ export declare const alertDialogTitleClass = "text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2";
8
+ export declare const alertDialogDescriptionClass = "text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground";
9
+ export declare const alertDialogFooterClass = "-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end";
10
+ export declare const UI_ALERT_DIALOG_GENERATED: readonly [];
11
+ /**
12
+ * <div uiAlertDialog class="contents">
13
+ * <button uiButton variant="outline" uiAlertDialogTrigger>Delete</button>
14
+ * <div uiAlertDialogContent>
15
+ * <div uiAlertDialogHeader><h2 uiAlertDialogTitle>Are you sure?</h2><p uiAlertDialogDescription>…</p></div>
16
+ * <div uiAlertDialogFooter><button uiAlertDialogCancel>Cancel</button><button uiAlertDialogAction>Continue</button></div>
17
+ * </div>
18
+ * </div>
19
+ * Differences from Dialog (Radix AlertDialog): role="alertdialog", clicking the overlay does NOT dismiss, no corner close
20
+ * button, and initial focus goes to the Cancel button.
21
+ */
22
+ export declare class UiAlertDialog extends UiModalRoot {
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialog, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialog, "[uiAlertDialog], ui-alert-dialog", ["uiAlertDialog"], {}, {}, never, never, true, [{
25
+ directive: typeof i1.UiElementHost;
26
+ inputs: {};
27
+ outputs: {};
28
+ }]>;
29
+ }
30
+ export declare class UiAlertDialogTrigger {
31
+ protected readonly root: UiAlertDialog;
32
+ constructor();
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogTrigger, never>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogTrigger, "[uiAlertDialogTrigger], ui-alert-dialog-trigger", never, {}, {}, never, never, true, [{
35
+ directive: typeof i1.UiElementHost;
36
+ inputs: {};
37
+ outputs: {};
38
+ }]>;
39
+ }
40
+ export declare class UiAlertDialogContent extends UiModalContentBase {
41
+ protected readonly root: UiAlertDialog;
42
+ protected readonly config: ModalContentConfig;
43
+ readonly size: import("@angular/core").InputSignal<"default" | "sm">;
44
+ protected readonly classes: import("@angular/core").Signal<string>;
45
+ constructor();
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogContent, never>;
47
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogContent, "[uiAlertDialogContent], ui-alert-dialog-content", never, {
48
+ "size": {
49
+ "alias": "size";
50
+ "required": false;
51
+ "isSignal": true;
52
+ };
53
+ }, {}, never, never, true, [{
54
+ directive: typeof i1.UiElementHost;
55
+ inputs: {};
56
+ outputs: {};
57
+ }]>;
58
+ }
59
+ export declare class UiAlertDialogHeader {
60
+ readonly userClass: import("@angular/core").InputSignal<string>;
61
+ protected readonly classes: import("@angular/core").Signal<string>;
62
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogHeader, never>;
63
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogHeader, "[uiAlertDialogHeader], ui-alert-dialog-header", never, {
64
+ "userClass": {
65
+ "alias": "class";
66
+ "required": false;
67
+ "isSignal": true;
68
+ };
69
+ }, {}, never, never, true, [{
70
+ directive: typeof i1.UiElementHost;
71
+ inputs: {};
72
+ outputs: {};
73
+ }]>;
74
+ }
75
+ export declare class UiAlertDialogFooter {
76
+ readonly userClass: import("@angular/core").InputSignal<string>;
77
+ protected readonly classes: import("@angular/core").Signal<string>;
78
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogFooter, never>;
79
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogFooter, "[uiAlertDialogFooter], ui-alert-dialog-footer", never, {
80
+ "userClass": {
81
+ "alias": "class";
82
+ "required": false;
83
+ "isSignal": true;
84
+ };
85
+ }, {}, never, never, true, [{
86
+ directive: typeof i1.UiElementHost;
87
+ inputs: {};
88
+ outputs: {};
89
+ }]>;
90
+ }
91
+ export declare class UiAlertDialogTitle {
92
+ protected readonly root: UiAlertDialog;
93
+ readonly userClass: import("@angular/core").InputSignal<string>;
94
+ protected readonly classes: import("@angular/core").Signal<string>;
95
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogTitle, never>;
96
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogTitle, "[uiAlertDialogTitle], ui-alert-dialog-title", never, {
97
+ "userClass": {
98
+ "alias": "class";
99
+ "required": false;
100
+ "isSignal": true;
101
+ };
102
+ }, {}, never, never, true, [{
103
+ directive: typeof i1.UiElementHost;
104
+ inputs: {};
105
+ outputs: {};
106
+ }]>;
107
+ }
108
+ export declare class UiAlertDialogDescription {
109
+ protected readonly root: UiAlertDialog;
110
+ readonly userClass: import("@angular/core").InputSignal<string>;
111
+ protected readonly classes: import("@angular/core").Signal<string>;
112
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogDescription, never>;
113
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogDescription, "[uiAlertDialogDescription], ui-alert-dialog-description", never, {
114
+ "userClass": {
115
+ "alias": "class";
116
+ "required": false;
117
+ "isSignal": true;
118
+ };
119
+ }, {}, never, never, true, [{
120
+ directive: typeof i1.UiElementHost;
121
+ inputs: {};
122
+ outputs: {};
123
+ }]>;
124
+ }
125
+ /** Observed: outline Button. Closes the dialog. */
126
+ export declare class UiAlertDialogCancel {
127
+ /** Reflected as the `disabled` attribute so it also works on the custom element. */
128
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
129
+ protected readonly root: UiAlertDialog;
130
+ readonly userClass: import("@angular/core").InputSignal<string>;
131
+ protected readonly classes: import("@angular/core").Signal<string>;
132
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogCancel, never>;
133
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogCancel, "button[uiAlertDialogCancel], ui-alert-dialog-cancel", never, {
134
+ "disabled": {
135
+ "alias": "disabled";
136
+ "required": false;
137
+ "isSignal": true;
138
+ };
139
+ "userClass": {
140
+ "alias": "class";
141
+ "required": false;
142
+ "isSignal": true;
143
+ };
144
+ }, {}, never, never, true, [{
145
+ directive: typeof i1.UiElementHost;
146
+ inputs: {};
147
+ outputs: {};
148
+ }]>;
149
+ }
150
+ /** Observed: default Button. Closes the dialog after your own (click) handler runs. */
151
+ export declare class UiAlertDialogAction {
152
+ /** Reflected as the `disabled` attribute so it also works on the custom element. */
153
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
154
+ protected readonly root: UiAlertDialog;
155
+ readonly userClass: import("@angular/core").InputSignal<string>;
156
+ protected readonly classes: import("@angular/core").Signal<string>;
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDialogAction, never>;
158
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDialogAction, "button[uiAlertDialogAction], ui-alert-dialog-action", never, {
159
+ "disabled": {
160
+ "alias": "disabled";
161
+ "required": false;
162
+ "isSignal": true;
163
+ };
164
+ "userClass": {
165
+ "alias": "class";
166
+ "required": false;
167
+ "isSignal": true;
168
+ };
169
+ }, {}, never, never, true, [{
170
+ directive: typeof i1.UiElementHost;
171
+ inputs: {};
172
+ outputs: {};
173
+ }]>;
174
+ }
175
+ export declare const UI_ALERT_DIALOG: readonly [typeof UiAlertDialog, typeof UiAlertDialogTrigger, typeof UiAlertDialogContent, typeof UiAlertDialogHeader, typeof UiAlertDialogFooter, typeof UiAlertDialogTitle, typeof UiAlertDialogDescription, typeof UiAlertDialogCancel, typeof UiAlertDialogAction];
@@ -0,0 +1,77 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@loomui-ng/ui/utils";
3
+ export declare const alertVariants: (props?: ({
4
+ variant?: "default" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export declare class UiAlert {
7
+ readonly variant: import("@angular/core").InputSignal<"default" | "destructive">;
8
+ readonly userClass: import("@angular/core").InputSignal<string>;
9
+ protected readonly classes: import("@angular/core").Signal<string>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlert, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlert, "[uiAlert], ui-alert", never, {
12
+ "variant": {
13
+ "alias": "variant";
14
+ "required": false;
15
+ "isSignal": true;
16
+ };
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 UiAlertTitle {
29
+ readonly userClass: import("@angular/core").InputSignal<string>;
30
+ protected readonly classes: import("@angular/core").Signal<string>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertTitle, never>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertTitle, "[uiAlertTitle], ui-alert-title", 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 class UiAlertDescription {
45
+ readonly userClass: import("@angular/core").InputSignal<string>;
46
+ protected readonly classes: import("@angular/core").Signal<string>;
47
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertDescription, never>;
48
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertDescription, "[uiAlertDescription], ui-alert-description", never, {
49
+ "userClass": {
50
+ "alias": "class";
51
+ "required": false;
52
+ "isSignal": true;
53
+ };
54
+ }, {}, never, never, true, [{
55
+ directive: typeof i1.UiElementHost;
56
+ inputs: {};
57
+ outputs: {};
58
+ }]>;
59
+ }
60
+ export declare class UiAlertAction {
61
+ readonly userClass: import("@angular/core").InputSignal<string>;
62
+ protected readonly classes: import("@angular/core").Signal<string>;
63
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAlertAction, never>;
64
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAlertAction, "[uiAlertAction], ui-alert-action", never, {
65
+ "userClass": {
66
+ "alias": "class";
67
+ "required": false;
68
+ "isSignal": true;
69
+ };
70
+ }, {}, never, never, true, [{
71
+ directive: typeof i1.UiElementHost;
72
+ inputs: {};
73
+ outputs: {};
74
+ }]>;
75
+ }
76
+ export declare const UI_ALERT_GENERATED: readonly [typeof UiAlert, typeof UiAlertTitle, typeof UiAlertDescription, typeof UiAlertAction];
77
+ export declare const UI_ALERT: readonly [typeof UiAlert, typeof UiAlertTitle, typeof UiAlertDescription, typeof UiAlertAction];
@@ -0,0 +1,31 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@loomui-ng/ui/utils";
3
+ export declare const aspectRatioClass = "";
4
+ export declare const UI_ASPECT_RATIO_GENERATED: readonly [];
5
+ /**
6
+ * <div uiAspectRatio [ratio]="16 / 9"><img class="size-full object-cover" … /></div>
7
+ * Uses the CSS `aspect-ratio` property (Radix uses a padding-bottom wrapper; the visible result is the same).
8
+ */
9
+ export declare class UiAspectRatio {
10
+ readonly ratio: import("@angular/core").InputSignalWithTransform<number, unknown>;
11
+ readonly userClass: import("@angular/core").InputSignal<string>;
12
+ protected readonly classes: import("@angular/core").Signal<string>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAspectRatio, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAspectRatio, "[uiAspectRatio], ui-aspect-ratio", never, {
15
+ "ratio": {
16
+ "alias": "ratio";
17
+ "required": false;
18
+ "isSignal": true;
19
+ };
20
+ "userClass": {
21
+ "alias": "class";
22
+ "required": false;
23
+ "isSignal": true;
24
+ };
25
+ }, {}, never, never, true, [{
26
+ directive: typeof i1.UiElementHost;
27
+ inputs: {};
28
+ outputs: {};
29
+ }]>;
30
+ }
31
+ export declare const UI_ASPECT_RATIO: readonly [typeof UiAspectRatio];