@times-components/ts-components 1.150.0 → 1.151.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/clarkson-says/ClarksonSays.stories.d.ts +1 -0
  3. package/dist/components/clarkson-says/ClarksonSays.stories.js +5 -0
  4. package/dist/components/clarkson-says/assets/ChatIcon.d.ts +1 -0
  5. package/dist/components/clarkson-says/assets/ChatIcon.js +8 -0
  6. package/dist/components/clarkson-says/assets/ChevronDown.d.ts +1 -0
  7. package/dist/components/clarkson-says/assets/ChevronDown.js +7 -0
  8. package/dist/components/clarkson-says/assets/OpenAIIcon.d.ts +1 -0
  9. package/dist/components/clarkson-says/assets/OpenAIIcon.js +8 -0
  10. package/dist/components/clarkson-says/components/CardHero.d.ts +3 -0
  11. package/dist/components/clarkson-says/components/CardHero.js +12 -0
  12. package/dist/components/clarkson-says/components/CategoriesRows.d.ts +6 -0
  13. package/dist/components/clarkson-says/components/CategoriesRows.js +41 -0
  14. package/dist/components/clarkson-says/components/ErrorView.d.ts +6 -0
  15. package/dist/components/clarkson-says/components/ErrorView.js +32 -0
  16. package/dist/components/clarkson-says/components/GradientOverlay.d.ts +1 -0
  17. package/dist/components/clarkson-says/components/GradientOverlay.js +73 -0
  18. package/dist/components/clarkson-says/components/LoadingView.d.ts +7 -0
  19. package/dist/components/clarkson-says/components/LoadingView.js +42 -0
  20. package/dist/components/clarkson-says/components/ProductBetaBadge.d.ts +7 -0
  21. package/dist/components/clarkson-says/components/ProductBetaBadge.js +208 -0
  22. package/dist/components/clarkson-says/components/ResponseCard.d.ts +9 -0
  23. package/dist/components/clarkson-says/components/ResponseCard.js +45 -0
  24. package/dist/components/clarkson-says/components/styles.d.ts +102 -0
  25. package/dist/components/clarkson-says/components/styles.js +379 -0
  26. package/dist/components/clarkson-says/data/clarkson-responses.json +1788 -0
  27. package/dist/components/clarkson-says/index.d.ts +4 -0
  28. package/dist/components/clarkson-says/index.js +84 -0
  29. package/dist/components/clarkson-says/types.d.ts +22 -0
  30. package/dist/components/clarkson-says/types.js +2 -0
  31. package/dist/components/clarkson-says/utils.d.ts +3 -0
  32. package/dist/components/clarkson-says/utils.js +32 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +2 -1
  35. package/jest.config.js +4 -2
  36. package/package.json +13 -13
  37. package/rnw.js +1 -1
  38. package/src/components/clarkson-says/ClarksonSays.stories.tsx +7 -0
  39. package/src/components/clarkson-says/assets/ChatIcon.tsx +33 -0
  40. package/src/components/clarkson-says/assets/ChevronDown.tsx +28 -0
  41. package/src/components/clarkson-says/assets/OpenAIIcon.tsx +34 -0
  42. package/src/components/clarkson-says/components/CardHero.tsx +20 -0
  43. package/src/components/clarkson-says/components/CategoriesRows.tsx +90 -0
  44. package/src/components/clarkson-says/components/ErrorView.tsx +53 -0
  45. package/src/components/clarkson-says/components/GradientOverlay.tsx +83 -0
  46. package/src/components/clarkson-says/components/LoadingView.tsx +70 -0
  47. package/src/components/clarkson-says/components/ProductBetaBadge.tsx +294 -0
  48. package/src/components/clarkson-says/components/ResponseCard.tsx +144 -0
  49. package/src/components/clarkson-says/components/styles.ts +434 -0
  50. package/src/components/clarkson-says/data/clarkson-responses.json +1788 -0
  51. package/src/components/clarkson-says/index.tsx +133 -0
  52. package/src/components/clarkson-says/types.ts +23 -0
  53. package/src/components/clarkson-says/utils.ts +35 -0
  54. package/src/index.ts +1 -0
