@bodynarf/react.components 1.8.22 → 1.9.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 (256) hide show
  1. package/common.scss +3 -2
  2. package/components/accordion/component/index.d.ts +2 -2
  3. package/components/accordion/component/index.d.ts.map +1 -1
  4. package/components/accordion/component/index.js +4 -4
  5. package/components/accordion/types.d.ts +1 -1
  6. package/components/accordion/types.d.ts.map +1 -1
  7. package/components/anchor/component/index.d.ts +1 -1
  8. package/components/anchor/component/index.d.ts.map +1 -1
  9. package/components/anchor/component/index.js +6 -6
  10. package/components/anchor/components/anchorWithIcon/index.d.ts +3 -2
  11. package/components/anchor/components/anchorWithIcon/index.d.ts.map +1 -1
  12. package/components/anchor/components/anchorWithIcon/index.js +14 -9
  13. package/components/anchor/components/simpleAnchor/index.d.ts +3 -2
  14. package/components/anchor/components/simpleAnchor/index.d.ts.map +1 -1
  15. package/components/anchor/components/simpleAnchor/index.js +8 -2
  16. package/components/anchor/types.d.ts +2 -6
  17. package/components/anchor/types.d.ts.map +1 -1
  18. package/components/breadcrumbs/component/index.d.ts +34 -0
  19. package/components/breadcrumbs/component/index.d.ts.map +1 -0
  20. package/components/breadcrumbs/component/index.js +21 -0
  21. package/components/breadcrumbs/index.d.ts +3 -0
  22. package/components/breadcrumbs/index.d.ts.map +1 -0
  23. package/components/breadcrumbs/index.js +2 -0
  24. package/components/breadcrumbs/types.d.ts +13 -0
  25. package/components/breadcrumbs/types.d.ts.map +1 -0
  26. package/components/button/component/index.d.ts +1 -1
  27. package/components/button/component/index.d.ts.map +1 -1
  28. package/components/button/component/index.js +4 -8
  29. package/components/button/components/buttonWithIcon/index.d.ts +3 -2
  30. package/components/button/components/buttonWithIcon/index.d.ts.map +1 -1
  31. package/components/button/components/buttonWithIcon/index.js +14 -9
  32. package/components/button/components/simpleButton/index.d.ts +3 -2
  33. package/components/button/components/simpleButton/index.d.ts.map +1 -1
  34. package/components/button/components/simpleButton/index.js +8 -2
  35. package/components/button/types.d.ts +1 -1
  36. package/components/button/types.d.ts.map +1 -1
  37. package/components/button/types.js +0 -3
  38. package/components/dropdown/component/index.d.ts +1 -1
  39. package/components/dropdown/component/index.d.ts.map +1 -1
  40. package/components/dropdown/component/index.js +5 -8
  41. package/components/dropdown/component/style.scss +5 -1
  42. package/components/dropdown/components/compact/index.d.ts +2 -2
  43. package/components/dropdown/components/compact/index.d.ts.map +1 -1
  44. package/components/dropdown/components/compact/index.js +12 -9
  45. package/components/dropdown/components/item/index.d.ts +1 -1
  46. package/components/dropdown/components/item/index.d.ts.map +1 -1
  47. package/components/dropdown/components/item/index.js +34 -2
  48. package/components/dropdown/components/label/index.d.ts +1 -1
  49. package/components/dropdown/components/label/index.d.ts.map +1 -1
  50. package/components/dropdown/components/label/index.js +41 -9
  51. package/components/dropdown/components/withLabel/index.d.ts +2 -2
  52. package/components/dropdown/components/withLabel/index.d.ts.map +1 -1
  53. package/components/dropdown/components/withLabel/index.js +14 -12
  54. package/components/dropdown/types.d.ts +13 -2
  55. package/components/dropdown/types.d.ts.map +1 -1
  56. package/components/icon/component/index.d.ts +2 -2
  57. package/components/icon/component/index.d.ts.map +1 -1
  58. package/components/icon/component/index.js +9 -5
  59. package/components/icon/types.d.ts +2 -4
  60. package/components/icon/types.d.ts.map +1 -1
  61. package/components/index.d.ts +0 -1
  62. package/components/index.d.ts.map +1 -1
  63. package/components/index.js +0 -1
  64. package/components/paginator/component/index.d.ts +2 -2
  65. package/components/paginator/component/index.d.ts.map +1 -1
  66. package/components/paginator/component/index.js +19 -14
  67. package/components/paginator/types.d.ts +3 -5
  68. package/components/paginator/types.d.ts.map +1 -1
  69. package/components/primitives/checkbox/component/index.d.ts +2 -2
  70. package/components/primitives/checkbox/component/index.d.ts.map +1 -1
  71. package/components/primitives/checkbox/component/index.js +15 -17
  72. package/components/primitives/checkbox/types.d.ts +2 -2
  73. package/components/primitives/checkbox/types.d.ts.map +1 -1
  74. package/components/primitives/color/component/index.d.ts.map +1 -1
  75. package/components/primitives/color/components/picker/index.d.ts +11 -29
  76. package/components/primitives/color/components/picker/index.d.ts.map +1 -1
  77. package/components/primitives/color/components/picker/index.js +15 -12
  78. package/components/primitives/color/components/withLabel/index.d.ts +1 -1
  79. package/components/primitives/color/components/withLabel/index.d.ts.map +1 -1
  80. package/components/primitives/color/components/withLabel/index.js +8 -30
  81. package/components/primitives/color/components/withoutLabel/index.d.ts +1 -1
  82. package/components/primitives/color/components/withoutLabel/index.d.ts.map +1 -1
  83. package/components/primitives/color/components/withoutLabel/index.js +3 -13
  84. package/components/primitives/color/types.d.ts +1 -1
  85. package/components/primitives/color/types.d.ts.map +1 -1
  86. package/components/primitives/date/component/index.d.ts +2 -2
  87. package/components/primitives/date/component/index.d.ts.map +1 -1
  88. package/components/primitives/date/component/index.js +12 -27
  89. package/components/primitives/date/types.d.ts +2 -2
  90. package/components/primitives/date/types.d.ts.map +1 -1
  91. package/components/primitives/index.d.ts +0 -1
  92. package/components/primitives/index.d.ts.map +1 -1
  93. package/components/primitives/index.js +0 -1
  94. package/components/primitives/internal/componentWithLabel/index.d.ts +17 -0
  95. package/components/primitives/internal/componentWithLabel/index.d.ts.map +1 -0
  96. package/components/primitives/internal/componentWithLabel/index.js +26 -0
  97. package/components/primitives/internal/hint/index.d.ts +13 -0
  98. package/components/primitives/internal/hint/index.d.ts.map +1 -0
  99. package/components/primitives/internal/hint/index.js +47 -0
  100. package/components/primitives/multiline/component/index.d.ts +1 -1
  101. package/components/primitives/multiline/component/index.d.ts.map +1 -1
  102. package/components/primitives/multiline/component/index.js +5 -8
  103. package/components/primitives/multiline/components/withLabel/index.d.ts +6 -0
  104. package/components/primitives/multiline/components/withLabel/index.d.ts.map +1 -0
  105. package/components/primitives/multiline/components/withLabel/index.js +29 -0
  106. package/components/primitives/multiline/components/withoutLabel/index.d.ts +6 -0
  107. package/components/primitives/multiline/components/withoutLabel/index.d.ts.map +1 -0
  108. package/components/primitives/multiline/components/withoutLabel/index.js +28 -0
  109. package/components/primitives/multiline/types.d.ts +1 -1
  110. package/components/primitives/multiline/types.d.ts.map +1 -1
  111. package/components/primitives/number/component/index.d.ts +1 -1
  112. package/components/primitives/number/component/index.d.ts.map +1 -1
  113. package/components/primitives/number/component/index.js +5 -8
  114. package/components/primitives/number/components/withLabel/index.d.ts +2 -2
  115. package/components/primitives/number/components/withLabel/index.d.ts.map +1 -1
  116. package/components/primitives/number/components/withLabel/index.js +12 -27
  117. package/components/primitives/number/components/withoutLabel/index.d.ts +2 -2
  118. package/components/primitives/number/components/withoutLabel/index.d.ts.map +1 -1
  119. package/components/primitives/number/components/withoutLabel/index.js +11 -9
  120. package/components/primitives/number/types.d.ts +1 -1
  121. package/components/primitives/number/types.d.ts.map +1 -1
  122. package/components/primitives/password/component/index.d.ts +1 -1
  123. package/components/primitives/password/component/index.d.ts.map +1 -1
  124. package/components/primitives/password/component/index.js +5 -6
  125. package/components/primitives/password/components/withLabel/index.d.ts +2 -2
  126. package/components/primitives/password/components/withLabel/index.d.ts.map +1 -1
  127. package/components/primitives/password/components/withLabel/index.js +14 -30
  128. package/components/primitives/password/components/withoutLabel/index.d.ts +2 -2
  129. package/components/primitives/password/components/withoutLabel/index.d.ts.map +1 -1
  130. package/components/primitives/password/components/withoutLabel/index.js +13 -11
  131. package/components/primitives/password/types.d.ts +1 -1
  132. package/components/primitives/password/types.d.ts.map +1 -1
  133. package/components/primitives/text/component/index.d.ts +1 -1
  134. package/components/primitives/text/component/index.d.ts.map +1 -1
  135. package/components/primitives/text/component/index.js +5 -8
  136. package/components/primitives/text/components/withLabel/index.d.ts +6 -0
  137. package/components/primitives/text/components/withLabel/index.d.ts.map +1 -0
  138. package/components/primitives/text/components/withLabel/index.js +29 -0
  139. package/components/primitives/text/components/withoutLabel/index.d.ts +6 -0
  140. package/components/primitives/text/components/withoutLabel/index.d.ts.map +1 -0
  141. package/components/primitives/text/components/withoutLabel/index.js +28 -0
  142. package/components/primitives/text/types.d.ts +1 -1
  143. package/components/primitives/text/types.d.ts.map +1 -1
  144. package/components/search/component/index.d.ts +2 -2
  145. package/components/search/component/index.d.ts.map +1 -1
  146. package/components/search/component/index.js +16 -10
  147. package/components/search/types.d.ts +2 -2
  148. package/components/search/types.d.ts.map +1 -1
  149. package/components/table/component/index.d.ts +43 -0
  150. package/components/table/component/index.d.ts.map +1 -0
  151. package/components/table/component/index.js +27 -0
  152. package/components/table/components/heading/index.d.ts +13 -0
  153. package/components/table/components/heading/index.d.ts.map +1 -0
  154. package/components/table/components/heading/index.js +21 -0
  155. package/components/table/index.d.ts +3 -0
  156. package/components/table/index.d.ts.map +1 -0
  157. package/components/table/index.js +2 -0
  158. package/components/table/types.d.ts +18 -0
  159. package/components/table/types.d.ts.map +1 -0
  160. package/components/tabs/component/index.d.ts +3 -3
  161. package/components/tabs/component/index.d.ts.map +1 -1
  162. package/components/tabs/component/index.js +14 -8
  163. package/components/tabs/components/item/index.d.ts +1 -1
  164. package/components/tabs/components/item/index.d.ts.map +1 -1
  165. package/components/tabs/components/item/index.js +4 -3
  166. package/components/tabs/types.d.ts +1 -12
  167. package/components/tabs/types.d.ts.map +1 -1
  168. package/components/tabs/types.js +0 -12
  169. package/components/tag/component/index.d.ts +2 -2
  170. package/components/tag/component/index.d.ts.map +1 -1
  171. package/components/tag/component/index.js +13 -7
  172. package/components/tag/types.d.ts +1 -1
  173. package/components/tag/types.d.ts.map +1 -1
  174. package/hooks/usePagination.d.ts.map +1 -1
  175. package/hooks/usePagination.js +11 -2
  176. package/index.d.ts +1 -0
  177. package/index.d.ts.map +1 -1
  178. package/index.js +1 -0
  179. package/package.json +11 -4
  180. package/readme.md +2 -0
  181. package/tsconfig.tsbuildinfo +1 -1
  182. package/types/baseElementProps.d.ts +11 -0
  183. package/types/baseElementProps.d.ts.map +1 -0
  184. package/types/baseElementProps.js +1 -0
  185. package/{components/primitives/types/baseProps.d.ts → types/baseInputElementProps.d.ts} +10 -4
  186. package/types/baseInputElementProps.d.ts.map +1 -0
  187. package/types/baseInputElementProps.js +1 -0
  188. package/types/dataAttributes.d.ts +9 -0
  189. package/types/dataAttributes.d.ts.map +1 -0
  190. package/types/dataAttributes.js +1 -0
  191. package/types/elementColor.d.ts +18 -0
  192. package/types/elementColor.d.ts.map +1 -0
  193. package/types/elementColor.js +18 -0
  194. package/types/elementIcon.d.ts +22 -0
  195. package/types/elementIcon.d.ts.map +1 -0
  196. package/types/elementIcon.js +1 -0
  197. package/types/elementPosition.d.ts +12 -0
  198. package/types/elementPosition.d.ts.map +1 -0
  199. package/types/elementPosition.js +10 -0
  200. package/types/elementSize.d.ts +12 -0
  201. package/types/elementSize.d.ts.map +1 -0
  202. package/types/elementSize.js +12 -0
  203. package/types/hintConfiguration.d.ts +13 -0
  204. package/types/hintConfiguration.d.ts.map +1 -0
  205. package/types/hintConfiguration.js +1 -0
  206. package/types/index.d.ts +11 -0
  207. package/types/index.d.ts.map +1 -0
  208. package/types/index.js +10 -0
  209. package/{components/primitives/types/label.d.ts → types/labelConfiguration.d.ts} +3 -3
  210. package/types/labelConfiguration.d.ts.map +1 -0
  211. package/types/labelConfiguration.js +1 -0
  212. package/{components/primitives/types → types}/validation/index.d.ts +1 -1
  213. package/types/validation/index.d.ts.map +1 -0
  214. package/{components/primitives/types → types}/validation/index.js +1 -1
  215. package/{components/primitives/types → types}/validation/state.d.ts +2 -2
  216. package/types/validation/state.d.ts.map +1 -0
  217. package/{components/primitives/types → types}/validation/state.js +0 -1
  218. package/{components/primitives/types → types}/validation/status.d.ts +1 -1
  219. package/types/validation/status.d.ts.map +1 -0
  220. package/{components/primitives/types → types}/validation/status.js +1 -2
  221. package/utils/dataAttributes.d.ts +1 -1
  222. package/utils/dataAttributes.d.ts.map +1 -1
  223. package/utils/index.d.ts +1 -1
  224. package/utils/index.d.ts.map +1 -1
  225. package/utils/index.js +1 -1
  226. package/utils/validation.d.ts +11 -0
  227. package/utils/validation.d.ts.map +1 -0
  228. package/utils/validation.js +20 -0
  229. package/components/primitives/multiline/components/multilineWithLabel/index.d.ts +0 -6
  230. package/components/primitives/multiline/components/multilineWithLabel/index.d.ts.map +0 -1
  231. package/components/primitives/multiline/components/multilineWithLabel/index.js +0 -44
  232. package/components/primitives/multiline/components/multilineWithoutLabel/index.d.ts +0 -6
  233. package/components/primitives/multiline/components/multilineWithoutLabel/index.d.ts.map +0 -1
  234. package/components/primitives/multiline/components/multilineWithoutLabel/index.js +0 -26
  235. package/components/primitives/text/components/textWithLabel/index.d.ts +0 -6
  236. package/components/primitives/text/components/textWithLabel/index.d.ts.map +0 -1
  237. package/components/primitives/text/components/textWithLabel/index.js +0 -44
  238. package/components/primitives/text/components/textWithoutLabel/index.d.ts +0 -6
  239. package/components/primitives/text/components/textWithoutLabel/index.d.ts.map +0 -1
  240. package/components/primitives/text/components/textWithoutLabel/index.js +0 -26
  241. package/components/primitives/types/baseProps.d.ts.map +0 -1
  242. package/components/primitives/types/index.d.ts +0 -4
  243. package/components/primitives/types/index.d.ts.map +0 -1
  244. package/components/primitives/types/index.js +0 -3
  245. package/components/primitives/types/label.d.ts.map +0 -1
  246. package/components/primitives/types/validation/index.d.ts.map +0 -1
  247. package/components/primitives/types/validation/state.d.ts.map +0 -1
  248. package/components/primitives/types/validation/status.d.ts.map +0 -1
  249. package/components/types.d.ts +0 -78
  250. package/components/types.d.ts.map +0 -1
  251. package/components/types.js +0 -41
  252. package/utils/formValidation.d.ts +0 -16
  253. package/utils/formValidation.d.ts.map +0 -1
  254. package/utils/formValidation.js +0 -35
  255. /package/components/{primitives/types/baseProps.js → breadcrumbs/types.js} +0 -0
  256. /package/components/{primitives/types/label.js → table/types.js} +0 -0
