luna-one 1.0.232 → 1.0.237

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 (114) hide show
  1. package/README.md +1630 -1630
  2. package/dist/global-styles/content/icon.scss +361 -361
  3. package/dist/global-styles/content/typography.scss +99 -99
  4. package/dist/global-styles/fonts/benton.scss +5 -5
  5. package/dist/global-styles/global-terra.scss +11 -11
  6. package/dist/global-styles/global-vars.scss +535 -535
  7. package/dist/global-styles/layout/_css-grid.scss +24 -24
  8. package/dist/global-styles/layout/_media-queries.scss +35 -35
  9. package/dist/global-styles/layout/_normalize.scss +340 -340
  10. package/dist/global-styles/layout/_reset.scss +13 -13
  11. package/dist/global-styles/mixins/_box-shadow.scss +6 -6
  12. package/dist/global-styles/mixins/_mixins.scss +5 -5
  13. package/dist/global-styles/mixins/_organism-padding-hack.scss +7 -7
  14. package/dist/global-styles/mixins/_typography.scss +80 -80
  15. package/dist/global-styles/mixins/_yiq.scss +50 -50
  16. package/dist/global-styles/mixins/_z-index.scss +3 -3
  17. package/dist/global-styles/terra.scss +12 -12
  18. package/dist/global-styles/utilities/_box-shadow.scss +8 -8
  19. package/dist/global-styles/utilities/_display.scss +48 -48
  20. package/dist/global-styles/utilities/_font-family.scss +15 -15
  21. package/dist/global-styles/utilities/_parallax.scss +23 -23
  22. package/dist/global-styles/utilities/_text-align.scss +24 -24
  23. package/dist/luna/components/AdminCategoryData/AdminCategoryData.scss +81 -81
  24. package/dist/luna/components/AdminProductData/AdminProductData.scss +74 -74
  25. package/dist/luna/components/BrowserSupportBanner/BrowserSupportBanner.scss +6 -6
  26. package/dist/luna/components/EventCard/EventCard.scss +130 -130
  27. package/dist/luna/components/LanguageSelector/LanguageSelector.scss +139 -139
  28. package/dist/luna/components/MegaMenu/MegaMenu.js +1 -1
  29. package/dist/luna/components/MegaMenu/MegaMenu.scss +209 -209
  30. package/dist/luna/components/MegaMenu/RightSection.js +16 -16
  31. package/dist/luna/components/MiniFeatDropdown/MiniFeatDropdown.js +4 -3
  32. package/dist/luna/components/MiniFeatDropdown/MiniFeatDropdown.scss +106 -106
  33. package/dist/luna/components/MobileMegaMenu/MobileMegaMenu.scss +147 -147
  34. package/dist/luna/components/MobileMenu/MobileMenu.scss +65 -65
  35. package/dist/luna/components/MobileNav/MobileNav.js +1 -1
  36. package/dist/luna/components/MobileNav/MobileNav.scss +104 -104
  37. package/dist/luna/components/NavBarTop/NavBarTop.js +182 -160
  38. package/dist/luna/components/NavBarTop/NavBarTop.scss +235 -235
  39. package/dist/luna/components/NavSearch/NavSearch.scss +38 -38
  40. package/dist/luna/components/RegionCard/RegionCard.scss +84 -84
  41. package/dist/luna/components/StoreFrontCard/StoreFrontCard.scss +434 -434
  42. package/dist/luna/components/SupportCard/SupportCard.scss +150 -150
  43. package/dist/luna/components/VariableContentCard/VariableContentCard.scss +288 -288
  44. package/dist/luna/components/VidyardModal/VidyardModal.scss +23 -23
  45. package/dist/luna/depracated/Feat10/Feat10.js +3 -3
  46. package/dist/luna/depracated/Feat10/Feat10.scss +30 -30
  47. package/dist/luna/depracated/Feat4Flex/Feat4Flex.js +1 -1
  48. package/dist/luna/depracated/Feat4Flex/Feat4Flex.scss +118 -118
  49. package/dist/luna/depracated/Feat4Flex/Feat4FlexMethods.js +2 -2
  50. package/dist/luna/depracated/Feat5/Feat5.js +2 -2
  51. package/dist/luna/depracated/Feat5/Feat5.scss +209 -209
  52. package/dist/luna/depracated/Feat7/Feat7.js +1 -1
  53. package/dist/luna/depracated/Feat7/Feat7.scss +220 -220
  54. package/dist/luna/depracated/Feat8/Feat8.js +1 -1
  55. package/dist/luna/depracated/Feat8/Feat8.scss +173 -173
  56. package/dist/luna/depracated/Hero5/Hero5.js +2 -2
  57. package/dist/luna/depracated/Hero5/Hero5.scss +197 -197
  58. package/dist/luna/depracated/MegaFeat/MegaFeat.js +2 -2
  59. package/dist/luna/depracated/MegaFeat/MegaFeat.scss +141 -141
  60. package/dist/luna/depracated/MegaFeat/MegaFeatMethods.js +2 -2
  61. package/dist/luna/depracated/MegaMenu/MegaMenu.scss +115 -115
  62. package/dist/luna/depracated/ParallaxBackground/ParallaxBackground.js +6 -5
  63. package/dist/luna/featurettes/CustomFeat/CustomFeat.js +4 -3
  64. package/dist/luna/featurettes/CustomFeat/CustomFeat.scss +17 -17
  65. package/dist/luna/featurettes/Feat1/Feat1.js +2 -2
  66. package/dist/luna/featurettes/Feat1/Feat1.scss +146 -146
  67. package/dist/luna/featurettes/Feat2A/Feat2A.scss +192 -192
  68. package/dist/luna/featurettes/Feat2B/Feat2B.scss +317 -317
  69. package/dist/luna/featurettes/Feat3/Feat3.scss +78 -78
  70. package/dist/luna/featurettes/Feat4/Feat4.js +2 -2
  71. package/dist/luna/featurettes/Feat4/Feat4.scss +168 -168
  72. package/dist/luna/featurettes/Feat4/LazyBackgroundImage.js +1 -1
  73. package/dist/luna/featurettes/Feat5/Feat5.js +2 -2
  74. package/dist/luna/featurettes/Feat5/Feat5.scss +282 -282
  75. package/dist/luna/featurettes/Feat6/Feat6.scss +170 -170
  76. package/dist/luna/featurettes/Feat6/ico-quote-white.svg +3 -3
  77. package/dist/luna/featurettes/Feat6/ico-quote.svg +3 -3
  78. package/dist/luna/featurettes/Feat7/Feat7.scss +57 -57
  79. package/dist/luna/heroes/FilterHero/FilterHero.js +4 -3
  80. package/dist/luna/heroes/FilterHero/FilterHero.scss +151 -151
  81. package/dist/luna/heroes/Hero1/Hero1.scss +269 -269
  82. package/dist/luna/heroes/Hero2/Hero2.scss +171 -171
  83. package/dist/luna/heroes/Hero3/Hero3.js +1 -1
  84. package/dist/luna/heroes/Hero3/Hero3.scss +350 -350
  85. package/dist/luna/heroes/Hero4/Hero4.scss +157 -157
  86. package/dist/luna/heroes/Hero6/Hero6.scss +142 -142
  87. package/dist/luna/heroes/HeroRatioWrapper/HeroRatioWrapper.scss +16 -16
  88. package/dist/luna/images/close-button.svg +42 -42
  89. package/dist/luna/images/down-caret-dark-gray.svg +4 -4
  90. package/dist/luna/images/down-caret-light-gray.svg +4 -4
  91. package/dist/luna/images/play.svg +6 -6
  92. package/dist/luna/images/right-caret-light-gray.svg +4 -4
  93. package/dist/luna/images/right-caret-medium-gray.svg +4 -4
  94. package/dist/luna/images/search-highlighted.svg +9 -9
  95. package/dist/luna/images/search.svg +9 -9
  96. package/dist/luna/images/skipicon.svg +154 -154
  97. package/dist/luna/images/worldwide.svg +19 -19
  98. package/dist/luna/list-feats/ListFeat/ListFeat.js +2 -2
  99. package/dist/luna/list-feats/ListFeat/ListFeat.scss +153 -153
  100. package/dist/luna/list-feats/ListFeat1/ListFeat1.scss +68 -68
  101. package/dist/luna/list-feats/ListFeat2/ListFeat2.scss +31 -31
  102. package/dist/luna/list-feats/ListFeat3/ListFeat3.scss +28 -28
  103. package/dist/luna/list-feats/ListFeat4/ListFeat4.scss +41 -41
  104. package/dist/luna/list-feats/ListFeat5/ListFeat5.scss +43 -43
  105. package/dist/luna/list-feats/ListFeat6/ListFeat6.scss +63 -63
  106. package/dist/luna/list-feats/ListFeat7/ListFeat7.scss +13 -13
  107. package/dist/luna/list-feats/ListFeatCustom/ListFeatCustom.scss +4 -4
  108. package/dist/luna/other-organisms/Footer/Footer.scss +237 -237
  109. package/dist/luna/other-organisms/MarketoForm/MarketoForm.js +4 -3
  110. package/dist/luna/other-organisms/MarketoForm/MarketoForm.scss +56 -56
  111. package/dist/luna/other-organisms/NavBar/NavBar.js +369 -246
  112. package/dist/luna/other-organisms/NavBar/NavBar.scss +375 -375
  113. package/dist/luna/utils/generateBackgroundImage.js +1 -1
  114. package/package.json +80 -80
