@raintonic/formaui 0.2.1 → 0.3.1

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 (171) hide show
  1. package/CHANGELOG.md +100 -3
  2. package/LICENSE +21 -0
  3. package/README.md +80 -26
  4. package/fesm2022/raintonic-formaui-components-accordion.mjs +2 -2
  5. package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
  6. package/fesm2022/raintonic-formaui-components-alert.mjs +24 -5
  7. package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
  8. package/fesm2022/raintonic-formaui-components-autocomplete.mjs +38 -9
  9. package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
  10. package/fesm2022/raintonic-formaui-components-badge.mjs +45 -31
  11. package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
  12. package/fesm2022/raintonic-formaui-components-big-menu.mjs +23 -5
  13. package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +1 -1
  14. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +24 -7
  15. package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/raintonic-formaui-components-button-group.mjs +6 -6
  17. package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
  18. package/fesm2022/raintonic-formaui-components-button.mjs +63 -17
  19. package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
  20. package/fesm2022/raintonic-formaui-components-card.mjs +8 -8
  21. package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
  22. package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
  23. package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
  24. package/fesm2022/raintonic-formaui-components-data-table.mjs +67 -9
  25. package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
  26. package/fesm2022/raintonic-formaui-components-date-picker.mjs +63 -16
  27. package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
  28. package/fesm2022/raintonic-formaui-components-drawer.mjs +19 -4
  29. package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
  30. package/fesm2022/raintonic-formaui-components-file-upload.mjs +25 -5
  31. package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
  32. package/fesm2022/raintonic-formaui-components-form-field.mjs +21 -6
  33. package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
  34. package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
  35. package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
  36. package/fesm2022/raintonic-formaui-components-input.mjs +1 -1
  37. package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
  38. package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
  39. package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
  40. package/fesm2022/raintonic-formaui-components-menu.mjs +4 -4
  41. package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -1
  42. package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -5
  43. package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
  44. package/fesm2022/raintonic-formaui-components-paginator.mjs +27 -7
  45. package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
  46. package/fesm2022/raintonic-formaui-components-password-input.mjs +23 -5
  47. package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
  48. package/fesm2022/raintonic-formaui-components-popover.mjs +2 -2
  49. package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
  50. package/fesm2022/raintonic-formaui-components-progressbar.mjs +32 -7
  51. package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
  52. package/fesm2022/raintonic-formaui-components-radio.mjs +6 -5
  53. package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
  54. package/fesm2022/raintonic-formaui-components-select.mjs +19 -4
  55. package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
  56. package/fesm2022/raintonic-formaui-components-side-panel.mjs +19 -4
  57. package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
  58. package/fesm2022/raintonic-formaui-components-sidebar.mjs +23 -5
  59. package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +1 -1
  60. package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
  61. package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
  62. package/fesm2022/raintonic-formaui-components-slider.mjs +23 -5
  63. package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
  64. package/fesm2022/raintonic-formaui-components-spinner.mjs +24 -7
  65. package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
  66. package/fesm2022/raintonic-formaui-components-stepper.mjs +2 -2
  67. package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
  68. package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
  69. package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
  70. package/fesm2022/raintonic-formaui-components-tag.mjs +21 -4
  71. package/fesm2022/raintonic-formaui-components-tag.mjs.map +1 -1
  72. package/fesm2022/raintonic-formaui-components-time-picker.mjs +26 -7
  73. package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
  74. package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
  75. package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
  76. package/fesm2022/raintonic-formaui-components-toolbar.mjs +41 -7
  77. package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
  78. package/fesm2022/raintonic-formaui-components-tooltip.mjs +2 -2
  79. package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
  80. package/fesm2022/raintonic-formaui-components-tree-table.mjs +35 -6
  81. package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
  82. package/fesm2022/raintonic-formaui-components-tree.mjs +23 -5
  83. package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
  84. package/fesm2022/raintonic-formaui-core.mjs +25 -1
  85. package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
  86. package/fesm2022/raintonic-formaui-services-dialog.mjs +3 -3
  87. package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
  88. package/fesm2022/raintonic-formaui-services-notification.mjs +2 -2
  89. package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
  90. package/fesm2022/raintonic-formaui-services-theme.mjs +3 -3
  91. package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
  92. package/fesm2022/raintonic-formaui-test-utils.mjs +21 -16
  93. package/fesm2022/raintonic-formaui-test-utils.mjs.map +1 -1
  94. package/fesm2022/raintonic-formaui.mjs +1 -1
  95. package/fesm2022/raintonic-formaui.mjs.map +1 -1
  96. package/llms-full.txt +34 -25
  97. package/llms.txt +1 -2
  98. package/package.json +1 -5
  99. package/styles/index.scss +2 -2
  100. package/styles/partials/_motion.scss +25 -0
  101. package/styles/partials/_theme.scss +6 -5
  102. package/styles/partials/components/_button.scss +361 -367
  103. package/styles/partials/themes/_dark.scss +14 -0
  104. package/styles/partials/themes/_light.scss +14 -0
  105. package/types/raintonic-formaui-components-alert.d.ts +11 -1
  106. package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
  107. package/types/raintonic-formaui-components-autocomplete.d.ts +25 -7
  108. package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
  109. package/types/raintonic-formaui-components-badge.d.ts +20 -9
  110. package/types/raintonic-formaui-components-badge.d.ts.map +1 -1
  111. package/types/raintonic-formaui-components-big-menu.d.ts +12 -1
  112. package/types/raintonic-formaui-components-big-menu.d.ts.map +1 -1
  113. package/types/raintonic-formaui-components-breadcrumb.d.ts +11 -2
  114. package/types/raintonic-formaui-components-breadcrumb.d.ts.map +1 -1
  115. package/types/raintonic-formaui-components-button-group.d.ts +6 -6
  116. package/types/raintonic-formaui-components-button.d.ts +9 -7
  117. package/types/raintonic-formaui-components-button.d.ts.map +1 -1
  118. package/types/raintonic-formaui-components-card.d.ts +4 -4
  119. package/types/raintonic-formaui-components-checkbox.d.ts +1 -1
  120. package/types/raintonic-formaui-components-data-table.d.ts +56 -16
  121. package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
  122. package/types/raintonic-formaui-components-date-picker.d.ts +32 -4
  123. package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
  124. package/types/raintonic-formaui-components-drawer.d.ts +10 -1
  125. package/types/raintonic-formaui-components-drawer.d.ts.map +1 -1
  126. package/types/raintonic-formaui-components-file-upload.d.ts +12 -1
  127. package/types/raintonic-formaui-components-file-upload.d.ts.map +1 -1
  128. package/types/raintonic-formaui-components-form-field.d.ts +12 -2
  129. package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
  130. package/types/raintonic-formaui-components-input.d.ts +1 -1
  131. package/types/raintonic-formaui-components-number-input.d.ts +11 -2
  132. package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
  133. package/types/raintonic-formaui-components-paginator.d.ts +13 -1
  134. package/types/raintonic-formaui-components-paginator.d.ts.map +1 -1
  135. package/types/raintonic-formaui-components-password-input.d.ts +12 -2
  136. package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
  137. package/types/raintonic-formaui-components-progressbar.d.ts +14 -1
  138. package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
  139. package/types/raintonic-formaui-components-radio.d.ts +2 -1
  140. package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
  141. package/types/raintonic-formaui-components-select.d.ts.map +1 -1
  142. package/types/raintonic-formaui-components-side-panel.d.ts +10 -1
  143. package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -1
  144. package/types/raintonic-formaui-components-sidebar.d.ts +12 -1
  145. package/types/raintonic-formaui-components-sidebar.d.ts.map +1 -1
  146. package/types/raintonic-formaui-components-slider.d.ts +12 -1
  147. package/types/raintonic-formaui-components-slider.d.ts.map +1 -1
  148. package/types/raintonic-formaui-components-spinner.d.ts +12 -2
  149. package/types/raintonic-formaui-components-spinner.d.ts.map +1 -1
  150. package/types/raintonic-formaui-components-tag.d.ts +10 -1
  151. package/types/raintonic-formaui-components-tag.d.ts.map +1 -1
  152. package/types/raintonic-formaui-components-time-picker.d.ts +14 -2
  153. package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
  154. package/types/raintonic-formaui-components-toggle.d.ts +1 -1
  155. package/types/raintonic-formaui-components-toolbar.d.ts +22 -4
  156. package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -1
  157. package/types/raintonic-formaui-components-tree-table.d.ts +29 -4
  158. package/types/raintonic-formaui-components-tree-table.d.ts.map +1 -1
  159. package/types/raintonic-formaui-components-tree.d.ts +12 -1
  160. package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
  161. package/types/raintonic-formaui-core.d.ts +19 -2
  162. package/types/raintonic-formaui-core.d.ts.map +1 -1
  163. package/types/raintonic-formaui-services-dialog.d.ts +1 -1
  164. package/types/raintonic-formaui-services-theme.d.ts +3 -3
  165. package/types/raintonic-formaui-test-utils.d.ts +15 -2
  166. package/types/raintonic-formaui-test-utils.d.ts.map +1 -1
  167. package/types/raintonic-formaui.d.ts +1 -1
  168. package/fesm2022/raintonic-formaui-components-dynamic-form.mjs +0 -266
  169. package/fesm2022/raintonic-formaui-components-dynamic-form.mjs.map +0 -1
  170. package/types/raintonic-formaui-components-dynamic-form.d.ts +0 -412
  171. package/types/raintonic-formaui-components-dynamic-form.d.ts.map +0 -1