@@ -1,6 +1,38 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getClassName, isNullOrUndefined } from "@bodynarf/utils";
3
+ import { ElementPosition } from "../../../../types";
4
+ import Icon from "../../../icon/component";
2
5
  /** Single item in dropdown component */
3
6
  const DropdownItem = ({ item, selected, onClick }) => {
4
- return (_jsx("li", { className: `bbr-dropdown-item dropdown-item${selected ? " is-active" : ""}`, onClick: onClick, "data-dropdown-item-value": item.value, title: item.displayValue, children: item.displayValue }, item.id));
7
+ if (!isNullOrUndefined(item.icon)) {
8
+ return _jsx(DropdownItemWithIcon, { item: item, selected: selected, onClick: onClick });
9
+ }
10
+ const className = getClassName([
11
+ "bbr-dropdown-item",
12
+ "dropdown-item",
13
+ selected ? "is-active" : "",
14
+ "is-flex is-align-items-center",
15
+ ]);
16
+ return (_jsx("li", { onClick: onClick, className: className, "data-dropdown-item-value": item.value, title: item.title, children: item.displayValue }, item.id));
5
17
  };
6
18
  export default DropdownItem;
19
+ /** Single item in dropdown component with icon */
20
+ const DropdownItemWithIcon = ({ item, selected, onClick }) => {
21
+ const icon = item.icon;
22
+ const className = getClassName([
23
+ "bbr-dropdown-item",
24
+ "dropdown-item",
25
+ selected ? "is-active" : "",
26
+ "is-flex is-align-items-center",
27
+ ]);
28
+ const iconClassName = getClassName([
29
+ icon.className,
30
+ icon.position === ElementPosition.Right
31
+ ? "bbr-icon--right"
32
+ : "bbr-icon--left",
33
+ ]);
34
+ if (icon.position === ElementPosition.Right) {
35
+ return (_jsxs("li", { onClick: onClick, className: className, "data-dropdown-item-value": item.value, title: item.title, children: [item.displayValue, _jsx(Icon, { name: icon.name, size: icon.size, className: iconClassName })] }, item.id));
36
+ }
37
+ return (_jsxs("li", { onClick: onClick, className: className, "data-dropdown-item-value": item.value, title: item.title, children: [_jsx(Icon, { name: icon.name, size: icon.size, className: iconClassName }), item.displayValue] }, item.id));
38
+ };
@@ -1,5 +1,5 @@
1
1
  import { MouseEvent } from "react";