@@ -0,0 +1,379 @@
1
+ import styled, { keyframes } from 'styled-components';
2
+ export const PageContainer = styled.div `
3
+ display: grid;
4
+ place-items: center;
5
+ font-family: Roboto, sans-serif;
6
+ margin: 20px auto 0 auto;
7
+
8
+ h1,
9
+ h2,
10
+ h3,
11
+ h4,
12
+ h5,
13
+ h6,
14
+ p,
15
+ span {
16
+ margin: 0;
17
+ padding: 0;
18
+ }
19
+ `;
20
+ export const Card = styled.div `
21
+ position: relative;
22
+ width: 100%;
23
+ max-width: 680px;
24
+ margin: auto;
25
+ color: ${p => (p.isApp ? '#fff' : '#000')};
26
+ background-color: #fafafa;
27
+ ${p => !p.embedded && `max-width: 680px; margin: 0 auto;`};
28
+ @media (min-width: 769px) {
29
+ min-width: 680px;
30
+ }
31
+ `;
32
+ export const TopBar = styled.div `
33
+ width: 100%;
34
+ height: 3px;
35
+ background: ${p => (p.isApp ? '#fff' : '#000')};
36
+ `;
37
+ export const Section = styled.div `
38
+ padding: 16px;
39
+ @media (min-width: 768px) {
40
+ padding: 32px;
41
+ }
42
+ `;
43
+ export const HeroRow = styled.div `
44
+ text-align: center;
45
+ `;
46
+ export const TitleGroup = styled.div `
47
+ margin-bottom: 20px;
48
+ `;
49
+ export const TitleContainer = styled.div `
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ gap: 16px;
54
+ margin-bottom: 8px;
55
+ `;
56
+ export const H1 = styled.h1 `
57
+ font-size: 32px;
58
+ font-family: Times Modern;
59
+ font-weight: 700;
60
+ line-height: 1.12;
61
+ color: #1a1a1a;
62
+ `;
63
+ export const H2 = styled.h2 `
64
+ font-size: 20px;
65
+ font-weight: 400;
66
+ font-family: Times Modern, sans-serif;
67
+ line-height: 1.12;
68
+ color: #737373;
69
+ padding: 0 16px;
70
+ `;
71
+ export const ArticlesHeading = styled.h3 `
72
+ font-family: Times Modern;
73
+ font-size: 24px;
74
+ font-weight: 400;
75
+ color: #1a1a1a;
76
+ `;
77
+ export const TopicCount = styled.span `
78
+ font-size: 14px;
79
+ line-height: 1.5;
80
+ font-weight: 500;
81
+ font-family: Roboto, sans-serif;
82
+ color: #737373;
83
+ `;
84
+ export const CategoryHeader = styled.div `
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: space-between;
88
+ margin-bottom: 16px;
89
+
90
+ @media (max-width: 768px) {
91
+ flex-direction: column;
92
+ align-items: flex-start;
93
+ text-align: left;
94
+ gap: 4px;
95
+ }
96
+ `;
97
+ export const CategorySubheading = styled.h3 `
98
+ margin-bottom: 16px;
99
+ font-family: Roboto, sans-serif;
100
+ font-weight: 500;
101
+ font-size: 20px;
102
+ line-height: 1.25;
103
+ color: #1a1a1a;
104
+ `;
105
+ export const TopicsRow = styled.div `
106
+ display: flex;
107
+ justify-content: space-between;
108
+ gap: 16px;
109
+ `;
110
+ export const TopicsWrap = styled.div `
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ gap: 8px;
114
+ `;
115
+ export const CategoryRowContainer = styled.div `
116
+ border: 1px solid #e6e6e6;
117
+ border-radius: 4px;
118
+ padding: 16px;
119
+ margin-bottom: 16px;
120
+ background: #ffffff;
121
+ position: relative;
122
+ `;
123
+ export const CategoryTopicButton = styled.button `
124
+ border: 1px solid #cccccc;
125
+ color: #404040;
126
+ padding: 5px 12px;
127
+ background: #ffffff;
128
+ font-size: 16px;
129
+ font-weight: 400;
130
+ text-transform: none;
131
+ border-radius: 16px;
132
+ cursor: pointer;
133
+ &:hover {
134
+ background: #f3f4f6;
135
+ }
136
+ `;
137
+ export const ShowMoreButtonContainer = styled.div `
138
+ display: flex;
139
+ align-items: center;
140
+ margin-top: 16px;
141
+
142
+ &[aria-expanded='true'] svg {
143
+ transform: rotate(180deg);
144
+ }
145
+ `;
146
+ export const ShowMoreButton = styled.button `
147
+ border: none;
148
+ background: transparent;
149
+ color: #005c8a;
150
+ font-size: 14px;
151
+ cursor: pointer;
152
+ text-decoration: underline;
153
+ &:hover {
154
+ opacity: 0.9;
155
+ }
156
+ `;
157
+ export const TopicButton = styled.button `
158
+ border: 1px solid ${p => (p.isApp ? '#fff' : '#0f766e')};
159
+ color: ${p => (p.isApp ? '#fff' : '#000')};
160
+ background: transparent;
161
+ padding: 4px 8px;
162
+ font-size: 124x;
163
+ font-weight: 600;
164
+ text-transform: uppercase;
165
+ cursor: pointer;
166
+ &:hover {
167
+ background: ${p => (p.isApp ? '#1f2937' : '#e5e7eb')};
168
+ }
169
+ `;
170
+ export const IconButton = styled.button `
171
+ border: none;
172
+ background: transparent;
173
+ cursor: pointer;
174
+ color: ${p => (p.isApp ? '#fff' : '#0f766e')};
175
+ &:hover {
176
+ color: ${p => (p.isApp ? '#e5e7eb' : '#1f2937')};
177
+ }
178
+ `;
179
+ // Horizontal scrolling carousel styles
180
+ export const CarouselRow = styled.div `
181
+ margin-top: 8px;
182
+ position: relative;
183
+ `;
184
+ export const CarouselTrack = styled.div `
185
+ display: flex;
186
+ gap: 8px;
187
+ overflow-x: auto;
188
+ -webkit-overflow-scrolling: touch;
189
+ scroll-snap-type: x proximity;
190
+ padding-bottom: 8px;
191
+ margin-right: 40px;
192
+
193
+ /* hide scrollbar in WebKit */
194
+ &::-webkit-scrollbar {
195
+ height: 6px;
196
+ }
197
+ `;
198
+ export const CarouselItemButton = styled(TopicButton) `
199
+ flex: 0 0 auto;
200
+ scroll-snap-align: start;
201
+ `;
202
+ export const CarouselNavButton = styled.button `
203
+ position: absolute;
204
+ top: 0;
205
+ ${p => p.side === 'left' ? 'left: 0px;' : 'right: 0px;'} display: inline-flex;
206
+ align-items: center;
207
+ justify-content: center;
208
+ padding: 4px 8px;
209
+ border-radius: 0;
210
+ border: 1px solid ${p => (p.isApp ? '#fff' : '#000')};
211
+ color: ${p => (p.isApp ? '#fff' : '#000')};
212
+ font-size: 14px;
213
+ font-weight: 600;
214
+ text-transform: uppercase;
215
+ z-index: 2;
216
+ cursor: pointer;
217
+ opacity: ${p => (p.visible ? 1 : 0)};
218
+ pointer-events: ${p => (p.visible ? 'auto' : 'none')};
219
+ transition: opacity 200ms ease;
220
+ &:hover {
221
+ background: ${p => (p.isApp ? '#1f2937' : '#e5e7eb')};
222
+ }
223
+ `;
224
+ export const CardFooter = styled.div `
225
+ display: flex;
226
+ flex-direction: column;
227
+ align-items: center;
228
+ gap: 8px;
229
+ margin-top: 20px;
230
+ @media (min-width: 768px) {
231
+ flex-direction: row;
232
+ width: 100%;
233
+ gap: 20px;
234
+ justify-content: center;
235
+ }
236
+ `;
237
+ export const Disclaimer = styled.div `
238
+ display: flex;
239
+ align-items: center;
240
+ justify-content: center;
241
+ gap: 4px;
242
+ margin-top: ${p => (p.marginTop !== undefined ? `${p.marginTop}px` : '0')};
243
+ span {
244
+ font-family: Roboto, sans-serif;
245
+ text-align: center;
246
+ font-size: 12px;
247
+ line-height: 1.5;
248
+ font-weight: 400;
249
+ color: #404040;
250
+ }
251
+ `;
252
+ export const overlaySpin = keyframes `
253
+ 0% { transform: rotate(0deg); }
254
+ 100% { transform: rotate(360deg); }
255
+ `;
256
+ export const Overlay = styled.div `
257
+ position: absolute;
258
+ inset: 0;
259
+ z-index: 3;
260
+ background: ${p => (p.isApp ? '#0f172a' : '#ffffff')};
261
+ `;
262
+ export const Spinner = styled.div `
263
+ width: 40px;
264
+ height: 40px;
265
+ border: 3px solid ${p => (p.isApp ? '#fff' : '#1a1a1a')};
266
+ border-top-color: transparent;
267
+ border-radius: 9999px;
268
+ animation: ${overlaySpin} 1s linear infinite;
269
+ margin-bottom: 24px;
270
+ `;
271
+ export const ProgressBarShell = styled.div `
272
+ height: 3px;
273
+ background: ${p => (p.isApp ? '#fff' : '#1a1a1a')};
274
+ width: ${p => p.width !== undefined && p.width !== null ? `${p.width}%` : '100%'};
275
+ transition: width 300ms ease;
276
+ `;
277
+ export const BackButton = styled.button `
278
+ display: inline-flex;
279
+ align-items: center;
280
+ gap: 8px;
281
+ font-weight: 700;
282
+ text-transform: uppercase;
283
+ font-size: 14px;
284
+ color: ${p => (p.isApp ? '#fff' : '#fff')};
285
+ background: ${p => (p.isApp ? '#005c8a' : '#005c8a')};
286
+ padding: 12px 16px;
287
+ border: none;
288
+ cursor: pointer;
289
+ &:hover {
290
+ opacity: 0.9;
291
+ }
292
+ `;
293
+ export const Label = styled.h2 `
294
+ display: inline-block;
295
+ font-size: 12px;
296
+ font-weight: 400;
297
+ text-transform: uppercase;
298
+ font-family: Roboto, sans-serif;
299
+ letter-spacing: 0.08em;
300
+ color: #404040;
301
+ padding-bottom: 8px !important;
302
+ `;
303
+ export const Description = styled.p `
304
+ color: #737373;
305
+ font-family: Roboto, sans-serif;
306
+ text-align: left;
307
+ margin-top: 8px !important;
308
+ margin-bottom: 20px !important;
309
+ font-size: 16px;
310
+ `;
311
+ export const ArticleCard = styled.a `
312
+ display: block;
313
+ margin-top: 16px;
314
+ padding: 16px;
315
+ border-radius: 4px;
316
+ border: 1px solid #e6e6e6;
317
+ text-decoration: none;
318
+ background: #ffffff;
319
+ position: relative;
320
+ color: inherit;
321
+ ${p => p.clickable &&
322
+ `cursor: pointer; &:hover { background: ${p.isApp ? '#1f2937' : '#f9fafb'}; border-color: ${p.isApp ? '#fff' : '#000'}; }`};
323
+ `;
324
+ export const ArticleRow = styled.div `
325
+ display: flex;
326
+ justify-content: space-between;
327
+ `;
328
+ export const ArticleDate = styled.p `
329
+ font-size: 14px;
330
+ font-weight: 500;
331
+ line-height: 1.5;
332
+ margin: 0 0 12px 0 !important;
333
+ color: #727272;
334
+ `;
335
+ export const ArticleHeadline = styled.p `
336
+ font-size: 24px;
337
+ font-weight: 400;
338
+ font-family: Times Modern;
339
+ margin: 0 0 12px 0 !important;
340
+ color: #1a1a1a;
341
+ `;
342
+ export const ArticleSnippet = styled.p `
343
+ font-style: italic;
344
+ color: #404040;
345
+ font-size: 16px;
346
+ `;
347
+ export const QuoteBlock = styled.div `
348
+ position: relative;
349
+ margin-top: 16px;
350
+ padding: 64px 16px;
351
+ border-radius: 12px;
352
+ background: ${p => (p.isApp ? '#1f2937' : '#e5e7eb')};
353
+ color: ${p => (p.isApp ? '#e5e7eb' : '#1f2937')};
354
+ `;
355
+ export const QuoteMark = styled.span `
356
+ position: absolute;
357
+ pointer-events: none;
358
+ ${p => p.position === 'left'
359
+ ? 'left: 8px; top: 0; transform: translateY(-20px);'
360
+ : 'right: 8px; bottom: 16px;'} font-family: Georgia, serif;
361
+ font-size: 108px;
362
+ height: 64px;
363
+ line-height: 0.8;
364
+ color: ${p => (p.isApp ? '#64748b' : '#9ca3af')};
365
+ `;
366
+ export const Signature = styled.span `
367
+ position: absolute;
368
+ left: 16px;
369
+ bottom: 8px;
370
+ font-weight: 600;
371
+ color: ${p => (p.isApp ? '#fff' : '#000')};
372
+ `;
373
+ export const ResponseCardFooter = styled.div `
374
+ display: flex;
375
+ flex-direction: column;
376
+ align-items: center;
377
+ margin-top: 32px;
378
+ `;
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2xhcmtzb24tc2F5cy9jb21wb25lbnRzL3N0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQnBFLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBeUM7Ozs7O1dBSzVELENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7SUFFdkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksbUNBQW1DOzs7O0NBSTFELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBcUI7OztnQkFHckMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7Ozs7Q0FLaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBOztDQUVoQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUE7O0NBRW5DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7Ozs7O0NB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