@papillonarts/components 0.8.0 → 0.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 (239) hide show
  1. package/build/index.ts +1 -0
  2. package/build/primer/Alert/Alert.mdx +88 -0
  3. package/build/primer/Alert/Alert.prop.ts +45 -0
  4. package/build/primer/Alert/Alert.tsx +101 -0
  5. package/build/primer/Alert/__tests__/Alert.int.story.tsx +86 -0
  6. package/build/primer/Alert/__tests__/Alert.int.test.ts +37 -0
  7. package/build/primer/Alert/index.ts +2 -0
  8. package/build/primer/Blankslate/Blankslate.mdx +57 -0
  9. package/build/primer/Blankslate/Blankslate.prop.ts +26 -0
  10. package/build/primer/Blankslate/Blankslate.tsx +26 -0
  11. package/build/primer/Blankslate/__tests__/Blankslate.int.story.tsx +43 -0
  12. package/build/primer/Blankslate/__tests__/Blankslate.int.test.ts +29 -0
  13. package/build/primer/Blankslate/index.ts +2 -0
  14. package/build/primer/Breadcrumb/Breadcrumb.mdx +23 -0
  15. package/build/primer/Breadcrumb/Breadcrumb.prop.ts +28 -0
  16. package/build/primer/Breadcrumb/Breadcrumb.tsx +57 -0
  17. package/build/primer/Breadcrumb/__tests__/Breadcrumb.int.story.tsx +40 -0
  18. package/build/primer/Breadcrumb/__tests__/Breadcrumb.int.test.ts +40 -0
  19. package/build/primer/Breadcrumb/index.ts +2 -0
  20. package/build/primer/Button/Button.mdx +239 -0
  21. package/build/primer/Button/Button.prop.ts +77 -0
  22. package/build/primer/Button/Button.tsx +91 -0
  23. package/build/primer/Button/__tests__/Button.int.story.tsx +173 -0
  24. package/build/primer/Button/__tests__/Button.int.test.ts +191 -0
  25. package/build/primer/Button/index.ts +2 -0
  26. package/build/primer/Dropdown/Dropdown.mdx +19 -0
  27. package/build/primer/Dropdown/Dropdown.prop.ts +33 -0
  28. package/build/primer/Dropdown/Dropdown.tsx +102 -0
  29. package/build/primer/Dropdown/__tests__/Dropdown.int.story.tsx +43 -0
  30. package/build/primer/Dropdown/__tests__/Dropdown.int.test.ts +53 -0
  31. package/build/primer/Dropdown/index.ts +2 -0
  32. package/build/primer/ErrorBoundary/ErrorBoundary.prop.ts +5 -0
  33. package/build/primer/ErrorBoundary/ErrorBoundary.tsx +35 -0
  34. package/build/primer/ErrorBoundary/__tests__/ErrorBoundary.int.story.tsx +23 -0
  35. package/build/primer/ErrorBoundary/__tests__/ErrorBoundary.int.test.ts +9 -0
  36. package/build/primer/ErrorBoundary/index.ts +1 -0
  37. package/build/primer/Form/Checkbox/Checkbox.prop.ts +34 -0
  38. package/build/primer/Form/Checkbox/Checkbox.tsx +40 -0
  39. package/build/primer/Form/Checkbox/__tests__/Checkbox.int.story.tsx +50 -0
  40. package/build/primer/Form/Checkbox/__tests__/Checkbox.int.test.ts +23 -0
  41. package/build/primer/Form/Checkbox/index.ts +2 -0
  42. package/build/primer/Form/Input/Input.prop.ts +43 -0
  43. package/build/primer/Form/Input/Input.tsx +43 -0
  44. package/build/primer/Form/Input/__tests__/Input.int.story.tsx +54 -0
  45. package/build/primer/Form/Input/__tests__/Input.int.test.ts +15 -0
  46. package/build/primer/Form/Input/index.ts +2 -0
  47. package/build/primer/Form/Radio/Radio.prop.ts +30 -0
  48. package/build/primer/Form/Radio/Radio.tsx +38 -0
  49. package/build/primer/Form/Radio/__tests__/Radio.int.story.tsx +42 -0
  50. package/build/primer/Form/Radio/__tests__/Radio.int.test.ts +13 -0
  51. package/build/primer/Form/Radio/index.ts +2 -0
  52. package/build/primer/Form/index.ts +19 -0
  53. package/build/primer/Grid/DisplayTable/DisplayTable.prop.ts +21 -0
  54. package/build/primer/Grid/DisplayTable/DisplayTable.tsx +68 -0
  55. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.data.ts +289 -0
  56. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.story.tsx +27 -0
  57. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.test.ts +9 -0
  58. package/build/primer/Grid/DisplayTable/index.ts +1 -0
  59. package/build/primer/Grid/FlexGrid/FlexGrid.prop.ts +59 -0
  60. package/build/primer/Grid/FlexGrid/FlexGrid.tsx +274 -0
  61. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.data.ts +289 -0
  62. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.story.tsx +146 -0
  63. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.test.ts +46 -0
  64. package/build/primer/Grid/FlexGrid/index.ts +2 -0
  65. package/build/primer/Grid/index.ts +9 -0
  66. package/build/primer/Icon/Icon.part.ts +1289 -0
  67. package/build/primer/Icon/Icon.prop.ts +1337 -0
  68. package/build/primer/Icon/Icon.tsx +49 -0
  69. package/build/primer/Icon/__tests__/Icon.int.story.tsx +58 -0
  70. package/build/primer/Icon/__tests__/Icon.int.test.ts +13 -0
  71. package/build/primer/Icon/index.ts +2 -0
  72. package/build/primer/Label/Label.mdx +13 -0
  73. package/build/primer/Label/Label.prop.ts +31 -0
  74. package/build/primer/Label/Label.tsx +27 -0
  75. package/build/primer/Label/__tests__/Label.int.story.tsx +19 -0
  76. package/build/primer/Label/__tests__/Label.int.test.ts +9 -0
  77. package/build/primer/Label/index.ts +1 -0
  78. package/build/primer/Loader/Loader.mdx +31 -0
  79. package/build/primer/Loader/Loader.prop.ts +16 -0
  80. package/build/primer/Loader/Loader.tsx +43 -0
  81. package/build/primer/Loader/__tests__/Loader.int.story.tsx +34 -0
  82. package/build/primer/Loader/__tests__/Loader.int.test.ts +21 -0
  83. package/build/primer/Loader/index.ts +2 -0
  84. package/build/primer/Navigation/Menu/Menu.prop.ts +26 -0
  85. package/build/primer/Navigation/Menu/Menu.tsx +42 -0
  86. package/build/primer/Navigation/Menu/__tests__/Menu.int.story.tsx +55 -0
  87. package/build/primer/Navigation/Menu/__tests__/Menu.int.test.ts +57 -0
  88. package/build/primer/Navigation/Menu/index.ts +1 -0
  89. package/build/primer/Navigation/TabNav/TabNav.prop.ts +39 -0
  90. package/build/primer/Navigation/TabNav/TabNav.tsx +105 -0
  91. package/build/primer/Navigation/TabNav/__tests__/TabNav.int.story.tsx +168 -0
  92. package/build/primer/Navigation/TabNav/__tests__/TabNav.int.test.ts +55 -0
  93. package/build/primer/Navigation/TabNav/index.ts +2 -0
  94. package/build/primer/Navigation/UnderlineNav/UnderlineNav.prop.ts +41 -0
  95. package/build/primer/Navigation/UnderlineNav/UnderlineNav.tsx +106 -0
  96. package/build/primer/Navigation/UnderlineNav/__tests__/UnderlineNav.int.story.tsx +140 -0
  97. package/build/primer/Navigation/UnderlineNav/__tests__/UnderlineNav.int.test.ts +81 -0
  98. package/build/primer/Navigation/UnderlineNav/index.ts +2 -0
  99. package/build/primer/Navigation/index.ts +12 -0
  100. package/build/primer/Pagination/PreviousNext/PreviousNext.prop.ts +53 -0
  101. package/build/primer/Pagination/PreviousNext/PreviousNext.tsx +71 -0
  102. package/build/primer/Pagination/PreviousNext/__tests__/PreviousNext.int.story.tsx +48 -0
  103. package/build/primer/Pagination/PreviousNext/__tests__/PreviousNext.int.test.ts +15 -0
  104. package/build/primer/Pagination/PreviousNext/index.ts +2 -0
  105. package/build/primer/Pagination/index.ts +6 -0
  106. package/build/primer/Popover/Popover.mdx +190 -0
  107. package/build/primer/Popover/Popover.prop.ts +49 -0
  108. package/build/primer/Popover/Popover.tsx +80 -0
  109. package/build/primer/Popover/__tests__/Popover.int.story.tsx +216 -0
  110. package/build/primer/Popover/__tests__/Popover.int.test.ts +71 -0
  111. package/build/primer/Popover/index.ts +2 -0
  112. package/build/primer/Progress/Progress.mdx +31 -0
  113. package/build/primer/Progress/Progress.prop.ts +16 -0
  114. package/build/primer/Progress/Progress.tsx +19 -0
  115. package/build/primer/Progress/__tests__/Progress.int.story.tsx +28 -0
  116. package/build/primer/Progress/__tests__/Progress.int.test.ts +17 -0
  117. package/build/primer/Progress/index.ts +2 -0
  118. package/build/primer/Select/Select.mdx +19 -0
  119. package/build/primer/Select/Select.prop.ts +24 -0
  120. package/build/primer/Select/Select.tsx +58 -0
  121. package/build/primer/Select/__tests__/Select.int.story.tsx +38 -0
  122. package/build/primer/Select/__tests__/Select.int.test.ts +42 -0
  123. package/build/primer/Select/index.ts +2 -0
  124. package/build/primer/SelectMenu/SelectMenu.mdx +13 -0
  125. package/build/primer/SelectMenu/SelectMenu.prop.ts +25 -0
  126. package/build/primer/SelectMenu/SelectMenu.tsx +68 -0
  127. package/build/primer/SelectMenu/__tests__/SelectMenu.int.story.tsx +50 -0
  128. package/build/primer/SelectMenu/__tests__/SelectMenu.int.test.ts +56 -0
  129. package/build/primer/SelectMenu/index.ts +1 -0
  130. package/build/primer/Subhead/Subhead.mdx +20 -0
  131. package/build/primer/Subhead/Subhead.prop.ts +10 -0
  132. package/build/primer/Subhead/Subhead.tsx +15 -0
  133. package/build/primer/Subhead/__tests__/Subhead.int.story.tsx +23 -0
  134. package/build/primer/Subhead/__tests__/Subhead.int.test.ts +13 -0
  135. package/build/primer/Subhead/index.ts +1 -0
  136. package/build/primer/Toast/Toast.prop.ts +21 -0
  137. package/build/primer/Toast/Toast.tsx +38 -0
  138. package/build/primer/Toast/__tests__/Toast.int.story.tsx +50 -0
  139. package/build/primer/Toast/__tests__/Toast.int.test.ts +25 -0
  140. package/build/primer/Toast/index.ts +2 -0
  141. package/build/primer/index.ts +83 -0
  142. package/package.json +4 -4
  143. package/build/index.js +0 -12
  144. package/build/primer/Alert/Alert.js +0 -121
  145. package/build/primer/Alert/Alert.prop.js +0 -38
  146. package/build/primer/Alert/index.js +0 -19
  147. package/build/primer/Blankslate/Blankslate.js +0 -31
  148. package/build/primer/Blankslate/Blankslate.prop.js +0 -26
  149. package/build/primer/Blankslate/index.js +0 -19
  150. package/build/primer/Breadcrumb/Breadcrumb.js +0 -74
  151. package/build/primer/Breadcrumb/Breadcrumb.prop.js +0 -29
  152. package/build/primer/Breadcrumb/index.js +0 -19
  153. package/build/primer/Button/Button.js +0 -99
  154. package/build/primer/Button/Button.prop.js +0 -67
  155. package/build/primer/Button/index.js +0 -49
  156. package/build/primer/Dropdown/Dropdown.js +0 -104
  157. package/build/primer/Dropdown/Dropdown.prop.js +0 -34
  158. package/build/primer/Dropdown/index.js +0 -19
  159. package/build/primer/ErrorBoundary/ErrorBoundary.js +0 -59
  160. package/build/primer/ErrorBoundary/ErrorBoundary.prop.js +0 -11
  161. package/build/primer/ErrorBoundary/index.js +0 -12
  162. package/build/primer/Form/Checkbox/Checkbox.js +0 -49
  163. package/build/primer/Form/Checkbox/Checkbox.prop.js +0 -36
  164. package/build/primer/Form/Checkbox/index.js +0 -19
  165. package/build/primer/Form/Input/Input.js +0 -56
  166. package/build/primer/Form/Input/Input.prop.js +0 -43
  167. package/build/primer/Form/Input/index.js +0 -25
  168. package/build/primer/Form/Radio/Radio.js +0 -48
  169. package/build/primer/Form/Radio/Radio.prop.js +0 -34
  170. package/build/primer/Form/Radio/index.js +0 -19
  171. package/build/primer/Form/index.js +0 -24
  172. package/build/primer/Grid/DisplayTable/DisplayTable.js +0 -58
  173. package/build/primer/Grid/DisplayTable/DisplayTable.prop.js +0 -18
  174. package/build/primer/Grid/DisplayTable/index.js +0 -12
  175. package/build/primer/Grid/FlexGrid/FlexGrid.js +0 -244
  176. package/build/primer/Grid/FlexGrid/FlexGrid.prop.js +0 -49
  177. package/build/primer/Grid/FlexGrid/index.js +0 -25
  178. package/build/primer/Grid/index.js +0 -14
  179. package/build/primer/Icon/Icon.js +0 -70
  180. package/build/primer/Icon/Icon.part.js +0 -1295
  181. package/build/primer/Icon/Icon.prop.js +0 -689
  182. package/build/primer/Icon/index.js +0 -25
  183. package/build/primer/Label/Label.js +0 -31
  184. package/build/primer/Label/Label.prop.js +0 -34
  185. package/build/primer/Label/index.js +0 -12
  186. package/build/primer/Loader/Loader.js +0 -65
  187. package/build/primer/Loader/Loader.prop.js +0 -21
  188. package/build/primer/Loader/index.js +0 -19
  189. package/build/primer/Navigation/Menu/Menu.js +0 -70
  190. package/build/primer/Navigation/Menu/Menu.prop.js +0 -28
  191. package/build/primer/Navigation/Menu/index.js +0 -12
  192. package/build/primer/Navigation/TabNav/TabNav.js +0 -125
  193. package/build/primer/Navigation/TabNav/TabNav.prop.js +0 -36
  194. package/build/primer/Navigation/TabNav/index.js +0 -19
  195. package/build/primer/Navigation/UnderlineNav/UnderlineNav.js +0 -121
  196. package/build/primer/Navigation/UnderlineNav/UnderlineNav.prop.js +0 -41
  197. package/build/primer/Navigation/UnderlineNav/index.js +0 -25
  198. package/build/primer/Navigation/index.js +0 -17
  199. package/build/primer/Pagination/PreviousNext/PreviousNext.js +0 -76
  200. package/build/primer/Pagination/PreviousNext/PreviousNext.prop.js +0 -56
  201. package/build/primer/Pagination/PreviousNext/index.js +0 -19
  202. package/build/primer/Pagination/index.js +0 -11
  203. package/build/primer/Popover/Popover.js +0 -63
  204. package/build/primer/Popover/Popover.prop.js +0 -41
  205. package/build/primer/Popover/index.js +0 -25
  206. package/build/primer/Progress/Progress.js +0 -31
  207. package/build/primer/Progress/Progress.prop.js +0 -21
  208. package/build/primer/Progress/index.js +0 -19
  209. package/build/primer/Select/Select.js +0 -66
  210. package/build/primer/Select/Select.prop.js +0 -27
  211. package/build/primer/Select/index.js +0 -19
  212. package/build/primer/SelectMenu/SelectMenu.js +0 -95
  213. package/build/primer/SelectMenu/SelectMenu.prop.js +0 -26
  214. package/build/primer/SelectMenu/index.js +0 -12
  215. package/build/primer/Subhead/Subhead.js +0 -27
  216. package/build/primer/Subhead/Subhead.prop.js +0 -16
  217. package/build/primer/Subhead/index.js +0 -12
  218. package/build/primer/Toast/Toast.js +0 -55
  219. package/build/primer/Toast/Toast.prop.js +0 -26
  220. package/build/primer/Toast/index.js +0 -19
  221. package/build/primer/index.js +0 -87
  222. /package/build/primer/Form/Checkbox/{Checkbox.md → Checkbox.mdx} +0 -0
  223. /package/build/primer/Form/Checkbox/__tests__/__snapshots__/{Checkbox.int.test.js.snap → Checkbox.int.test.ts.snap} +0 -0
  224. /package/build/primer/Form/Input/{Input.md → Input.mdx} +0 -0
  225. /package/build/primer/Form/Input/__tests__/__snapshots__/{Input.int.test.js.snap → Input.int.test.ts.snap} +0 -0
  226. /package/build/primer/Form/Radio/{Radio.md → Radio.mdx} +0 -0
  227. /package/build/primer/Form/Radio/__tests__/__snapshots__/{Radio.int.test.js.snap → Radio.int.test.ts.snap} +0 -0
  228. /package/build/primer/Grid/DisplayTable/{DisplayTable.md → DisplayTable.mdx} +0 -0
  229. /package/build/primer/Grid/DisplayTable/__tests__/__snapshots__/{DisplayTable.int.test.js.snap → DisplayTable.int.test.ts.snap} +0 -0
  230. /package/build/primer/Grid/FlexGrid/{FlexGrid.md → FlexGrid.mdx} +0 -0
  231. /package/build/primer/Grid/FlexGrid/__tests__/__snapshots__/{FlexGrid.int.test.js.snap → FlexGrid.int.test.ts.snap} +0 -0
  232. /package/build/primer/Navigation/Menu/{Menu.md → Menu.mdx} +0 -0
  233. /package/build/primer/Navigation/Menu/__tests__/__snapshots__/{Menu.int.test.js.snap → Menu.int.test.ts.snap} +0 -0
  234. /package/build/primer/Navigation/TabNav/{TabNav.md → TabNav.mdx} +0 -0
  235. /package/build/primer/Navigation/TabNav/__tests__/__snapshots__/{TabNav.int.test.js.snap → TabNav.int.test.ts.snap} +0 -0
  236. /package/build/primer/Navigation/UnderlineNav/{UnderlineNav.md → UnderlineNav.mdx} +0 -0
  237. /package/build/primer/Navigation/UnderlineNav/__tests__/__snapshots__/{UnderlineNav.int.test.js.snap → UnderlineNav.int.test.ts.snap} +0 -0
  238. /package/build/primer/Pagination/PreviousNext/{PreviousNext.md → PreviousNext.mdx} +0 -0
  239. /package/build/primer/Pagination/PreviousNext/__tests__/__snapshots__/{PreviousNext.int.test.js.snap → PreviousNext.int.test.ts.snap} +0 -0