@@ -2,23 +2,28 @@ import axe from 'axe-core';
2
2
 
3
3
  /**
4
4
  * Runs axe-core accessibility audit on the given element.
5
- * Returns violations array. Empty array means no violations.
5
+ * Returns the violations array. Empty array means no violations.
6
+ *
7
+ * `color-contrast` is disabled by default because JSDOM does not compute
8
+ * real styles, so color-contrast checks produce unreliable results.
6
9
  */
7
- async function runA11yAudit(element) {
8
- const results = await axe.run(element, {
9
- rules: {
10
- 'color-contrast': { enabled: true },
11
- 'keyboard-access': { enabled: true },
12
- 'aria-roles': { enabled: true },
13
- 'aria-required-attr': { enabled: true },
14
- 'aria-valid-attr': { enabled: true },
15
- 'aria-valid-attr-value': { enabled: true },
16
- 'button-name': { enabled: true },
17
- 'image-alt': { enabled: true },
18
- label: { enabled: true },
19
- 'link-name': { enabled: true },
20
- },
21
- });
10
+ async function runA11yAudit(element, options = {}) {
11
+ const rules = {
12
+ 'color-contrast': { enabled: false },
13
+ 'aria-roles': { enabled: true },
14
+ 'aria-required-attr': { enabled: true },
15
+ 'aria-valid-attr': { enabled: true },
16
+ 'aria-valid-attr-value': { enabled: true },
17
+ 'aria-allowed-attr': { enabled: true },
18
+ 'button-name': { enabled: true },
19
+ 'image-alt': { enabled: true },
20
+ label: { enabled: true },
21
+ 'link-name': { enabled: true },
22
+ };
23
+ for (const id of options.disableRules ?? []) {
24
+ rules[id] = { enabled: false };
25
+ }
26
+ const results = await axe.run(element, { rules });
22
27
  return results.violations;
23
28
  }
24
29
 
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui-test-utils.mjs","sources":["../../../lib/test-utils/a11y-test.util.ts","../../../lib/test-utils/keyboard-test.util.ts","../../../lib/test-utils/raintonic-formaui-test-utils.ts"],"sourcesContent":["import axe from 'axe-core';\r\n\r\n/**\r\n * Runs axe-core accessibility audit on the given element.\r\n * Returns violations array. Empty array means no violations.\r\n */\r\nexport async function runA11yAudit(element: HTMLElement): Promise<axe.Result[]> {\r\n const results = await axe.run(element, {\r\n rules: {\r\n 'color-contrast': { enabled: true },\r\n 'keyboard-access': { enabled: true },\r\n 'aria-roles': { enabled: true },\r\n 'aria-required-attr': { enabled: true },\r\n 'aria-valid-attr': { enabled: true },\r\n 'aria-valid-attr-value': { enabled: true },\r\n 'button-name': { enabled: true },\r\n 'image-alt': { enabled: true },\r\n label: { enabled: true },\r\n 'link-name': { enabled: true },\r\n },\r\n });\r\n return results.violations;\r\n}\r\n","export function pressKey(\r\n element: HTMLElement,\r\n key: string,\r\n modifiers?: { shift?: boolean; ctrl?: boolean; alt?: boolean },\r\n): void {\r\n const event = new KeyboardEvent('keydown', {\r\n key,\r\n bubbles: true,\r\n cancelable: true,\r\n shiftKey: modifiers?.shift ?? false,\r\n ctrlKey: modifiers?.ctrl ?? false,\r\n altKey: modifiers?.alt ?? false,\r\n });\r\n element.dispatchEvent(event);\r\n}\r\n\r\nexport function pressTab(element: HTMLElement, shift = false): void {\r\n pressKey(element, 'Tab', { shift });\r\n}\r\n\r\nexport function pressArrowDown(element: HTMLElement): void {\r\n pressKey(element, 'ArrowDown');\r\n}\r\n\r\nexport function pressArrowUp(element: HTMLElement): void {\r\n pressKey(element, 'ArrowUp');\r\n}\r\n\r\nexport function pressEnter(element: HTMLElement): void {\r\n pressKey(element, 'Enter');\r\n}\r\n\r\nexport function pressSpace(element: HTMLElement): void {\r\n pressKey(element, ' ');\r\n}\r\n\r\nexport function pressEscape(element: HTMLElement): void {\r\n pressKey(element, 'Escape');\r\n}\r\n\r\nexport function pressHome(element: HTMLElement): void {\r\n pressKey(element, 'Home');\r\n}\r\n\r\nexport function pressEnd(element: HTMLElement): void {\r\n pressKey(element, 'End');\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAEA;;;AAGG;AACI,eAAe,YAAY,CAAC,OAAoB,EAAA;IACrD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;AACrC,QAAA,KAAK,EAAE;AACL,YAAA,gBAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACnC,YAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACpC,YAAA,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/B,YAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvC,YAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACpC,YAAA,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1C,YAAA,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAChC,YAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC9B,YAAA,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACxB,YAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/B,SAAA;AACF,KAAA,CAAC;IACF,OAAO,OAAO,CAAC,UAAU;AAC3B;;SCtBgB,QAAQ,CACtB,OAAoB,EACpB,GAAW,EACX,SAA8D,EAAA;AAE9D,IAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE;QACzC,GAAG;AACH,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK;AACnC,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK;AACjC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK;AAChC,KAAA,CAAC;AACF,IAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9B;SAEgB,QAAQ,CAAC,OAAoB,EAAE,KAAK,GAAG,KAAK,EAAA;IAC1D,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AACrC;AAEM,SAAU,cAAc,CAAC,OAAoB,EAAA;AACjD,IAAA,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;AAChC;AAEM,SAAU,YAAY,CAAC,OAAoB,EAAA;AAC/C,IAAA,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9B;AAEM,SAAU,UAAU,CAAC,OAAoB,EAAA;AAC7C,IAAA,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5B;AAEM,SAAU,UAAU,CAAC,OAAoB,EAAA;AAC7C,IAAA,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;AACxB;AAEM,SAAU,WAAW,CAAC,OAAoB,EAAA;AAC9C,IAAA,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7B;AAEM,SAAU,SAAS,CAAC,OAAoB,EAAA;AAC5C,IAAA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3B;AAEM,SAAU,QAAQ,CAAC,OAAoB,EAAA;AAC3C,IAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1B;;AC9CA;;AAEG;;;;"}
1
+ {"version":3,"file":"raintonic-formaui-test-utils.mjs","sources":["../../../lib/test-utils/a11y-test.util.ts","../../../lib/test-utils/keyboard-test.util.ts","../../../lib/test-utils/raintonic-formaui-test-utils.ts"],"sourcesContent":["import axe from 'axe-core';\r\n\r\nexport interface RunA11yAuditOptions {\r\n /**\r\n * IDs of axe rules to disable for this audit (merged on top of defaults).\r\n * Useful when a component legitimately fails a rule because of a\r\n * JSDOM limitation or host-element wrapping (e.g. `listitem` on\r\n * component hosts between `<ol>` and `<li>`).\r\n */\r\n disableRules?: string[];\r\n}\r\n\r\n/**\r\n * Runs axe-core accessibility audit on the given element.\r\n * Returns the violations array. Empty array means no violations.\r\n *\r\n * `color-contrast` is disabled by default because JSDOM does not compute\r\n * real styles, so color-contrast checks produce unreliable results.\r\n */\r\nexport async function runA11yAudit(\r\n element: HTMLElement,\r\n options: RunA11yAuditOptions = {},\r\n): Promise<axe.Result[]> {\r\n const rules: Record<string, { enabled: boolean }> = {\r\n 'color-contrast': { enabled: false },\r\n 'aria-roles': { enabled: true },\r\n 'aria-required-attr': { enabled: true },\r\n 'aria-valid-attr': { enabled: true },\r\n 'aria-valid-attr-value': { enabled: true },\r\n 'aria-allowed-attr': { enabled: true },\r\n 'button-name': { enabled: true },\r\n 'image-alt': { enabled: true },\r\n label: { enabled: true },\r\n 'link-name': { enabled: true },\r\n };\r\n for (const id of options.disableRules ?? []) {\r\n rules[id] = { enabled: false };\r\n }\r\n const results = await axe.run(element, { rules });\r\n return results.violations;\r\n}\r\n","export function pressKey(\r\n element: HTMLElement,\r\n key: string,\r\n modifiers?: { shift?: boolean; ctrl?: boolean; alt?: boolean },\r\n): void {\r\n const event = new KeyboardEvent('keydown', {\r\n key,\r\n bubbles: true,\r\n cancelable: true,\r\n shiftKey: modifiers?.shift ?? false,\r\n ctrlKey: modifiers?.ctrl ?? false,\r\n altKey: modifiers?.alt ?? false,\r\n });\r\n element.dispatchEvent(event);\r\n}\r\n\r\nexport function pressTab(element: HTMLElement, shift = false): void {\r\n pressKey(element, 'Tab', { shift });\r\n}\r\n\r\nexport function pressArrowDown(element: HTMLElement): void {\r\n pressKey(element, 'ArrowDown');\r\n}\r\n\r\nexport function pressArrowUp(element: HTMLElement): void {\r\n pressKey(element, 'ArrowUp');\r\n}\r\n\r\nexport function pressEnter(element: HTMLElement): void {\r\n pressKey(element, 'Enter');\r\n}\r\n\r\nexport function pressSpace(element: HTMLElement): void {\r\n pressKey(element, ' ');\r\n}\r\n\r\nexport function pressEscape(element: HTMLElement): void {\r\n pressKey(element, 'Escape');\r\n}\r\n\r\nexport function pressHome(element: HTMLElement): void {\r\n pressKey(element, 'Home');\r\n}\r\n\r\nexport function pressEnd(element: HTMLElement): void {\r\n pressKey(element, 'End');\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAYA;;;;;;AAMG;AACI,eAAe,YAAY,CAChC,OAAoB,EACpB,UAA+B,EAAE,EAAA;AAEjC,IAAA,MAAM,KAAK,GAAyC;AAClD,QAAA,gBAAgB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AACpC,QAAA,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC/B,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACvC,QAAA,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACpC,QAAA,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC1C,QAAA,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACtC,QAAA,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAChC,QAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AAC9B,QAAA,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;AACxB,QAAA,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC/B;IACD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE;QAC3C,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;IAChC;AACA,IAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC;IACjD,OAAO,OAAO,CAAC,UAAU;AAC3B;;SCxCgB,QAAQ,CACtB,OAAoB,EACpB,GAAW,EACX,SAA8D,EAAA;AAE9D,IAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE;QACzC,GAAG;AACH,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK;AACnC,QAAA,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,KAAK;AACjC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK;AAChC,KAAA,CAAC;AACF,IAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9B;SAEgB,QAAQ,CAAC,OAAoB,EAAE,KAAK,GAAG,KAAK,EAAA;IAC1D,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AACrC;AAEM,SAAU,cAAc,CAAC,OAAoB,EAAA;AACjD,IAAA,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;AAChC;AAEM,SAAU,YAAY,CAAC,OAAoB,EAAA;AAC/C,IAAA,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AAC9B;AAEM,SAAU,UAAU,CAAC,OAAoB,EAAA;AAC7C,IAAA,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5B;AAEM,SAAU,UAAU,CAAC,OAAoB,EAAA;AAC7C,IAAA,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;AACxB;AAEM,SAAU,WAAW,CAAC,OAAoB,EAAA;AAC9C,IAAA,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7B;AAEM,SAAU,SAAS,CAAC,OAAoB,EAAA;AAC5C,IAAA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3B;AAEM,SAAU,QAAQ,CAAC,OAAoB,EAAA;AAC3C,IAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1B;;AC9CA;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- const FORMAUI_VERSION = '0.1.0';
1
+ const FORMAUI_VERSION = '0.3.1';
2
2
  // FormaUI - Primary entry point
3
3
  // Secondary entry points are imported directly, e.g.:
4
4
  // import { FuiButtonDirective } from '@raintonic/formaui/components/button';
@@ -1 +1 @@
1
- {"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.1.0';\r\n\r\n// FormaUI - Primary entry point\r\n// Secondary entry points are imported directly, e.g.:\r\n// import { FuiButtonDirective } from '@raintonic/formaui/components/button';\r\n// import { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\n// import { ThemeService } from '@raintonic/formaui/services/theme';\r\n// import { FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\n// import { FuiCoreModule } from '@raintonic/formaui/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;;AAEG;;;;"}
1
+ {"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.3.1';\r\n\r\n// FormaUI - Primary entry point\r\n// Secondary entry points are imported directly, e.g.:\r\n// import { FuiButtonDirective } from '@raintonic/formaui/components/button';\r\n// import { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\n// import { ThemeService } from '@raintonic/formaui/services/theme';\r\n// import { FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\n// import { FuiCoreModule } from '@raintonic/formaui/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;;AAEG;;;;"}
package/llms-full.txt CHANGED
@@ -79,6 +79,10 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
79
79
 
80
80
  | Name | Type | Default | Required |
81
81
  |------|------|---------|----------|
82
+ | addButtonLabel | string | undefined | undefined | no |
83
+ | refreshButtonLabel | string | undefined | undefined | no |
84
+ | noOptionsText | string | undefined | undefined | no |
85
+ | searchPlaceholder | string | undefined | undefined | no |
82
86
  | errorStateMatcher | ErrorStateMatcher | null | null | no |
83
87
 
84
88
  #### Outputs
@@ -127,7 +131,7 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
127
131
  | Name | Type | Default | Required |
128
132
  |------|------|---------|----------|
129
133
  | icon | string | null | null | no |
130
- | customColor | string | null | null | no |
134
+ | customColor | FuiBadgeCustomColor | null | null | no |
131
135
  | size | FuiBadgeSize | 'md' | no |
132
136
  | variant | FuiBadgeVariant | 'primary' | no |
133
137
  | ariaLabel | string | null | null | no |
@@ -159,7 +163,11 @@ An autocomplete component designed to work seamlessly with fui-form-field. Simil
159
163
  - **Import**: `import { FuiBreadcrumbComponent } from 'formaui/components/breadcrumb'`
160
164
  - **Selector**: `fui-breadcrumb`
161
165
 
162
- No public inputs or outputs.
166
+ #### Inputs
167
+
168
+ | Name | Type | Default | Required |
169
+ |------|------|---------|----------|
170
+ | aria-label | string | undefined | undefined | no |
163
171
 
164
172
  ### Sub-components
165
173
 
@@ -295,6 +303,8 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
295
303
  | Name | Type | Default | Required |
296
304
  |------|------|---------|----------|
297
305
  | data | T[] | [] | no |
306
+ | tableAriaLabel | string | undefined | undefined | no |
307
+ | emptyMessage | string | undefined | undefined | no |
298
308
  | sort | { field: string; direction: 'ASC' | 'DESC' } | null | null | no |
299
309
  | filters | ColumnFilter[] | [] | no |
300
310
  | config | AdvancedDataTableConfig | - | yes |
@@ -376,29 +386,6 @@ A checkbox component with full Angular Reactive Forms support. Compatible with A
376
386
 
377
387
  ---
378
388
 
379
- ## dynamic-form
380
-
381
- A component that automatically renders forms based on a JSON configuration. It takes a FormGroup and a configuration object that specifies the form structure.
382
-
383
- - **Import**: `import { FuiDynamicFormRendererComponent } from 'formaui/components/dynamic-form'`
384
- - **Selector**: `fui-dynamic-form-renderer`
385
-
386
- #### Inputs
387
-
388
- | Name | Type | Default | Required |
389
- |------|------|---------|----------|
390
- | formGroup | FormGroup | - | yes |
391
- | config | DynamicFormConfig | - | yes |
392
-
393
- #### Outputs
394
-
395
- | Name | Type |
396
- |------|------|
397
- | autocompleteAction | DynamicFormAutocompleteEvent |
398
- | fileChange | DynamicFormFileEvent |
399
-
400
- ---
401
-
402
389
  ## empty-state
403
390
 
404
391
  - **Import**: `import { FuiEmptyStateComponent } from 'formaui/components/empty-state'`
@@ -764,6 +751,7 @@ A progress bar component compatible with Angular Material's mat-progress-bar int
764
751
  | Name | Type | Default | Required |
765
752
  |------|------|---------|----------|
766
753
  | disabled | boolean | false | no |
754
+ | disableRipple | boolean | false | no |
767
755
  | aria-label | string | null | null | no |
768
756
  | aria-labelledby | string | null | null | no |
769
757
  | value | unknown | - | yes |
@@ -937,6 +925,7 @@ A slider (range input) component with single and dual-thumb (range) support. Int
937
925
  | value | number | 0 | no |
938
926
  | size | FuiSpinnerSize | 'md' | no |
939
927
  | color | string | null | null | no |
928
+ | aria-label | string | undefined | undefined | no |
940
929
 
941
930
  ---
942
931
 
@@ -1110,6 +1099,8 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1110
1099
  | menuItems | FuiToolbarMenuItem[] | [] | no |
1111
1100
  | userProfile | FuiToolbarUserProfile | null | null | no |
1112
1101
  | activeMenuItemId | string | number | '' | no |
1102
+ | ariaLabel | string | undefined | undefined | no |
1103
+ | userAriaLabel | string | undefined | undefined | no |
1113
1104
 
1114
1105
  #### Outputs
1115
1106
 
@@ -1225,6 +1216,7 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1225
1216
  |------|------|---------|----------|
1226
1217
  | sort | { field: string; direction: 'ASC' | 'DESC' } | null | null | no |
1227
1218
  | filters | FuiTreeTableColumnFilter[] | [] | no |
1219
+ | emptyMessage | string | undefined | undefined | no |
1228
1220
  | config | FuiTreeTableConfig | - | yes |
1229
1221
 
1230
1222
  #### Outputs
@@ -1491,6 +1483,23 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1491
1483
  | --fui-state-info-bg | var(--fui-info-30) |
1492
1484
  | --fui-state-info-hover | var(--fui-info-110) |
1493
1485
 
1486
+ ### Destructive
1487
+
1488
+ | Token | Value |
1489
+ |-------|-------|
1490
+ | --fui-destructive-default | var(--fui-danger-90) |
1491
+ | --fui-destructive-hover | var(--fui-danger-100) |
1492
+ | --fui-destructive-text | white |
1493
+
1494
+ ### Tertiary
1495
+
1496
+ | Token | Value |
1497
+ |-------|-------|
1498
+ | --fui-tertiary-text | var(--fui-text-primary) |
1499
+ | --fui-tertiary-hover-bg | var(--fui-surface-03) |
1500
+ | --fui-tertiary-violet-text | var(--fui-primary) |
1501
+ | --fui-tertiary-violet-hover-bg | var(--fui-primary-bg) |
1502
+
1494
1503
  ### Field
1495
1504
 
1496
1505
  | Token | Value |
package/llms.txt CHANGED
@@ -23,7 +23,6 @@ npm install formaui
23
23
  - date-picker: No description available. `import { FuiDatePickerComponent } from 'formaui/components/date-picker'`
24
24
  - divider: No description available. `import { FuiDividerComponent } from 'formaui/components/divider'`
25
25
  - drawer: No description available. `import { FuiDrawerComponent } from 'formaui/components/drawer'`
26
- - dynamic-form: A component that automatically renders forms based on a JSON configuration. It takes a FormGroup and a configuration obj `import { FuiDynamicFormRendererComponent } from 'formaui/components/dynamic-form'`
27
26
  - empty-state: No description available. `import { FuiEmptyStateComponent } from 'formaui/components/empty-state'`
28
27
  - file-upload: A file upload component with drag-and-drop support, file previews, and validation. `import { FuiFileUploadComponent } from 'formaui/components/file-upload'`
29
28
  - form-field: A form field wrapper component that provides consistent styling and behavior for form controls. Follows Angular Material `import { FuiFormFieldComponent } from 'formaui/components/form-field'`
@@ -57,4 +56,4 @@ npm install formaui
57
56
  ## Design Tokens
58
57
 
59
58
  CSS custom properties prefixed with `--fui-*`. Themes: light (default), dark.
60
- Key token groups: primary, secondary, danger, success, warning, info, pink, orange, tomato, white, black, text, border, surface, bg, state, field, icon, background, error, card.
59
+ Key token groups: primary, secondary, danger, success, warning, info, pink, orange, tomato, white, black, text, border, surface, bg, state, destructive, tertiary, field, icon, background, error, card.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raintonic/formaui",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "A modern Angular UI component library with theming support",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -103,10 +103,6 @@
103
103
  "types": "./types/raintonic-formaui-components-drawer.d.ts",
104
104
  "default": "./fesm2022/raintonic-formaui-components-drawer.mjs"
105
105
  },
106
- "./components/dynamic-form": {
107
- "types": "./types/raintonic-formaui-components-dynamic-form.d.ts",
108
- "default": "./fesm2022/raintonic-formaui-components-dynamic-form.mjs"
109
- },
110
106
  "./components/empty-state": {
111
107
  "types": "./types/raintonic-formaui-components-empty-state.d.ts",
112
108
  "default": "./fesm2022/raintonic-formaui-components-empty-state.mjs"
package/styles/index.scss CHANGED
@@ -84,8 +84,8 @@ button {
84
84
  @include fui-button-reset();
85
85
  }
86
86
 
87
- // Link styles
88
- a {
87
+ // Link styles — exclude fui-button anchors, which have their own variant system
88
+ a:not(.fui-button) {
89
89
  color: var(--fui-primary);
90
90
  text-decoration: none;
91
91
 
@@ -250,3 +250,28 @@
250
250
  .fui-slide-in {
251
251
  animation: fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance);
252
252
  }
253
+
254
+ // Popover/dropdown entrance — for panels portaled into the overlay container
255
+ // (datepicker calendar, menu, autocomplete). Transform-origin should be set
256
+ // by the consumer to match the side where the panel is anchored.
257
+ @keyframes fui-popover-enter {
258
+ from {
259
+ opacity: 0;
260
+ transform: translateY(-14px);
261
+ }
262
+ 60% {
263
+ opacity: 1;
264
+ }
265
+ to {
266
+ opacity: 1;
267
+ transform: translateY(0);
268
+ }
269
+ }
270
+
271
+ @mixin fui-motion-popover-enter(
272
+ $duration: var(--fui-duration-moderate-01),
273
+ $easing: var(--fui-ease-entrance)
274
+ ) {
275
+ animation: fui-popover-enter $duration $easing both;
276
+ will-change: transform, opacity;
277
+ }
@@ -145,13 +145,14 @@
145
145
 
146
146
  // === COMPONENT SIZES ===
147
147
  // Button heights
148
- --fui-button-height-sm: 1.5rem; // 32px
149
- --fui-button-height-md: 2.5rem; // 40px
150
- --fui-button-height-lg: 3rem; // 48px
151
- --fui-button-height-xl: 4rem; // 64px
148
+ --fui-button-height-sm: 1.75rem; // 28px
149
+ --fui-button-height-md: 2.25rem; // 36px
150
+ --fui-button-height-lg: 2.75rem; // 44px
151
+ --fui-button-height-xl: 3.25rem; // 52px
152
+ --fui-button-height-2xl: 4rem; // 64px
152
153
 
153
154
  // Input heights
154
- --fui-input-height: 2.5rem; // 44px
155
+ --fui-input-height: 2.25rem; // 36px (matches --fui-button-height-md)
155
156
 
156
157
  // Icon sizes
157
158
  --fui-icon-size-sm: 0.75rem; // 16px