2
- import { SelectableItem } from "../../../dropdown";
2
+ import { SelectableItem } from "../..";
3
3
  export interface DropdownLabelProps {
4
4
  /** Caption when no items selected */
5
5
  caption: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/dropdown/components/label/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOnC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAC/B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,YAAY,EAAE,OAAO,CAAC;IAEtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mBAAmB;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC1D;AAED,sBAAsB;AACtB,QAAA,MAAM,aAAa,iEAIhB,kBAAkB,KAAG,WAkCvB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/dropdown/components/label/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOnC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,kBAAkB;IAC/B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,YAAY,EAAE,OAAO,CAAC;IAEtB,oBAAoB;IACpB,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mBAAmB;IACnB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC1D;AAED,sBAAsB;AACtB,QAAA,MAAM,aAAa,iEAIhB,kBAAkB,KAAG,WA4CvB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,22 +1,54 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
3
- import { ElementSize } from "../../..";
3
+ import { ElementPosition, ElementSize } from "../../../../types";
4
4
  import Icon from "../../../icon";
5
5
  /** Label component */
6
6
  const DropdownLabel = ({ caption, selectedItem, onClick, deselectable, className, }) => {
7
- const itemSelected = !isNullOrUndefined(selectedItem);
8
- const text = itemSelected
9
- ? selectedItem?.displayValue
10
- : caption;
11
- const deselectVisible = deselectable && itemSelected;
7
+ if (isNullOrUndefined(selectedItem)) {
8
+ return _jsx(EmptyLabel, { caption: caption, deselectable: deselectable, onClick: onClick, className: className });
9
+ }
10
+ if (!isNullOrUndefined(selectedItem.icon)) {
11
+ return _jsx(SelectedItemLabelWithIcon, { caption: caption, deselectable: deselectable, onClick: onClick, className: className, selectedItem: selectedItem });
12
+ }
12
13
  const elClassName = getClassName([
13
14
  "dropdown-trigger",
14
15
  "bbr-dropdown__label",
15
16
  isNullOrEmpty(className) ? "" : `${className}--md`,
16
- itemSelected ? "" : "bbr-dropdown__label--default",
17
17
  "button"
18
18
  ]);
19
- return (_jsxs("label", { className: elClassName, onClick: onClick, children: [deselectVisible &&
20
- _jsx(Icon, { name: "plus-lg", size: ElementSize.Medium }), _jsx("span", { className: deselectVisible ? "mx-2" : "mr-2", title: itemSelected ? text : undefined, children: text }), _jsx(Icon, { name: "arrow-down", size: ElementSize.Medium })] }));
19
+ return (_jsxs("label", { className: elClassName, onClick: onClick, children: [deselectable &&
20
+ _jsx(Icon, { name: "plus-lg", size: ElementSize.Medium }), _jsx("span", { className: deselectable ? "px-2" : "pr-2", title: selectedItem.title, children: selectedItem.displayValue }), _jsx(Icon, { name: "arrow-down", size: ElementSize.Medium })] }));
21
21
  };
22
22
  export default DropdownLabel;
23
+ const EmptyLabel = ({ caption, onClick, className, }) => {
24
+ const elClassName = getClassName([
25
+ "dropdown-trigger",
26
+ "bbr-dropdown__label",
27
+ isNullOrEmpty(className) ? "" : `${className}--md`,
28
+ "bbr-dropdown__label--default",
29
+ "button"
30
+ ]);
31
+ return (_jsxs("label", { className: elClassName, onClick: onClick, children: [_jsx("span", { className: "mr-2", children: caption }), _jsx(Icon, { name: "arrow-down", size: ElementSize.Medium })] }));
32
+ };
33
+ const SelectedItemLabelWithIcon = ({ selectedItem, onClick, deselectable, className, }) => {
34
+ const elClassName = getClassName([
35
+ "dropdown-trigger",
36
+ "bbr-dropdown__label",
37
+ isNullOrEmpty(className) ? "" : `${className}--md`,
38
+ "button"
39
+ ]);
40
+ const icon = selectedItem.icon;
41
+ const iconClassName = getClassName([
42
+ icon.className,
43
+ icon.position === ElementPosition.Right
44
+ ? "bbr-icon--right"
45
+ : "bbr-icon--left",
46
+ "bbr-dropdown-item__icon"
47
+ ]);
48
+ if (icon.position === ElementPosition.Right) {
49
+ return (_jsxs("label", { className: elClassName, onClick: onClick, children: [deselectable &&
50
+ _jsx(Icon, { name: "plus-lg", size: ElementSize.Medium }), _jsxs("span", { className: deselectable ? "px-2" : "pr-2", title: selectedItem.title, children: [selectedItem.displayValue, _jsx(Icon, { name: icon.name, size: icon.size, className: iconClassName })] }), _jsx(Icon, { name: "arrow-down", size: ElementSize.Medium })] }));
51
+ }
52
+ return (_jsxs("label", { className: elClassName, onClick: onClick, children: [deselectable &&
53
+ _jsx(Icon, { name: "plus-lg", size: ElementSize.Medium }), _jsxs("span", { className: deselectable ? "mx-2" : "mr-2", title: selectedItem.title, children: [_jsx(Icon, { name: icon.name, size: icon.size, className: iconClassName }), selectedItem.displayValue] }), _jsx(Icon, { name: "arrow-down", size: ElementSize.Medium })] }));
54
+ };
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { DropdownProps } from "../../../dropdown";
3
- declare const DropdownWithLabel: ({ items, value, onSelect, validationState, deselectable, className, hideOnOuterClick, listMaxHeight, label, placeholder, disabled, }: DropdownProps) => JSX.Element;
2
+ import { DropdownProps } from "../..";
3
+ declare const DropdownWithLabel: ({ items, value, onSelect, validationState, deselectable, hideOnOuterClick, listMaxHeight, label, placeholder, disabled, className, title, data, hint, }: DropdownProps) => JSX.Element;
4
4
  export default DropdownWithLabel;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/dropdown/components/withLabel/index.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,QAAA,MAAM,iBAAiB,yIAOpB,aAAa,KAAG,WAoLlB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/dropdown/components/withLabel/index.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC,QAAA,MAAM,iBAAiB,4JASpB,aAAa,KAAG,WAiMlB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useId, useState } from "react";