@@ -0,0 +1,216 @@
1
+ import { action } from 'storybook/actions'
2
+ import { withTests } from '@storybook/addon-jest'
3
+ import { popoverVariant, popoverSize } from '../Popover.prop'
4
+ import results from '../../../../../../.jest-test-results.json'
5
+
6
+ const Popover =
7
+ process.env.NODE_ENV === 'develop' || process.env.NODE_ENV === 'test'
8
+ ? require('../../../index').primer.Popover.Popover
9
+ : require('../../../../build').primer.Popover.Popover
10
+
11
+ export default {
12
+ title: 'Primer/Molecule/Popover',
13
+ component: Popover,
14
+ decorators: [withTests({ results })],
15
+ parameters: { jest: ['Popover.int.test.js'] },
16
+ excludeStories: ['custom'],
17
+ }
18
+
19
+ const intro = 'UI'
20
+ const heading = 'Popover heading'
21
+ const message = 'Message about this particular piece of UI.'
22
+ const acknowledge = 'Got it!'
23
+
24
+ export function custom(introOnClick, acknowledgeOnClick) {
25
+ return (
26
+ <Popover
27
+ intro={intro}
28
+ heading={heading}
29
+ message={message}
30
+ acknowledge={acknowledge}
31
+ introOnClick={introOnClick}
32
+ acknowledgeOnClick={acknowledgeOnClick}
33
+ />
34
+ )
35
+ }
36
+
37
+ export function regular() {
38
+ return (
39
+ <Popover
40
+ intro={intro}
41
+ heading={heading}
42
+ message={message}
43
+ acknowledge={acknowledge}
44
+ introOnClick={action('introOnClick')}
45
+ acknowledgeOnClick={action('acknowledgeOnClick')}
46
+ />
47
+ )
48
+ }
49
+
50
+ export function regularLarge() {
51
+ return (
52
+ <Popover
53
+ intro={intro}
54
+ heading={heading}
55
+ message={message}
56
+ acknowledge={acknowledge}
57
+ size={popoverSize.large}
58
+ introOnClick={action('introOnClick')}
59
+ acknowledgeOnClick={action('acknowledgeOnClick')}
60
+ />
61
+ )
62
+ }
63
+
64
+ export function bottom() {
65
+ return (
66
+ <Popover
67
+ intro={intro}
68
+ heading={heading}
69
+ message={message}
70
+ acknowledge={acknowledge}
71
+ variant={popoverVariant.bottom}
72
+ introOnClick={action('introOnClick')}
73
+ acknowledgeOnClick={action('acknowledgeOnClick')}
74
+ />
75
+ )
76
+ }
77
+
78
+ export function bottomRight() {
79
+ return (
80
+ <Popover
81
+ intro={intro}
82
+ heading={heading}
83
+ message={message}
84
+ acknowledge={acknowledge}
85
+ variant={popoverVariant.bottomRight}
86
+ introOnClick={action('introOnClick')}
87
+ acknowledgeOnClick={action('acknowledgeOnClick')}
88
+ />
89
+ )
90
+ }
91
+
92
+ export function bottomLeft() {
93
+ return (
94
+ <Popover
95
+ intro={intro}
96
+ heading={heading}
97
+ message={message}
98
+ acknowledge={acknowledge}
99
+ variant={popoverVariant.bottomLeft}
100
+ introOnClick={action('introOnClick')}
101
+ acknowledgeOnClick={action('acknowledgeOnClick')}
102
+ />
103
+ )
104
+ }
105
+
106
+ export function left() {
107
+ return (
108
+ <Popover
109
+ intro={intro}
110
+ heading={heading}
111
+ message={message}
112
+ acknowledge={acknowledge}
113
+ variant={popoverVariant.left}
114
+ introOnClick={action('introOnClick')}
115
+ acknowledgeOnClick={action('acknowledgeOnClick')}
116
+ />
117
+ )
118
+ }
119
+
120
+ export function leftBottom() {
121
+ return (
122
+ <Popover
123
+ intro={intro}
124
+ heading={heading}
125
+ message={message}
126
+ acknowledge={acknowledge}
127
+ variant={popoverVariant.leftBottom}
128
+ introOnClick={action('introOnClick')}
129
+ acknowledgeOnClick={action('acknowledgeOnClick')}
130
+ />
131
+ )
132
+ }
133
+
134
+ export function leftTop() {
135
+ return (
136
+ <Popover
137
+ intro={intro}
138
+ heading={heading}
139
+ message={message}
140
+ acknowledge={acknowledge}
141
+ variant={popoverVariant.leftTop}
142
+ introOnClick={action('introOnClick')}
143
+ acknowledgeOnClick={action('acknowledgeOnClick')}
144
+ />
145
+ )
146
+ }
147
+
148
+ export function right() {
149
+ return (
150
+ <Popover
151
+ intro={intro}
152
+ heading={heading}
153
+ message={message}
154
+ acknowledge={acknowledge}
155
+ variant={popoverVariant.right}
156
+ introOnClick={action('introOnClick')}
157
+ acknowledgeOnClick={action('acknowledgeOnClick')}
158
+ />
159
+ )
160
+ }
161
+
162
+ export function rightBottom() {
163
+ return (
164
+ <Popover
165
+ intro={intro}
166
+ heading={heading}
167
+ message={message}
168
+ acknowledge={acknowledge}
169
+ variant={popoverVariant.rightBottom}
170
+ introOnClick={action('introOnClick')}
171
+ acknowledgeOnClick={action('acknowledgeOnClick')}
172
+ />
173
+ )
174
+ }
175
+
176
+ export function rightTop() {
177
+ return (
178
+ <Popover
179
+ intro={intro}
180
+ heading={heading}
181
+ message={message}
182
+ acknowledge={acknowledge}
183
+ variant={popoverVariant.rightTop}
184
+ introOnClick={action('introOnClick')}
185
+ acknowledgeOnClick={action('acknowledgeOnClick')}
186
+ />
187
+ )
188
+ }
189
+
190
+ export function topLeft() {
191
+ return (
192
+ <Popover
193
+ intro={intro}
194
+ heading={heading}
195
+ message={message}
196
+ acknowledge={acknowledge}
197
+ variant={popoverVariant.topLeft}
198
+ introOnClick={action('introOnClick')}
199
+ acknowledgeOnClick={action('acknowledgeOnClick')}
200
+ />
201
+ )
202
+ }
203
+
204
+ export function topRight() {
205
+ return (
206
+ <Popover
207
+ intro={intro}
208
+ heading={heading}
209
+ message={message}
210
+ acknowledge={acknowledge}
211
+ variant={popoverVariant.topRight}
212
+ introOnClick={action('introOnClick')}
213
+ acknowledgeOnClick={action('acknowledgeOnClick')}
214
+ />
215
+ )
216
+ }
@@ -0,0 +1,71 @@
1
+ import {
2
+ regular,
3
+ regularLarge,
4
+ bottom,
5
+ bottomRight,
6
+ bottomLeft,
7
+ left,
8
+ leftBottom,
9
+ leftTop,
10
+ right,
11
+ rightBottom,
12
+ rightTop,
13
+ topLeft,
14
+ topRight,
15
+ } from './Popover.int.story'
16
+
17
+ describe('<Popover />', () => {
18
+ describe('Render', () => {
19
+ test('must match regular()', () => {
20
+ expect(global.renderToJSON(regular())).toMatchSnapshot()
21
+ })
22
+
23
+ test('must match regularLarge()', () => {
24
+ expect(global.renderToJSON(regularLarge())).toMatchSnapshot()
25
+ })
26
+
27
+ test('must match bottom()', () => {
28
+ expect(global.renderToJSON(bottom())).toMatchSnapshot()
29
+ })
30
+
31
+ test('must match bottomRight()', () => {
32
+ expect(global.renderToJSON(bottomRight())).toMatchSnapshot()
33
+ })
34
+
35
+ test('must match bottomLeft()', () => {
36
+ expect(global.renderToJSON(bottomLeft())).toMatchSnapshot()
37
+ })
38
+
39
+ test('must match left()', () => {
40
+ expect(global.renderToJSON(left())).toMatchSnapshot()
41
+ })
42
+
43
+ test('must match leftBottom()', () => {
44
+ expect(global.renderToJSON(leftBottom())).toMatchSnapshot()
45
+ })
46
+
47
+ test('must match leftTop()', () => {
48
+ expect(global.renderToJSON(leftTop())).toMatchSnapshot()
49
+ })
50
+
51
+ test('must match right()', () => {
52
+ expect(global.renderToJSON(right())).toMatchSnapshot()
53
+ })
54
+
55
+ test('must match rightBottom()', () => {
56
+ expect(global.renderToJSON(rightBottom())).toMatchSnapshot()
57
+ })
58
+
59
+ test('must match rightTop()', () => {
60
+ expect(global.renderToJSON(rightTop())).toMatchSnapshot()
61
+ })
62
+
63
+ test('must match topLeft()', () => {
64
+ expect(global.renderToJSON(topLeft())).toMatchSnapshot()
65
+ })
66
+
67
+ test('must match topRight()', () => {
68
+ expect(global.renderToJSON(topRight())).toMatchSnapshot()
69
+ })
70
+ })
71
+ })
@@ -0,0 +1,2 @@
1
+ export { Popover } from './Popover'
2
+ export { popoverVariant, popoverSize } from './Popover.prop'
@@ -0,0 +1,31 @@
1
+ # Progress
2
+
3
+ > Use progress components to visualize task completion. The Progress class adds a background color and aligns its children horizontally with flexbox. The children (Progress-item) should be individually colored with background utilities and sized with inline width styles in percentages. Overflow is hidden, so children that overflow will be clipped.
4
+
5
+ # Variants
6
+
7
+ > - Normal, Large, Small
8
+
9
+ ## Normal
10
+
11
+ > Normal progress bars have default height.
12
+
13
+ ```jsx
14
+ <Progress variant={progressVariant.normal} percentage={50} />
15
+ ```
16
+
17
+ ## Large
18
+
19
+ > Large progress bars are slightly taller than the default.
20
+
21
+ ```jsx
22
+ <Progress variant={progressVariant.large} percentage={50} />
23
+ ```
24
+
25
+ ## Small
26
+
27
+ > Small progress bars are shorter than the default.
28
+
29
+ ```jsx
30
+ <Progress variant={progressVariant.small} percentage={50} />
31
+ ```
@@ -0,0 +1,16 @@
1
+ export const progressVariant = {
2
+ small: 'small',
3
+ normal: 'normal',
4
+ large: 'large',
5
+ }
6
+
7
+ export const defaultProps = {
8
+ className: null,
9
+ variant: progressVariant.normal,
10
+ }
11
+
12
+ export interface ProgressProps {
13
+ className?: string
14
+ variant?: typeof progressVariant.small | typeof progressVariant.normal | typeof progressVariant.large
15
+ percentage: number
16
+ }
@@ -0,0 +1,19 @@
1
+ import cx from 'classnames'
2
+ import colorStyles from '@papillonarts/css/build/primer/utilities/colors.scss'
3
+ import { ProgressProps, defaultProps, progressVariant } from './Progress.prop'
4
+ import styles from './Progress.scss'
5
+
6
+ export function Progress({ className = defaultProps.className, variant = defaultProps.variant, percentage }: ProgressProps) {
7
+ const percentageStyle = { width: `${percentage}%` }
8
+
9
+ return (
10
+ <span
11
+ className={cx(className, styles.Progress, {
12
+ [styles['Progress--large']]: variant === progressVariant.large,
13
+ [styles['Progress--small']]: (variant === progressVariant.small) === true,
14
+ })}
15
+ >
16
+ <span className={cx(styles['Progress-item'], colorStyles['bg-green'])} style={percentageStyle} />
17
+ </span>
18
+ )
19
+ }
@@ -0,0 +1,28 @@
1
+ import { withTests } from '@storybook/addon-jest'
2
+ import { progressVariant } from '../Progress.prop'
3
+ import results from '../../../../../../.jest-test-results.json'
4
+
5
+ const Progress =
6
+ process.env.NODE_ENV === 'develop' || process.env.NODE_ENV === 'test'
7
+ ? require('../../../index').primer.Progress.Progress
8
+ : require('../../../../build').primer.Progress.Progress
9
+
10
+ export default {
11
+ title: 'Primer/Atom/Progress',
12
+ component: Progress,
13
+ decorators: [withTests({ results })],
14
+ parameters: { jest: ['Progress.int.test.js'] },
15
+ excludeStories: ['custom'],
16
+ }
17
+
18
+ export function normal() {
19
+ return <Progress variant={progressVariant.normal} percentage={50} />
20
+ }
21
+
22
+ export function large() {
23
+ return <Progress variant={progressVariant.large} percentage={50} />
24
+ }
25
+
26
+ export function small() {
27
+ return <Progress variant={progressVariant.small} percentage={50} />
28
+ }
@@ -0,0 +1,17 @@
1
+ import { normal, large, small } from './Progress.int.story'
2
+
3
+ describe('<Progress />', () => {
4
+ describe('Render', () => {
5
+ test('must match normal()', () => {
6
+ expect(global.renderToJSON(normal())).toMatchSnapshot()
7
+ })
8
+
9
+ test('must match large()', () => {
10
+ expect(global.renderToJSON(large())).toMatchSnapshot()
11
+ })
12
+
13
+ test('must match small()', () => {
14
+ expect(global.renderToJSON(small())).toMatchSnapshot()
15
+ })
16
+ })
17
+ })
@@ -0,0 +1,2 @@
1
+ export { Progress } from './Progress'
2
+ export { progressVariant } from './Progress.prop'
@@ -0,0 +1,19 @@
1
+ # Select
2
+
3
+ > Selects are lightweight context menus for housing navigation and actions. They're great for instances where you don't need the full power (and code) of the select menu.
4
+
5
+ # Variants
6
+
7
+ > - Regular, Inactive
8
+
9
+ ## Regular
10
+
11
+ ```jsx
12
+ <Select selectedText={selectedText} items={items} onChange={action('onChange')} />
13
+ ```
14
+
15
+ ## Inactive
16
+
17
+ ```jsx
18
+ <Select selectedText={selectedText} items={items} onChange={action('onChange')} state={selectState.inactive} />
19
+ ```
@@ -0,0 +1,24 @@
1
+ export const selectState = {
2
+ active: 'active',
3
+ inactive: 'inactive',
4
+ }
5
+
6
+ export const defaultProps = {
7
+ id: null,
8
+ className: null,
9
+ state: selectState.active,
10
+ }
11
+
12
+ export interface ItemType {
13
+ text: string
14
+ isSelected: boolean
15
+ }
16
+
17
+ export interface SelectProps {
18
+ id?: string
19
+ className?: string
20
+ selectedText: string
21
+ items: ItemType[]
22
+ onChange: (value) => void
23
+ state?: typeof selectState.active | typeof selectState.inactive
24
+ }
@@ -0,0 +1,58 @@
1
+ import cx from 'classnames'
2
+ import { v1 as uuidv1 } from 'uuid'
3
+ import layoutStyles from '@papillonarts/css/build/primer/utilities/layout.scss'
4
+ import { getIndexItems, getIndexItemsWithSelected } from '@papillonarts/library/array'
5
+ import { SelectProps, defaultProps, selectState } from './Select.prop'
6
+ import styles from './Select.scss'
7
+
8
+ export function Select({
9
+ id = defaultProps.id,
10
+ className = defaultProps.className,
11
+ selectedText,
12
+ items,
13
+ onChange,
14
+ state = defaultProps.state,
15
+ }: SelectProps) {
16
+ const indexItems = getIndexItems(items)
17
+
18
+ const handleOnChange = (event) => {
19
+ const indexItem = indexItems.find((item) => item.text === event.target.value)
20
+ const newIndexItems = getIndexItemsWithSelected(indexItems, indexItem)
21
+
22
+ onChange({
23
+ selectedText: indexItem.text,
24
+ items: newIndexItems.map((newIndexItem) =>
25
+ (({ text: newIndexItemText, isSelected: newIndexItemIsSelected }) => ({
26
+ text: newIndexItemText,
27
+ isSelected: newIndexItemIsSelected,
28
+ }))(newIndexItem),
29
+ ),
30
+ })
31
+ }
32
+
33
+ return (
34
+ <div className={cx(className, styles.select)}>
35
+ <select
36
+ id={id}
37
+ // @ts-ignore
38
+ readOnly={false}
39
+ onChange={handleOnChange}
40
+ className={cx(styles['select-menu'], layoutStyles['width-full'], {
41
+ [styles['select-inactive']]: state === selectState.inactive,
42
+ })}
43
+ value={selectedText}
44
+ >
45
+ {items &&
46
+ indexItems.map((indexItem) => {
47
+ const { text, isSelected } = indexItem
48
+
49
+ return (
50
+ <option key={uuidv1()} value={text} selected={isSelected}>
51
+ {text}
52
+ </option>
53
+ )
54
+ })}
55
+ </select>
56
+ </div>
57
+ )
58
+ }
@@ -0,0 +1,38 @@
1
+ import { action } from 'storybook/actions'
2
+ import { withTests } from '@storybook/addon-jest'
3
+ import { selectState } from '../Select.prop'
4
+ import results from '../../../../../../.jest-test-results.json'
5
+
6
+ const Select =
7
+ process.env.NODE_ENV === 'develop' || process.env.NODE_ENV === 'test'
8
+ ? require('../../../index').primer.Select.Select
9
+ : require('../../../../build').primer.Select.Select
10
+
11
+ export default {
12
+ title: 'Primer/Atom/Select',
13
+ component: Select,
14
+ decorators: [withTests({ results })],
15
+ parameters: { jest: ['Select.int.test.js'] },
16
+ excludeStories: ['selectedText', 'items', 'custom'],
17
+ }
18
+
19
+ export const selectedText = 'Select'
20
+
21
+ export const items = [
22
+ { text: 'Select Item 1', isSelected: true },
23
+ { text: 'Select Item 2', isSelected: false },
24
+ { text: 'Select Item 3', isSelected: false },
25
+ { text: 'Select Item 4', isSelected: false },
26
+ ]
27
+
28
+ export function custom(onChange) {
29
+ return <Select selectedText={selectedText} items={items} onChange={onChange} />
30
+ }
31
+
32
+ export function regular() {
33
+ return <Select selectedText={selectedText} items={items} onChange={action('onChange')} />
34
+ }
35
+
36
+ export function inactive() {
37
+ return <Select selectedText={selectedText} items={items} onChange={action('onChange')} state={selectState.inactive} />
38
+ }
@@ -0,0 +1,42 @@
1
+ import { items, regular, inactive } from './Select.int.story'
2
+
3
+ jest.mock('@papillonarts/library/array', () => ({
4
+ getIndexItems: () => {},
5
+ getIndexItemsWithSelected: () => {},
6
+ }))
7
+
8
+ const libraryArrayMockObject = require('@papillonarts/library/array')
9
+
10
+ describe('<Select />', () => {
11
+ const indexItemsDataObject = [
12
+ { ...items[0], index: 0 },
13
+ { ...items[1], index: 1 },
14
+ { ...items[2], index: 2 },
15
+ { ...items[3], index: 3 },
16
+ ]
17
+
18
+ const newIndexItemsWithSelectedDataObject = [
19
+ { ...items[0], index: 0, isSelected: true },
20
+ { ...items[1], index: 1, isSelected: false },
21
+ { ...items[2], index: 2, isSelected: false },
22
+ { ...items[3], index: 3, isSelected: false },
23
+ ]
24
+
25
+ beforeEach(() => {
26
+ jest.spyOn(libraryArrayMockObject, 'getIndexItems').mockReturnValue(indexItemsDataObject)
27
+
28
+ jest.spyOn(libraryArrayMockObject, 'getIndexItemsWithSelected').mockReturnValue(newIndexItemsWithSelectedDataObject)
29
+ })
30
+
31
+ afterEach(() => jest.clearAllMocks())
32
+
33
+ describe('Render', () => {
34
+ test('must match regular()', () => {
35
+ expect(global.renderToJSON(regular())).toMatchSnapshot()
36
+ })
37
+
38
+ test('must match inacive()', () => {
39
+ expect(global.renderToJSON(inactive())).toMatchSnapshot()
40
+ })
41
+ })
42
+ })
@@ -0,0 +1,2 @@
1
+ export { Select } from './Select'
2
+ export { selectState } from './Select.prop'
@@ -0,0 +1,13 @@
1
+ # SelectMenu
2
+
3
+ > The SelectMenu component provides advanced support for navigation, filtering, and more. Any menu can make use of JavaScript-enabled live filtering, selected states, tabbed lists, and keyboard navigation with a bit of markup.
4
+
5
+ # Variants
6
+
7
+ > - Default
8
+
9
+ ## Default
10
+
11
+ ```jsx
12
+ <SelectMenu summary={summary} icon={iconName.ChevronDown16} title={title} ariaAttr={ariaAttr} items={items} onClick={action('onClick')} />
13
+ ```
@@ -0,0 +1,25 @@
1
+ import { IconNameType } from '../Icon/Icon.prop'
2
+
3
+ export const defaultProps = {
4
+ className: null,
5
+ title: null,
6
+ }
7
+
8
+ export interface AriaAttrType {
9
+ haspopup: boolean
10
+ }
11
+
12
+ export interface ItemType {
13
+ text: string
14
+ isSelected: boolean
15
+ }
16
+
17
+ export interface SelectMenuProps {
18
+ className?: string
19
+ summary: string
20
+ icon: IconNameType
21
+ title?: string
22
+ ariaAttr: AriaAttrType
23
+ items: ItemType[]
24
+ onClick: (value) => void
25
+ }