@westpac/ui 0.4.0 → 0.6.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 (226) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/accordion/accordion.component.d.ts +2 -2
  3. package/dist/components/accordion/components/accordion-item/accordion-item.component.js +5 -3
  4. package/dist/components/accordion/components/accordion-item/accordion-item.styles.d.ts +16 -0
  5. package/dist/components/accordion/components/accordion-item/accordion-item.styles.js +17 -9
  6. package/dist/components/alert/alert.component.js +2 -1
  7. package/dist/components/alert/alert.styles.js +2 -2
  8. package/dist/components/autocomplete/autocomplete.styles.js +3 -3
  9. package/dist/components/button/button.component.d.ts +18 -2
  10. package/dist/components/button/button.component.js +6 -6
  11. package/dist/components/button/button.styles.d.ts +16 -0
  12. package/dist/components/button/button.styles.js +8 -0
  13. package/dist/components/button-dropdown/button-dropdown.styles.js +1 -1
  14. package/dist/components/button-dropdown/components/panel/panel.component.js +6 -3
  15. package/dist/components/button-dropdown/components/panel/panel.styles.d.ts +14 -2
  16. package/dist/components/button-dropdown/components/panel/panel.styles.js +8 -2
  17. package/dist/components/checkbox-group/components/checkbox/checkbox.component.js +2 -2
  18. package/dist/components/checkbox-group/components/checkbox/checkbox.styles.d.ts +2 -2
  19. package/dist/components/checkbox-group/components/checkbox/checkbox.styles.js +4 -4
  20. package/dist/components/collapsible/collapsible.styles.js +1 -1
  21. package/dist/components/compacta/compacta.component.js +4 -3
  22. package/dist/components/compacta/compacta.styles.js +1 -1
  23. package/dist/components/flexi-cell/flexi-cell.component.js +6 -3
  24. package/dist/components/flexi-cell/flexi-cell.styles.d.ts +10 -0
  25. package/dist/components/flexi-cell/flexi-cell.styles.js +7 -2
  26. package/dist/components/flexi-cell/flexi-cell.types.d.ts +4 -0
  27. package/dist/components/flexi-cell/index.d.ts +1 -0
  28. package/dist/components/flexi-cell/index.js +1 -0
  29. package/dist/components/icon/index.d.ts +1 -0
  30. package/dist/components/icon/index.js +1 -0
  31. package/dist/components/index.d.ts +3 -1
  32. package/dist/components/index.js +3 -1
  33. package/dist/components/input/input.component.d.ts +7 -1
  34. package/dist/components/input/input.component.js +5 -2
  35. package/dist/components/input/input.styles.d.ts +7 -1
  36. package/dist/components/input/input.styles.js +4 -1
  37. package/dist/components/link/link.component.d.ts +1 -1
  38. package/dist/components/link/link.component.js +5 -3
  39. package/dist/components/link/link.styles.d.ts +16 -0
  40. package/dist/components/link/link.styles.js +11 -3
  41. package/dist/components/list/components/item/item.component.d.ts +1 -1
  42. package/dist/components/list/components/item/item.component.js +6 -3
  43. package/dist/components/list/components/item/item.styles.d.ts +10 -0
  44. package/dist/components/list/components/item/item.styles.js +7 -2
  45. package/dist/components/list/list.component.d.ts +1 -1
  46. package/dist/components/list/list.stories.js +7 -1
  47. package/dist/components/list/list.styles.js +1 -1
  48. package/dist/components/list/list.utils.d.ts +1 -1
  49. package/dist/components/modal/components/backdrop/backdrop.styles.js +2 -2
  50. package/dist/components/modal/components/dialog/dialog.component.js +6 -4
  51. package/dist/components/modal/components/dialog/dialog.styles.d.ts +16 -0
  52. package/dist/components/modal/components/dialog/dialog.styles.js +11 -3
  53. package/dist/components/popover/components/panel/panel.styles.js +1 -1
  54. package/dist/components/popover/popover.component.js +0 -1
  55. package/dist/components/popover/popover.styles.d.ts +0 -2
  56. package/dist/components/popover/popover.styles.js +1 -2
  57. package/dist/components/radio-group/components/radio/radio.component.js +2 -2
  58. package/dist/components/radio-group/components/radio/radio.styles.d.ts +2 -2
  59. package/dist/components/radio-group/components/radio/radio.styles.js +5 -5
  60. package/dist/components/repeater/index.d.ts +2 -0
  61. package/dist/components/repeater/index.js +1 -0
  62. package/dist/components/repeater/repeater.component.d.ts +3 -0
  63. package/dist/components/repeater/repeater.component.js +144 -0
  64. package/dist/components/repeater/repeater.stories.d.ts +13 -0
  65. package/dist/components/repeater/repeater.stories.js +34 -0
  66. package/dist/components/repeater/repeater.styles.d.ts +49 -0
  67. package/dist/components/repeater/repeater.styles.js +36 -0
  68. package/dist/components/repeater/repeater.types.d.ts +19 -0
  69. package/dist/components/repeater/repeater.types.js +1 -0
  70. package/dist/components/repeater/repeater.utils.d.ts +2 -0
  71. package/dist/components/repeater/repeater.utils.js +2 -0
  72. package/dist/components/select/select.component.d.ts +11 -1
  73. package/dist/components/select/select.component.js +5 -2
  74. package/dist/components/select/select.styles.d.ts +11 -1
  75. package/dist/components/select/select.styles.js +6 -1
  76. package/dist/components/selector/components/index.d.ts +2 -0
  77. package/dist/components/selector/components/index.js +2 -0
  78. package/dist/components/selector/components/selector-checkbox-group/components/index.d.ts +1 -0
  79. package/dist/components/selector/components/selector-checkbox-group/components/index.js +1 -0
  80. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.d.ts +2 -0
  81. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.js +1 -0
  82. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.d.ts +12 -0
  83. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.js +67 -0
  84. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.d.ts +59 -0
  85. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.js +57 -0
  86. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.d.ts +10 -0
  87. package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.js +1 -0
  88. package/dist/components/selector/components/selector-checkbox-group/index.d.ts +2 -0
  89. package/dist/components/selector/components/selector-checkbox-group/index.js +1 -0
  90. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.d.ts +15 -0
  91. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.js +49 -0
  92. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.d.ts +3 -0
  93. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.js +13 -0
  94. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.d.ts +20 -0
  95. package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.js +1 -0
  96. package/dist/components/selector/components/selector-radio-group/components/index.d.ts +1 -0
  97. package/dist/components/selector/components/selector-radio-group/components/index.js +1 -0
  98. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.d.ts +2 -0
  99. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.js +1 -0
  100. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.d.ts +12 -0
  101. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.js +67 -0
  102. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.d.ts +59 -0
  103. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.js +57 -0
  104. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.d.ts +15 -0
  105. package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.js +1 -0
  106. package/dist/components/selector/components/selector-radio-group/index.d.ts +2 -0
  107. package/dist/components/selector/components/selector-radio-group/index.js +1 -0
  108. package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.d.ts +15 -0
  109. package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.js +58 -0
  110. package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.d.ts +13 -0
  111. package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.js +18 -0
  112. package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.d.ts +17 -0
  113. package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.js +1 -0
  114. package/dist/components/selector/index.d.ts +2 -0
  115. package/dist/components/selector/index.js +1 -0
  116. package/dist/components/selector/selector.component.d.ts +30 -0
  117. package/dist/components/selector/selector.component.js +34 -0
  118. package/dist/components/selector/selector.stories.d.ts +57 -0
  119. package/dist/components/selector/selector.stories.js +515 -0
  120. package/dist/components/selector/selector.types.d.ts +20 -0
  121. package/dist/components/selector/selector.types.js +1 -0
  122. package/dist/components/switch/switch.component.d.ts +1 -1
  123. package/dist/components/switch/switch.component.js +11 -7
  124. package/dist/components/switch/switch.stories.js +1 -1
  125. package/dist/components/switch/switch.styles.d.ts +2 -2
  126. package/dist/components/switch/switch.styles.js +2 -2
  127. package/dist/components/switch/switch.types.d.ts +5 -1
  128. package/dist/components/tabs/components/tab/tab.component.js +5 -3
  129. package/dist/components/tabs/components/tab/tab.styles.d.ts +9 -1
  130. package/dist/components/tabs/components/tab/tab.styles.js +12 -8
  131. package/dist/components/tabs/components/tab-panel/tab-panel.component.js +5 -3
  132. package/dist/components/tabs/components/tab-panel/tab-panel.styles.d.ts +7 -1
  133. package/dist/components/tabs/components/tab-panel/tab-panel.styles.js +5 -2
  134. package/dist/components/textarea/textarea.component.d.ts +7 -1
  135. package/dist/components/textarea/textarea.component.js +5 -2
  136. package/dist/components/textarea/textarea.styles.d.ts +7 -1
  137. package/dist/components/textarea/textarea.styles.js +4 -1
  138. package/dist/css/westpac-ui.css +165 -3
  139. package/dist/css/westpac-ui.min.css +165 -3
  140. package/dist/tailwind/constants/colors.d.ts +9 -9
  141. package/dist/tailwind/themes/index.d.ts +11 -11
  142. package/dist/utils/generateId.d.ts +1 -0
  143. package/dist/utils/generateId.js +6 -0
  144. package/dist/utils/index.d.ts +1 -0
  145. package/dist/utils/index.js +1 -0
  146. package/package.json +7 -1
  147. package/src/components/accordion/components/accordion-item/accordion-item.component.tsx +4 -3
  148. package/src/components/accordion/components/accordion-item/accordion-item.styles.ts +17 -9
  149. package/src/components/alert/alert.component.tsx +1 -1
  150. package/src/components/alert/alert.styles.ts +2 -2
  151. package/src/components/autocomplete/autocomplete.styles.ts +3 -3
  152. package/src/components/button/button.component.tsx +9 -10
  153. package/src/components/button/button.styles.ts +4 -0
  154. package/src/components/button-dropdown/button-dropdown.styles.ts +1 -1
  155. package/src/components/button-dropdown/components/panel/panel.component.tsx +4 -3
  156. package/src/components/button-dropdown/components/panel/panel.styles.ts +8 -2
  157. package/src/components/checkbox-group/components/checkbox/checkbox.component.tsx +2 -2
  158. package/src/components/checkbox-group/components/checkbox/checkbox.styles.ts +4 -4
  159. package/src/components/collapsible/collapsible.styles.ts +1 -1
  160. package/src/components/compacta/compacta.component.tsx +4 -3
  161. package/src/components/compacta/compacta.styles.ts +1 -1
  162. package/src/components/flexi-cell/flexi-cell.component.tsx +5 -2
  163. package/src/components/flexi-cell/flexi-cell.styles.ts +5 -2
  164. package/src/components/flexi-cell/flexi-cell.types.ts +4 -0
  165. package/src/components/flexi-cell/index.ts +1 -0
  166. package/src/components/icon/index.ts +1 -0
  167. package/src/components/index.ts +3 -1
  168. package/src/components/input/input.component.tsx +10 -1
  169. package/src/components/input/input.styles.ts +4 -1
  170. package/src/components/link/link.component.tsx +10 -3
  171. package/src/components/link/link.styles.ts +7 -3
  172. package/src/components/list/components/item/item.component.tsx +4 -1
  173. package/src/components/list/components/item/item.styles.ts +5 -2
  174. package/src/components/list/list.stories.tsx +3 -3
  175. package/src/components/list/list.styles.ts +1 -1
  176. package/src/components/modal/components/backdrop/backdrop.styles.ts +2 -2
  177. package/src/components/modal/components/dialog/dialog.component.tsx +4 -3
  178. package/src/components/modal/components/dialog/dialog.styles.ts +7 -3
  179. package/src/components/popover/components/panel/panel.styles.ts +1 -1
  180. package/src/components/popover/popover.component.tsx +0 -1
  181. package/src/components/popover/popover.styles.ts +0 -1
  182. package/src/components/radio-group/components/radio/radio.component.tsx +2 -2
  183. package/src/components/radio-group/components/radio/radio.styles.ts +5 -5
  184. package/src/components/repeater/index.ts +2 -0
  185. package/src/components/repeater/repeater.component.tsx +124 -0
  186. package/src/components/repeater/repeater.stories.tsx +49 -0
  187. package/src/components/repeater/repeater.styles.ts +32 -0
  188. package/src/components/repeater/repeater.types.ts +20 -0
  189. package/src/components/repeater/repeater.utils.tsx +3 -0
  190. package/src/components/select/select.component.tsx +3 -1
  191. package/src/components/select/select.styles.ts +6 -1
  192. package/src/components/selector/components/index.ts +2 -0
  193. package/src/components/selector/components/selector-checkbox-group/components/index.ts +1 -0
  194. package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.ts +2 -0
  195. package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.tsx +96 -0
  196. package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.ts +53 -0
  197. package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.ts +15 -0
  198. package/src/components/selector/components/selector-checkbox-group/index.ts +2 -0
  199. package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.tsx +46 -0
  200. package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.ts +9 -0
  201. package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.ts +25 -0
  202. package/src/components/selector/components/selector-radio-group/components/index.ts +1 -0
  203. package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.ts +2 -0
  204. package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.tsx +90 -0
  205. package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.ts +53 -0
  206. package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.ts +21 -0
  207. package/src/components/selector/components/selector-radio-group/index.ts +2 -0
  208. package/src/components/selector/components/selector-radio-group/selector-radio-group.component.tsx +48 -0
  209. package/src/components/selector/components/selector-radio-group/selector-radio-group.styles.ts +14 -0
  210. package/src/components/selector/components/selector-radio-group/selector-radio-group.types.ts +22 -0
  211. package/src/components/selector/index.ts +2 -0
  212. package/src/components/selector/selector.component.tsx +34 -0
  213. package/src/components/selector/selector.stories.tsx +621 -0
  214. package/src/components/selector/selector.types.ts +24 -0
  215. package/src/components/switch/switch.component.tsx +19 -7
  216. package/src/components/switch/switch.stories.tsx +1 -1
  217. package/src/components/switch/switch.styles.ts +2 -2
  218. package/src/components/switch/switch.types.ts +5 -1
  219. package/src/components/tabs/components/tab/tab.component.tsx +4 -3
  220. package/src/components/tabs/components/tab/tab.styles.ts +12 -8
  221. package/src/components/tabs/components/tab-panel/tab-panel.component.tsx +3 -2
  222. package/src/components/tabs/components/tab-panel/tab-panel.styles.ts +5 -2
  223. package/src/components/textarea/textarea.component.tsx +9 -1
  224. package/src/components/textarea/textarea.styles.ts +4 -1
  225. package/src/utils/generateId.ts +6 -0
  226. package/src/utils/index.ts +1 -0
