@raintonic/formaui 0.2.1 → 0.3.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 (169) 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 +4 -4
  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 +33 -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-select.d.ts.map +1 -1
  140. package/types/raintonic-formaui-components-side-panel.d.ts +10 -1
  141. package/types/raintonic-formaui-components-side-panel.d.ts.map +1 -1
  142. package/types/raintonic-formaui-components-sidebar.d.ts +12 -1
  143. package/types/raintonic-formaui-components-sidebar.d.ts.map +1 -1
  144. package/types/raintonic-formaui-components-slider.d.ts +12 -1
  145. package/types/raintonic-formaui-components-slider.d.ts.map +1 -1
  146. package/types/raintonic-formaui-components-spinner.d.ts +12 -2
  147. package/types/raintonic-formaui-components-spinner.d.ts.map +1 -1
  148. package/types/raintonic-formaui-components-tag.d.ts +10 -1
  149. package/types/raintonic-formaui-components-tag.d.ts.map +1 -1
  150. package/types/raintonic-formaui-components-time-picker.d.ts +14 -2
  151. package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
  152. package/types/raintonic-formaui-components-toggle.d.ts +1 -1
  153. package/types/raintonic-formaui-components-toolbar.d.ts +22 -4
  154. package/types/raintonic-formaui-components-toolbar.d.ts.map +1 -1
  155. package/types/raintonic-formaui-components-tree-table.d.ts +29 -4
  156. package/types/raintonic-formaui-components-tree-table.d.ts.map +1 -1
  157. package/types/raintonic-formaui-components-tree.d.ts +12 -1
  158. package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
  159. package/types/raintonic-formaui-core.d.ts +19 -2
  160. package/types/raintonic-formaui-core.d.ts.map +1 -1
  161. package/types/raintonic-formaui-services-dialog.d.ts +1 -1
  162. package/types/raintonic-formaui-services-theme.d.ts +3 -3
  163. package/types/raintonic-formaui-test-utils.d.ts +15 -2
  164. package/types/raintonic-formaui-test-utils.d.ts.map +1 -1
  165. package/types/raintonic-formaui.d.ts +1 -1
  166. package/fesm2022/raintonic-formaui-components-dynamic-form.mjs +0 -266
  167. package/fesm2022/raintonic-formaui-components-dynamic-form.mjs.map +0 -1
  168. package/types/raintonic-formaui-components-dynamic-form.d.ts +0 -412
  169. 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.0';
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.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;;;;"}
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'`
@@ -937,6 +924,7 @@ A slider (range input) component with single and dual-thumb (range) support. Int
937
924
  | value | number | 0 | no |
938
925
  | size | FuiSpinnerSize | 'md' | no |
939
926
  | color | string | null | null | no |
927
+ | aria-label | string | undefined | undefined | no |
940
928
 
941
929
  ---
942
930
 
@@ -1110,6 +1098,8 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1110
1098
  | menuItems | FuiToolbarMenuItem[] | [] | no |
1111
1099
  | userProfile | FuiToolbarUserProfile | null | null | no |
1112
1100
  | activeMenuItemId | string | number | '' | no |
1101
+ | ariaLabel | string | undefined | undefined | no |
1102
+ | userAriaLabel | string | undefined | undefined | no |
1113
1103
 
1114
1104
  #### Outputs
1115
1105
 
@@ -1225,6 +1215,7 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1225
1215
  |------|------|---------|----------|
1226
1216
  | sort | { field: string; direction: 'ASC' | 'DESC' } | null | null | no |
1227
1217
  | filters | FuiTreeTableColumnFilter[] | [] | no |
1218
+ | emptyMessage | string | undefined | undefined | no |
1228
1219
  | config | FuiTreeTableConfig | - | yes |
1229
1220
 
1230
1221
  #### Outputs
@@ -1491,6 +1482,23 @@ A top navigation toolbar following Carbon Design System principles. Provides spa
1491
1482
  | --fui-state-info-bg | var(--fui-info-30) |
1492
1483
  | --fui-state-info-hover | var(--fui-info-110) |
1493
1484
 
1485
+ ### Destructive
1486
+
1487
+ | Token | Value |
1488
+ |-------|-------|
1489
+ | --fui-destructive-default | var(--fui-danger-90) |
1490
+ | --fui-destructive-hover | var(--fui-danger-100) |
1491
+ | --fui-destructive-text | white |
1492
+
1493
+ ### Tertiary
1494
+
1495
+ | Token | Value |
1496
+ |-------|-------|
1497
+ | --fui-tertiary-text | var(--fui-text-primary) |
1498
+ | --fui-tertiary-hover-bg | var(--fui-surface-03) |
1499
+ | --fui-tertiary-violet-text | var(--fui-primary) |
1500
+ | --fui-tertiary-violet-hover-bg | var(--fui-primary-bg) |
1501
+
1494
1502
  ### Field
1495
1503
 
1496
1504
  | 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.0",
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