3
3
  import { isNullOrUndefined, isNullOrEmpty, getClassName } from "@bodynarf/utils";
4
- import { getValidationValues } from "../../../../utils";
4
+ import { getStyleClassName, mapDataAttributes } from "../../../../utils";
5
5
  import { useComponentOutsideClick } from "../../../../hooks";
6
- import DropdownItem from "../../../dropdown/components/item";
7
- import DropdownLabel from "../../../dropdown/components/label";
8
- const DropdownWithLabel = ({ items, value, onSelect, validationState, deselectable = false, className, hideOnOuterClick, listMaxHeight, label, placeholder, disabled = false, }) => {
6
+ import InternalHint from "../../../primitives/internal/hint";
7
+ import DropdownItem from "../../components/item";
8
+ import DropdownLabel from "../../components/label";
9
+ const DropdownWithLabel = ({ items, value, onSelect, validationState, deselectable = false, hideOnOuterClick, listMaxHeight, label, placeholder, disabled = false, className, title, data, hint, }) => {
9
10
  const id = useId();
10
11
  const [isListVisible, setListVisible] = useState(false);
11
- const [isValidationDefined, styleClassName, validationMessages] = getValidationValues(undefined, validationState);
12
12
  const onItemClick = useCallback((event) => {
13
13
  if (disabled) {
14
14
  return;
@@ -50,16 +50,20 @@ const DropdownWithLabel = ({ items, value, onSelect, validationState, deselectab
50
50
  useComponentOutsideClick(`[data-dropdown-id="${id}"]`, isListVisible, () => setListVisible(false), hideOnOuterClick);
51
51
  const classNames = getClassName([
52
52
  "bbr-dropdown",
53
+ className,
53
54
  disabled ? "bbr-dropdown--disabled" : "",
54
55
  isListVisible ? "is-active" : "",
55
56
  isNullOrEmpty(listMaxHeight) ? "bbr-dropdown--height-default" : "",
56
- className,
57
57
  "dropdown"
58
58
  ]);
59
59
  const labelClassName = getClassName([
60
60
  "label",
61
61
  label.className
62
62
  ]);
63
+ const labelComponentClassName = getStyleClassName(undefined, validationState);
64
+ const dataAttributes = isNullOrUndefined(data)
65
+ ? undefined
66
+ : mapDataAttributes(data);
63
67
  if (label.horizontal) {
64
68
  const labelContainerClassName = getClassName([
65
69
  "field-label",
@@ -70,14 +74,12 @@ const DropdownWithLabel = ({ items, value, onSelect, validationState, deselectab
70
74
  "field-body",
71
75
  label.horizontalFieldContainerClassName
72
76
  ]);
73
- return (_jsxs("div", { className: "bbr-dropdown__root-container--with-label bbr-input field is-horizontal", children: [_jsx("div", { className: labelContainerClassName, children: _jsx("label", { className: labelClassName, htmlFor: id, children: label.caption }) }), _jsx("div", { className: fieldContainerClassName, children: _jsxs("div", { className: "field", children: [_jsxs("div", { className: classNames, "data-dropdown-id": id, children: [_jsx(DropdownLabel, { className: styleClassName, caption: placeholder, deselectable: deselectable, selectedItem: value, onClick: onLabelClick }), _jsx("div", { className: "dropdown-menu", children: items.length > 0
77
+ return (_jsxs("div", { className: "bbr-dropdown__root-container--with-label bbr-input field is-horizontal", children: [_jsx("div", { className: labelContainerClassName, children: _jsx("label", { className: labelClassName, htmlFor: id, children: label.caption }) }), _jsx("div", { className: fieldContainerClassName, children: _jsxs("div", { className: "field", children: [_jsxs("div", { className: classNames, "data-dropdown-id": id, title: title, ...dataAttributes, children: [_jsx(DropdownLabel, { selectedItem: value, caption: placeholder, onClick: onLabelClick, deselectable: deselectable, className: labelComponentClassName }), _jsx("div", { className: "dropdown-menu", children: items.length > 0
74
78
  ? _jsx("ul", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: items.map(item => _jsx(DropdownItem, { item: item, selected: value?.value === item.value, onClick: onItemClick }, item.id)) })
75
- : _jsx("span", { className: "dropdown-content dropdown-item", children: "No items found" }) })] }, id), isValidationDefined && validationMessages.length > 0 &&
76
- _jsx("p", { className: `help m-help ${styleClassName}`, children: validationMessages.join("\n") })] }) })] }));
79
+ : _jsx("span", { className: "dropdown-content dropdown-item", children: "No items found" }) })] }, id), _jsx(InternalHint, { hint: hint, validationState: validationState })] }) })] }));
77
80
  }
78
- return (_jsxs("div", { className: "field", children: [_jsx("label", { className: labelClassName, htmlFor: id, children: label.caption }), _jsxs("div", { className: classNames, "data-dropdown-id": id, children: [_jsx(DropdownLabel, { className: styleClassName, caption: placeholder, deselectable: deselectable, selectedItem: value, onClick: onLabelClick }), _jsx("div", { className: "dropdown-menu", children: items.length > 0
81
+ return (_jsxs("div", { className: "field", children: [_jsx("label", { className: labelClassName, htmlFor: id, children: label.caption }), _jsxs("div", { className: classNames, "data-dropdown-id": id, title: title, ...dataAttributes, children: [_jsx(DropdownLabel, { selectedItem: value, caption: placeholder, onClick: onLabelClick, deselectable: deselectable, className: labelComponentClassName }), _jsx("div", { className: "dropdown-menu", children: items.length > 0
79
82
  ? _jsx("ul", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: items.map(item => _jsx(DropdownItem, { item: item, selected: value?.value === item.value, onClick: onItemClick }, item.id)) })
80
- : _jsx("span", { className: "dropdown-content dropdown-item", children: "No items found" }) })] }, id), isValidationDefined && validationMessages.length > 0 &&
81
- _jsx("p", { className: `help m-help ${styleClassName}`, children: validationMessages.join("\n") })] }));
83
+ : _jsx("span", { className: "dropdown-content dropdown-item", children: "No items found" }) })] }, id), _jsx(InternalHint, { hint: hint, validationState: validationState })] }));
82
84
  };
83
85
  export default DropdownWithLabel;
@@ -1,4 +1,4 @@
1
- import { BaseElementProps, InputLabel, ValidationState } from "..";
1
+ import { BaseElementProps, HintConfiguration, ValidationState, LabelConfiguration, ElementIcon } from "../../types";
2
2
  /** Dropdown item */
3
3
  export interface SelectableItem {
4
4
  /** Unique item identifier */
@@ -7,6 +7,10 @@ export interface SelectableItem {
7
7
  value: string;
8
8
  /** Displaying text */
9
9
  displayValue: string;
10
+ /** Element title */
11
+ title?: string;
12
+ /** Element icon configuration */
13
+ icon?: ElementIcon;
10
14
  }
11
15
  /** Dropdown component props type */
12
16
  export interface DropdownProps extends BaseElementProps {
@@ -39,8 +43,15 @@ export interface DropdownProps extends BaseElementProps {
39
43
  */
40
44
  disabled?: boolean;
41
45
  /** Label configuration */
42
- label?: InputLabel;
46
+ label?: LabelConfiguration;
43
47
  /** Current validation state */
44
48
  validationState?: ValidationState;
49
+ /**
50
+ * Field hint configuration.
51
+ * Provides additional information to user to help fill the field
52
+ *
53
+ * (!) Hint will be overridden by the validation state, if specified
54
+ */
55
+ hint?: HintConfiguration;
45
56
  }
46
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhF,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC3B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,sBAAsB;IACtB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACnD,kCAAkC;IAClC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAE7B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IAEpB;;MAEE;IACF,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAE1C;;;MAGE;IACF,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB,gEAAgE;IAChE,gBAAgB,EAAE,OAAO,CAAC;IAE1B,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEnH,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC3B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,sBAAsB;IACtB,YAAY,EAAE,MAAM,CAAC;IAErB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACnD,kCAAkC;IAClC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAE7B,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IAEpB;;MAEE;IACF,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAC;IAE1C;;;MAGE;IACF,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB,gEAAgE;IAChE,gBAAgB,EAAE,OAAO,CAAC;IAE1B,wBAAwB;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAE3B,+BAA+B;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC5B"}
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import "./style.scss";
3
- import { IconProps } from "../../icon";
3
+ import { IconProps } from "../..";
4
4
  /**
5
5
  * Icon component. Based on bootstrap icons
6
6
  */
7
- export default function Icon({ name, size, className, }: IconProps): JSX.Element;
7
+ export default function Icon({ name, size, className, title, data, }: IconProps): JSX.Element;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/icon/component/index.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,CAAC;AAItB,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AASjD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EACzB,IAAI,EAAE,IAAyB,EAC/B,SAAS,GACZ,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAYzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/icon/component/index.tsx"],"names":[],"mappings":";AAKA,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASlC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EACzB,IAAI,EAAE,IAAyB,EAE/B,SAAS,EAAE,KAAK,EAAE,IAAI,GACzB,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAqBzB"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { getClassName } from "@bodynarf/utils";
2
+ import { getClassName, isNullOrUndefined } from "@bodynarf/utils";
3
+ import { ElementSize } from "../../../types";
4
+ import { mapDataAttributes } from "../../../utils";
3
5
  import "./style.scss";
4
- import { ElementSize } from "../..";
5
6
  const sizeToClassMap = new Map([
6
7
  [ElementSize.Small, "bbr-icon--size-small"],
7
8
  [ElementSize.Normal, ""],
@@ -11,13 +12,16 @@ const sizeToClassMap = new Map([
11
12
  /**
12
13
  * Icon component. Based on bootstrap icons
13
14
  */
14
- export default function Icon({ name, size = ElementSize.Normal, className, }) {
15
+ export default function Icon({ name, size = ElementSize.Normal, className, title, data, }) {
15
16
  const classNames = getClassName([
16
17
  "bbr-icon",
17
18
  "bi",
18
19
  `bi-${name}`,
20
+ className,
19
21
  sizeToClassMap.has(size) ? sizeToClassMap.get(size) : "",
20
- className
21
22
  ]);
22
- return (_jsx("i", { className: classNames }));
23
+ const dataAttributes = isNullOrUndefined(data)
24
+ ? undefined
25
+ : mapDataAttributes(data);
26
+ return (_jsx("i", { className: classNames, title: title, ...dataAttributes }));
23
27
  }
@@ -1,6 +1,6 @@
1
- import { ElementSize } from "..";
1
+ import { BaseElementProps, ElementSize } from "../../types";
2
2
  /** Icon component props */
3
- export interface IconProps {
3
+ export interface IconProps extends BaseElementProps {
4
4
  /**
5
5
  * Icon name. Must be without `bi-`
6
6
  * @example ["Arrow repeat", "arrow-repeat"]
@@ -8,8 +8,6 @@ export interface IconProps {
8
8
  * // For class name check bootstrap icons website
9
9
  */
10
10
  name: string;
11
- /** Additional classname */
12
- className?: string;
13
11
  /** Icon size */
14
12
  size?: ElementSize;
15
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/icon/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,2BAA2B;AAC3B,MAAM,WAAW,SAAS;IACtB;;;;;MAKE;IACF,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,gBAAgB;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/icon/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,2BAA2B;AAC3B,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IAC/C;;;;;MAKE;IACF,IAAI,EAAE,MAAM,CAAC;IAEb,gBAAgB;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB"}
@@ -1,4 +1,3 @@
1
- export * from "./types";
2
1
  export * from "./accordion";
3
2
  export * from "./anchor";
4
3
  export * from "./button";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AAEtB,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AAEtB,cAAc,cAAc,CAAC"}
@@ -1,4 +1,3 @@
1
- export * from "./types";
2
1
  export * from "./accordion";
3
2
  export * from "./anchor";
4
3
  export * from "./button";
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
- import { PaginatorProps } from "../../paginator";
2
+ import { PaginatorProps } from "../..";
3
3
  /**
4
4
  * Paginator component.
5
5
  * Used for visualization of paging configuration
6
6
  */
7
- export default function Paginator({ count, onPageChange, currentPage, position, size, className, rounded, showNextButtons, nearPagesCount }: PaginatorProps): JSX.Element;
7
+ export default function Paginator({ count, onPageChange, currentPage, position, size, rounded, showNextButtons, nearPagesCount, className, title, data, }: PaginatorProps): JSX.Element;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/paginator/component/index.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAuB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF;;;EAGE;AACF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,KAAK,EAAE,YAAY,EAAE,WAAW,EAChC,QAAQ,EACR,IAAI,EAAE,SAAS,EACf,OAAe,EAAE,eAAuB,EACxC,cAAc,EACjB,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CA4G9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/paginator/component/index.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,cAAc,EAAuB,MAAM,OAAO,CAAC;AAE5D;;;EAGE;AACF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,KAAK,EAAE,YAAY,EAAE,WAAe,EACpC,QAA+B,EAC/B,IAAI,EACJ,OAAe,EAAE,eAAuB,EACxC,cAAc,EAEd,SAAS,EAAE,KAAK,EAAE,IAAI,GACzB,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAqH9B"}
@@ -1,13 +1,14 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useMemo } from "react";
3
- import { getClassName, isNullOrEmpty } from "@bodynarf/utils";
4
- import { generatePageNumbers } from "../../paginator";
3
+ import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
4
+ import { mapDataAttributes } from "../../../utils";
5
+ import { ElementPosition } from "../../../types";
6
+ import { generatePageNumbers } from "../..";
5
7
  /**
6
8
  * Paginator component.
7
9
  * Used for visualization of paging configuration
8
10
  */
9
- export default function Paginator({ count, onPageChange, currentPage, position, size, className, rounded = false, showNextButtons = false, nearPagesCount }) {
10
- const page = currentPage || 0;
11
+ export default function Paginator({ count, onPageChange, currentPage = 0, position = ElementPosition.Left, size, rounded = false, showNextButtons = false, nearPagesCount, className, title, data, }) {
11
12
  const pageChange = useCallback((event) => {
12
13
  const target = event.target;
13
14
  const pageRaw = target.dataset["page"];
@@ -19,29 +20,33 @@ export default function Paginator({ count, onPageChange, currentPage, position,
19
20
  onPageChange(page);
20
21
  }
21
22
  }, [onPageChange, currentPage, count]);
22
- const pageNumbers = useMemo(() => generatePageNumbers(page, count, nearPagesCount), [page, count]);
23
- const canGoBack = useMemo(() => page > 1, [page]);
24
- const canGoForward = useMemo(() => page < count, [page, count]);
23
+ const pageNumbers = useMemo(() => generatePageNumbers(currentPage, count, nearPagesCount), [currentPage, count, nearPagesCount]);
24
+ const canGoBack = useMemo(() => currentPage > 1, [currentPage]);
25
+ const canGoForward = useMemo(() => currentPage < count, [currentPage, count]);
25
26
  if (pageNumbers.length <= 1) {
26
27
  return _jsx(_Fragment, {});
27
28
  }
28
29
  const classNames = getClassName([
29
30
  "bbr-paginator",
30
31
  "pagination",
31
- paginationPositionToClassMap.has(position || "") ? paginationPositionToClassMap.get(position || "") : "",
32
+ className,
33
+ paginationPositionToClassMap.get(position),
32
34
  rounded ? "is-rounded" : "",
33
35
  isNullOrEmpty(size) ? "" : `is-${size}`,
34
- className
35
36
  ]);
36
- return (_jsxs("nav", { className: classNames, role: "navigation", "aria-label": "pagination", children: [showNextButtons &&
37
- _jsxs(_Fragment, { children: [_jsx("a", { className: `pagination-previous${canGoBack ? "" : " is-disabled"}`, "data-page": page - 1, onClick: pageChange, children: "Previous" }), _jsx("a", { className: `pagination-next${canGoForward ? "" : " is-disabled"}`, "data-page": page + 1, onClick: pageChange, children: "Next page" })] }), _jsxs("ul", { className: "pagination-list", children: [page !== 1 && !pageNumbers.includes(1) &&
38
- _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("a", { className: "pagination-link", "aria-label": "Goto page 1", "data-page": 1, onClick: pageChange, children: "1" }) }), _jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) })] }), pageNumbers.map(x => _jsx("li", { children: _jsx("a", { className: `pagination-link${page === x ? " is-current" : ""}`, "aria-label": `Goto page ${x}`, "data-page": x, onClick: pageChange, children: x }) }, x)), page != count && !pageNumbers.includes(count) &&
37
+ const dataAttributes = isNullOrUndefined(data)
38
+ ? undefined
39
+ : mapDataAttributes(data);
40
+ return (_jsxs("nav", { className: classNames, role: "navigation", "aria-label": "pagination", title: title, ...dataAttributes, children: [showNextButtons &&
41
+ _jsxs(_Fragment, { children: [_jsx("a", { className: `pagination-previous${canGoBack ? "" : " is-disabled"}`, "data-page": currentPage - 1, onClick: pageChange, children: "Previous" }), _jsx("a", { className: `pagination-next${canGoForward ? "" : " is-disabled"}`, "data-page": currentPage + 1, onClick: pageChange, children: "Next page" })] }), _jsxs("ul", { className: "pagination-list", children: [currentPage !== 1 && !pageNumbers.includes(1) &&
42
+ _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("a", { className: "pagination-link", "aria-label": "Goto page 1", "data-page": 1, onClick: pageChange, children: "1" }) }), _jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) })] }), pageNumbers.map(x => _jsx("li", { children: _jsx("a", { className: `pagination-link${currentPage === x ? " is-current" : ""}`, "aria-label": `Goto page ${x}`, "data-page": x, onClick: pageChange, children: x }) }, x)), currentPage != count && !pageNumbers.includes(count) &&
39
43
  _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) }), _jsx("li", { children: _jsx("a", { className: "pagination-link", "aria-label": `Goto page ${count}`, "data-page": count, onClick: pageChange, children: count }) })] })] })] }));
40
44
  }
41
45
  /**
42
46
  * Position setting to css class name map
43
47
  */
44
48
  const paginationPositionToClassMap = new Map([
45
- ["center", "is-centered"],
46
- ["right", "is-right"]
49
+ [ElementPosition.Left, ""],
50
+ [ElementPosition.Center, "is-centered"],
51
+ [ElementPosition.Right, "is-right"]
47
52
  ]);
@@ -1,5 +1,5 @@
1
- import { ElementSize } from "..";
2
- export interface PaginatorProps {
1
+ import { BaseElementProps, ElementPosition, ElementSize } from "../../types";
2
+ export interface PaginatorProps extends BaseElementProps {
3
3
  /** Amount of pages */
4
4
  count: number;
5
5
  /** Page change handler */
@@ -10,13 +10,11 @@ export interface PaginatorProps {
10
10
  * Page numbers position.
11
11
  * Useful with `showNextButtons = true`
12
12
  */
13
- position?: "left" | "center" | "right";
13
+ position?: ElementPosition;
14
14
  /** Buttons should have rounded borders */
15
15
  rounded?: boolean;
16
16
  /** Size of paginator component elements */
17
17
  size?: ElementSize;
18
- /** Additional class names */
19
- className?: string;
20
18
  /** Display "Previous" \ "Next" buttons */
21
19
  showNextButtons?: boolean;
22
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/paginator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC3B,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;MAGE;IACF,QAAQ,CAAC,EACP,MAAM,GACN,QAAQ,GACR,OAAO,CACR;IAED,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;MAGE;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/paginator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;MAGE;IACF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;MAGE;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import "./style.scss";
3
- import { CheckBoxProps } from "../../checkbox";
3
+ import { CheckBoxProps } from "../..";
4
4
  /** Boolean input component */
5
- declare const CheckBox: ({ label, onValueChange, defaultValue, name, disabled, size, style, rounded, block, withoutBorder, hasBackgroundColor, fixBackgroundColor, isFormLabel, }: CheckBoxProps) => JSX.Element;
5
+ declare const CheckBox: ({ label, onValueChange, defaultValue, name, disabled, size, style, rounded, block, withoutBorder, hasBackgroundColor, fixBackgroundColor, isFormLabel, className, title, data, }: CheckBoxProps) => JSX.Element;
6
6
  export default CheckBox;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/checkbox/component/index.tsx"],"names":[],"mappings":";AAIA,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8BAA8B;AAC9B,QAAA,MAAM,QAAQ,6JAOX,aAAa,KAAG,WAoFlB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/checkbox/component/index.tsx"],"names":[],"mappings":";AAQA,OAAO,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,8BAA8B;AAC9B,QAAA,MAAM,QAAQ,qLASX,aAAa,KAAG,WA8ElB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,14 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback } from "react";
3
3
  import { generateGuid, getClassName, isNullOrUndefined } from "@bodynarf/utils";
4
+ import { ElementSize } from "../../../../types";
5
+ import { mapDataAttributes } from "../../../../utils";
6
+ import ComponentWithLabel from "../../internal/componentWithLabel";
4
7
  import "./style.scss";
5
8
  /** Boolean input component */
6
- const CheckBox = ({ label, onValueChange, defaultValue, name, disabled, size, style, rounded = false, block = false, withoutBorder = false, hasBackgroundColor = false, fixBackgroundColor = false, isFormLabel = false, }) => {
9
+ const CheckBox = ({ label, onValueChange, defaultValue, name, disabled, size, style, rounded = false, block = false, withoutBorder = false, hasBackgroundColor = false, fixBackgroundColor = false, isFormLabel = false, className, title, data, }) => {
7
10
  const onChecked = useCallback((event) => onValueChange(event.target.checked), [onValueChange]);
8
- const id = name || generateGuid();
9
- const className = getClassName([
11
+ const id = name ?? generateGuid();
12
+ const elClassName = getClassName([
10
13
  "is-checkradio",
11
14
  "m-check-radio",
15
+ className,
12
16
  hasBackgroundColor ? "has-background-color" : "",
13
17
  fixBackgroundColor && hasBackgroundColor ? "m-has-background-color" : "",
14
18
  isNullOrUndefined(size) ? "" : size === "normal" ? "" : `is-${size}`,
@@ -17,21 +21,15 @@ const CheckBox = ({ label, onValueChange, defaultValue, name, disabled, size, st
17
21
  block ? "is-block" : "",
18
22
  withoutBorder ? "has-no-border" : "",
19
23
  ]);
24
+ const dataAttributes = isNullOrUndefined(data)
25
+ ? undefined
26
+ : mapDataAttributes(data);
20
27
  if (!isNullOrUndefined(label) && isFormLabel) {
21
- const labelClassName = getClassName([
22
- "label",
23
- label.className
24
- ]);
25
- const labelContainerClassName = getClassName([
26
- "field-label",
27
- label.horizontalContainerClassName
28
- ]);
29
- const fieldContainerClassName = getClassName([
30
- "field-body",
31
- label.horizontalFieldContainerClassName
32
- ]);
33
- return (_jsxs("div", { className: "bbr-input field is-horizontal", children: [_jsx("div", { className: labelContainerClassName, children: _jsx("label", { className: labelClassName, children: label.caption }) }), _jsx("div", { className: fieldContainerClassName, children: _jsxs("div", { className: "field", children: [_jsx("input", { type: "checkbox", name: id, id: id, disabled: disabled, onChange: onChecked, className: className, defaultChecked: defaultValue }), _jsx("label", { htmlFor: id })] }) })] }));
28
+ return (_jsxs(ComponentWithLabel, { id: id, label: {
29
+ ...label,
30
+ horizontalContainerClassName: getClassName([label.horizontalContainerClassName, "p-0"]),
31
+ }, size: ElementSize.Normal, children: [_jsx("input", { type: "checkbox", id: id, name: id, disabled: disabled, onChange: onChecked, className: elClassName, defaultChecked: defaultValue, title: title, ...dataAttributes }), _jsx("label", { htmlFor: id })] }));
34
32
  }
35
- return (_jsxs("div", { className: "bbr-input field", children: [_jsx("input", { type: "checkbox", name: id, id: id, disabled: disabled, onChange: onChecked, className: className, defaultChecked: defaultValue }), _jsx("label", { htmlFor: id, children: label?.caption })] }));
33
+ return (_jsxs("div", { className: "bbr-input field", children: [_jsx("input", { type: "checkbox", id: id, name: id, disabled: disabled, onChange: onChecked, className: elClassName, defaultChecked: defaultValue, title: title, ...dataAttributes }), _jsx("label", { htmlFor: id, children: label?.caption })] }));
36
34
  };
37
35
  export default CheckBox;
@@ -1,6 +1,6 @@
1
- import { BaseInputElementProps } from "../..";
1
+ import { BaseInputElementProps } from "../../../types";
2
2
  /** Checkbox component props type */
3
- export interface CheckBoxProps extends Omit<BaseInputElementProps<boolean>, "readonly" | "validationState" | "loading" | "placeholder"> {
3
+ export interface CheckBoxProps extends Omit<BaseInputElementProps<boolean>, "readonly" | "validationState" | "loading" | "placeholder" | "hint"> {
4
4
  /** Is full colored checkbox */
5
5
  block?: boolean;
6
6
  /** Remove the checkbox border */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/checkbox/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,oCAAoC;AACpC,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACtE,UAAU,GAAG,iBAAiB,GAC5B,SAAS,GAAG,aAAa,CAC9B;IACG,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;MAGE;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;MAIE;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/primitives/checkbox/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,oCAAoC;AACpC,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACtE,UAAU,GAAG,iBAAiB,GAC5B,SAAS,GAAG,aAAa,GACzB,MAAM,CACX;IACG,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;MAGE;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;MAIE;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/color/component/index.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAKtC,6BAA6B;AAC7B,QAAA,MAAM,WAAW,UAAW,gBAAgB,KAAG,WAGF,CACxC;AAEL,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/color/component/index.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAItC,6BAA6B;AAC7B,QAAA,MAAM,WAAW,UAAW,gBAAgB,KAAG,WAGF,CACxC;AAEL,eAAe,WAAW,CAAC"}
@@ -1,38 +1,20 @@
1
1
  import { ChangeEvent } from "react";
2
- import { ElementSize } from "../../../../..";
2
+ import { BaseInputElementProps } from "../../../../../types";
3
3
  import { ColorPickerPreviewConfig } from "../..";
4
- /** Color picker control container props */
5
- export interface ColorPickerControlProps {
6
- /** Class names of control container */
7
- containerClassName: string;
4
+ /** Props of `ColorPickerControl` */
5
+ export interface ColorPickerControlProps extends Omit<BaseInputElementProps<string>, "onValueChange" | "placeholder" | "rounded" | "readonly" | "loading" | "className"> {
6
+ /** Preview element configuration */
7
+ previewConfig?: ColorPickerPreviewConfig;
8
+ /** Current color value */
9
+ value: string;
10
+ /** Control unique identifier */
11
+ id: string;
8
12
  /** Class names of control */
9
- className: string;
10
- /** Default value for color control */
11
- defaultColor: string;
13
+ elementClassName: string;
12
14
  /** Handler of control value change*/
13
15
  onValueChange: (event: ChangeEvent<HTMLInputElement>) => void;
14
- /** Control unique identifier */
15
- id: string;
16
- /** Extra data-* attributes */
17
- dataAttributes?: object;
18
- /** Is validation should be displayed */
19
- isValidationDefined: boolean;
20
- /** Validation messages */
21
- validationMessages: Array<string>;
22
- /** Validation style class name */
23
- styleClassName: string;
24
- /** Current color value */
25
- value: string;
26
- /** Should be component disabled. Selecting is not allowed */
27
- disabled?: boolean;
28
- /** Preview element configuration */
29
- previewConfig?: ColorPickerPreviewConfig;
30
- /** Component size */
31
- size?: ElementSize;
32
- /** Title */
33
- title?: string;
34
16
  }
35
17
  /** Color picker container component */
36
- declare const ColorPickerControl: ({ containerClassName, className, disabled, previewConfig, size, defaultColor, onValueChange, value, id, title, dataAttributes, isValidationDefined, validationMessages, styleClassName, }: ColorPickerControlProps) => JSX.Element;
18
+ declare const ColorPickerControl: ({ elementClassName, disabled, previewConfig, size, defaultValue, onValueChange, value, id, title, data, hint, validationState, }: ColorPickerControlProps) => JSX.Element;
37
19
  export default ColorPickerControl;
38
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/primitives/color/components/picker/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIpC,OAAO,EAAmB,WAAW,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAA4B,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAE3E,2CAA2C;AAC3C,MAAM,WAAW,uBAAuB;IACpC,uCAAuC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IAErB,qCAAqC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE9D,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wCAAwC;IACxC,mBAAmB,EAAE,OAAO,CAAC;IAE7B,0BAA0B;IAC1B,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC,kCAAkC;IAClC,cAAc,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IAEd,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,oCAAoC;IACpC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC,qBAAqB;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uCAAuC;AACvC,QAAA,MAAM,kBAAkB,8LAOrB,uBAAuB,KAAG,WAwC5B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/primitives/color/components/picker/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIpC,OAAO,EAAmB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAIpE,OAAO,EAA4B,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAE3E,oCAAoC;AACpC,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CACjD,qBAAqB,CAAC,MAAM,CAAC,EAC3B,eAAe,GAAG,aAAa,GAC/B,SAAS,GAAG,UAAU,GACtB,SAAS,GAAG,WAAW,CAC5B;IACG,oCAAoC;IACpC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IAEzC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,qCAAqC;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CACjE;AAED,uCAAuC;AACvC,QAAA,MAAM,kBAAkB,qIAOrB,uBAAuB,KAAG,WA0C5B,CAAC;AAEF,eAAe,kBAAkB,CAAC"}