@@ -0,0 +1,144 @@
1
+ function _extends() {
2
+ _extends = Object.assign || function(target) {
3
+ for(var i = 1; i < arguments.length; i++){
4
+ var source = arguments[i];
5
+ for(var key in source){
6
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
7
+ target[key] = source[key];
8
+ }
9
+ }
10
+ }
11
+ return target;
12
+ };
13
+ return _extends.apply(this, arguments);
14
+ }
15
+ import { AnimatePresence, LazyMotion, m } from 'framer-motion';
16
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
17
+ import { useFocusRing } from 'react-aria';
18
+ import { generateID } from '../../utils/index.js';
19
+ import { Button } from '../button/index.js';
20
+ import { AddCircleIcon, RemoveCircleIcon } from '../icon/index.js';
21
+ import { VisuallyHidden } from '../index.js';
22
+ import { styles as repeaterStyles } from './repeater.styles.js';
23
+ const loadAnimations = ()=>import('./repeater.utils.js').then((res)=>res.default);
24
+ export function Repeater({ addText ='Add another item' , indexTag: ItemIndex = 'h3' , children , separator =false , className }) {
25
+ const [items, setItems] = useState([
26
+ {
27
+ id: generateID()
28
+ }
29
+ ]);
30
+ const [action, setAction] = useState({
31
+ type: '',
32
+ index: 0
33
+ });
34
+ const [status, setStatus] = useState('');
35
+ const refArr = useRef([]);
36
+ const { isFocused , focusProps } = useFocusRing();
37
+ const handleAdd = useCallback(()=>{
38
+ setItems([
39
+ ...items,
40
+ {
41
+ id: generateID()
42
+ }
43
+ ]);
44
+ setAction({
45
+ type: 'add',
46
+ index: items.length
47
+ });
48
+ }, [
49
+ items
50
+ ]);
51
+ const handleRemove = useCallback((id, index)=>{
52
+ const newItems = items.filter((item)=>item.id !== id);
53
+ setItems(newItems);
54
+ setAction({
55
+ type: 'remove',
56
+ index,
57
+ id
58
+ });
59
+ }, [
60
+ items
61
+ ]);
62
+ useEffect(()=>{
63
+ if (action.type === 'add') {
64
+ var _refArr_current_;
65
+ (_refArr_current_ = refArr.current[items.length - 1]) === null || _refArr_current_ === void 0 ? void 0 : _refArr_current_.focus();
66
+ setStatus(`Item added`);
67
+ }
68
+ if (action.type === 'remove') {
69
+ var _refArr_current_focusIndex;
70
+ refArr.current.splice(action.index, 1);
71
+ const focusIndex = action.index === 0 ? 0 : action.index - 1;
72
+ (_refArr_current_focusIndex = refArr.current[focusIndex]) === null || _refArr_current_focusIndex === void 0 ? void 0 : _refArr_current_focusIndex.focus();
73
+ setStatus(`Item ${action.index + 1} removed`);
74
+ }
75
+ }, [
76
+ items.length,
77
+ action
78
+ ]);
79
+ const Tag = separator ? 'ol' : 'ul';
80
+ const styles = repeaterStyles({
81
+ separator,
82
+ isFocused
83
+ });
84
+ return React.createElement("div", {
85
+ className: styles.base({
86
+ className
87
+ })
88
+ }, React.createElement(Tag, {
89
+ className: styles.list()
90
+ }, React.createElement(LazyMotion, {
91
+ features: loadAnimations
92
+ }, React.createElement(AnimatePresence, null, items.map((item, index)=>{
93
+ return React.createElement(m.li, {
94
+ initial: {
95
+ opacity: 1
96
+ },
97
+ animate: {
98
+ opacity: 1
99
+ },
100
+ exit: {
101
+ opacity: 0
102
+ },
103
+ transition: {
104
+ duration: 0.15
105
+ },
106
+ key: index
107
+ }, React.createElement("div", _extends({
108
+ ref: (el)=>{
109
+ refArr.current[index] = el;
110
+ },
111
+ tabIndex: -1,
112
+ className: styles.item()
113
+ }, focusProps), separator && React.createElement(ItemIndex, {
114
+ className: styles.itemIndex()
115
+ }, index + 1, "."), React.createElement("div", {
116
+ className: styles.content()
117
+ }, children), items.length > 1 && React.createElement(Button, {
118
+ className: styles.removeBtn(),
119
+ "aria-label": `remove item ${index + 1}`,
120
+ iconBefore: (props)=>React.createElement(RemoveCircleIcon, _extends({}, props, {
121
+ "aria-hidden": true,
122
+ size: "xsmall"
123
+ })),
124
+ look: "link",
125
+ size: "small",
126
+ soft: true,
127
+ onClick: ()=>handleRemove(item.id, index)
128
+ }, "Remove")));
129
+ })))), React.createElement("div", {
130
+ className: styles.footer()
131
+ }, React.createElement(Button, {
132
+ className: styles.addBtn(),
133
+ iconBefore: (props)=>React.createElement(AddCircleIcon, _extends({}, props, {
134
+ "aria-hidden": true,
135
+ look: "outlined"
136
+ })),
137
+ look: "link",
138
+ size: "small",
139
+ soft: true,
140
+ onClick: ()=>handleAdd()
141
+ }, addText)), React.createElement(VisuallyHidden, {
142
+ role: "status"
143
+ }, status));
144
+ }
@@ -0,0 +1,13 @@
1
+ import { type Meta, type StoryObj } from '@storybook/react';
2
+ import { Repeater } from './repeater.component.js';
3
+ declare const meta: Meta<typeof Repeater>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ /**
7
+ * > Default usage example
8
+ */
9
+ export declare const DefaultStory: Story;
10
+ /**
11
+ * > Example using the separator prop
12
+ */
13
+ export declare const SeparatedRepeater: Story;
@@ -0,0 +1,34 @@
1
+ import { Form, Input } from '../index.js';
2
+ import { Repeater } from './repeater.component.js';
3
+ const meta = {
4
+ title: 'Example/Repeater',
5
+ component: Repeater,
6
+ tags: [
7
+ 'autodocs'
8
+ ],
9
+ decorators: [
10
+ (Story)=>React.createElement("div", {
11
+ className: "p-5"
12
+ }, React.createElement(Story, null))
13
+ ],
14
+ parameters: {
15
+ layout: 'fullscreen'
16
+ },
17
+ args: {
18
+ children: React.createElement(Form, null, React.createElement(Form.Group, null, React.createElement(Form.Label, {
19
+ htmlFor: `test`
20
+ }, "Primary"), React.createElement(Form.Hint, null, "Primary title text"), React.createElement(Input, {
21
+ name: `test`,
22
+ onChange: (e)=>console.log(e)
23
+ })))
24
+ }
25
+ };
26
+ export default meta;
27
+ export const DefaultStory = {
28
+ args: {}
29
+ };
30
+ export const SeparatedRepeater = {
31
+ args: {
32
+ separator: true
33
+ }
34
+ };
@@ -0,0 +1,49 @@
1
+ export declare const styles: import("tailwind-variants").TVReturnType<{
2
+ separator: {
3
+ true: {
4
+ item: string;
5
+ content: string;
6
+ removeBtn: string;
7
+ footer: string;
8
+ };
9
+ };
10
+ isFocused: {
11
+ true: {
12
+ item: string;
13
+ };
14
+ };
15
+ }, {
16
+ base: string;
17
+ list: string;
18
+ item: string;
19
+ itemIndex: string;
20
+ content: string;
21
+ removeBtn: string;
22
+ footer: string;
23
+ addBtn: string;
24
+ }, undefined, {
25
+ responsiveVariants: string[];
26
+ }, {
27
+ separator: {
28
+ true: {
29
+ item: string;
30
+ content: string;
31
+ removeBtn: string;
32
+ footer: string;
33
+ };
34
+ };
35
+ isFocused: {
36
+ true: {
37
+ item: string;
38
+ };
39
+ };
40
+ }, {
41
+ base: string;
42
+ list: string;
43
+ item: string;
44
+ itemIndex: string;
45
+ content: string;
46
+ removeBtn: string;
47
+ footer: string;
48
+ addBtn: string;
49
+ }>;
@@ -0,0 +1,36 @@
1
+ import { tv } from 'tailwind-variants';
2
+ export const styles = tv({
3
+ slots: {
4
+ base: '',
5
+ list: 'm-0 list-none pl-0',
6
+ item: 'relative',
7
+ itemIndex: 'mb-[1.125rem] font-bold',
8
+ content: '',
9
+ removeBtn: 'absolute right-0 top-0 h-auto p-0 no-underline hover:underline',
10
+ footer: 'flex justify-between',
11
+ addBtn: 'height-auto p-0 no-underline hover:underline'
12
+ },
13
+ variants: {
14
+ separator: {
15
+ true: {
16
+ item: 'border-neutral border-t-2 pt-[0.625rem]',
17
+ content: 'p-[0_1.125rem_2.625rem]',
18
+ removeBtn: 'relative m-[0_0_1.875rem_1.125rem]',
19
+ footer: 'border-neutral border-t-2 pt-[0.875rem]'
20
+ }
21
+ },
22
+ isFocused: {
23
+ true: {
24
+ item: 'outline-none'
25
+ }
26
+ }
27
+ }
28
+ }, {
29
+ responsiveVariants: [
30
+ 'xsl',
31
+ 'sm',
32
+ 'md',
33
+ 'lg',
34
+ 'xl'
35
+ ]
36
+ });
@@ -0,0 +1,19 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export type RepeaterProps = {
3
+ /**
4
+ * Text for add button
5
+ */
6
+ addText?: string;
7
+ /**
8
+ * Component to repeat
9
+ */
10
+ children: React.ReactNode;
11
+ /**
12
+ * Index heading tag to use for index on separator version
13
+ */
14
+ indexTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
15
+ /**
16
+ * Enable separator version
17
+ */
18
+ separator?: boolean;
19
+ } & HTMLAttributes<Element>;
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,2 @@
1
+ import { domAnimation } from 'framer-motion';
2
+ export default domAnimation;
@@ -0,0 +1,2 @@
1
+ import { domAnimation } from 'framer-motion';
2
+ export default domAnimation;
@@ -10,7 +10,12 @@ export declare const Select: React.ForwardRefExoticComponent<import("tailwind-va
10
10
  true: string;
11
11
  false: string;
12
12
  };
