hds-web 1.5.4 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,60 +1,11 @@
1
1
  import React from 'react';
2
- import { useState } from 'react';
3
2
  import { Typography } from '../../foundation/Typography'
4
3
  import { Icon } from '../common-components/Icon'
5
4
  import { HDSColor } from '../../foundation/ColorPalette';
6
- import { Tab } from '../Tabs'
7
5
  import ReactMarkdown from "react-markdown";
8
- import { HDSButton } from '../Buttons'
9
- const tabs = [
10
- { name: 'Level 1', href: '', current: true },
11
- { name: 'Level 2', href: '', current: false },
12
- ]
6
+ import { HDSButton } from "../Buttons"
13
7
 
14
-
15
-
16
- const levelCalc = (arr, index) => {
17
-
18
- const keyIndex = 'key' + `${index}`;
19
-
20
- if (arr[keyIndex] && (arr[keyIndex]['text'] || arr[keyIndex]['iconVariant'])) {
21
- return (
22
- <>
23
- <div className='flex gap-4 p-4 w-full'>
24
- {(arr[keyIndex]['text'] || arr[keyIndex]['iconVariant']) && (
25
- <Icon height='h-5 w-5 stroke-[1.5px]' variant='checkcircle' strokeClass='stroke-green-500' />
26
- )
27
- }
28
- <>
29
- <Typography textStyle='body1c'
30
- className='text-neutral-700 [&>span]:pb-2 [&>ul]:ps-4 [&>ul>li]:list-disc [&>ul>li]:pb-2 [&>ul>li]:last:pb-0'>
31
-
32
- {arr[keyIndex]['text'] && arr[keyIndex]['text'] !== null && (
33
- <>
34
- {`${arr[keyIndex]['text']} `}
35
- </>
36
- )
37
- }
38
- {arr['rowTitle'] && (arr[keyIndex]['text'] || arr[keyIndex]['iconVariant']) && (
39
- <>
40
- <ReactMarkdown components={{ p: 'span' }}>
41
- {`${arr['rowTitle']}`}
42
- </ReactMarkdown>
43
- </>
44
-
45
- )}
46
- </Typography>
47
- </>
48
-
49
- </div>
50
-
51
- </>
52
- )
53
- }
54
-
55
- }
56
-
57
- export default function TablePlatform(props) {
8
+ export default function PricingTableB(props) {
58
9
  const {
59
10
  title,
60
11
  title_color,
@@ -63,75 +14,151 @@ export default function TablePlatform(props) {
63
14
  TABLE_VALUE,
64
15
  TABLE_HEADER,
65
16
  } = props;
66
- const [activeTab, setActiveTab] = useState(1);
67
- console.log(TABLE_VALUE, TABLE_VALUE[0], 'hh');
17
+ const tableValuesm = (section, keyIndex) => {
18
+ let columnSize = '';
19
+ let scrapData;
20
+ if (section[keyIndex][0]) {
21
+ scrapData = section[keyIndex][0];
22
+ }
23
+ const rowTitleKey = Object.keys(scrapData).find(key => key === 'Data APIs');
24
+ if (section[keyIndex].length) {
25
+ columnSize = section[keyIndex].length;
26
+ console.log(columnSize)
27
+ }
28
+ return (
29
+ <>
30
+ {section[keyIndex].map((value, index) => (
31
+ <tr className='' key={index}>
32
+ {Object.keys(value).map((keyIndex) => (
33
+ <React.Fragment key={index + keyIndex}>
34
+ {keyIndex !== null
35
+ && keyIndex === rowTitleKey
36
+ && index != (columnSize - 1)
37
+ && index != 0 && (
38
+ <td
39
+
40
+ className="pl-[30px] border-80 "
41
+ >
42
+ <div className=' '>
43
+ <Typography className='py-4 text-neutral-700' textStyle='body1c'>{value[keyIndex]}{index}</Typography>
44
+ </div>
45
+ </td>)}
46
+ {keyIndex !== null
47
+ && keyIndex === rowTitleKey
48
+ && index != (columnSize - 1)
49
+ && index == 0 && (
50
+ <td
51
+ className="pl-[30px] border-80 "
52
+ >
53
+ <div className=' '>
54
+ <Typography className='pb-4 pt-12 text-neutral-700' textStyle='body1c'>{value[keyIndex]}{index}</Typography>
55
+ </div>
68
56
 
69
- const tableValuesm = (section, keyIndex) =>
70
- (
71
- <>
72
- {section[keyIndex].map((value, index) => (
73
- <tr className='' key={index}>
74
- {Object.keys(value).map((keyIndex) => (
75
57
 
76
- <React.Fragment key={index + keyIndex}>
77
- {keyIndex !== null && keyIndex === 'rowTitle' && (<td
58
+ </td>)}
78
59
 
79
- className="px-8 py-7 w-[22.5rem]"
80
- >
81
- <Typography className='max-w-[22rem] text-neutral-700 [&>p]:pb-2 [&>ul]:ps-4 [&>ul>li]:list-disc [&>ul>li]:pb-2 [&>ul>li]:last:pb-0' textStyle='body1c'><ReactMarkdown>{value[keyIndex]}</ReactMarkdown></Typography>
60
+ {keyIndex !== null
61
+ && keyIndex === rowTitleKey
62
+ && index == (columnSize - 1) && (
63
+ <td
82
64
 
83
- </td>)}
65
+ className="pl-[30px] border-80 "
66
+ >
67
+ <div className=' '>
68
+ <Typography className='pt-4 pb-12 text-neutral-700' textStyle='body1c'>{value[keyIndex]}</Typography>
69
+ </div>
84
70
 
85
- {keyIndex !== null && keyIndex !== 'rowTitle' && value[keyIndex] !== null && (
86
- <td
87
71
 
88
- className="px-8 py-7 border-table text-center "
89
- >
90
- {value && keyIndex && value[keyIndex] && value[keyIndex]['text'] === null && !value[keyIndex]['iconVariant'] && value[keyIndex]['iconVariant'] === null && (
91
- <></>
72
+ </td>)}
92
73
 
93
- )}
94
- {value[keyIndex]['text'] !== null && value[keyIndex]['text'] && (
95
- <Typography className='text-neutral-700' textStyle='body1c'>{value[keyIndex]['text']}</Typography>
74
+ {keyIndex !== null && keyIndex !== rowTitleKey && value[keyIndex] !== null && index != 0 && index != (columnSize - 1) && (
75
+ <td
96
76
 
97
- )}
98
- {(value[keyIndex]['text'] === null || !value[keyIndex]['text']) && value[keyIndex]['iconVariant'] && (
99
- <div className='flex justify-center'>
100
- <Icon height='h-5 w-5 stroke-[1.5px]' variant={value[keyIndex]['iconVariant']} strokeClass={HDSColor(value[keyIndex]['iconStrokeClass'])} />
101
- </div>
102
- )}
103
- </td>)
104
- }
77
+ className="px-8 text-left ml-[30px] border-80 "
78
+ >
79
+ {value && keyIndex && value[keyIndex] && value[keyIndex]['text'] === null && !value[keyIndex]['iconVariant'] && value[keyIndex]['iconVariant'] === null && (
80
+ <div className=''></div>
105
81
 
106
- {keyIndex === null && (
107
- <td
108
- key={index}
109
- className="px-8 py-7 border-table text-center"
110
- >
111
- </td>
112
- )}
82
+ )}
83
+ {value[keyIndex]['text'] !== null && value[keyIndex]['text'] && (
84
+ <div className=' '>
85
+ <Typography className='text-neutral-700 py-4' textStyle='body1c'>{value[keyIndex]['text']}</Typography>
86
+ </div>
113
87
 
114
88
 
115
- </React.Fragment>
116
- ))}
117
- </tr>
118
- ))}
119
- </>
89
+ )}
90
+ {(value[keyIndex]['text'] === null || !value[keyIndex]['text']) && value[keyIndex]['iconVariant'] && (
91
+ <div className='flex '>
92
+ <Icon height='h-5 w-5 stroke-[1.5px]' variant={value[keyIndex]['iconVariant']} strokeClass={HDSColor(value[keyIndex]['iconStrokeClass'])} />
93
+ </div>
94
+ )}
95
+ </td>)
96
+ }
97
+ {keyIndex !== null && keyIndex !== rowTitleKey && value[keyIndex] !== null && index == 0 && (
98
+ <td
120
99
 
121
- )
100
+ className="px-8 text-left ml-[30px] border-80 "
101
+ >
102
+ {value && keyIndex && value[keyIndex] && value[keyIndex]['text'] === null && !value[keyIndex]['iconVariant'] && value[keyIndex]['iconVariant'] === null && (
103
+ <div className=''></div>
122
104
 
105
+ )}
106
+ {value[keyIndex]['text'] !== null && value[keyIndex]['text'] && (
107
+ <div className=' '>
108
+ <Typography className='text-neutral-700 pb-4 pt-12' textStyle='body1c'>{value[keyIndex]['text']}</Typography>
109
+ </div>
123
110
 
124
111
 
112
+ )}
113
+ {(value[keyIndex]['text'] === null || !value[keyIndex]['text']) && value[keyIndex]['iconVariant'] && (
114
+ <div className='flex pb-4 pt-12'>
115
+ <Icon height='h-5 w-5 stroke-[1.5px]' variant={value[keyIndex]['iconVariant']} strokeClass={HDSColor(value[keyIndex]['iconStrokeClass'])} />
116
+ </div>
117
+ )}
118
+ </td>)
119
+ }
120
+ {keyIndex !== null && keyIndex !== rowTitleKey && value[keyIndex] !== null && index == (columnSize - 1) && (
121
+ <td
122
+
123
+ className="px-8 text-left ml-[30px] border-80 "
124
+ >
125
+ {value && keyIndex && value[keyIndex] && value[keyIndex]['text'] === null && !value[keyIndex]['iconVariant'] && value[keyIndex]['iconVariant'] === null && (
126
+ <div className=''></div>
127
+
128
+ )}
129
+ {value[keyIndex]['text'] !== null && value[keyIndex]['text'] && (
130
+ <div className=' '>
131
+ <Typography className='text-neutral-700 pt-4 pb-12' textStyle='body1c'>{value[keyIndex]['text']}</Typography>
132
+ </div>
133
+
134
+
135
+ )}
136
+ {(value[keyIndex]['text'] === null || !value[keyIndex]['text']) && value[keyIndex]['iconVariant'] && (
137
+ <div className='flex pt-4 pb-12 '>
138
+ <Icon height='h-5 w-5 stroke-[1.5px]' variant={value[keyIndex]['iconVariant']} strokeClass={HDSColor(value[keyIndex]['iconStrokeClass'])} />
139
+ </div>
140
+ )}
141
+ </td>)
142
+ }
143
+
144
+ {keyIndex === null && (
145
+ <td
146
+ key={index}
147
+ className="px-8 py-7 border-table text-center"
148
+ >
149
+ </td>
150
+ )}
125
151
 
126
- function handleTabClick(tab) {
127
- if (tab.name === 'Level 1') setActiveTab(1);
128
- if (tab.name === 'Level 2') setActiveTab(2);
129
- if (tab.name === 'Level 3') setActiveTab(3);
130
- // Perform any other actions based on the clicked tab
131
- }
132
152
 
153
+ </React.Fragment>
154
+ ))}
155
+ </tr>
156
+ ))}
157
+ </>
158
+ )
159
+ }
133
160
  return (
134
- <div className=" max-w-7xl px-4 sm:px-6 lg:px-8 ">
161
+ <div className='px-10'>
135
162
  <div className=" flex justify-around ">
136
163
  <div className="w-full flex-col items-center flex justify-around tb-l:flex tb-l:flex-col tb-l:items-center">
137
164
  <div>
@@ -152,102 +179,22 @@ export default function TablePlatform(props) {
152
179
  </Typography>
153
180
  )}
154
181
  </div>
155
- <div className=' mt-11 rounded-full shadow tb-l:hidden'>
156
- <Tab onTabClick={handleTabClick} tabs={tabs} />
157
- </div>
158
182
  </div>
159
-
160
183
  </div>
161
-
162
- {/* code for mobile */}
163
-
164
- <div className='tb-l:hidden'>
165
- <div className="mt-8 bg-neutral-0 rounded-3xl ">
166
- <div className=" shadow rounded-3xl ">
167
-
168
- <div className='flex border-x px-8 py-[1.625rem] border-neutral-200 rounded-t-3xl flex-col justify-center items-center text-center'>
169
- <div className={'flex items-center gap-2'}>
170
- {TABLE_HEADER[activeTab]['icon'] &&
171
- (
172
- <Icon
173
- height='h-6 w-6'
174
- variant={TABLE_HEADER[activeTab]['icon']}
175
- strokeClass={TABLE_HEADER[activeTab]['iconStrokeClass']} />
176
- )
177
- }
178
- {
179
- TABLE_HEADER[activeTab]['title'] && activeTab == 0 && (
180
- <Typography
181
- textStyle='h5'
182
- className={TABLE_HEADER[activeTab]['title_text_color']}>
183
- {`${TABLE_HEADER[activeTab]['title']}`}
184
- </Typography>)
185
- }
186
- {
187
- TABLE_HEADER[activeTab]['title'] && activeTab != 0 && (
188
- <Typography
189
- textStyle='h5'
190
- className={TABLE_HEADER[activeTab]['title_text_color']}>
191
- {`${TABLE_HEADER[activeTab]['title']}`}
192
- </Typography>)
193
- }
194
-
195
-
196
- </div>
197
- <div className=' max-w-[10rem]'>
198
- {TABLE_HEADER[activeTab]['descr'] && (
199
- <Typography
200
- textStyle='body1'
201
- className={TABLE_HEADER[activeTab]['descr_text_color']}>
202
- {`${TABLE_HEADER[activeTab]['descr']}`}
203
- </Typography>)}
204
- </div>
205
- </div>
206
-
207
- <div className="divide-y divide-neutral-200 rounded-b-3xl">
208
- <div className='flex flex-col border border-neutral-200 divide-y divide-neutral-200 rounded-b-3xl items-center'>
209
- <div className='flex divide-y divide-neutral-200 flex-col w-full gap-2 items-start'>
210
- {TABLE_VALUE.map((msection, index) => (
211
- <React.Fragment key={index}>
212
- {Object.keys(msection).map((keyIndex) => (
213
-
214
- <>
215
- {msection[keyIndex].map((tem2, index) => (
216
- <>
217
- {levelCalc(tem2, index)}
218
- </>
219
- ))
220
- }
221
- </>
222
- ))}
223
-
224
-
225
- </React.Fragment>
226
- ))}
227
- </div>
228
- </div>
229
-
230
- </div>
231
- </div>
232
- </div>
233
- </div>
234
-
235
- {/* code for mobile */}
236
-
237
- <div className='hidden tb-l:block' >
238
- <div className="mt-12 rounded-3xl ">
239
- <table className="min-w-full shadow tableclss rounded-3xl ">
184
+ <div className='hidden tb:block' >
185
+ <div className=" mt-[70px] rounded-3xl ">
186
+ <table className="rounded-3xl w-full table-fixed ">
240
187
  <thead>
241
- <tr className=' text-center rounded-t-3xl'>
188
+ <tr className=' text-left first:pr-20 '>
242
189
  {Object.keys(TABLE_HEADER).map((key, index) => (
243
190
  <th
244
191
  key={index}
245
192
  scope="col"
246
- className="px-8 py-6 sm:table-cell"
193
+ className="px-8 pb-[54px] sm:table-cell text-left"
247
194
  >
248
- <div className=''>
249
- <div className='flex flex-col justify-center items-center text-center'>
250
- <div className={'flex items-center gap-2'}>
195
+ <div className='flex text-left'>
196
+ <div className='flex flex-col text-center'>
197
+ <div className={'flex gap-2'}>
251
198
  {TABLE_HEADER[key]['icon'] &&
252
199
  (
253
200
  <Icon
@@ -259,8 +206,8 @@ export default function TablePlatform(props) {
259
206
  {
260
207
  TABLE_HEADER[key]['title'] && key == 0 && (
261
208
  <Typography
262
- textStyle='h5'
263
- className={HDSColor(TABLE_HEADER[key]['title_text_color'])}>
209
+ textStyle='h3'
210
+ className={` w-1/2 text-left ${HDSColor(TABLE_HEADER[key]['title_text_color'])}`}>
264
211
  {TABLE_HEADER[key]['title']}
265
212
  </Typography>)
266
213
  }
@@ -268,16 +215,16 @@ export default function TablePlatform(props) {
268
215
  TABLE_HEADER[key]['title'] && key != 0 && (
269
216
  <Typography
270
217
  textStyle='h5'
271
- className={HDSColor(TABLE_HEADER[key]['title_text_color'])}>
218
+ className={` text-left ${HDSColor(TABLE_HEADER[key]['title_text_color'])}`}>
272
219
  <ReactMarkdown>{TABLE_HEADER[key]['title']}</ReactMarkdown>
273
220
  </Typography>)
274
221
  }
275
222
  </div>
276
- <div className=' max-w-[10rem]'>
223
+ <div className=''>
277
224
  {TABLE_HEADER[key]['descr'] && (
278
225
  <Typography
279
226
  textStyle='body1'
280
- className={HDSColor(TABLE_HEADER[key]['descr_text_color'])}>
227
+ className={` text-left ${HDSColor(TABLE_HEADER[key]['descr_text_color'])}`}>
281
228
  {TABLE_HEADER[key]['descr']}
282
229
  </Typography>)}
283
230
 
@@ -306,26 +253,22 @@ export default function TablePlatform(props) {
306
253
  </tr>
307
254
  </thead>
308
255
  {TABLE_VALUE.map((section, index) => (
309
- <tbody key={index} className="">
310
-
311
-
256
+ <tbody key={index} className="border-90">
312
257
  {Object.keys(section).map((keyIndex) => (
313
258
  <>
314
- <tr className=''>
259
+ <tr key={index + keyIndex} className=''>
315
260
  {Object.keys(section[keyIndex][0]).map((keyIndex2) => (
316
- <React.Fragment key={keyIndex2}>
261
+ <React.Fragment key={keyIndex2 + keyIndex + index}>
317
262
  {keyIndex2 !== null && (
318
263
  <th
319
- className='bg-neutral-100 first:rounded-l-full last:rounded-r-full'
264
+ className='bg-neutral-100 first:rounded-l-full last:rounded-r-full px-8'
320
265
  >
321
266
  <Typography
322
267
  textStyle='h5'
323
- className='text-neutral-900'
268
+ className='text-neutral-900 py-3.5 text-left'
324
269
  >
325
270
  {keyIndex2}
326
271
  </Typography>
327
-
328
-
329
272
  </th>
330
273
  )}
331
274
  </React.Fragment>
@@ -333,41 +276,41 @@ export default function TablePlatform(props) {
333
276
  </tr>
334
277
  {tableValuesm(section, keyIndex)}
335
278
  </>
336
-
337
279
  ))
338
280
  }
339
281
  </tbody>
340
282
  ))
341
283
  }
342
- <tr>
343
- <td></td>
344
- {TABLE_HEADER.map((value, index) => (
345
- <>
346
- {index!=0 &&
347
- <td className=''>
348
- <HDSButton
349
- label={value['button_title'] }
350
- type='secondary'
351
- leftIconVariant='none'
352
- rightIconVariant='none'
353
- state='default'
354
- size='sm'
355
- rightAnimatedArrow={true}
356
- rightAnimatedArrowColor='#6C737F'
357
- className='mt-4'
358
- />
359
-
360
- </td>}
361
-
362
- </>
363
-
364
-
365
- ))
366
- }
367
-
368
-
284
+ {TABLE_HEADER && (
285
+ <>
286
+ <tbody>
287
+ <tr>
288
+ <td></td>
289
+ {TABLE_HEADER.map((value, index) => (
290
+ <React.Fragment key={index}>
291
+ {index != 0 && value['button_title'] &&
292
+ <td key={index} className='px-8'>
293
+ <HDSButton
294
+ label={value['button_title']}
295
+ type='secondary'
296
+ leftIconVariant='none'
297
+ rightIconVariant='none'
298
+ state='default'
299
+ size='sm'
300
+ rightAnimatedArrow={true}
301
+ rightAnimatedArrowColor='#6C737F'
302
+ className='mt-4 mb-16'
303
+ />
304
+
305
+ </td>}
306
+ </React.Fragment>
307
+ ))
308
+ }
369
309
 
370
- </tr>
310
+ </tr>
311
+ </tbody>
312
+ </>
313
+ )}
371
314
  </table>
372
315
  </div>
373
316
  </div>
@@ -375,7 +318,3 @@ export default function TablePlatform(props) {
375
318
  )
376
319
  }
377
320
 
378
- TablePlatform.defaultProps = {
379
- title_color: 'text-blue-800',
380
- desc_color: 'text-blue-600'
381
- }
package/src/index.css CHANGED
@@ -405,4 +405,33 @@
405
405
 
406
406
  .token.operator {
407
407
  background: none !important;
408
- }
408
+ }
409
+
410
+
411
+ .border-80 {
412
+ position: relative;
413
+ }
414
+
415
+ .border-80::after {
416
+ content: "";
417
+ position: absolute;
418
+ bottom: 0;
419
+ left: 8%;
420
+ width: 80%;
421
+ border-bottom: 1px solid #E5E7EB;
422
+ }
423
+
424
+ .border-90 {
425
+ position: relative;
426
+ }
427
+
428
+ .border-90::after {
429
+ content: "";
430
+ position: absolute;
431
+ bottom: 0;
432
+ left: 0;
433
+ width: 100%;
434
+ border-bottom: 1px solid rgb(255, 255, 255);
435
+ }
436
+
437
+