package/README.md CHANGED
@@ -1,1630 +1,1630 @@
1
- #Luna React Component Library
2
-
3
- The Luna React Component Library represents the organisms used by the Trimble Creative Strategies team in web development. It consists of a series of heros and featurettes. Examples of each with required an optional props can be found below. Using this library requires that the Terra React Component Library is also installed, which can be done with `npm i --save terra-component-lib`.
4
-
5
- ## External Libraries Used:
6
-
7
- - [React Helmet](https://www.npmjs.com/package/react-helmet) - for meta information in the document `<head>`
8
- - [React Player](https://www.npmjs.com/package/react-player) - for rendering YouTube and Vimeo videos
9
- - [React Reveal](https://www.npmjs.com/package/react-reveal) - for handling organism animation when they are scrolled into view
10
- - [React Scroll](https://www.npmjs.com/package/react-scroll) - for direct scrolling behavior from the navigation bar to specific organisms
11
- - [Vidyard](https://www.npmjs.com/package/@vidyard/embed-code) - for rendering Vidyard videos
12
- - [Node Sass v4.12.x](https://www.npmjs.com/package/node-sass) - for compiling SASS into CSS
13
-
14
- ## Luna Organisms
15
-
16
- #### Hero1 -
17
-
18
- ###### Props -
19
-
20
- - `content` **(required)** - object containing `images`, `header`, `text`, `ctas`
21
- - images **(required)** - object consisting of `desktop`, `tablet`, and `mobile` image objects
22
- - `desktop` - object with `url` and `altText` strings for the desktop image view
23
- - `url` - string that indicates the source of the image
24
- - `altText` - string that generates accessibility text for images
25
- - `tablet` - object with `url` and `altText` strings for the tablet image view
26
- - `url` - string that indicates the source of the image
27
- - `altText` - string that generates accessibility text for images
28
- - `mobile` - object with `url` and `altText` strings for the mobile image view
29
- - `url` - string that indicates the source of the image
30
- - `altText` - string that generates accessibility text for images
31
- - `header` **(required)** - string for generating header text
32
- - `text` - string for generating body text
33
- - `ctas` - object used to populate a `<CTASection>`
34
- - `ctaOne`: object with `text` and `url` strings
35
- - `ctaTwo`: object with `text` and `url` strings
36
- - `subCTA`: object with `text` and `url` strings
37
- - `contentSide` - string that indicates whether content is on the `right` or `left` side of the component. Defaults to `right`.
38
- - theme - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
39
- - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
40
- - `motion` - boolean that indicates whether to use the animation to render the component.
41
-
42
- ###### Example -
43
-
44
- ```
45
- const ctas = {
46
- ctaOne: {
47
- text: "Button",
48
- url: "/#"
49
- },
50
- ctaTwo: {
51
- text: "Button",
52
- url: "/#"
53
- },
54
- subCTA: {
55
- text: "Button",
56
- url: "/#"
57
- }
58
- };
59
-
60
- const images = {
61
- desktop: {
62
- url: "https://fpoimg.com/1600x1200",
63
- altText: "placeholder image"
64
- },
65
- tablet: {
66
- url: "https://fpoimg.com/800x600",
67
- altText: "placeholder image" },
68
- mobile: {
69
- url: "https://fpoimg.com/400x400",
70
- altText: "placeholder image"
71
- }
72
- };
73
-
74
- const content = {
75
- images,
76
- ctas,
77
- header: 'Design',
78
- text: 'I am text'
79
- }
80
-
81
- return (
82
- <Hero1
83
- content={content}
84
- motion
85
- theme='theme-2'
86
- />
87
- );
88
- ```
89
-
90
- #### Hero2
91
-
92
- ###### Props -
93
-
94
- - content **(required)** - object containing images, ctas, headers, subheaders, button
95
- - `images` **(required)** - an object that contains two objects, `desktop` and `mobile`. `desktop` is the 4x1 image object. `mobile` is the 2x1 image object. Each image object consists have `url` and `altText` strings.
96
- - `desktop` - object consisting of `url` and `altText` strings for generating the desktop-size image
97
- - `url` - string that points to the image source
98
- - `altText` - string that generates image accessibility text
99
- - `mobile` - object consisting of `url` and `altText` strings for generating the mobile-size image
100
- - `url` - string that points to the image source
101
- - `altText` - string that generates image accessibility text
102
- - `header` **(required)** - string used for generating header text
103
- - `subHeader` **(required)** - string used for generating sub-header text
104
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
105
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
106
- - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion. **Motion is currently not enabled in `Hero2`**
107
-
108
- ###### Example -
109
-
110
- ```
111
- const content = {
112
- header="Good Design is innovative",
113
- subHeader="Esse aliquip ad in et ut ipsum paEu elit consectetur aliquip excepteur fugiat ut qui dolor pariatur consectetur.riatur elit quis.",
114
- images: {
115
- desktop: {
116
- url: "http://fpoimg.com/1600x400?text=4:1",
117
- altText: "placeholder image"
118
- },
119
- mobile: {
120
- url: "http://fpoimg.com/1600x800?text=2:1",
121
- altText: "placeholder image"
122
- }
123
- },
124
- }
125
-
126
- return (
127
- <Hero2
128
- content={content}
129
- />
130
- );
131
- ```
132
-
133
- #### Hero3
134
-
135
- ###### Props -
136
-
137
- - `content` **(required)** - object containing `header`, `text`, `thumbnail`, and `video` data
138
- - `header` - string for the header content
139
- - `text` - string for the body text content
140
- - `thumbnail` - object for generating the thumbnail with `url` and `altText` strings
141
- - `url` **(required)** - string that points to the image source
142
- - `altText` - string for creating accessibility text
143
- - `video` - object for rendering the video embed
144
- - `url` - string that points to the video source on YouTube
145
- - `uuid` - string used for rendering Vidyard video embeds
146
- - `vidyard` - boolean for indicating that a Vidyard component should be rendered
147
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
148
- - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
149
- - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
150
-
151
- ---
152
-
153
- #### Hero4/Hero5
154
-
155
- ###### Props -
156
-
157
- - `content` **(required)** - object containing header, subHeader, text, ctas, and image data
158
- - `header` **(required)** - string for generating header text
159
- - `subHeader` - string for generating sub-header text
160
- - `text` - string for generating body text
161
- - `ctas` - object for generating a `<CTASection>` component
162
- - `image` - object for generating <img> element with url and altText strings
163
- - `zIndex` - number indicating the desired z-index of the background image.- backgroundColor - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
164
- - `theme` - string indicating the theme that styles the organism. Options are theme-1, theme-2, theme-3, theme-4, theme-5.
165
- - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
166
- - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
167
-
168
- ###### Example -
169
-
170
- ```
171
- const mockCTALinks = {
172
- ctaOne: {
173
- text: "Button",
174
- url: "/#"
175
- },
176
- ctaTwo: {
177
- text: "Button",
178
- url: "/#"
179
- },
180
- subCTA: {
181
- text: "Button",
182
- url: "/#"
183
- }
184
- };
185
-
186
- const mockImage = {
187
- url: "./1-to-1.png",
188
- altText: "placeholder"
189
- };
190
-
191
- const content = {
192
- ctas: mockCTALinks,
193
- image: mockImage,
194
- header: 'Header',
195
- text: 'I am text'
196
- }
197
-
198
- <Hero4
199
- content={content}
200
- motion
201
- theme='theme-1'
202
- />
203
- ```
204
-
205
- ---
206
-
207
- #### Hero6
208
-
209
- ###### Props -
210
-
211
- - `content` **(required)** - object containing images, header, text, ctas, and subHeader
212
- - `header` **(required)** - string for generating header text
213
- - `subHeader` - string for generating sub-header text
214
- - `text` **(required)** - string for generating body text
215
- - `ctas` - object for generating a `<CTASection>` component
216
- - `images` **(required)** - object consisting of three image objects, each with url and altText strings. The objects are `desktop`, `tablet`, and `mobile`.
217
- - `desktop` - object with `url` and `altText` strings for generating the desktop hero image
218
- - `url` - string that links to a 3x2 image source
219
- - `altText` - string for generating image accessibility text
220
- - `tablet` - object with `url` and `altText` strings for generating the desktop hero image
221
- - `url` - string that links to a 1x1 image source
222
- - `altText` - string for generating image accessibility text
223
- - `mobile` - object with `url` and `altText` strings for generating the desktop hero image
224
- - `url` - string that links to a 4x3 image source
225
- - `altText` - string for generating image accessibility text
226
- - `imageSide` - string used for indicating the side of the page that the image should render on. Defaults to right.
227
- - `theme` - string indicating the theme that styles the organism. Options are theme-1, theme-2, theme-3, theme-4, theme-5.
228
- - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
229
- - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
230
-
231
- ###### Example -
232
-
233
- ```
234
- const images = {
235
- desktop : {
236
- url: "http://fpoimg.com/2400x1600?text=3:2",
237
- altText: "placeholder image"
238
- },
239
- mobile: {
240
- url: "http://fpoimg.com/1600x1200?text=4:3",
241
- altText: "placeholder image"
242
- },
243
- tablet: {
244
- url: "http://fpoimg.com/1600x1600?text=1:1",
245
- altText: "placeholder image"
246
- }
247
- };
248
-
249
- const ctas = {
250
- ctaOne: {
251
- url: "/#",
252
- text: "Button"
253
- },
254
- ctaTwo: {
255
- url: "/#",
256
- text: "Button"
257
- }
258
- };
259
-
260
- const content {
261
- images,
262
- ctas,
263
- header: 'Header',
264
- text: 'Text!'
265
- }
266
-
267
- return (
268
- <Hero6
269
- imageSide="left"
270
- content={content}
271
- motion
272
- theme='theme-4'
273
- />
274
- );
275
- ```
276
-
277
- #### FilterHero
278
-
279
- ###### Props -
280
-
281
- - `header` - string for generating header text
282
- - `text` - string for generating body text.
283
- - `dropdowns` - an array used for generating Dropdown components - see example for structuring
284
- - `checkboxes` - an array used for generating Checkbox components - see example for structuring
285
- - `handleDropdownChange` - method used for handling new dropdown selections - takes the new selection and the associated name of the dropdown from the event object arguments.
286
- - `handleCheckboxChange` - method used for handling checkbox toggling - takes a boolean for the status of the checkbox and the name of the checkbox from the event object as arguments.
287
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
288
- - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
289
-
290
- ###### Example -
291
-
292
- ```
293
- handleDropdownChange = (selection, name) => {
294
- this.setState({[name]: selection})
295
- }
296
-
297
- handleCheckboxChange = (bool, name) => {
298
- this.setState({[name]: bool})
299
- }
300
-
301
- const header = 'I am a header'
302
- const text = 'Tempor ex esse ipsum sit eiusmod dolor mollit cupidatat elit cupidatat pariatur commodo non est.'
303
-
304
- const dropdownOne = {
305
- options: ["trade one", "trade two", "trade three"],
306
- defaultText: "All",
307
- name: "Trade"
308
- };
309
- const dropdownTwo = {
310
- options: ["category one", "category two", "category three"],
311
- defaultText: "All",
312
- name: "Category"
313
- };
314
- const dropdowns = [dropdownOne, dropdownTwo]
315
-
316
- const checkboxOne = {
317
- name: "Checkbox One"
318
- };
319
- const checkboxTwo = { name: "Checkbox Two" };
320
- const checkboxes = [checkboxOne, checkboxTwo];
321
-
322
- return (
323
- <FilterHero
324
- header={header}
325
- text={text}
326
- dropdowns={dropdowns}
327
- checkboxes={checkboxes}
328
- handleDropdownChange={this.handleDropdownChange}
329
- handleCheckboxChange={this.handleCheckboxChange}
330
- backgroundColor='#5e5e5e'
331
- />
332
- )
333
- ```
334
-
335
- ---
336
-
337
- #### Feat1
338
-
339
- ###### Props -
340
-
341
- - `content` **(required)** - object containing the objects content (see example)
342
- - `header` **(required)** - string for generating header text
343
- - `subHeader` - string for generating sub-header text
344
- - `text` **(required)** - string for generating body text
345
- - `cta` - object for generating a `<ButtonLink>` component requiring `url` and `text` strings
346
- - `image` **(required)** - object consisting of `url` and `altText` strings.
347
- - `backgroundImage` - url string that points to a background image address
348
- - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
349
- - `backgroundImageWidth` - number indicating the width of the background image in pixels
350
- - `backgroundImageHeight` - number indicating the height of the background image in pixels
351
- - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
352
- - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
353
- - `parallaxPosition` - number indicating the current scrollY position of the page, should come from Redux
354
- - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
355
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
356
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
357
- - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
358
-
359
- ###### Example -
360
-
361
- ```
362
- const content = {
363
- header: 'Header',
364
- subHeader: 'Sub Header',
365
- text: '<p>Sunt elit officia id aute esse dolore elit Lorem officia.</p>'
366
- cta: {
367
- url: '/',
368
- text: 'link'
369
- },
370
- image: {
371
- url: '/',
372
- altText: 'Image'
373
- }
374
- }
375
-
376
- const background = {
377
- backgroundImage: './image.png',
378
- backgroundPosition: 'right',
379
- backgroundImageWidth: 900,
380
- backgroundImageHeight: 900,
381
- backgroundOFfsetY: 0,
382
- backgroundOffsetX: 100
383
- }
384
-
385
- return (
386
- <Feat1
387
- content={content}
388
- motion
389
- background={background}
390
- parallaxPosition={this.props.parallaxPosition}
391
- theme='theme-2',
392
- id={data.id}
393
- />
394
- );
395
- ```
396
-
397
- ---
398
-
399
- #### Feat2A
400
-
401
- ###### Props -
402
-
403
- - `image` **(required)** - object with `url` and `altText` strings
404
- - `<AccordionFold>` **(required)** - child component for rendering folds in the `<Accordion>` component with each fold taking a `header` string as a prop
405
- - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
406
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
407
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
408
- - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
409
-
410
- ###### Example -
411
-
412
- ```
413
- import { AccordionFold } from 'terra-component-lib'
414
-
415
- const mockImage = {
416
- url: "https://fpoimg.com/500x500",
417
- altText: "Placeholder image"
418
- };
419
-
420
- return (
421
- <Feat2A
422
- image={mockImage}
423
- header="Good design is a thing, apparently."
424
- text="Veniam laboris laboris consequat et."
425
- >
426
- <AccordionFold header="Test one">
427
- <p>
428
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
429
- lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
430
- mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
431
- sollicitudin.
432
- </p>
433
- </AccordionFold>
434
- <AccordionFold header="Test two">
435
- <p>
436
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
437
- lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
438
- mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
439
- sollicitudin.
440
- </p>
441
- </AccordionFold>
442
- <AccordionFold header="Test three">
443
- <p>
444
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
445
- lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
446
- mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
447
- sollicitudin.
448
- </p>
449
- </AccordionFold>
450
- </Feat2>
451
- );
452
- ```
453
-
454
- ---
455
-
456
- #### Feat2B
457
-
458
- ###### Props -
459
-
460
- - content **(required)** - object containing images and cards (see Example)
461
- - `cards` **(required)** - array of objects used for generating `IconListItem` components with `text` and `header` strings
462
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
463
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
464
- - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
465
-
466
- ###### Example -
467
-
468
- ```
469
- const content = {
470
- images: {
471
- desktop: {
472
- url: "http://fpoimg.com/1600x400?text=4:1",
473
- altText: "placeholder image"
474
- },
475
- mobile: {
476
- url: "http://fpoimg.com/1600x800?text=2:1",
477
- altText: "placeholder image"
478
- }
479
- },
480
- cards: [
481
- {
482
- header: "Header",
483
- text:
484
- "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
485
- },
486
- {
487
- header: "Header",
488
- text:
489
- "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
490
- },
491
- {
492
- header: "Header",
493
- text:
494
- "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
495
- }
496
- ]
497
- }
498
-
499
- return (
500
- <Feat2B
501
- content={content}
502
- motion
503
- theme='theme-2'
504
- id={data.id}
505
- />
506
- );
507
- ```
508
-
509
- ---
510
-
511
- #### Feat3
512
-
513
- ###### Description -
514
-
515
- Featurette with a large image, header, and sub-header text
516
-
517
- ###### Props -
518
-
519
- - `content` **(required)** - object containing, images, header, and text
520
- - `header` - string used for generating the feat header
521
- - `subHeader` - string used for generating the feat sub-header
522
- - `images` - object containing mobile and desktop images
523
- - `mobile` - object containing the mobile image source and alt text
524
- - `url` - string pointing to the image source
525
- - `altText` - string used for assisted alternate text for screen readers
526
- - `desktop` - object containing the desktop image source and alt text
527
- - `url` - string pointing to the image source
528
- - `altText` - string used for assisted alternate text for screen readers
529
- - `motion` - boolean indicating if component animation is active
530
- - `id` - string used for generating the component's id, defaults to the header text (spaces removed)
531
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
532
-
533
- ###### Example -
534
-
535
- ```
536
- const content = {
537
- header: "Feat 3 Header",
538
- subHeader: "This is sub-header text",
539
- images: {
540
- mobile: {
541
- url: "www.image.com/mobile-image.jpg",
542
- altText: "image alt text
543
- },
544
- desktop: {
545
- url: "www.image.com/desktop-image.jpg",
546
- altText: "image alt text
547
- }
548
- },
549
- theme: "theme-2",
550
- motion: true
551
- }
552
-
553
- return <Feat3 content={content} />
554
- ```
555
-
556
- ---
557
-
558
- #### Feat4
559
-
560
- ###### Props -
561
-
562
- - content **(required)** - object containing, ctas, headers, subheaders
563
-
564
- - `header` **(required)** - string used for generating header text
565
- - `subHeader` **(required)** - string used for generating sub-header text
566
-
567
- - background - object containing `backgroundImage` which value is a string, `backgroundPosition` which value is a number, `backgroundColor` which value is a string, `backgroundOffsetX` which value is a number, `backgroundOffsetY` which value is a number, `backgroundImageHeight` which value is a number and `backgroundImageWidth` which value is anumber
568
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
569
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
570
- - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion.
571
-
572
- ###### Example -
573
-
574
- ```
575
- const content = {
576
- header="Good Design is innovative",
577
- subHeader="Esse aliquip ad in et ut ipsum paEu elit consectetur aliquip excepteur fugiat ut qui dolor pariatur consectetur.riatur elit quis.",
578
- const ctas = {
579
- ctaOne: {
580
- text: "Button",
581
- url: "/#"
582
- },
583
- ctaTwo: {
584
- text: "Button",
585
- url: "/#"
586
- }
587
- };
588
- }
589
-
590
- return (
591
- <Feat4
592
- content={content}
593
- />
594
- );
595
- ```
596
-
597
- ---
598
-
599
- #### Feat5
600
-
601
- ###### Props -
602
-
603
- - `dumplings` **(required)** - an array of objects used for generating `<Dumpling>` components; see the Terra component library for requirements
604
- - `type` - string used to determine whether or not small or large dumplings are used (`'a'` is large, `'b'` is small)
605
- - `header` **(required)** - string used for generating header text
606
- - `subHeader` - string used for generating sub-header text
607
- - `backgroundImage` - url string that points to a background image address
608
- - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
609
- - `backgroundImageWidth` - number indicating the width of the background image in pixels
610
- - `backgroundImageHeight` - number indicating the height of the background image in pixels
611
- - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
612
- - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
613
- - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
614
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
615
- - `className` - string that is interpolated into the organisms class for targeted styling and/or manipulation
616
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
617
- - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
618
- - `motionDirection` - string indicating the direction that the component should travel from as it fades in.
619
- - `motionDistance` - string indicating the distance that the component travels during motion
620
-
621
- ###### Example -
622
-
623
- ```
624
- const mockDumplings = [
625
- {
626
- header: "Dumplin'",
627
- link: { url: "/#" },
628
- size: "small",
629
- icon: { type: "enclosed-check-dark-48px", size: "48px" }
630
- },
631
- {
632
- header: "Dumplin'",
633
- link: { url: "/#" },
634
- size: "small",
635
- icon: { type: "enclosed-check-dark-48px", size: "48px" }
636
- }
637
- ];
638
-
639
- return (
640
- <Feat5
641
- dumplings={mockDumplings}
642
- type="a"
643
- header="Design is design"
644
- subHeader="It's like, this thing, you know?"
645
- />
646
- );
647
- ```
648
-
649
- ---
650
-
651
- #### Feat6
652
-
653
- ###### Props -
654
-
655
- - content **(required)** - object containing quotes, ctas, button
656
-
657
- - quote (required) - object consisting of text, source, and sourceTitle strings
658
- - `images` **(required)** - an object that contains two objects, `desktop` and `mobile`. `desktop` is the 4x1 image object. `mobile` is the 2x1 image object. Each image object consists have `url` and `altText` strings.
659
-
660
- - `header` **(required)** - string used for generating header text
661
- - `subHeader` **(required)** - string used for generating sub-header text
662
-
663
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
664
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
665
- - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion.
666
-
667
- ###### Example -
668
-
669
- ```
670
- const content = {
671
- image:{
672
- url: "http://fpoimg.com/800x800",
673
- altText: "placeholder image"
674
- },
675
- quote:{
676
- text: `Excepteur incididunt magna commodo amet est fugiat."`,
677
- source: "Leonard Sciarra",
678
- sourceTitle: "Senior Associate at Gensler, AIA, ASHRAE, LEED AP+"
679
- },
680
- cta:{
681
- text: "CTA",
682
- url: "/#"
683
- },
684
- }
685
-
686
- return (
687
- <Feat6
688
- content={content}
689
- />
690
-
691
- ```
692
-
693
- ---
694
-
695
- #### Feat7
696
-
697
- ###### Props -
698
-
699
- - `content` **(required)** - array of objects use for generating 'cards' consisting of `header`, `text`, and `url` strings.
700
- - `header` **(required)** - string used for generating header text
701
- - `backgroundImage` - url string that points to a background image address
702
- - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
703
- - `backgroundImageWidth` - number indicating the width of the background image in pixels
704
- - `backgroundImageHeight` - number indicating the height of the background image in pixels
705
- - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
706
- - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
707
- - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
708
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
709
- - `className` - string that is interpolated into the organisms class for targeted styling and/or manipulation
710
- - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
711
- - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
712
- - `motionDirection` - string indicating the direction that the component should travel from as it fades in.
713
- - `motionDistance` - string indicating the distance that the component travels during motion
714
-
715
- ###### Example -
716
-
717
- ```
718
- const content = [
719
- {
720
- header: "Design!",
721
- text:
722
- "Enim laborum ad anim laborum ad minim ipsum proident est cillum aliqua. Irure laboris aute ullamco ad Lorem et culpa id commodo quis sunt labore in id.",
723
- url: "/#"
724
- },
725
- {
726
- header: "Aesthetics!",
727
- text:
728
- "Enim laborum ad anim laborum ad minim ipsum proident est cillum aliqua.",
729
- url: "/#"
730
- }
731
- ];
732
- return <Feat7 header="I am a header" content={content} />;
733
- ```
734
-
735
- ---
736
-
737
- #### ParallaxBackground
738
-
739
- ###### Props -
740
-
741
- - `backgroundImage` - string for the URL that points to the background image to be rendered
742
- - `speed` - integer used for determining the speed of the parallax effect. Defaults to `2`. A speed of `1` will keep the background image fixed, while a speed of `2` will cause it to scroll at half speed.
743
- - `styles` - object of style properties that are passed to the parent container.
744
- - `children` - JSX passed inside the tags that will be rendered within the container and will scroll at normal speed.
745
-
746
- ###### Example -
747
-
748
- ```
749
- const backgroundImage = 'https://www.images.com/images/image.jpg
750
-
751
- return (
752
- <ParallaxBackground
753
- backgroundImage={backgroundImage}
754
- styles={{padding: '0 40px'}}
755
- speed={1.4}
756
- >
757
- <p>Content!</p>
758
- </ParallaxBackground>
759
- )
760
- ```
761
-
762
- #### NavBar
763
-
764
- ###### Notes -
765
-
766
- This component uses the `react-slidedown` library for the innerpage navigation links in the `utilityNav`. The `link.url` string should be a reference to the name of the `<Element>` that wraps the cooresponding organism that the window should scroll to.
767
-
768
- ###### Props -
769
-
770
- - `rightLinks` - array of objects used for generating links to the right of the search icon. Each object requires `url` and `text` strings.
771
- - `logo` **(required)** - object consisting of `url` and `altText` strings (for generating the logo image) in addition to a link object with a `url` string for generating the `href` property.
772
- - `divisionName` **(required)** - string used for generating the name of the Trimble division that is to the right of the logo.n
773
- - `navCTA` - object consiting of a `className` string for formating the button (see Terra buttons) and a `link` object with `url` and `text` strings used for generating the CTA in the lower right corner of the Nav
774
- - `navOptions` - array of objects used for generating the middle section of the nav. All objects will have a type indicating whether to render a (`MegaMenu`), a simple drop down of links (`miniMenus`), or a single link (`singleLink`). See examples below on how to load up these objects. The `MegaMenu` can both render a links both with and without subcategories.
775
- - `utilityNav` - object consisting of a `pageTitle` string as well as a `links` array of objects consisting of `text` and `url` strings. See example below.
776
- - `currentLanguage` - object with `region` and `language` strings that indicate the current region and language selected.
777
- - `languageSelectorData` - object consisting of data needed to populate the `LanguageSelector` component. See example below.
778
- - `setLanguage` - method used to set the region and language, which it takes as string key/values in an object as an argument
779
- - `location` - prop used to close the mobile menu when a user clicks on one of the rightLinks. In your project, pass in `location={this.props.location}`
780
-
781
- ###### Example -
782
-
783
- ```
784
- const rightLinks = [
785
- {
786
- url: "/#",
787
- text: "Support"
788
- }
789
- ];
790
-
791
- const logo = {
792
- url: Logo (should be imported in the application),
793
- altText: 'Trimble Logo',
794
- link: {
795
- url: 'www.trimble.com'
796
- }
797
- };
798
-
799
- const divisionName = 'Geospatial';
800
- const location = 'N. America';
801
-
802
- const navCTA = {
803
- className: 'ter-button--primary--1',
804
- link: {
805
- url: '/#',
806
- text: 'Contact Sales'
807
- }
808
- }
809
-
810
- const location = this.props.location
811
-
812
- const utilityNav = {
813
- pageTitle: "Trimble Accubid Enterprise",
814
- links: [
815
- {
816
- text: "Product Anchor One",
817
- url: "/#"
818
- },
819
- {
820
- text: "Product Anchor Two",
821
- url: "/#"
822
- }
823
- ]
824
- };
825
-
826
- const megaMenu = {
827
- type: "mega menu",
828
- bottomLink: {
829
- url: "/#",
830
- text: "All Products"
831
- },
832
- text: "Products",
833
- links: [
834
- {
835
- text: "Mechanical",
836
- links: [
837
- {
838
- url: "/#",
839
- text: "BIM Collaboration"
840
- },
841
- {
842
- url: "/#",
843
- text: "MEP Content"
844
- }
845
- ]
846
- },
847
- {
848
- text: "Electrical",
849
- links: [
850
- {
851
- url: "/#",
852
- text: "Design/Detailing"
853
- },
854
- {
855
- url: "/#",
856
- text: "Project Management"
857
- }
858
- ]
859
- },
860
- {
861
- text: "Plumbing",
862
- link: {url: "/#"}
863
- },
864
- ]
865
- };
866
-
867
- const miniMenus = [
868
- {
869
- type: "mini menu",
870
- text: "Services",
871
- links: [
872
- {
873
- url: "/#",
874
- text: "Link One"
875
- },
876
- {
877
- url: "/#",
878
- text: "Link Two"
879
- }
880
- ]
881
- },
882
- {
883
- type: "mini menu",
884
- text: "Resources",
885
- links: [
886
- {
887
- url: "/#",
888
- text: "Link One"
889
- },
890
- {
891
- url: "/#",
892
- text: "Link Two"
893
- }
894
- ]
895
- }
896
- ];
897
-
898
- const singleLink = {
899
- type: "link",
900
- url: "/#",
901
- text: "Process"
902
- };
903
-
904
- const languageSelectorData = {
905
- labels: {
906
- currentRegion: "Current Region",
907
- cancel: "Cancel",
908
- save: "Save"
909
- },
910
- regions: [
911
- {
912
- region: "North America",
913
- languages: [
914
- "EN: English (US)",
915
- "EN-UK: English (UK)",
916
- "FR: French",
917
- "DE: German",
918
- "NL: Dutch"
919
- ]
920
- },
921
- {
922
- region: "UK and Middle East",
923
- languages: [
924
- "EN: English (US)",
925
- "EN-UK: English (UK)",
926
- "FR: French",
927
- "DE: German",
928
- "NL: Dutch"
929
- ]
930
- },
931
- {
932
- region: "France",
933
- languages: [
934
- "EN: English (US)",
935
- "EN-UK: English (UK)",
936
- "FR: French",
937
- "DE: German",
938
- "NL: Dutch"
939
- ]
940
- },
941
- {
942
- region: "Germany and Austria",
943
- languages: [
944
- "EN: English (US)",
945
- "EN-UK: English (UK)",
946
- "FR: French",
947
- "DE: German",
948
- "NL: Dutch"
949
- ]
950
- },
951
- {
952
- region: "Switzerland",
953
- languages: [
954
- "EN: English (US)",
955
- "EN-UK: English (UK)",
956
- "FR: French",
957
- "DE: German",
958
- "NL: Dutch"
959
- ]
960
- }
961
- ],
962
- currentRegionLanguage: {
963
- region: "UK and Middle East",
964
- language: "EN-UK"
965
- },
966
-
967
- activeRegion: {
968
- region: "UK and Middle East",
969
- language: "EN: English"
970
- },
971
-
972
- companyDivision: "MEP"
973
- };
974
-
975
-
976
- return (
977
- <NavBar
978
- location={location}
979
- rightLinks={rightLinks}
980
- currentLanguage={{ region: "N. America", language: "EN: English" }}
981
- logo={logo}
982
- divisionName="MEP"
983
- navCTA={navCTA}
984
- navOptions={[megaMenu, ...miniMenus, singleLink]}
985
- utilityNav={utilityNav}
986
- languageSelectorData={languageSelectorData}
987
- />
988
- )
989
-
990
- ```
991
-
992
- ---
993
-
994
- #### Footer
995
-
996
- ###### Props -
997
-
998
- - `logo` - object consisting of a `url` and `altText` strings
999
- - `trimbleText` - string from generating the main content on the left side
1000
- - `trimbleLink` - object consisting of `text` and `url` strings for generating a link below the left-side text
1001
- - `siteText` - text string that appears above the secondary link
1002
- - `siteLink` - object consisting of `url` and `text` string for generating the secondary link on the left side
1003
- - `linksOne` - array of objects consisting of `url` and `text` strings for generating the links that take up the left-center of the footer space
1004
- - `linksTwo` - array of objects consisting of `url` and `text` strings for generating the links that take up the right-center of the footer space
1005
- - `socialLinks` - array of objects consiting of an `icon` object (`url` and `altText` strings) and a link object (`url` string)
1006
- - `legalStuff` - array of objects consisting of `url` and `text` strings for generating the links that take up the bottom of the footer space. The `url` string is optional, as the component will simply render a `<p>` tags instead.
1007
-
1008
- ###### Example -
1009
-
1010
- ```
1011
- const logo = {
1012
- url: Logo,
1013
- altText: "fpo"
1014
- };
1015
-
1016
- const trimbleText =
1017
- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";
1018
-
1019
- const trimbleLink = {
1020
- url: "/#",
1021
- text: "More About Trimble"
1022
- };
1023
-
1024
- const siteText = "Text for secondary link information";
1025
-
1026
- const siteLink = {
1027
- url: "/#",
1028
- text: "link.trimble.com"
1029
- };
1030
-
1031
- const linksOne = [
1032
- { url: "/#", text: "Label Left" },
1033
- { url: "/#", text: "Label Left" },
1034
- { url: "/#", text: "Label Left" }
1035
- ];
1036
-
1037
- const linksTwo = [
1038
- { url: "/#", text: "Label Right" },
1039
- { url: "/#", text: "Label Right" },
1040
- { url: "/#", text: "Label Right" }
1041
- ];
1042
-
1043
- const socialLinks = [
1044
- {
1045
- icon: {
1046
- url: Facebook,
1047
- altText: "fpo"
1048
- },
1049
- link: {
1050
- url: "/#"
1051
- }
1052
- },
1053
- {
1054
- icon: {
1055
- url: Twitter,
1056
- altText: "fpo"
1057
- },
1058
- link: {
1059
- url: "/#"
1060
- }
1061
- },
1062
- {
1063
- icon: {
1064
- url: YouTube,
1065
- altText: "fpo"
1066
- },
1067
- link: {
1068
- url: "/#"
1069
- }
1070
- },
1071
- {
1072
- icon: {
1073
- url: LinkedIn,
1074
- altText: "fpo"
1075
- },
1076
- link: {
1077
- url: "/#"
1078
- }
1079
- },
1080
- {
1081
- icon: {
1082
- url: Facebook,
1083
- altText: "fpo"
1084
- },
1085
- link: {
1086
- url: "/#"
1087
- }
1088
- },
1089
- {
1090
- icon: {
1091
- url: Twitter,
1092
- altText: "fpo"
1093
- },
1094
- link: {
1095
- url: "/#"
1096
- }
1097
- },
1098
- {
1099
- icon: {
1100
- url: YouTube,
1101
- altText: "fpo"
1102
- },
1103
- link: {
1104
- url: "/#"
1105
- }
1106
- },
1107
- {
1108
- icon: {
1109
- url: LinkedIn,
1110
- altText: "fpo"
1111
- },
1112
- link: {
1113
- url: "/#"
1114
- }
1115
- }
1116
- ];
1117
-
1118
- const privacyStatement = {
1119
- url: "/#",
1120
- text: "Privacy Statement"
1121
- };
1122
-
1123
- const termsOfUse = {
1124
- url: "/#",
1125
- text: "Terms of Use"
1126
- };
1127
-
1128
- const copyright = {
1129
- url: "/#",
1130
- text: "Copyright"
1131
- };
1132
-
1133
- const legalStuff = [
1134
- {
1135
- url: "/#",
1136
- text: "Terms of Use"
1137
- },
1138
- {
1139
- url: "/#",
1140
- text: "Privacy Statement"
1141
- },
1142
- { text: "© 2019, Trimble Inc." }
1143
- ];
1144
-
1145
- return (
1146
- <Footer
1147
- trimbleText={trimbleText}
1148
- trimbleLink={trimbleLink}
1149
- siteText={siteText}
1150
- siteLink={siteLink}
1151
- linksOne={linksOne}
1152
- linksTwo={linksTwo}
1153
- logo={logo}
1154
- socialLinks={socialLinks}
1155
- legalStuff={legalStuff}
1156
- />
1157
- );
1158
- ```
1159
-
1160
- #### ListFeat1
1161
-
1162
- ###### Props -
1163
-
1164
- - `content` **(required)** - object containing images, ctas, text, variant, headers, subheaders, button, link, videos
1165
- - `cardOne` - an object that contains `header` and `text` keys with values that are strings.
1166
- - `cardTwo` - an object that contains `header` and `text` and `cta`. `header` has a value of a string. `text` has a value of a string. `cta` has a value of an object with key `url` with value of a string and key `text` with value of a string.
1167
- - `type` **(required)** - required to render the correct listFeat. ListFeat1 must be `list_feat_1`
1168
- - `sort` - boolean indicating whether or not cards should be sorted alphabetically by header
1169
- - `motion` - boolean used to indicate whether or not motion should be used
1170
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1171
-
1172
- ###### Example -
1173
-
1174
- ```
1175
- const content = {
1176
- sort: true,
1177
- header: "Hello everyone! This is a header. Enjoy!",
1178
- subheader: "This is truly wonderful.",
1179
- type: "list_feat_1",
1180
- image: { src: "https://fpoimg.com/500x500", alt: "placeholder" },
1181
- cardOne: {
1182
- header: "I am Card One Header",
1183
- text:
1184
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex",
1185
- cta: { url: "/#", text: "Click me!" }
1186
- },
1187
- cardTwo: {
1188
- header: "I am Card Two Header",
1189
- text:
1190
- "The purpose of lorem ipsum is to create a natural looking block of text (sentence, paragraph, page, etc.) that doesn't distract from the layout. A practice not without controversy, la",
1191
- cta: { url: "/#", text: "I am a button!" }
1192
- }
1193
- };
1194
-
1195
- return (
1196
- <ListFeat content={content} />
1197
- )
1198
- ```
1199
-
1200
- #### ListFeat2
1201
-
1202
- ###### Props -
1203
-
1204
- - `content` **(required)** - object containing text, headers, subheaders, and headShotdumplings
1205
- - `headShotdumplings` - array containing objects. Each indice is an object with two keys. The first key is `content` which value is an object containing `header` and `image` keys. `header` is a string and `image` is an object with keys `url` (which value is a string) and key `altText` which value is a string. The second key of each indice is `filter` which value is a string.
1206
- - `type` **(required)** - required to render the correct listFeat. ListFeat2 must be `list_feat_2`
1207
- - `motion` - boolean used to indicate whether or not motion should be used
1208
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1209
-
1210
- ###### Example -
1211
-
1212
- ```
1213
- const content = {
1214
- header: "Hello everyone! This is a header. Enjoy!",
1215
- subheader: "This is truly wonderful.",
1216
- type: "list_feat_2",
1217
- headShotdumplings: [
1218
- {
1219
- content: {
1220
- header: "Lorem Ipsum",
1221
- image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1222
- },
1223
- filter: "default"
1224
- },
1225
- {
1226
- content: {
1227
- header: "Nemo enim ipsam",
1228
- image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1229
- },
1230
- filter: "default"
1231
- },
1232
- {
1233
- content: {
1234
- header: "Sed ut perspiciatis",
1235
- image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1236
- },
1237
- filter: "default"
1238
- }
1239
- ]
1240
- };
1241
-
1242
- export const motion = {
1243
- motion: true,
1244
- motionDistance: "75px",
1245
- motionDirection: "bottom"
1246
- };
1247
-
1248
- return (
1249
- <ListFeat content={content} motion={motion}/>
1250
- )
1251
- ```
1252
-
1253
- #### ListFeat3
1254
-
1255
- ###### Props -
1256
-
1257
- - `content` **(required)** - object containing header, subHeader, type, cards
1258
- - `header` - key that has a string as a value
1259
- - `subHeader` - key that has a string as a value
1260
- - `cards` - array containing objects. Each indice is an object with three keys. The first key is `image` which value is an object containing `url` and `altText` keys. `url` and `altText` both have strings as values. The second key of each indice is `header` which value is a string. The third key of each indice is `link` which value is an object of `url` and `text`. `url` and `text` both have strings as values.
1261
- - `type` **(required)** - required to render the correct listFeat. ListFeat3 must be `list_feat_3`
1262
- - `motion` - boolean used to indicate whether or not motion should be used
1263
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1264
-
1265
- ###### Example -
1266
-
1267
- ```
1268
- const content = {
1269
- header: "Hello everyone! This is a header. Enjoy!",
1270
- subheader: "This is truly wonderful.",
1271
- type: "list_feat_3",
1272
- cards: [
1273
- {
1274
- image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1275
- header: "Here is a title! Woooo",
1276
- link: {
1277
- url: "/#",
1278
- text: "Link"
1279
- },
1280
- text:
1281
- "Ut in amet id proident commodo officia cillum. Aliqua id ex culpa labore duis minim fugiat proident ad deserunt qui."
1282
- },
1283
- {
1284
- image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1285
- header: "Here is a title! Woooo",
1286
- link: {
1287
- url: "/#",
1288
- text: "Link"
1289
- },
1290
- text:
1291
- "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1292
- },
1293
- {
1294
- image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1295
- header: "Here is a title! Woooo",
1296
- link: {
1297
- url: "/#",
1298
- text: "Link"
1299
- },
1300
- text:
1301
- " Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
1302
- }
1303
- ]
1304
- };
1305
-
1306
- const motion = {
1307
- motion: true,
1308
- motionDistance: "75px",
1309
- motionDirection: "bottom"
1310
- };
1311
-
1312
- return (
1313
- <ListFeat content={content} motion={motion}/>
1314
- )
1315
- ```
1316
-
1317
- #### ListFeat4
1318
-
1319
- ###### Props -
1320
-
1321
- - `content` **(required)** - object containing header, subHeader, type, cards
1322
- - `header` - key that has a string as a value
1323
- - `subHeader` - key that has a string as a value
1324
- - `dumplings` - array containing objects. Each indice is an object with four keys. The first key of each indice is `header` which value is a string. The second key of each indice is `link` which value is an object of `url`. `url` has a string as a value. The third key of each indice is `size` which has a string as a value. The fourth key of each indice is `icon` which value is an object containing `type` and `size` keys. `type` and `size` both have strings as values.
1325
- - `type` **(required)** - required to render the correct listFeat. ListFeat4 must be `list_feat_3`
1326
- - `motion` - boolean used to indicate whether or not motion should be used
1327
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1328
-
1329
- ###### Example -
1330
-
1331
- ```
1332
- const content = {
1333
- header: "Hello everyone! This is a header. Enjoy!",
1334
- subheader: "This is truly wonderful.",
1335
- type: "list_feat_4",
1336
- dumplings: [
1337
- {
1338
- header: "Lorem Ipsum",
1339
- link: { url: "/#" },
1340
- size: "small",
1341
- icon: { type: "enclosed-check-dark-48px", size: "48px" }
1342
- },
1343
- {
1344
- header: "Nemo enim ipsam voluptatem",
1345
- link: { url: "/#" },
1346
- size: "small",
1347
- icon: { type: "enclosed-check-dark-48px", size: "48px" }
1348
- },
1349
- {
1350
- header: "Sed ut perspiciatis, unde omnis",
1351
- link: { url: "/#" },
1352
- size: "small",
1353
- icon: { type: "enclosed-check-dark-48px", size: "48px" }
1354
- }
1355
- ]
1356
- };
1357
-
1358
- const motion = {
1359
- motion: true,
1360
- motionDistance: "75px",
1361
- motionDirection: "bottom"
1362
- };
1363
-
1364
- return (
1365
- <ListFeat content={content} motion={motion}/>
1366
- )
1367
- ```
1368
-
1369
- #### ListFeat5
1370
-
1371
- ###### Props -
1372
-
1373
- - `content` **(required)** - object containing header, subHeader, type, cards
1374
- - `header` - key that has a string as a value
1375
- - `subHeader` - key that has a string as a value -`insertCardHTML` - key that is a boolean
1376
- - `iconListItems` - array containing objects. Each indice is an object with two keys. The first key is `header` which has a string as a value. The second key is `text` which has a string as a value.
1377
- - `type` **(required)** - required to render the correct listFeat. ListFeat5 must be `list_feat_3`
1378
- - `motion` - boolean used to indicate whether or not motion should be used
1379
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1380
-
1381
- ###### Example -
1382
-
1383
- ```
1384
- const content = {
1385
- header: "Hello everyone! This is a header. Enjoy!",
1386
- subheader: "This is truly wonderful.",
1387
- type: "list_feat_5",
1388
- insertCardHTML: true,
1389
- iconListItems: [
1390
- {
1391
- header: "Good design is innovative",
1392
- text:
1393
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1394
- },
1395
- {
1396
- header: "Good design is innovative",
1397
- text:
1398
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1399
- },
1400
- {
1401
- header: "Good design is innovative",
1402
- text:
1403
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1404
- },
1405
- {
1406
- header: "Good design is innovative",
1407
- text:
1408
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1409
- },
1410
- {
1411
- header: "Good design is innovative",
1412
- text:
1413
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1414
- },
1415
- {
1416
- header: "Good design is innovative",
1417
- text:
1418
- "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1419
- }
1420
- ]
1421
- };
1422
-
1423
- const motion = {
1424
- motion: true,
1425
- motionDistance: "75px",
1426
- motionDirection: "bottom"
1427
- };
1428
-
1429
- return (
1430
- <ListFeat content={content} motion={motion}/>
1431
- )
1432
- ```
1433
-
1434
- #### ListFeat6
1435
-
1436
- ###### Props -
1437
-
1438
- - `content` **(required)** - object containing header, subHeader, type, cards
1439
- - `header` - key that has a string as a value
1440
- - `subHeader` - key that has a string as a value
1441
- - `images` - key that has an object as a value. Object has `src` and `altText` keys which values are strings.
1442
- - `list` - array containing strings in each indice. The strings of each indice will be rendered onto the component as html tags
1443
- - `type` **(required)** - required to render the correct listFeat. ListFeat6 must be `list_feat_3`
1444
- - `motion` - boolean used to indicate whether or not motion should be used
1445
- - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1446
-
1447
- ###### Example -
1448
-
1449
- ```
1450
- const content = {
1451
- header: "Hello everyone! This is a header. Enjoy!",
1452
- subheader: "This is truly wonderful.",
1453
- images: { src: "https://fpoimg.com/500x500", alt: "placeholder" },
1454
- type: "list_feat_6",
1455
- list: [
1456
- "<h4>Viewer Edition</h4><p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p><p>Donec sit amet arcu nibh. Donec vitae dolor nunc.</p><p>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</p>",
1457
- "<h4>Field Data Edition</h4>p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p><p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p>",
1458
- "<h4>A list of great ideas:</h4><ul><li>Lorem ipsum dolor sit amet consectetur adipiscing elit</li><li>Donec sit amet arcu nibh Donec vitae dolor nunc.</li><li>Cras vel pharetra augue at sollicitudin velit. Vivamus dapibus quis nisi et vestibulum.</li><li>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</li><ul>",
1459
- "<h4>Here It Is: </h4><ul><li>Lorem ipsum dolor sit amet consectetur adipiscing elit</li><li>Donec sit amet arcu nibh Donec vitae dolor nunc.</li><li>Cras vel pharetra augue at sollicitudin velit. Vivamus dapibus quis nisi et vestibulum.</li><li>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</li><li>It's not Latin, though it looks like it, and it actually says nothing,</li><ul>"
1460
- ]
1461
- };
1462
-
1463
- const motion = {
1464
- motion: true,
1465
- motionDistance: "75px",
1466
- motionDirection: "bottom"
1467
- };
1468
-
1469
- return (
1470
- <ListFeat content={content} motion={motion}/>
1471
- )
1472
- ```
1473
-
1474
- #### ListFeat7
1475
-
1476
- ###### Props -
1477
-
1478
- - `header` **(required)** - string for generating header text
1479
- - `subHeader` - string for generating sub-header text
1480
- - `type` **(required)** - required to render the correct listFeat. ListFeat7 must be `list_feat_7`
1481
- - `content` **(required)** - object containing images, ctas, text, variant, headers, subheaders, button, link, videos
1482
- - `card` - an array containing the following objects:
1483
- - `text` - string for generating body text
1484
- - `ctas` - object for generating a `<CTASection>` component
1485
- - `images` - object with keys `url` and `altText` with values as strings
1486
- - `video` - object with keys `url` and `allowFullScreen`. `url` has a value as a string. `allowFullScreen` is a boolean
1487
- - `uuid` - string used for rendering Vidyard video embeds
1488
- - `vidyard` - boolean for indicating that a Vidyard component should be rendered
1489
- - `thumbnail` - object with keys `url` and `altText` with values as strings, used for a thumbnail image in place of a video, while video is not playing
1490
- - `link` - object with keys `url` and `text` with values as strings.
1491
- - `motion` - boolean used to indicate whether or not motion should be used
1492
-
1493
- ###### Example -
1494
-
1495
- ```
1496
- export const mockContent = {
1497
- header: "Hello everyone! This is a header. Enjoy!",
1498
- subheader: "This is truly wonderful.",
1499
- type: "list_feat_7",
1500
- cards: [
1501
- {
1502
- video: {
1503
- url: "https://www.youtube.com/embed/UY7r0juBF8Y",
1504
- allowFullScreen: "true"
1505
- },
1506
- thumbnail: {
1507
- url: "https://fpoimg.com/2880x1920",
1508
- altText: "fpo"
1509
- },
1510
- header: "Here is a title! Woooo",
1511
- link: {
1512
- url: "/#",
1513
- text: "Link"
1514
- },
1515
- text:
1516
- "Ut in amet id proident commodo officia cillum. Aliqua id ex culpa labore duis minim fugiat proident ad deserunt qui."
1517
- },
1518
- {
1519
- video: {
1520
- url: "https://www.youtube.com/watch?v=sBws8MSXN7A",
1521
- allowFullScreen: "true"
1522
- },
1523
- thumbnail: {
1524
- url: "https://fpoimg.com/2880x1920",
1525
- altText: "fpo"
1526
- },
1527
- header: "This is a React Tutorial. Enjoy!",
1528
- link: {
1529
- url: "/#",
1530
- text: "Link"
1531
- },
1532
- text:
1533
- "Watch this and you'll be able to make beautiful applications using the wonderful framework of React, built by Facebook"
1534
- },
1535
- {
1536
- image: { url: "https://fpoimg.com/400x225", altText: "FPO Image" },
1537
- header: "Here is a title! Woooo",
1538
- link: {
1539
- url: "/#",
1540
- text: "Link"
1541
- },
1542
- text:
1543
- "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1544
- },
1545
- {
1546
- header: "Here is a title! Woooo",
1547
- subheader: "sub header! ",
1548
- text:
1549
- "It's difficult to find examples of lorem ipsum in use before Letraset made it popular as a dummy text in the 1960s, although McClintock says he remembers coming across the lorem ipsum passage in a book of old metal type samples. So far he hasn't relocated where he once saw the passage, but the popularity of Cicero in the 15th century supports the theory that the filler text has been used for centuries"
1550
- },
1551
- {
1552
- image: { url: "https://fpoimg.com/400x225", altText: "FPO Image" },
1553
- header: "Here is a title! Woooo",
1554
- link: {
1555
- url: "/#",
1556
- text: "Link"
1557
- },
1558
- text:
1559
- "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1560
- }
1561
- ]
1562
- };
1563
-
1564
- export const motion = {
1565
- motion: true,
1566
- motionDistance: "75px",
1567
- motionDirection: "bottom"
1568
- };
1569
-
1570
- return (
1571
- <ListFeat content={content} motion={motion} />
1572
- )
1573
- ```
1574
-
1575
- #### EventCard
1576
-
1577
- ###### Props -
1578
-
1579
- - `content` **(required)** - object used for delivering content strings to the EventCard
1580
- - `date` - string that generates the dates of the event
1581
- - `year` - string that generates the year of the event
1582
- - `industry` - string that indicates which industry the event applies to (i.e 'construction')
1583
- - `industryLabel` - a string to generate the label that preceedes the industry text
1584
- - `name` - a string used to indicate the name of the event
1585
- - `location` - a string used for indicating the location of the event, can also be used for event description
1586
- - `link` - an object for generating the link that the card sends the user to
1587
- - `url` - string that creates the `href` or `to` props depending on whether an `<a>` or React Router `<NavLink>` is generated
1588
- - `images` - object for generating the 95px x 95px image
1589
- - `url` - source of the image
1590
- - `altText` - alt string for the image
1591
-
1592
- ###### Example -
1593
-
1594
- ```
1595
- const date = "Nov 18 - Nov 19";
1596
- const year = "2019";
1597
- const image = { url: "http://fpoimg.com/95x95" };
1598
- const industry = "Construction";
1599
- const industryLabel = "Industry";
1600
- const name = "Trimble Digital Construction Summit - The Bridge to BIM";
1601
- const location = "Tivoli Hotel and Congress Center, Copenhagen";
1602
- const content = {
1603
- date,
1604
- year,
1605
- image,
1606
- industry,
1607
- industryLabel,
1608
- name,
1609
- location,
1610
- link: { url: "/wut" }
1611
- };
1612
-
1613
- return (
1614
- <div style={{ maxWidth: "1200px", margin: "auto", padding: "0 32px" }}>
1615
- <EventCard content={content} />
1616
- </div>
1617
- )
1618
-
1619
- ```
1620
-
1621
- #### SupportCard -
1622
-
1623
- - `content` **(required)** - object used for delivering content strings to the SupportCard
1624
- - `header` - string for generating header text
1625
- - `headerLabel` - string that preceeds the header text with an added colon
1626
- - `subHeader` - string for generating sub-header text
1627
- - `subHeaderLabel` - string that preceeds the sub-header text with an added colon
1628
- - `product` - product name that succeeds the sub-header
1629
- - `sections` - array of objects with `value` and `format` strings for generating columns
1630
- - -
1
+ #Luna React Component Library
2
+
3
+ The Luna React Component Library represents the organisms used by the Trimble Creative Strategies team in web development. It consists of a series of heros and featurettes. Examples of each with required an optional props can be found below. Using this library requires that the Terra React Component Library is also installed, which can be done with `npm i --save terra-component-lib`.
4
+
5
+ ## External Libraries Used:
6
+
7
+ - [React Helmet](https://www.npmjs.com/package/react-helmet) - for meta information in the document `<head>`
8
+ - [React Player](https://www.npmjs.com/package/react-player) - for rendering YouTube and Vimeo videos
9
+ - [React Reveal](https://www.npmjs.com/package/react-reveal) - for handling organism animation when they are scrolled into view
10
+ - [React Scroll](https://www.npmjs.com/package/react-scroll) - for direct scrolling behavior from the navigation bar to specific organisms
11
+ - [Vidyard](https://www.npmjs.com/package/@vidyard/embed-code) - for rendering Vidyard videos
12
+ - [Node Sass v4.12.x](https://www.npmjs.com/package/node-sass) - for compiling SASS into CSS
13
+
14
+ ## Luna Organisms
15
+
16
+ #### Hero1 -
17
+
18
+ ###### Props -
19
+
20
+ - `content` **(required)** - object containing `images`, `header`, `text`, `ctas`
21
+ - images **(required)** - object consisting of `desktop`, `tablet`, and `mobile` image objects
22
+ - `desktop` - object with `url` and `altText` strings for the desktop image view
23
+ - `url` - string that indicates the source of the image
24
+ - `altText` - string that generates accessibility text for images
25
+ - `tablet` - object with `url` and `altText` strings for the tablet image view
26
+ - `url` - string that indicates the source of the image
27
+ - `altText` - string that generates accessibility text for images
28
+ - `mobile` - object with `url` and `altText` strings for the mobile image view
29
+ - `url` - string that indicates the source of the image
30
+ - `altText` - string that generates accessibility text for images
31
+ - `header` **(required)** - string for generating header text
32
+ - `text` - string for generating body text
33
+ - `ctas` - object used to populate a `<CTASection>`
34
+ - `ctaOne`: object with `text` and `url` strings
35
+ - `ctaTwo`: object with `text` and `url` strings
36
+ - `subCTA`: object with `text` and `url` strings
37
+ - `contentSide` - string that indicates whether content is on the `right` or `left` side of the component. Defaults to `right`.
38
+ - theme - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
39
+ - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
40
+ - `motion` - boolean that indicates whether to use the animation to render the component.
41
+
42
+ ###### Example -
43
+
44
+ ```
45
+ const ctas = {
46
+ ctaOne: {
47
+ text: "Button",
48
+ url: "/#"
49
+ },
50
+ ctaTwo: {
51
+ text: "Button",
52
+ url: "/#"
53
+ },
54
+ subCTA: {
55
+ text: "Button",
56
+ url: "/#"
57
+ }
58
+ };
59
+
60
+ const images = {
61
+ desktop: {
62
+ url: "https://fpoimg.com/1600x1200",
63
+ altText: "placeholder image"
64
+ },
65
+ tablet: {
66
+ url: "https://fpoimg.com/800x600",
67
+ altText: "placeholder image" },
68
+ mobile: {
69
+ url: "https://fpoimg.com/400x400",
70
+ altText: "placeholder image"
71
+ }
72
+ };
73
+
74
+ const content = {
75
+ images,
76
+ ctas,
77
+ header: 'Design',
78
+ text: 'I am text'
79
+ }
80
+
81
+ return (
82
+ <Hero1
83
+ content={content}
84
+ motion
85
+ theme='theme-2'
86
+ />
87
+ );
88
+ ```
89
+
90
+ #### Hero2
91
+
92
+ ###### Props -
93
+
94
+ - content **(required)** - object containing images, ctas, headers, subheaders, button
95
+ - `images` **(required)** - an object that contains two objects, `desktop` and `mobile`. `desktop` is the 4x1 image object. `mobile` is the 2x1 image object. Each image object consists have `url` and `altText` strings.
96
+ - `desktop` - object consisting of `url` and `altText` strings for generating the desktop-size image
97
+ - `url` - string that points to the image source
98
+ - `altText` - string that generates image accessibility text
99
+ - `mobile` - object consisting of `url` and `altText` strings for generating the mobile-size image
100
+ - `url` - string that points to the image source
101
+ - `altText` - string that generates image accessibility text
102
+ - `header` **(required)** - string used for generating header text
103
+ - `subHeader` **(required)** - string used for generating sub-header text
104
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
105
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
106
+ - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion. **Motion is currently not enabled in `Hero2`**
107
+
108
+ ###### Example -
109
+
110
+ ```
111
+ const content = {
112
+ header="Good Design is innovative",
113
+ subHeader="Esse aliquip ad in et ut ipsum paEu elit consectetur aliquip excepteur fugiat ut qui dolor pariatur consectetur.riatur elit quis.",
114
+ images: {
115
+ desktop: {
116
+ url: "http://fpoimg.com/1600x400?text=4:1",
117
+ altText: "placeholder image"
118
+ },
119
+ mobile: {
120
+ url: "http://fpoimg.com/1600x800?text=2:1",
121
+ altText: "placeholder image"
122
+ }
123
+ },
124
+ }
125
+
126
+ return (
127
+ <Hero2
128
+ content={content}
129
+ />
130
+ );
131
+ ```
132
+
133
+ #### Hero3
134
+
135
+ ###### Props -
136
+
137
+ - `content` **(required)** - object containing `header`, `text`, `thumbnail`, and `video` data
138
+ - `header` - string for the header content
139
+ - `text` - string for the body text content
140
+ - `thumbnail` - object for generating the thumbnail with `url` and `altText` strings
141
+ - `url` **(required)** - string that points to the image source
142
+ - `altText` - string for creating accessibility text
143
+ - `video` - object for rendering the video embed
144
+ - `url` - string that points to the video source on YouTube
145
+ - `uuid` - string used for rendering Vidyard video embeds
146
+ - `vidyard` - boolean for indicating that a Vidyard component should be rendered
147
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
148
+ - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
149
+ - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
150
+
151
+ ---
152
+
153
+ #### Hero4/Hero5
154
+
155
+ ###### Props -
156
+
157
+ - `content` **(required)** - object containing header, subHeader, text, ctas, and image data
158
+ - `header` **(required)** - string for generating header text
159
+ - `subHeader` - string for generating sub-header text
160
+ - `text` - string for generating body text
161
+ - `ctas` - object for generating a `<CTASection>` component
162
+ - `image` - object for generating <img> element with url and altText strings
163
+ - `zIndex` - number indicating the desired z-index of the background image.- backgroundColor - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
164
+ - `theme` - string indicating the theme that styles the organism. Options are theme-1, theme-2, theme-3, theme-4, theme-5.
165
+ - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
166
+ - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
167
+
168
+ ###### Example -
169
+
170
+ ```
171
+ const mockCTALinks = {
172
+ ctaOne: {
173
+ text: "Button",
174
+ url: "/#"
175
+ },
176
+ ctaTwo: {
177
+ text: "Button",
178
+ url: "/#"
179
+ },
180
+ subCTA: {
181
+ text: "Button",
182
+ url: "/#"
183
+ }
184
+ };
185
+
186
+ const mockImage = {
187
+ url: "./1-to-1.png",
188
+ altText: "placeholder"
189
+ };
190
+
191
+ const content = {
192
+ ctas: mockCTALinks,
193
+ image: mockImage,
194
+ header: 'Header',
195
+ text: 'I am text'
196
+ }
197
+
198
+ <Hero4
199
+ content={content}
200
+ motion
201
+ theme='theme-1'
202
+ />
203
+ ```
204
+
205
+ ---
206
+
207
+ #### Hero6
208
+
209
+ ###### Props -
210
+
211
+ - `content` **(required)** - object containing images, header, text, ctas, and subHeader
212
+ - `header` **(required)** - string for generating header text
213
+ - `subHeader` - string for generating sub-header text
214
+ - `text` **(required)** - string for generating body text
215
+ - `ctas` - object for generating a `<CTASection>` component
216
+ - `images` **(required)** - object consisting of three image objects, each with url and altText strings. The objects are `desktop`, `tablet`, and `mobile`.
217
+ - `desktop` - object with `url` and `altText` strings for generating the desktop hero image
218
+ - `url` - string that links to a 3x2 image source
219
+ - `altText` - string for generating image accessibility text
220
+ - `tablet` - object with `url` and `altText` strings for generating the desktop hero image
221
+ - `url` - string that links to a 1x1 image source
222
+ - `altText` - string for generating image accessibility text
223
+ - `mobile` - object with `url` and `altText` strings for generating the desktop hero image
224
+ - `url` - string that links to a 4x3 image source
225
+ - `altText` - string for generating image accessibility text
226
+ - `imageSide` - string used for indicating the side of the page that the image should render on. Defaults to right.
227
+ - `theme` - string indicating the theme that styles the organism. Options are theme-1, theme-2, theme-3, theme-4, theme-5.
228
+ - `id` - string used for generating the component's id attribute. Will default to the organism's header text or the organism type.
229
+ - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
230
+
231
+ ###### Example -
232
+
233
+ ```
234
+ const images = {
235
+ desktop : {
236
+ url: "http://fpoimg.com/2400x1600?text=3:2",
237
+ altText: "placeholder image"
238
+ },
239
+ mobile: {
240
+ url: "http://fpoimg.com/1600x1200?text=4:3",
241
+ altText: "placeholder image"
242
+ },
243
+ tablet: {
244
+ url: "http://fpoimg.com/1600x1600?text=1:1",
245
+ altText: "placeholder image"
246
+ }
247
+ };
248
+
249
+ const ctas = {
250
+ ctaOne: {
251
+ url: "/#",
252
+ text: "Button"
253
+ },
254
+ ctaTwo: {
255
+ url: "/#",
256
+ text: "Button"
257
+ }
258
+ };
259
+
260
+ const content {
261
+ images,
262
+ ctas,
263
+ header: 'Header',
264
+ text: 'Text!'
265
+ }
266
+
267
+ return (
268
+ <Hero6
269
+ imageSide="left"
270
+ content={content}
271
+ motion
272
+ theme='theme-4'
273
+ />
274
+ );
275
+ ```
276
+
277
+ #### FilterHero
278
+
279
+ ###### Props -
280
+
281
+ - `header` - string for generating header text
282
+ - `text` - string for generating body text.
283
+ - `dropdowns` - an array used for generating Dropdown components - see example for structuring
284
+ - `checkboxes` - an array used for generating Checkbox components - see example for structuring
285
+ - `handleDropdownChange` - method used for handling new dropdown selections - takes the new selection and the associated name of the dropdown from the event object arguments.
286
+ - `handleCheckboxChange` - method used for handling checkbox toggling - takes a boolean for the status of the checkbox and the name of the checkbox from the event object as arguments.
287
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
288
+ - `motion` - boolean that indicates whether to use the react-reveal library to render the component inside a `<Fade>` component.
289
+
290
+ ###### Example -
291
+
292
+ ```
293
+ handleDropdownChange = (selection, name) => {
294
+ this.setState({[name]: selection})
295
+ }
296
+
297
+ handleCheckboxChange = (bool, name) => {
298
+ this.setState({[name]: bool})
299
+ }
300
+
301
+ const header = 'I am a header'
302
+ const text = 'Tempor ex esse ipsum sit eiusmod dolor mollit cupidatat elit cupidatat pariatur commodo non est.'
303
+
304
+ const dropdownOne = {
305
+ options: ["trade one", "trade two", "trade three"],
306
+ defaultText: "All",
307
+ name: "Trade"
308
+ };
309
+ const dropdownTwo = {
310
+ options: ["category one", "category two", "category three"],
311
+ defaultText: "All",
312
+ name: "Category"
313
+ };
314
+ const dropdowns = [dropdownOne, dropdownTwo]
315
+
316
+ const checkboxOne = {
317
+ name: "Checkbox One"
318
+ };
319
+ const checkboxTwo = { name: "Checkbox Two" };
320
+ const checkboxes = [checkboxOne, checkboxTwo];
321
+
322
+ return (
323
+ <FilterHero
324
+ header={header}
325
+ text={text}
326
+ dropdowns={dropdowns}
327
+ checkboxes={checkboxes}
328
+ handleDropdownChange={this.handleDropdownChange}
329
+ handleCheckboxChange={this.handleCheckboxChange}
330
+ backgroundColor='#5e5e5e'
331
+ />
332
+ )
333
+ ```
334
+
335
+ ---
336
+
337
+ #### Feat1
338
+
339
+ ###### Props -
340
+
341
+ - `content` **(required)** - object containing the objects content (see example)
342
+ - `header` **(required)** - string for generating header text
343
+ - `subHeader` - string for generating sub-header text
344
+ - `text` **(required)** - string for generating body text
345
+ - `cta` - object for generating a `<ButtonLink>` component requiring `url` and `text` strings
346
+ - `image` **(required)** - object consisting of `url` and `altText` strings.
347
+ - `backgroundImage` - url string that points to a background image address
348
+ - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
349
+ - `backgroundImageWidth` - number indicating the width of the background image in pixels
350
+ - `backgroundImageHeight` - number indicating the height of the background image in pixels
351
+ - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
352
+ - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
353
+ - `parallaxPosition` - number indicating the current scrollY position of the page, should come from Redux
354
+ - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
355
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
356
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
357
+ - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
358
+
359
+ ###### Example -
360
+
361
+ ```
362
+ const content = {
363
+ header: 'Header',
364
+ subHeader: 'Sub Header',
365
+ text: '<p>Sunt elit officia id aute esse dolore elit Lorem officia.</p>'
366
+ cta: {
367
+ url: '/',
368
+ text: 'link'
369
+ },
370
+ image: {
371
+ url: '/',
372
+ altText: 'Image'
373
+ }
374
+ }
375
+
376
+ const background = {
377
+ backgroundImage: './image.png',
378
+ backgroundPosition: 'right',
379
+ backgroundImageWidth: 900,
380
+ backgroundImageHeight: 900,
381
+ backgroundOFfsetY: 0,
382
+ backgroundOffsetX: 100
383
+ }
384
+
385
+ return (
386
+ <Feat1
387
+ content={content}
388
+ motion
389
+ background={background}
390
+ parallaxPosition={this.props.parallaxPosition}
391
+ theme='theme-2',
392
+ id={data.id}
393
+ />
394
+ );
395
+ ```
396
+
397
+ ---
398
+
399
+ #### Feat2A
400
+
401
+ ###### Props -
402
+
403
+ - `image` **(required)** - object with `url` and `altText` strings
404
+ - `<AccordionFold>` **(required)** - child component for rendering folds in the `<Accordion>` component with each fold taking a `header` string as a prop
405
+ - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
406
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
407
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
408
+ - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
409
+
410
+ ###### Example -
411
+
412
+ ```
413
+ import { AccordionFold } from 'terra-component-lib'
414
+
415
+ const mockImage = {
416
+ url: "https://fpoimg.com/500x500",
417
+ altText: "Placeholder image"
418
+ };
419
+
420
+ return (
421
+ <Feat2A
422
+ image={mockImage}
423
+ header="Good design is a thing, apparently."
424
+ text="Veniam laboris laboris consequat et."
425
+ >
426
+ <AccordionFold header="Test one">
427
+ <p>
428
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
429
+ lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
430
+ mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
431
+ sollicitudin.
432
+ </p>
433
+ </AccordionFold>
434
+ <AccordionFold header="Test two">
435
+ <p>
436
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
437
+ lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
438
+ mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
439
+ sollicitudin.
440
+ </p>
441
+ </AccordionFold>
442
+ <AccordionFold header="Test three">
443
+ <p>
444
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
445
+ lobortis augue ligula, eget gravida tellus lacinia id. Sed ultricies
446
+ mi malesuada tincidunt dapibus. Donec porta ligula sagittis elit
447
+ sollicitudin.
448
+ </p>
449
+ </AccordionFold>
450
+ </Feat2>
451
+ );
452
+ ```
453
+
454
+ ---
455
+
456
+ #### Feat2B
457
+
458
+ ###### Props -
459
+
460
+ - content **(required)** - object containing images and cards (see Example)
461
+ - `cards` **(required)** - array of objects used for generating `IconListItem` components with `text` and `header` strings
462
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
463
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
464
+ - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
465
+
466
+ ###### Example -
467
+
468
+ ```
469
+ const content = {
470
+ images: {
471
+ desktop: {
472
+ url: "http://fpoimg.com/1600x400?text=4:1",
473
+ altText: "placeholder image"
474
+ },
475
+ mobile: {
476
+ url: "http://fpoimg.com/1600x800?text=2:1",
477
+ altText: "placeholder image"
478
+ }
479
+ },
480
+ cards: [
481
+ {
482
+ header: "Header",
483
+ text:
484
+ "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
485
+ },
486
+ {
487
+ header: "Header",
488
+ text:
489
+ "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
490
+ },
491
+ {
492
+ header: "Header",
493
+ text:
494
+ "Anim aliquip aliqua aliqua id qui aute anim reprehenderit tempor velit est sint laborum."
495
+ }
496
+ ]
497
+ }
498
+
499
+ return (
500
+ <Feat2B
501
+ content={content}
502
+ motion
503
+ theme='theme-2'
504
+ id={data.id}
505
+ />
506
+ );
507
+ ```
508
+
509
+ ---
510
+
511
+ #### Feat3
512
+
513
+ ###### Description -
514
+
515
+ Featurette with a large image, header, and sub-header text
516
+
517
+ ###### Props -
518
+
519
+ - `content` **(required)** - object containing, images, header, and text
520
+ - `header` - string used for generating the feat header
521
+ - `subHeader` - string used for generating the feat sub-header
522
+ - `images` - object containing mobile and desktop images
523
+ - `mobile` - object containing the mobile image source and alt text
524
+ - `url` - string pointing to the image source
525
+ - `altText` - string used for assisted alternate text for screen readers
526
+ - `desktop` - object containing the desktop image source and alt text
527
+ - `url` - string pointing to the image source
528
+ - `altText` - string used for assisted alternate text for screen readers
529
+ - `motion` - boolean indicating if component animation is active
530
+ - `id` - string used for generating the component's id, defaults to the header text (spaces removed)
531
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
532
+
533
+ ###### Example -
534
+
535
+ ```
536
+ const content = {
537
+ header: "Feat 3 Header",
538
+ subHeader: "This is sub-header text",
539
+ images: {
540
+ mobile: {
541
+ url: "www.image.com/mobile-image.jpg",
542
+ altText: "image alt text
543
+ },
544
+ desktop: {
545
+ url: "www.image.com/desktop-image.jpg",
546
+ altText: "image alt text
547
+ }
548
+ },
549
+ theme: "theme-2",
550
+ motion: true
551
+ }
552
+
553
+ return <Feat3 content={content} />
554
+ ```
555
+
556
+ ---
557
+
558
+ #### Feat4
559
+
560
+ ###### Props -
561
+
562
+ - content **(required)** - object containing, ctas, headers, subheaders
563
+
564
+ - `header` **(required)** - string used for generating header text
565
+ - `subHeader` **(required)** - string used for generating sub-header text
566
+
567
+ - background - object containing `backgroundImage` which value is a string, `backgroundPosition` which value is a number, `backgroundColor` which value is a string, `backgroundOffsetX` which value is a number, `backgroundOffsetY` which value is a number, `backgroundImageHeight` which value is a number and `backgroundImageWidth` which value is anumber
568
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
569
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
570
+ - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion.
571
+
572
+ ###### Example -
573
+
574
+ ```
575
+ const content = {
576
+ header="Good Design is innovative",
577
+ subHeader="Esse aliquip ad in et ut ipsum paEu elit consectetur aliquip excepteur fugiat ut qui dolor pariatur consectetur.riatur elit quis.",
578
+ const ctas = {
579
+ ctaOne: {
580
+ text: "Button",
581
+ url: "/#"
582
+ },
583
+ ctaTwo: {
584
+ text: "Button",
585
+ url: "/#"
586
+ }
587
+ };
588
+ }
589
+
590
+ return (
591
+ <Feat4
592
+ content={content}
593
+ />
594
+ );
595
+ ```
596
+
597
+ ---
598
+
599
+ #### Feat5
600
+
601
+ ###### Props -
602
+
603
+ - `dumplings` **(required)** - an array of objects used for generating `<Dumpling>` components; see the Terra component library for requirements
604
+ - `type` - string used to determine whether or not small or large dumplings are used (`'a'` is large, `'b'` is small)
605
+ - `header` **(required)** - string used for generating header text
606
+ - `subHeader` - string used for generating sub-header text
607
+ - `backgroundImage` - url string that points to a background image address
608
+ - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
609
+ - `backgroundImageWidth` - number indicating the width of the background image in pixels
610
+ - `backgroundImageHeight` - number indicating the height of the background image in pixels
611
+ - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
612
+ - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
613
+ - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
614
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
615
+ - `className` - string that is interpolated into the organisms class for targeted styling and/or manipulation
616
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
617
+ - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
618
+ - `motionDirection` - string indicating the direction that the component should travel from as it fades in.
619
+ - `motionDistance` - string indicating the distance that the component travels during motion
620
+
621
+ ###### Example -
622
+
623
+ ```
624
+ const mockDumplings = [
625
+ {
626
+ header: "Dumplin'",
627
+ link: { url: "/#" },
628
+ size: "small",
629
+ icon: { type: "enclosed-check-dark-48px", size: "48px" }
630
+ },
631
+ {
632
+ header: "Dumplin'",
633
+ link: { url: "/#" },
634
+ size: "small",
635
+ icon: { type: "enclosed-check-dark-48px", size: "48px" }
636
+ }
637
+ ];
638
+
639
+ return (
640
+ <Feat5
641
+ dumplings={mockDumplings}
642
+ type="a"
643
+ header="Design is design"
644
+ subHeader="It's like, this thing, you know?"
645
+ />
646
+ );
647
+ ```
648
+
649
+ ---
650
+
651
+ #### Feat6
652
+
653
+ ###### Props -
654
+
655
+ - content **(required)** - object containing quotes, ctas, button
656
+
657
+ - quote (required) - object consisting of text, source, and sourceTitle strings
658
+ - `images` **(required)** - an object that contains two objects, `desktop` and `mobile`. `desktop` is the 4x1 image object. `mobile` is the 2x1 image object. Each image object consists have `url` and `altText` strings.
659
+
660
+ - `header` **(required)** - string used for generating header text
661
+ - `subHeader` **(required)** - string used for generating sub-header text
662
+
663
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
664
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
665
+ - `motion` - object containing `motion`, `motionDistance`, and `motionDirection` keys. -`motion` value is a boolen to indicate if motion will be on this component -`motionDistance` - string indicating the direction that the component should travel from as it fades in -`motionDirection` - string indicating the distance that the component travels during motion.
666
+
667
+ ###### Example -
668
+
669
+ ```
670
+ const content = {
671
+ image:{
672
+ url: "http://fpoimg.com/800x800",
673
+ altText: "placeholder image"
674
+ },
675
+ quote:{
676
+ text: `Excepteur incididunt magna commodo amet est fugiat."`,
677
+ source: "Leonard Sciarra",
678
+ sourceTitle: "Senior Associate at Gensler, AIA, ASHRAE, LEED AP+"
679
+ },
680
+ cta:{
681
+ text: "CTA",
682
+ url: "/#"
683
+ },
684
+ }
685
+
686
+ return (
687
+ <Feat6
688
+ content={content}
689
+ />
690
+
691
+ ```
692
+
693
+ ---
694
+
695
+ #### Feat7
696
+
697
+ ###### Props -
698
+
699
+ - `content` **(required)** - array of objects use for generating 'cards' consisting of `header`, `text`, and `url` strings.
700
+ - `header` **(required)** - string used for generating header text
701
+ - `backgroundImage` - url string that points to a background image address
702
+ - `backgroundPosition` - string indicating where the background image appears. Options are `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `right`, `left` and `center`.
703
+ - `backgroundImageWidth` - number indicating the width of the background image in pixels
704
+ - `backgroundImageHeight` - number indicating the height of the background image in pixels
705
+ - `backgroundOffsetY` - number indicating the offset of the background image on the Y axis
706
+ - `backgroundOffsetX` - number indicating the offset of the background image on the X axis
707
+ - `zIndex` - number indicating the desired `z-index` of the background image.- `backgroundColor` - string for specifying color for the background. Accepts RGB, RGBA, hex, etc.
708
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
709
+ - `className` - string that is interpolated into the organisms class for targeted styling and/or manipulation
710
+ - `id` - string used for generating the component's `id` attribute. Will default to the organism's `header` text or the organism type.
711
+ - `motion` - boolean that indicates whether to use the `react-reveal` library to render the component inside a `<Fade>` component.
712
+ - `motionDirection` - string indicating the direction that the component should travel from as it fades in.
713
+ - `motionDistance` - string indicating the distance that the component travels during motion
714
+
715
+ ###### Example -
716
+
717
+ ```
718
+ const content = [
719
+ {
720
+ header: "Design!",
721
+ text:
722
+ "Enim laborum ad anim laborum ad minim ipsum proident est cillum aliqua. Irure laboris aute ullamco ad Lorem et culpa id commodo quis sunt labore in id.",
723
+ url: "/#"
724
+ },
725
+ {
726
+ header: "Aesthetics!",
727
+ text:
728
+ "Enim laborum ad anim laborum ad minim ipsum proident est cillum aliqua.",
729
+ url: "/#"
730
+ }
731
+ ];
732
+ return <Feat7 header="I am a header" content={content} />;
733
+ ```
734
+
735
+ ---
736
+
737
+ #### ParallaxBackground
738
+
739
+ ###### Props -
740
+
741
+ - `backgroundImage` - string for the URL that points to the background image to be rendered
742
+ - `speed` - integer used for determining the speed of the parallax effect. Defaults to `2`. A speed of `1` will keep the background image fixed, while a speed of `2` will cause it to scroll at half speed.
743
+ - `styles` - object of style properties that are passed to the parent container.
744
+ - `children` - JSX passed inside the tags that will be rendered within the container and will scroll at normal speed.
745
+
746
+ ###### Example -
747
+
748
+ ```
749
+ const backgroundImage = 'https://www.images.com/images/image.jpg
750
+
751
+ return (
752
+ <ParallaxBackground
753
+ backgroundImage={backgroundImage}
754
+ styles={{padding: '0 40px'}}
755
+ speed={1.4}
756
+ >
757
+ <p>Content!</p>
758
+ </ParallaxBackground>
759
+ )
760
+ ```
761
+
762
+ #### NavBar
763
+
764
+ ###### Notes -
765
+
766
+ This component uses the `react-slidedown` library for the innerpage navigation links in the `utilityNav`. The `link.url` string should be a reference to the name of the `<Element>` that wraps the cooresponding organism that the window should scroll to.
767
+
768
+ ###### Props -
769
+
770
+ - `rightLinks` - array of objects used for generating links to the right of the search icon. Each object requires `url` and `text` strings.
771
+ - `logo` **(required)** - object consisting of `url` and `altText` strings (for generating the logo image) in addition to a link object with a `url` string for generating the `href` property.
772
+ - `divisionName` **(required)** - string used for generating the name of the Trimble division that is to the right of the logo.n
773
+ - `navCTA` - object consiting of a `className` string for formating the button (see Terra buttons) and a `link` object with `url` and `text` strings used for generating the CTA in the lower right corner of the Nav
774
+ - `navOptions` - array of objects used for generating the middle section of the nav. All objects will have a type indicating whether to render a (`MegaMenu`), a simple drop down of links (`miniMenus`), or a single link (`singleLink`). See examples below on how to load up these objects. The `MegaMenu` can both render a links both with and without subcategories.
775
+ - `utilityNav` - object consisting of a `pageTitle` string as well as a `links` array of objects consisting of `text` and `url` strings. See example below.
776
+ - `currentLanguage` - object with `region` and `language` strings that indicate the current region and language selected.
777
+ - `languageSelectorData` - object consisting of data needed to populate the `LanguageSelector` component. See example below.
778
+ - `setLanguage` - method used to set the region and language, which it takes as string key/values in an object as an argument
779
+ - `location` - prop used to close the mobile menu when a user clicks on one of the rightLinks. In your project, pass in `location={this.props.location}`
780
+
781
+ ###### Example -
782
+
783
+ ```
784
+ const rightLinks = [
785
+ {
786
+ url: "/#",
787
+ text: "Support"
788
+ }
789
+ ];
790
+
791
+ const logo = {
792
+ url: Logo (should be imported in the application),
793
+ altText: 'Trimble Logo',
794
+ link: {
795
+ url: 'www.trimble.com'
796
+ }
797
+ };
798
+
799
+ const divisionName = 'Geospatial';
800
+ const location = 'N. America';
801
+
802
+ const navCTA = {
803
+ className: 'ter-button--primary--1',
804
+ link: {
805
+ url: '/#',
806
+ text: 'Contact Sales'
807
+ }
808
+ }
809
+
810
+ const location = this.props.location
811
+
812
+ const utilityNav = {
813
+ pageTitle: "Trimble Accubid Enterprise",
814
+ links: [
815
+ {
816
+ text: "Product Anchor One",
817
+ url: "/#"
818
+ },
819
+ {
820
+ text: "Product Anchor Two",
821
+ url: "/#"
822
+ }
823
+ ]
824
+ };
825
+
826
+ const megaMenu = {
827
+ type: "mega menu",
828
+ bottomLink: {
829
+ url: "/#",
830
+ text: "All Products"
831
+ },
832
+ text: "Products",
833
+ links: [
834
+ {
835
+ text: "Mechanical",
836
+ links: [
837
+ {
838
+ url: "/#",
839
+ text: "BIM Collaboration"
840
+ },
841
+ {
842
+ url: "/#",
843
+ text: "MEP Content"
844
+ }
845
+ ]
846
+ },
847
+ {
848
+ text: "Electrical",
849
+ links: [
850
+ {
851
+ url: "/#",
852
+ text: "Design/Detailing"
853
+ },
854
+ {
855
+ url: "/#",
856
+ text: "Project Management"
857
+ }
858
+ ]
859
+ },
860
+ {
861
+ text: "Plumbing",
862
+ link: {url: "/#"}
863
+ },
864
+ ]
865
+ };
866
+
867
+ const miniMenus = [
868
+ {
869
+ type: "mini menu",
870
+ text: "Services",
871
+ links: [
872
+ {
873
+ url: "/#",
874
+ text: "Link One"
875
+ },
876
+ {
877
+ url: "/#",
878
+ text: "Link Two"
879
+ }
880
+ ]
881
+ },
882
+ {
883
+ type: "mini menu",
884
+ text: "Resources",
885
+ links: [
886
+ {
887
+ url: "/#",
888
+ text: "Link One"
889
+ },
890
+ {
891
+ url: "/#",
892
+ text: "Link Two"
893
+ }
894
+ ]
895
+ }
896
+ ];
897
+
898
+ const singleLink = {
899
+ type: "link",
900
+ url: "/#",
901
+ text: "Process"
902
+ };
903
+
904
+ const languageSelectorData = {
905
+ labels: {
906
+ currentRegion: "Current Region",
907
+ cancel: "Cancel",
908
+ save: "Save"
909
+ },
910
+ regions: [
911
+ {
912
+ region: "North America",
913
+ languages: [
914
+ "EN: English (US)",
915
+ "EN-UK: English (UK)",
916
+ "FR: French",
917
+ "DE: German",
918
+ "NL: Dutch"
919
+ ]
920
+ },
921
+ {
922
+ region: "UK and Middle East",
923
+ languages: [
924
+ "EN: English (US)",
925
+ "EN-UK: English (UK)",
926
+ "FR: French",
927
+ "DE: German",
928
+ "NL: Dutch"
929
+ ]
930
+ },
931
+ {
932
+ region: "France",
933
+ languages: [
934
+ "EN: English (US)",
935
+ "EN-UK: English (UK)",
936
+ "FR: French",
937
+ "DE: German",
938
+ "NL: Dutch"
939
+ ]
940
+ },
941
+ {
942
+ region: "Germany and Austria",
943
+ languages: [
944
+ "EN: English (US)",
945
+ "EN-UK: English (UK)",
946
+ "FR: French",
947
+ "DE: German",
948
+ "NL: Dutch"
949
+ ]
950
+ },
951
+ {
952
+ region: "Switzerland",
953
+ languages: [
954
+ "EN: English (US)",
955
+ "EN-UK: English (UK)",
956
+ "FR: French",
957
+ "DE: German",
958
+ "NL: Dutch"
959
+ ]
960
+ }
961
+ ],
962
+ currentRegionLanguage: {
963
+ region: "UK and Middle East",
964
+ language: "EN-UK"
965
+ },
966
+
967
+ activeRegion: {
968
+ region: "UK and Middle East",
969
+ language: "EN: English"
970
+ },
971
+
972
+ companyDivision: "MEP"
973
+ };
974
+
975
+
976
+ return (
977
+ <NavBar
978
+ location={location}
979
+ rightLinks={rightLinks}
980
+ currentLanguage={{ region: "N. America", language: "EN: English" }}
981
+ logo={logo}
982
+ divisionName="MEP"
983
+ navCTA={navCTA}
984
+ navOptions={[megaMenu, ...miniMenus, singleLink]}
985
+ utilityNav={utilityNav}
986
+ languageSelectorData={languageSelectorData}
987
+ />
988
+ )
989
+
990
+ ```
991
+
992
+ ---
993
+
994
+ #### Footer
995
+
996
+ ###### Props -
997
+
998
+ - `logo` - object consisting of a `url` and `altText` strings
999
+ - `trimbleText` - string from generating the main content on the left side
1000
+ - `trimbleLink` - object consisting of `text` and `url` strings for generating a link below the left-side text
1001
+ - `siteText` - text string that appears above the secondary link
1002
+ - `siteLink` - object consisting of `url` and `text` string for generating the secondary link on the left side
1003
+ - `linksOne` - array of objects consisting of `url` and `text` strings for generating the links that take up the left-center of the footer space
1004
+ - `linksTwo` - array of objects consisting of `url` and `text` strings for generating the links that take up the right-center of the footer space
1005
+ - `socialLinks` - array of objects consiting of an `icon` object (`url` and `altText` strings) and a link object (`url` string)
1006
+ - `legalStuff` - array of objects consisting of `url` and `text` strings for generating the links that take up the bottom of the footer space. The `url` string is optional, as the component will simply render a `<p>` tags instead.
1007
+
1008
+ ###### Example -
1009
+
1010
+ ```
1011
+ const logo = {
1012
+ url: Logo,
1013
+ altText: "fpo"
1014
+ };
1015
+
1016
+ const trimbleText =
1017
+ "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";
1018
+
1019
+ const trimbleLink = {
1020
+ url: "/#",
1021
+ text: "More About Trimble"
1022
+ };
1023
+
1024
+ const siteText = "Text for secondary link information";
1025
+
1026
+ const siteLink = {
1027
+ url: "/#",
1028
+ text: "link.trimble.com"
1029
+ };
1030
+
1031
+ const linksOne = [
1032
+ { url: "/#", text: "Label Left" },
1033
+ { url: "/#", text: "Label Left" },
1034
+ { url: "/#", text: "Label Left" }
1035
+ ];
1036
+
1037
+ const linksTwo = [
1038
+ { url: "/#", text: "Label Right" },
1039
+ { url: "/#", text: "Label Right" },
1040
+ { url: "/#", text: "Label Right" }
1041
+ ];
1042
+
1043
+ const socialLinks = [
1044
+ {
1045
+ icon: {
1046
+ url: Facebook,
1047
+ altText: "fpo"
1048
+ },
1049
+ link: {
1050
+ url: "/#"
1051
+ }
1052
+ },
1053
+ {
1054
+ icon: {
1055
+ url: Twitter,
1056
+ altText: "fpo"
1057
+ },
1058
+ link: {
1059
+ url: "/#"
1060
+ }
1061
+ },
1062
+ {
1063
+ icon: {
1064
+ url: YouTube,
1065
+ altText: "fpo"
1066
+ },
1067
+ link: {
1068
+ url: "/#"
1069
+ }
1070
+ },
1071
+ {
1072
+ icon: {
1073
+ url: LinkedIn,
1074
+ altText: "fpo"
1075
+ },
1076
+ link: {
1077
+ url: "/#"
1078
+ }
1079
+ },
1080
+ {
1081
+ icon: {
1082
+ url: Facebook,
1083
+ altText: "fpo"
1084
+ },
1085
+ link: {
1086
+ url: "/#"
1087
+ }
1088
+ },
1089
+ {
1090
+ icon: {
1091
+ url: Twitter,
1092
+ altText: "fpo"
1093
+ },
1094
+ link: {
1095
+ url: "/#"
1096
+ }
1097
+ },
1098
+ {
1099
+ icon: {
1100
+ url: YouTube,
1101
+ altText: "fpo"
1102
+ },
1103
+ link: {
1104
+ url: "/#"
1105
+ }
1106
+ },
1107
+ {
1108
+ icon: {
1109
+ url: LinkedIn,
1110
+ altText: "fpo"
1111
+ },
1112
+ link: {
1113
+ url: "/#"
1114
+ }
1115
+ }
1116
+ ];
1117
+
1118
+ const privacyStatement = {
1119
+ url: "/#",
1120
+ text: "Privacy Statement"
1121
+ };
1122
+
1123
+ const termsOfUse = {
1124
+ url: "/#",
1125
+ text: "Terms of Use"
1126
+ };
1127
+
1128
+ const copyright = {
1129
+ url: "/#",
1130
+ text: "Copyright"
1131
+ };
1132
+
1133
+ const legalStuff = [
1134
+ {
1135
+ url: "/#",
1136
+ text: "Terms of Use"
1137
+ },
1138
+ {
1139
+ url: "/#",
1140
+ text: "Privacy Statement"
1141
+ },
1142
+ { text: "© 2019, Trimble Inc." }
1143
+ ];
1144
+
1145
+ return (
1146
+ <Footer
1147
+ trimbleText={trimbleText}
1148
+ trimbleLink={trimbleLink}
1149
+ siteText={siteText}
1150
+ siteLink={siteLink}
1151
+ linksOne={linksOne}
1152
+ linksTwo={linksTwo}
1153
+ logo={logo}
1154
+ socialLinks={socialLinks}
1155
+ legalStuff={legalStuff}
1156
+ />
1157
+ );
1158
+ ```
1159
+
1160
+ #### ListFeat1
1161
+
1162
+ ###### Props -
1163
+
1164
+ - `content` **(required)** - object containing images, ctas, text, variant, headers, subheaders, button, link, videos
1165
+ - `cardOne` - an object that contains `header` and `text` keys with values that are strings.
1166
+ - `cardTwo` - an object that contains `header` and `text` and `cta`. `header` has a value of a string. `text` has a value of a string. `cta` has a value of an object with key `url` with value of a string and key `text` with value of a string.
1167
+ - `type` **(required)** - required to render the correct listFeat. ListFeat1 must be `list_feat_1`
1168
+ - `sort` - boolean indicating whether or not cards should be sorted alphabetically by header
1169
+ - `motion` - boolean used to indicate whether or not motion should be used
1170
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1171
+
1172
+ ###### Example -
1173
+
1174
+ ```
1175
+ const content = {
1176
+ sort: true,
1177
+ header: "Hello everyone! This is a header. Enjoy!",
1178
+ subheader: "This is truly wonderful.",
1179
+ type: "list_feat_1",
1180
+ image: { src: "https://fpoimg.com/500x500", alt: "placeholder" },
1181
+ cardOne: {
1182
+ header: "I am Card One Header",
1183
+ text:
1184
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex",
1185
+ cta: { url: "/#", text: "Click me!" }
1186
+ },
1187
+ cardTwo: {
1188
+ header: "I am Card Two Header",
1189
+ text:
1190
+ "The purpose of lorem ipsum is to create a natural looking block of text (sentence, paragraph, page, etc.) that doesn't distract from the layout. A practice not without controversy, la",
1191
+ cta: { url: "/#", text: "I am a button!" }
1192
+ }
1193
+ };
1194
+
1195
+ return (
1196
+ <ListFeat content={content} />
1197
+ )
1198
+ ```
1199
+
1200
+ #### ListFeat2
1201
+
1202
+ ###### Props -
1203
+
1204
+ - `content` **(required)** - object containing text, headers, subheaders, and headShotdumplings
1205
+ - `headShotdumplings` - array containing objects. Each indice is an object with two keys. The first key is `content` which value is an object containing `header` and `image` keys. `header` is a string and `image` is an object with keys `url` (which value is a string) and key `altText` which value is a string. The second key of each indice is `filter` which value is a string.
1206
+ - `type` **(required)** - required to render the correct listFeat. ListFeat2 must be `list_feat_2`
1207
+ - `motion` - boolean used to indicate whether or not motion should be used
1208
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1209
+
1210
+ ###### Example -
1211
+
1212
+ ```
1213
+ const content = {
1214
+ header: "Hello everyone! This is a header. Enjoy!",
1215
+ subheader: "This is truly wonderful.",
1216
+ type: "list_feat_2",
1217
+ headShotdumplings: [
1218
+ {
1219
+ content: {
1220
+ header: "Lorem Ipsum",
1221
+ image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1222
+ },
1223
+ filter: "default"
1224
+ },
1225
+ {
1226
+ content: {
1227
+ header: "Nemo enim ipsam",
1228
+ image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1229
+ },
1230
+ filter: "default"
1231
+ },
1232
+ {
1233
+ content: {
1234
+ header: "Sed ut perspiciatis",
1235
+ image: { url: "https://fpoimg.com/150x150", altText: "FPO Image" }
1236
+ },
1237
+ filter: "default"
1238
+ }
1239
+ ]
1240
+ };
1241
+
1242
+ export const motion = {
1243
+ motion: true,
1244
+ motionDistance: "75px",
1245
+ motionDirection: "bottom"
1246
+ };
1247
+
1248
+ return (
1249
+ <ListFeat content={content} motion={motion}/>
1250
+ )
1251
+ ```
1252
+
1253
+ #### ListFeat3
1254
+
1255
+ ###### Props -
1256
+
1257
+ - `content` **(required)** - object containing header, subHeader, type, cards
1258
+ - `header` - key that has a string as a value
1259
+ - `subHeader` - key that has a string as a value
1260
+ - `cards` - array containing objects. Each indice is an object with three keys. The first key is `image` which value is an object containing `url` and `altText` keys. `url` and `altText` both have strings as values. The second key of each indice is `header` which value is a string. The third key of each indice is `link` which value is an object of `url` and `text`. `url` and `text` both have strings as values.
1261
+ - `type` **(required)** - required to render the correct listFeat. ListFeat3 must be `list_feat_3`
1262
+ - `motion` - boolean used to indicate whether or not motion should be used
1263
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1264
+
1265
+ ###### Example -
1266
+
1267
+ ```
1268
+ const content = {
1269
+ header: "Hello everyone! This is a header. Enjoy!",
1270
+ subheader: "This is truly wonderful.",
1271
+ type: "list_feat_3",
1272
+ cards: [
1273
+ {
1274
+ image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1275
+ header: "Here is a title! Woooo",
1276
+ link: {
1277
+ url: "/#",
1278
+ text: "Link"
1279
+ },
1280
+ text:
1281
+ "Ut in amet id proident commodo officia cillum. Aliqua id ex culpa labore duis minim fugiat proident ad deserunt qui."
1282
+ },
1283
+ {
1284
+ image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1285
+ header: "Here is a title! Woooo",
1286
+ link: {
1287
+ url: "/#",
1288
+ text: "Link"
1289
+ },
1290
+ text:
1291
+ "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1292
+ },
1293
+ {
1294
+ image: { url: "https://fpoimg.com/400x300", altText: "FPO Image" },
1295
+ header: "Here is a title! Woooo",
1296
+ link: {
1297
+ url: "/#",
1298
+ text: "Link"
1299
+ },
1300
+ text:
1301
+ " Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
1302
+ }
1303
+ ]
1304
+ };
1305
+
1306
+ const motion = {
1307
+ motion: true,
1308
+ motionDistance: "75px",
1309
+ motionDirection: "bottom"
1310
+ };
1311
+
1312
+ return (
1313
+ <ListFeat content={content} motion={motion}/>
1314
+ )
1315
+ ```
1316
+
1317
+ #### ListFeat4
1318
+
1319
+ ###### Props -
1320
+
1321
+ - `content` **(required)** - object containing header, subHeader, type, cards
1322
+ - `header` - key that has a string as a value
1323
+ - `subHeader` - key that has a string as a value
1324
+ - `dumplings` - array containing objects. Each indice is an object with four keys. The first key of each indice is `header` which value is a string. The second key of each indice is `link` which value is an object of `url`. `url` has a string as a value. The third key of each indice is `size` which has a string as a value. The fourth key of each indice is `icon` which value is an object containing `type` and `size` keys. `type` and `size` both have strings as values.
1325
+ - `type` **(required)** - required to render the correct listFeat. ListFeat4 must be `list_feat_3`
1326
+ - `motion` - boolean used to indicate whether or not motion should be used
1327
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1328
+
1329
+ ###### Example -
1330
+
1331
+ ```
1332
+ const content = {
1333
+ header: "Hello everyone! This is a header. Enjoy!",
1334
+ subheader: "This is truly wonderful.",
1335
+ type: "list_feat_4",
1336
+ dumplings: [
1337
+ {
1338
+ header: "Lorem Ipsum",
1339
+ link: { url: "/#" },
1340
+ size: "small",
1341
+ icon: { type: "enclosed-check-dark-48px", size: "48px" }
1342
+ },
1343
+ {
1344
+ header: "Nemo enim ipsam voluptatem",
1345
+ link: { url: "/#" },
1346
+ size: "small",
1347
+ icon: { type: "enclosed-check-dark-48px", size: "48px" }
1348
+ },
1349
+ {
1350
+ header: "Sed ut perspiciatis, unde omnis",
1351
+ link: { url: "/#" },
1352
+ size: "small",
1353
+ icon: { type: "enclosed-check-dark-48px", size: "48px" }
1354
+ }
1355
+ ]
1356
+ };
1357
+
1358
+ const motion = {
1359
+ motion: true,
1360
+ motionDistance: "75px",
1361
+ motionDirection: "bottom"
1362
+ };
1363
+
1364
+ return (
1365
+ <ListFeat content={content} motion={motion}/>
1366
+ )
1367
+ ```
1368
+
1369
+ #### ListFeat5
1370
+
1371
+ ###### Props -
1372
+
1373
+ - `content` **(required)** - object containing header, subHeader, type, cards
1374
+ - `header` - key that has a string as a value
1375
+ - `subHeader` - key that has a string as a value -`insertCardHTML` - key that is a boolean
1376
+ - `iconListItems` - array containing objects. Each indice is an object with two keys. The first key is `header` which has a string as a value. The second key is `text` which has a string as a value.
1377
+ - `type` **(required)** - required to render the correct listFeat. ListFeat5 must be `list_feat_3`
1378
+ - `motion` - boolean used to indicate whether or not motion should be used
1379
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1380
+
1381
+ ###### Example -
1382
+
1383
+ ```
1384
+ const content = {
1385
+ header: "Hello everyone! This is a header. Enjoy!",
1386
+ subheader: "This is truly wonderful.",
1387
+ type: "list_feat_5",
1388
+ insertCardHTML: true,
1389
+ iconListItems: [
1390
+ {
1391
+ header: "Good design is innovative",
1392
+ text:
1393
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1394
+ },
1395
+ {
1396
+ header: "Good design is innovative",
1397
+ text:
1398
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1399
+ },
1400
+ {
1401
+ header: "Good design is innovative",
1402
+ text:
1403
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1404
+ },
1405
+ {
1406
+ header: "Good design is innovative",
1407
+ text:
1408
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1409
+ },
1410
+ {
1411
+ header: "Good design is innovative",
1412
+ text:
1413
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1414
+ },
1415
+ {
1416
+ header: "Good design is innovative",
1417
+ text:
1418
+ "<p>Cupidatat ea in duis ullamco nostrud cupidatat quis aliqua ex labore occaecat sit.</p>"
1419
+ }
1420
+ ]
1421
+ };
1422
+
1423
+ const motion = {
1424
+ motion: true,
1425
+ motionDistance: "75px",
1426
+ motionDirection: "bottom"
1427
+ };
1428
+
1429
+ return (
1430
+ <ListFeat content={content} motion={motion}/>
1431
+ )
1432
+ ```
1433
+
1434
+ #### ListFeat6
1435
+
1436
+ ###### Props -
1437
+
1438
+ - `content` **(required)** - object containing header, subHeader, type, cards
1439
+ - `header` - key that has a string as a value
1440
+ - `subHeader` - key that has a string as a value
1441
+ - `images` - key that has an object as a value. Object has `src` and `altText` keys which values are strings.
1442
+ - `list` - array containing strings in each indice. The strings of each indice will be rendered onto the component as html tags
1443
+ - `type` **(required)** - required to render the correct listFeat. ListFeat6 must be `list_feat_3`
1444
+ - `motion` - boolean used to indicate whether or not motion should be used
1445
+ - `theme` - string indicating the theme that styles the organism. Options are `theme-1`, `theme-2`, `theme-3`, `theme-4`, `theme-5`.
1446
+
1447
+ ###### Example -
1448
+
1449
+ ```
1450
+ const content = {
1451
+ header: "Hello everyone! This is a header. Enjoy!",
1452
+ subheader: "This is truly wonderful.",
1453
+ images: { src: "https://fpoimg.com/500x500", alt: "placeholder" },
1454
+ type: "list_feat_6",
1455
+ list: [
1456
+ "<h4>Viewer Edition</h4><p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p><p>Donec sit amet arcu nibh. Donec vitae dolor nunc.</p><p>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</p>",
1457
+ "<h4>Field Data Edition</h4>p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p><p>Lorem ipsum dolor sit amet consectetur adipiscing elit</p>",
1458
+ "<h4>A list of great ideas:</h4><ul><li>Lorem ipsum dolor sit amet consectetur adipiscing elit</li><li>Donec sit amet arcu nibh Donec vitae dolor nunc.</li><li>Cras vel pharetra augue at sollicitudin velit. Vivamus dapibus quis nisi et vestibulum.</li><li>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</li><ul>",
1459
+ "<h4>Here It Is: </h4><ul><li>Lorem ipsum dolor sit amet consectetur adipiscing elit</li><li>Donec sit amet arcu nibh Donec vitae dolor nunc.</li><li>Cras vel pharetra augue at sollicitudin velit. Vivamus dapibus quis nisi et vestibulum.</li><li>Mauris ut feugiat mauris eu volutpat arcu. Integer mollis neque dui ac auctor dui tincidunt eget.</li><li>It's not Latin, though it looks like it, and it actually says nothing,</li><ul>"
1460
+ ]
1461
+ };
1462
+
1463
+ const motion = {
1464
+ motion: true,
1465
+ motionDistance: "75px",
1466
+ motionDirection: "bottom"
1467
+ };
1468
+
1469
+ return (
1470
+ <ListFeat content={content} motion={motion}/>
1471
+ )
1472
+ ```
1473
+
1474
+ #### ListFeat7
1475
+
1476
+ ###### Props -
1477
+
1478
+ - `header` **(required)** - string for generating header text
1479
+ - `subHeader` - string for generating sub-header text
1480
+ - `type` **(required)** - required to render the correct listFeat. ListFeat7 must be `list_feat_7`
1481
+ - `content` **(required)** - object containing images, ctas, text, variant, headers, subheaders, button, link, videos
1482
+ - `card` - an array containing the following objects:
1483
+ - `text` - string for generating body text
1484
+ - `ctas` - object for generating a `<CTASection>` component
1485
+ - `images` - object with keys `url` and `altText` with values as strings
1486
+ - `video` - object with keys `url` and `allowFullScreen`. `url` has a value as a string. `allowFullScreen` is a boolean
1487
+ - `uuid` - string used for rendering Vidyard video embeds
1488
+ - `vidyard` - boolean for indicating that a Vidyard component should be rendered
1489
+ - `thumbnail` - object with keys `url` and `altText` with values as strings, used for a thumbnail image in place of a video, while video is not playing
1490
+ - `link` - object with keys `url` and `text` with values as strings.
1491
+ - `motion` - boolean used to indicate whether or not motion should be used
1492
+
1493
+ ###### Example -
1494
+
1495
+ ```
1496
+ export const mockContent = {
1497
+ header: "Hello everyone! This is a header. Enjoy!",
1498
+ subheader: "This is truly wonderful.",
1499
+ type: "list_feat_7",
1500
+ cards: [
1501
+ {
1502
+ video: {
1503
+ url: "https://www.youtube.com/embed/UY7r0juBF8Y",
1504
+ allowFullScreen: "true"
1505
+ },
1506
+ thumbnail: {
1507
+ url: "https://fpoimg.com/2880x1920",
1508
+ altText: "fpo"
1509
+ },
1510
+ header: "Here is a title! Woooo",
1511
+ link: {
1512
+ url: "/#",
1513
+ text: "Link"
1514
+ },
1515
+ text:
1516
+ "Ut in amet id proident commodo officia cillum. Aliqua id ex culpa labore duis minim fugiat proident ad deserunt qui."
1517
+ },
1518
+ {
1519
+ video: {
1520
+ url: "https://www.youtube.com/watch?v=sBws8MSXN7A",
1521
+ allowFullScreen: "true"
1522
+ },
1523
+ thumbnail: {
1524
+ url: "https://fpoimg.com/2880x1920",
1525
+ altText: "fpo"
1526
+ },
1527
+ header: "This is a React Tutorial. Enjoy!",
1528
+ link: {
1529
+ url: "/#",
1530
+ text: "Link"
1531
+ },
1532
+ text:
1533
+ "Watch this and you'll be able to make beautiful applications using the wonderful framework of React, built by Facebook"
1534
+ },
1535
+ {
1536
+ image: { url: "https://fpoimg.com/400x225", altText: "FPO Image" },
1537
+ header: "Here is a title! Woooo",
1538
+ link: {
1539
+ url: "/#",
1540
+ text: "Link"
1541
+ },
1542
+ text:
1543
+ "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1544
+ },
1545
+ {
1546
+ header: "Here is a title! Woooo",
1547
+ subheader: "sub header! ",
1548
+ text:
1549
+ "It's difficult to find examples of lorem ipsum in use before Letraset made it popular as a dummy text in the 1960s, although McClintock says he remembers coming across the lorem ipsum passage in a book of old metal type samples. So far he hasn't relocated where he once saw the passage, but the popularity of Cicero in the 15th century supports the theory that the filler text has been used for centuries"
1550
+ },
1551
+ {
1552
+ image: { url: "https://fpoimg.com/400x225", altText: "FPO Image" },
1553
+ header: "Here is a title! Woooo",
1554
+ link: {
1555
+ url: "/#",
1556
+ text: "Link"
1557
+ },
1558
+ text:
1559
+ "It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout."
1560
+ }
1561
+ ]
1562
+ };
1563
+
1564
+ export const motion = {
1565
+ motion: true,
1566
+ motionDistance: "75px",
1567
+ motionDirection: "bottom"
1568
+ };
1569
+
1570
+ return (
1571
+ <ListFeat content={content} motion={motion} />
1572
+ )
1573
+ ```
1574
+
1575
+ #### EventCard
1576
+
1577
+ ###### Props -
1578
+
1579
+ - `content` **(required)** - object used for delivering content strings to the EventCard
1580
+ - `date` - string that generates the dates of the event
1581
+ - `year` - string that generates the year of the event
1582
+ - `industry` - string that indicates which industry the event applies to (i.e 'construction')
1583
+ - `industryLabel` - a string to generate the label that preceedes the industry text
1584
+ - `name` - a string used to indicate the name of the event
1585
+ - `location` - a string used for indicating the location of the event, can also be used for event description
1586
+ - `link` - an object for generating the link that the card sends the user to
1587
+ - `url` - string that creates the `href` or `to` props depending on whether an `<a>` or React Router `<NavLink>` is generated
1588
+ - `images` - object for generating the 95px x 95px image
1589
+ - `url` - source of the image
1590
+ - `altText` - alt string for the image
1591
+
1592
+ ###### Example -
1593
+
1594
+ ```
1595
+ const date = "Nov 18 - Nov 19";
1596
+ const year = "2019";
1597
+ const image = { url: "http://fpoimg.com/95x95" };
1598
+ const industry = "Construction";
1599
+ const industryLabel = "Industry";
1600
+ const name = "Trimble Digital Construction Summit - The Bridge to BIM";
1601
+ const location = "Tivoli Hotel and Congress Center, Copenhagen";
1602
+ const content = {
1603
+ date,
1604
+ year,
1605
+ image,
1606
+ industry,
1607
+ industryLabel,
1608
+ name,
1609
+ location,
1610
+ link: { url: "/wut" }
1611
+ };
1612
+
1613
+ return (
1614
+ <div style={{ maxWidth: "1200px", margin: "auto", padding: "0 32px" }}>
1615
+ <EventCard content={content} />
1616
+ </div>
1617
+ )
1618
+
1619
+ ```
1620
+
1621
+ #### SupportCard -
1622
+
1623
+ - `content` **(required)** - object used for delivering content strings to the SupportCard
1624
+ - `header` - string for generating header text
1625
+ - `headerLabel` - string that preceeds the header text with an added colon
1626
+ - `subHeader` - string for generating sub-header text
1627
+ - `subHeaderLabel` - string that preceeds the sub-header text with an added colon
1628
+ - `product` - product name that succeeds the sub-header
1629
+ - `sections` - array of objects with `value` and `format` strings for generating columns
1630
+ - -