13
- }, undefined, "form-control bg-no-repeat select-caret disabled:form-control-disabled focus:focus-outline group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none", {
13
+ isFocused: {
14
+ true: {
15
+ base: string;
16
+ };
17
+ };
18
+ }, undefined, "form-control select-caret disabled:form-control-disabled bg-no-repeat group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none", {
14
19
  responsiveVariants: string[];
15
20
  }, {
16
21
  size: {
@@ -23,4 +28,9 @@ export declare const Select: React.ForwardRefExoticComponent<import("tailwind-va
23
28
  true: string;
24
29
  false: string;
25
30
  };
31
+ isFocused: {
32
+ true: {
33
+ base: string;
34
+ };
35
+ };
26
36
  }, undefined>> & Omit<React.SelectHTMLAttributes<HTMLSelectElement>, "size"> & React.RefAttributes<HTMLSelectElement>>;
@@ -13,15 +13,18 @@ function _extends() {
13
13
  return _extends.apply(this, arguments);
14
14
  }
15
15
  import React, { forwardRef } from 'react';
16
+ import { mergeProps, useFocusRing } from 'react-aria';
16
17
  import { styles } from './select.styles.js';
17
18
  function BaseSelect({ className , size ='medium' , invalid =false , children , ...props }, ref) {
19
+ const { isFocused , focusProps } = useFocusRing();
18
20
  return React.createElement("select", _extends({
19
21
  ref: ref,
20
22
  className: styles({
21
23
  className,
22
24
  size,
23
- invalid
25
+ invalid,
26
+ isFocused
24
27
  })
25
- }, props), children);
28
+ }, mergeProps(props, focusProps)), children);
26
29
  }
27
30
  export const Select = forwardRef(BaseSelect);
@@ -9,7 +9,12 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
9
9
  true: string;
10
10
  false: string;
11
11
  };
12
- }, undefined, "form-control bg-no-repeat select-caret disabled:form-control-disabled focus:focus-outline group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none", {
12
+ isFocused: {
13
+ true: {
14
+ base: string;
15
+ };
16
+ };
17
+ }, undefined, "form-control select-caret disabled:form-control-disabled bg-no-repeat group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none", {
13
18
  responsiveVariants: string[];
14
19
  }, {
15
20
  size: {
@@ -22,4 +27,9 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
22
27
  true: string;
23
28
  false: string;
24
29
  };
30
+ isFocused: {
31
+ true: {
32
+ base: string;
33
+ };
34
+ };
25
35
  }, undefined>;
@@ -1,6 +1,6 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
- base: 'form-control bg-no-repeat select-caret disabled:form-control-disabled focus:focus-outline group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none',
3
+ base: 'form-control select-caret disabled:form-control-disabled bg-no-repeat group-[.add-on-after]:rounded-l-none group-[.add-on-before]:rounded-r-none',
4
4
  variants: {
5
5
  size: {
6
6
  small: 'form-control-small bg-[right_0.5625rem_center] pr-[calc(0.5rem+14px+0.5625rem)]',
@@ -11,6 +11,11 @@ export const styles = tv({
11
11
  invalid: {
12
12
  true: 'border-danger',
13
13
  false: 'border-borderDark'
14
+ },
15
+ isFocused: {
16
+ true: {
17
+ base: 'focus-outline'
18
+ }
14
19
  }
15
20
  }
16
21
  }, {
@@ -0,0 +1,2 @@
1
+ export * from './selector-checkbox-group/index.js';
2
+ export * from './selector-radio-group/index.js';
@@ -0,0 +1,2 @@
1
+ export * from './selector-checkbox-group/index.js';
2
+ export * from './selector-radio-group/index.js';
@@ -0,0 +1 @@
1
+ export * from './selector-checkbox-group-option/index.js';
@@ -0,0 +1 @@
1
+ export * from './selector-checkbox-group-option/index.js';
@@ -0,0 +1,2 @@
1
+ export { SelectorCheckboxGroupOption } from './selector-checkbox-group-option.component.js';
2
+ export { type SelectorCheckboxGroupOptionProps } from './selector-checkbox-group-option.types.js';
@@ -0,0 +1 @@
1
+ export { SelectorCheckboxGroupOption } from './selector-checkbox-group-option.component.js';
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { FlexiCell } from '../../../../../../components/index.js';
3
+ import { type SelectorCheckboxGroupOptionProps } from './selector-checkbox-group-option.types.js';
4
+ export declare const SelectorCheckboxGroupOption: React.ForwardRefExoticComponent<SelectorCheckboxGroupOptionProps & React.RefAttributes<unknown>> & {
5
+ Adornment: typeof FlexiCell.Adornment;
6
+ Body: typeof FlexiCell.Body;
7
+ Button: typeof FlexiCell.Button;
8
+ Circle: typeof FlexiCell.Circle;
9
+ Footer: typeof FlexiCell.Footer;
10
+ Hint: typeof FlexiCell.Hint;
11
+ Label: typeof FlexiCell.Label;
12
+ };
@@ -0,0 +1,67 @@
1
+ function _extends() {
2
+ _extends = Object.assign || function(target) {
3
+ for(var i = 1; i < arguments.length; i++){
4
+ var source = arguments[i];
5
+ for(var key in source){
6
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
7
+ target[key] = source[key];
8
+ }
9
+ }
10
+ }
11
+ return target;
12
+ };
13
+ return _extends.apply(this, arguments);
14
+ }
15
+ import React, { forwardRef, useContext, useRef } from 'react';
16
+ import { VisuallyHidden, mergeProps, useCheckboxGroupItem, useFocusRing } from 'react-aria';
17
+ import { FlexiCellAdornment, FlexiCellBody, FlexiCellButton, FlexiCellCircle, FlexiCellFooter, FlexiCellHint, FlexiCellLabel } from '../../../../../../components/flexi-cell/index.js';
18
+ import { ArrowRightIcon, TickIcon } from '../../../../../../components/icon/index.js';
19
+ import { FlexiCell } from '../../../../../../components/index.js';
20
+ import { SelectorCheckboxGroupContext } from '../../selector-checkbox-group.component.js';
21
+ import { styles as selectorCheckboxGroupOptionStyles } from './selector-checkbox-group-option.styles.js';
22
+ function BaseSelectorCheckboxGroupOption({ className , children , value , withBorder =true , withArrow , after , badge , badgeZIndex , before , body =true , checkIcon ='checkbox' , ...props }, ref) {
23
+ const state = useContext(SelectorCheckboxGroupContext);
24
+ const localRef = useRef(null);
25
+ const { inputProps , isDisabled , isSelected } = useCheckboxGroupItem({
26
+ ...props,
27
+ value,
28
+ children
29
+ }, state, localRef);
30
+ const { isFocused , focusProps } = useFocusRing();
31
+ const styles = selectorCheckboxGroupOptionStyles({
32
+ className,
33
+ isSelected,
34
+ isFocused,
35
+ isDisabled,
36
+ checkIcon
37
+ });
38
+ const FinalIcon = checkIcon === 'checkbox' ? TickIcon : ArrowRightIcon;
39
+ return React.createElement(FlexiCell, {
40
+ after: React.createElement("div", {
41
+ className: "flex gap-2"
42
+ }, after, React.createElement(FinalIcon, {
43
+ "aria-hidden": "true",
44
+ className: styles.icon({})
45
+ })),
46
+ badge: badge,
47
+ badgeZIndex: badgeZIndex,
48
+ before: before,
49
+ body: body,
50
+ withBorder: withBorder,
51
+ withArrow: withArrow,
52
+ tag: "label",
53
+ ref: ref,
54
+ withHoverEffect: true,
55
+ className: styles.base({})
56
+ }, React.createElement(VisuallyHidden, null, React.createElement("input", _extends({}, mergeProps(inputProps, focusProps), {
57
+ ref: localRef
58
+ }))), children);
59
+ }
60
+ export const SelectorCheckboxGroupOption = forwardRef(BaseSelectorCheckboxGroupOption);
61
+ SelectorCheckboxGroupOption.Body = FlexiCellBody;
62
+ SelectorCheckboxGroupOption.Footer = FlexiCellFooter;
63
+ SelectorCheckboxGroupOption.Adornment = FlexiCellAdornment;
64
+ SelectorCheckboxGroupOption.Hint = FlexiCellHint;
65
+ SelectorCheckboxGroupOption.Label = FlexiCellLabel;
66
+ SelectorCheckboxGroupOption.Button = FlexiCellButton;
67
+ SelectorCheckboxGroupOption.Circle = FlexiCellCircle;
@@ -0,0 +1,59 @@
1
+ export declare const styles: import("tailwind-variants").TVReturnType<{
2
+ checkIcon: {
3
+ arrow: {
4
+ icon: string;
5
+ };
6
+ checkbox: {};
7
+ };
8
+ isSelected: {
9
+ true: {
10
+ base: string;
11
+ };
12
+ false: {};
13
+ };
14
+ isFocused: {
15
+ true: {
16
+ base: string;
17
+ };
18
+ false: {};
19
+ };
20
+ isDisabled: {
21
+ true: {
22
+ base: string;
23
+ };
24
+ false: {};
25
+ };
26
+ }, {
27
+ base: string;
28
+ icon: string;
29
+ }, undefined, {
30
+ responsiveVariants: string[];
31
+ }, {
32
+ checkIcon: {
33
+ arrow: {
34
+ icon: string;
35
+ };
36
+ checkbox: {};
37
+ };
38
+ isSelected: {
39
+ true: {
40
+ base: string;
41
+ };
42
+ false: {};
43
+ };
44
+ isFocused: {
45
+ true: {
46
+ base: string;
47
+ };
48
+ false: {};
49
+ };
50
+ isDisabled: {
51
+ true: {
52
+ base: string;
53
+ };
54
+ false: {};
55
+ };
56
+ }, {
57
+ base: string;
58
+ icon: string;
59
+ }>;
@@ -0,0 +1,57 @@
1
+ import { tv } from 'tailwind-variants';
2
+ export const styles = tv({
3
+ slots: {
4
+ base: 'group/checkbox-option cursor-pointer',
5
+ icon: 'transition-transform'
6
+ },
7
+ variants: {
8
+ checkIcon: {
9
+ arrow: {
10
+ icon: 'text-primary group-hover/checkbox-option:translate-x-1'
11
+ },
12
+ checkbox: {}
13
+ },
14
+ isSelected: {
15
+ true: {
16
+ base: 'border-hero shadow-[0_0_0_2px_inset]'
17
+ },
18
+ false: {}
19
+ },
20
+ isFocused: {
21
+ true: {
22
+ base: 'focus-outline'
23
+ },
24
+ false: {}
25
+ },
26
+ isDisabled: {
27
+ true: {
28
+ base: 'opacity-50'
29
+ },
30
+ false: {}
31
+ }
32
+ },
33
+ compoundVariants: [
34
+ {
35
+ checkIcon: 'checkbox',
36
+ isSelected: false,
37
+ className: {
38
+ icon: 'opacity-0'
39
+ }
40
+ },
41
+ {
42
+ checkIcon: 'checkbox',
43
+ isSelected: true,
44
+ className: {
45
+ icon: 'opacity-100'
46
+ }
47
+ }
48
+ ]
49
+ }, {
50
+ responsiveVariants: [
51
+ 'xsl',
52
+ 'sm',
53
+ 'md',
54
+ 'lg',
55
+ 'xl'
56
+ ]
57
+ });
@@ -0,0 +1,10 @@
1
+ import { type AriaCheckboxGroupItemProps } from 'react-aria';
2
+ import { type VariantProps } from 'tailwind-variants';
3
+ import { FlexiCellProps } from '../../../../../index.js';
4
+ import { styles } from './selector-checkbox-group-option.styles.js';
5
+ export type SelectorCheckboxGroupOptionProps = {
6
+ /**
7
+ * Check icon to render
8
+ */
9
+ checkIcon?: 'checkbox' | 'arrow';
10
+ } & FlexiCellProps & VariantProps<typeof styles> & Omit<AriaCheckboxGroupItemProps, 'isIndeterminate'>;
@@ -0,0 +1,2 @@
1
+ export { SelectorCheckboxGroup } from './selector-checkbox-group.component.js';
2
+ export { type SelectorCheckboxGroupProps } from './selector-checkbox-group.types.js';
@@ -0,0 +1 @@
1
+ export { SelectorCheckboxGroup } from './selector-checkbox-group.component.js';
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { type SelectorCheckboxGroupProps } from './selector-checkbox-group.types.js';
3
+ export declare const SelectorCheckboxGroupContext: React.Context<import("react-stately").CheckboxGroupState>;
4
+ export declare function SelectorCheckboxGroup(props: SelectorCheckboxGroupProps): JSX.Element;
5
+ export declare namespace SelectorCheckboxGroup {
6
+ var Option: React.ForwardRefExoticComponent<import("./components/index.js").SelectorCheckboxGroupOptionProps & React.RefAttributes<unknown>> & {
7
+ Adornment: ({ children, tag: Tag, align, className, ...props }: import("../../../flexi-cell/index.js").FlexiCellAdornmentProps) => JSX.Element;
8
+ Body: ({ children, tag: Tag, className, ...props }: import("../../../flexi-cell/index.js").FlexiCellBodyProps) => JSX.Element;
9
+ Button: ({ className, ...props }: import("../../../index.js").ButtonProps) => JSX.Element;
10
+ Circle: ({ className, ...props }: import("../../../index.js").CircleProps) => JSX.Element;
11
+ Footer: ({ children, className, tag: Tag, ...props }: import("../../../flexi-cell/index.js").FlexiCellFooterProps) => JSX.Element;
12
+ Hint: ({ children, tag: Tag, className, truncateText, ...props }: import("../../../flexi-cell/index.js").FlexiCellHintProps) => JSX.Element;
13
+ Label: ({ children, tag: Tag, truncateText, className, ...props }: import("../../../flexi-cell/index.js").FlexiCellLabelProps) => JSX.Element;
14
+ };
15
+ }