@bodynarf/react.components 1.13.8 → 1.14.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 (100) hide show
  1. package/changelog.md +55 -0
  2. package/components/index.d.ts +14 -0
  3. package/components/index.d.ts.map +1 -1
  4. package/components/index.js +14 -0
  5. package/components/modal/component/index.d.ts +7 -0
  6. package/components/modal/component/index.d.ts.map +1 -0
  7. package/components/modal/component/index.js +42 -0
  8. package/components/modal/component/style.scss +42 -0
  9. package/components/modal/index.d.ts +3 -0
  10. package/components/modal/index.d.ts.map +1 -0
  11. package/components/modal/index.js +2 -0
  12. package/components/modal/types.d.ts +44 -0
  13. package/components/modal/types.d.ts.map +1 -0
  14. package/components/modal/types.js +1 -0
  15. package/components/multiselect/components/withoutLabel/index.js +2 -2
  16. package/components/primitives/index.d.ts +4 -0
  17. package/components/primitives/index.d.ts.map +1 -1
  18. package/components/primitives/index.js +4 -0
  19. package/components/primitives/number/components/withLabel/index.d.ts.map +1 -1
  20. package/components/primitives/number/components/withLabel/index.js +10 -2
  21. package/components/primitives/number/components/withoutLabel/index.d.ts.map +1 -1
  22. package/components/primitives/number/components/withoutLabel/index.js +12 -4
  23. package/components/primitives/number/types.d.ts +6 -0
  24. package/components/primitives/number/types.d.ts.map +1 -1
  25. package/components/primitives/radioGroup/component/index.d.ts +7 -0
  26. package/components/primitives/radioGroup/component/index.d.ts.map +1 -0
  27. package/components/primitives/radioGroup/component/index.js +42 -0
  28. package/components/primitives/radioGroup/component/style.scss +269 -0
  29. package/components/primitives/radioGroup/index.d.ts +3 -0
  30. package/components/primitives/radioGroup/index.d.ts.map +1 -0
  31. package/components/primitives/radioGroup/index.js +2 -0
  32. package/components/primitives/radioGroup/types.d.ts +61 -0
  33. package/components/primitives/radioGroup/types.d.ts.map +1 -0
  34. package/components/primitives/radioGroup/types.js +1 -0
  35. package/components/primitives/slider/component/index.d.ts +7 -0
  36. package/components/primitives/slider/component/index.d.ts.map +1 -0
  37. package/components/primitives/slider/component/index.js +47 -0
  38. package/components/primitives/slider/component/style.scss +319 -0
  39. package/components/primitives/slider/index.d.ts +3 -0
  40. package/components/primitives/slider/index.d.ts.map +1 -0
  41. package/components/primitives/slider/index.js +2 -0
  42. package/components/primitives/slider/types.d.ts +51 -0
  43. package/components/primitives/slider/types.d.ts.map +1 -0
  44. package/components/primitives/slider/types.js +1 -0
  45. package/components/primitives/switch/component/index.d.ts +7 -0
  46. package/components/primitives/switch/component/index.d.ts.map +1 -0
  47. package/components/primitives/switch/component/index.js +39 -0
  48. package/components/primitives/switch/component/style.scss +214 -0
  49. package/components/primitives/switch/index.d.ts +3 -0
  50. package/components/primitives/switch/index.d.ts.map +1 -0
  51. package/components/primitives/switch/index.js +2 -0
  52. package/components/primitives/switch/types.d.ts +23 -0
  53. package/components/primitives/switch/types.d.ts.map +1 -0
  54. package/components/primitives/switch/types.js +1 -0
  55. package/components/primitives/timePicker/component/index.d.ts +8 -0
  56. package/components/primitives/timePicker/component/index.d.ts.map +1 -0
  57. package/components/primitives/timePicker/component/index.js +65 -0
  58. package/components/primitives/timePicker/component/style.scss +26 -0
  59. package/components/primitives/timePicker/index.d.ts +3 -0
  60. package/components/primitives/timePicker/index.d.ts.map +1 -0
  61. package/components/primitives/timePicker/index.js +2 -0
  62. package/components/primitives/timePicker/types.d.ts +33 -0
  63. package/components/primitives/timePicker/types.d.ts.map +1 -0
  64. package/components/primitives/timePicker/types.js +1 -0
  65. package/components/search/component/index.d.ts.map +1 -1
  66. package/components/search/component/index.js +9 -3
  67. package/components/search/types.d.ts +5 -0
  68. package/components/search/types.d.ts.map +1 -1
  69. package/components/stepper/component/index.d.ts +7 -0
  70. package/components/stepper/component/index.d.ts.map +1 -0
  71. package/components/stepper/component/index.js +56 -0
  72. package/components/stepper/component/style.scss +430 -0
  73. package/components/stepper/index.d.ts +3 -0
  74. package/components/stepper/index.d.ts.map +1 -0
  75. package/components/stepper/index.js +2 -0
  76. package/components/stepper/types.d.ts +65 -0
  77. package/components/stepper/types.d.ts.map +1 -0
  78. package/components/stepper/types.js +1 -0
  79. package/components/timeline/component/index.d.ts +7 -0
  80. package/components/timeline/component/index.d.ts.map +1 -0
  81. package/components/timeline/component/index.js +36 -0
  82. package/components/timeline/component/style.scss +395 -0
  83. package/components/timeline/index.d.ts +3 -0
  84. package/components/timeline/index.d.ts.map +1 -0
  85. package/components/timeline/index.js +2 -0
  86. package/components/timeline/types.d.ts +55 -0
  87. package/components/timeline/types.d.ts.map +1 -0
  88. package/components/timeline/types.js +1 -0
  89. package/components/tooltip/component/index.d.ts +6 -0
  90. package/components/tooltip/component/index.d.ts.map +1 -0
  91. package/components/tooltip/component/index.js +80 -0
  92. package/components/tooltip/index.d.ts +3 -0
  93. package/components/tooltip/index.d.ts.map +1 -0
  94. package/components/tooltip/index.js +2 -0
  95. package/components/tooltip/types.d.ts +31 -0
  96. package/components/tooltip/types.d.ts.map +1 -0
  97. package/components/tooltip/types.js +1 -0
  98. package/package.json +1 -1
  99. package/readme.md +18 -3
  100. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,430 @@
1
+ $stepper-marker-size: 2.5rem !default;
2
+ $stepper-marker-size-small: 2rem !default;
3
+ $stepper-marker-size-medium: 3rem !default;
4
+ $stepper-marker-size-large: 3.5rem !default;
5
+
6
+ $stepper-connector-thickness: 2px !default;
7
+ $stepper-connector-color: $grey-lighter !default;
8
+ $stepper-connector-completed-color: $primary !default;
9
+
10
+ $stepper-marker-bg: $white !default;
11
+ $stepper-marker-border: 2px solid $grey-lighter !default;
12
+ $stepper-marker-color: $grey !default;
13
+
14
+ $stepper-marker-completed-bg: $primary !default;
15
+ $stepper-marker-completed-border: 2px solid $primary !default;
16
+ $stepper-marker-completed-color: $white !default;
17
+
18
+ $stepper-marker-current-bg: $white !default;
19
+ $stepper-marker-current-border: 2px solid $primary !default;
20
+ $stepper-marker-current-color: $primary !default;
21
+
22
+ $stepper-title-color: $grey-dark !default;
23
+ $stepper-title-completed-color: $grey-dark !default;
24
+ $stepper-title-current-color: $grey-darker !default;
25
+ $stepper-title-upcoming-color: $grey !default;
26
+
27
+ $stepper-description-color: $grey !default;
28
+
29
+ // Animation
30
+ @keyframes stepper-connector-fill {
31
+ from {
32
+ width: 0;
33
+ }
34
+ to {
35
+ width: 100%;
36
+ }
37
+ }
38
+
39
+ .bbr-stepper {
40
+ display: flex;
41
+ flex-direction: row;
42
+ align-items: flex-start;
43
+ width: 100%;
44
+
45
+ // Vertical mode
46
+ &.is-vertical {
47
+ flex-direction: column;
48
+
49
+ .bbr-stepper-step {
50
+ flex-direction: row;
51
+ align-items: flex-start;
52
+ width: 100%;
53
+ padding-bottom: 1.5rem;
54
+
55
+ &:last-child {
56
+ padding-bottom: 0;
57
+ }
58
+ }
59
+
60
+ .bbr-stepper-content {
61
+ margin-top: 0;
62
+ margin-left: 1rem;
63
+ text-align: left;
64
+ }
65
+
66
+ .bbr-stepper-connector {
67
+ position: absolute;
68
+ left: calc($stepper-marker-size / 2 - $stepper-connector-thickness / 2);
69
+ top: $stepper-marker-size;
70
+ width: $stepper-connector-thickness;
71
+ height: calc(100% - $stepper-marker-size + 0.5rem);
72
+ right: auto;
73
+
74
+ &.has-arrow {
75
+ height: calc(100% - $stepper-marker-size);
76
+
77
+ &::after {
78
+ right: auto;
79
+ left: 50%;
80
+ top: auto;
81
+ bottom: -6px;
82
+ transform: translateX(-50%);
83
+ border-top: 6px solid $stepper-connector-color;
84
+ border-bottom: none;
85
+ border-left: 5px solid transparent;
86
+ border-right: 5px solid transparent;
87
+ }
88
+
89
+ &.is-completed::after {
90
+ border-top-color: $stepper-connector-completed-color;
91
+ border-left-color: transparent;
92
+ }
93
+ }
94
+ }
95
+
96
+ &.is-small .bbr-stepper-connector {
97
+ left: calc($stepper-marker-size-small / 2 - $stepper-connector-thickness / 2);
98
+ top: $stepper-marker-size-small;
99
+ height: calc(100% - $stepper-marker-size-small + 0.5rem);
100
+ }
101
+
102
+ &.is-medium .bbr-stepper-connector {
103
+ left: calc($stepper-marker-size-medium / 2 - $stepper-connector-thickness / 2);
104
+ top: $stepper-marker-size-medium;
105
+ height: calc(100% - $stepper-marker-size-medium + 0.5rem);
106
+ }
107
+
108
+ &.is-large .bbr-stepper-connector {
109
+ left: calc($stepper-marker-size-large / 2 - $stepper-connector-thickness / 2);
110
+ top: $stepper-marker-size-large;
111
+ height: calc(100% - $stepper-marker-size-large + 0.5rem);
112
+ }
113
+ }
114
+
115
+ // Step item
116
+ .bbr-stepper-step {
117
+ position: relative;
118
+ display: flex;
119
+ flex-direction: column;
120
+ align-items: center;
121
+ flex: 1;
122
+ padding: 0 0.5rem;
123
+
124
+ &:first-child {
125
+ padding-left: 0;
126
+ }
127
+
128
+ &:last-child {
129
+ padding-right: 0;
130
+ }
131
+
132
+ // Clickable step
133
+ &.is-clickable {
134
+ cursor: pointer;
135
+
136
+ .bbr-stepper-marker {
137
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
138
+ }
139
+
140
+ &:hover .bbr-stepper-marker {
141
+ transform: scale(1.1);
142
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
143
+ }
144
+ }
145
+
146
+ // Completed step
147
+ &.is-completed {
148
+ .bbr-stepper-marker {
149
+ background: $stepper-marker-completed-bg;
150
+ border: $stepper-marker-completed-border;
151
+ color: $stepper-marker-completed-color;
152
+ }
153
+
154
+ .bbr-stepper-title {
155
+ color: $stepper-title-completed-color;
156
+ font-weight: 500;
157
+ }
158
+ }
159
+
160
+ // Current step
161
+ &.is-current {
162
+ .bbr-stepper-marker {
163
+ background: $stepper-marker-current-bg;
164
+ border: $stepper-marker-current-border;
165
+ color: $stepper-marker-current-color;
166
+ box-shadow: 0 0 0 4px rgba($primary, 0.2);
167
+ }
168
+
169
+ .bbr-stepper-title {
170
+ color: $stepper-title-current-color;
171
+ font-weight: 600;
172
+ }
173
+ }
174
+
175
+ // Upcoming step
176
+ &.is-upcoming {
177
+ .bbr-stepper-marker {
178
+ background: $stepper-marker-bg;
179
+ border: $stepper-marker-border;
180
+ color: $stepper-marker-color;
181
+ }
182
+
183
+ .bbr-stepper-title {
184
+ color: $stepper-title-upcoming-color;
185
+ }
186
+ }
187
+ }
188
+
189
+ // Marker (circle with number or icon)
190
+ .bbr-stepper-marker {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ width: $stepper-marker-size;
195
+ height: $stepper-marker-size;
196
+ border-radius: 50%;
197
+ font-weight: 600;
198
+ font-size: 1rem;
199
+ transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
200
+ z-index: 1;
201
+ flex-shrink: 0;
202
+ }
203
+
204
+ .bbr-stepper-number,
205
+ .bbr-stepper-icon {
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ }
210
+
211
+ // Content (title + description)
212
+ .bbr-stepper-content {
213
+ margin-top: 0.75rem;
214
+ text-align: center;
215
+ }
216
+
217
+ .bbr-stepper-title {
218
+ font-size: 0.875rem;
219
+ line-height: 1.25;
220
+ transition: color 0.2s ease;
221
+ }
222
+
223
+ .bbr-stepper-description {
224
+ margin-top: 0.25rem;
225
+ font-size: 0.75rem;
226
+ color: $stepper-description-color;
227
+ line-height: 1.25;
228
+ }
229
+
230
+ // Connector line
231
+ .bbr-stepper-connector {
232
+ position: absolute;
233
+ top: calc($stepper-marker-size / 2 - $stepper-connector-thickness / 2);
234
+ left: calc(50% + $stepper-marker-size / 2 + 0.25rem);
235
+ right: calc(-50% + $stepper-marker-size / 2 + 0.25rem);
236
+ height: $stepper-connector-thickness;
237
+ background: $stepper-connector-color;
238
+ z-index: 0;
239
+
240
+ &.is-completed {
241
+ background: $stepper-connector-completed-color;
242
+ }
243
+
244
+ &.is-hidden {
245
+ display: none;
246
+ }
247
+
248
+ // Arrow connector (line with arrowhead via ::before)
249
+ &.has-arrow::before {
250
+ content: "";
251
+ position: absolute;
252
+ right: -6px;
253
+ top: 50%;
254
+ transform: translateY(-50%);
255
+ width: 0;
256
+ height: 0;
257
+ border-top: 5px solid transparent;
258
+ border-bottom: 5px solid transparent;
259
+ border-left: 6px solid $stepper-connector-color;
260
+ z-index: 2;
261
+ }
262
+
263
+ &.has-arrow.is-completed::before {
264
+ border-left-color: $stepper-connector-completed-color;
265
+ }
266
+ }
267
+
268
+ // Vertical mode arrow
269
+ &.is-vertical .bbr-stepper-connector.has-arrow::before {
270
+ right: auto;
271
+ top: auto;
272
+ left: 50%;
273
+ bottom: -6px;
274
+ transform: translateX(-50%);
275
+ border-left: 5px solid transparent;
276
+ border-right: 5px solid transparent;
277
+ border-top: 6px solid $stepper-connector-color;
278
+ border-bottom: none;
279
+ }
280
+
281
+ &.is-vertical .bbr-stepper-connector.has-arrow.is-completed::before {
282
+ border-top-color: $stepper-connector-completed-color;
283
+ border-left-color: transparent;
284
+ }
285
+
286
+ // Animated connectors
287
+ &.is-animated {
288
+ .bbr-stepper-connector.is-completed {
289
+ position: relative;
290
+ background: $stepper-connector-color;
291
+
292
+ &::after {
293
+ content: "";
294
+ position: absolute;
295
+ top: 0;
296
+ left: 0;
297
+ height: 100%;
298
+ background: $stepper-connector-completed-color;
299
+ animation: stepper-connector-fill 0.5s ease forwards;
300
+ }
301
+ }
302
+
303
+ &.is-vertical .bbr-stepper-connector.is-completed::after {
304
+ width: 100%;
305
+ height: 0;
306
+ animation: none;
307
+
308
+ @keyframes stepper-connector-fill-vertical {
309
+ from {
310
+ height: 0;
311
+ }
312
+ to {
313
+ height: 100%;
314
+ }
315
+ }
316
+
317
+ animation: stepper-connector-fill-vertical 0.5s ease forwards;
318
+ }
319
+ }
320
+
321
+ // Size variations
322
+ &.is-small {
323
+ .bbr-stepper-marker {
324
+ width: $stepper-marker-size-small;
325
+ height: $stepper-marker-size-small;
326
+ font-size: 0.875rem;
327
+ }
328
+
329
+ .bbr-stepper-title {
330
+ font-size: 0.75rem;
331
+ }
332
+
333
+ .bbr-stepper-description {
334
+ font-size: 0.625rem;
335
+ }
336
+
337
+ .bbr-stepper-connector {
338
+ top: calc($stepper-marker-size-small / 2 - $stepper-connector-thickness / 2);
339
+ left: calc(50% + $stepper-marker-size-small / 2 + 0.25rem);
340
+ right: calc(-50% + $stepper-marker-size-small / 2 + 0.25rem);
341
+ }
342
+ }
343
+
344
+ &.is-medium {
345
+ .bbr-stepper-marker {
346
+ width: $stepper-marker-size-medium;
347
+ height: $stepper-marker-size-medium;
348
+ font-size: 1.25rem;
349
+ }
350
+
351
+ .bbr-stepper-title {
352
+ font-size: 1rem;
353
+ }
354
+
355
+ .bbr-stepper-description {
356
+ font-size: 0.875rem;
357
+ }
358
+
359
+ .bbr-stepper-connector {
360
+ top: calc($stepper-marker-size-medium / 2 - $stepper-connector-thickness / 2);
361
+ left: calc(50% + $stepper-marker-size-medium / 2 + 0.25rem);
362
+ right: calc(-50% + $stepper-marker-size-medium / 2 + 0.25rem);
363
+ }
364
+ }
365
+
366
+ &.is-large {
367
+ .bbr-stepper-marker {
368
+ width: $stepper-marker-size-large;
369
+ height: $stepper-marker-size-large;
370
+ font-size: 1.5rem;
371
+ }
372
+
373
+ .bbr-stepper-title {
374
+ font-size: 1.125rem;
375
+ }
376
+
377
+ .bbr-stepper-description {
378
+ font-size: 1rem;
379
+ }
380
+
381
+ .bbr-stepper-connector {
382
+ top: calc($stepper-marker-size-large / 2 - $stepper-connector-thickness / 2);
383
+ left: calc(50% + $stepper-marker-size-large / 2 + 0.25rem);
384
+ right: calc(-50% + $stepper-marker-size-large / 2 + 0.25rem);
385
+ }
386
+ }
387
+
388
+ // Color variations
389
+ @each $name, $pair in $colors {
390
+ $color: nth($pair, 1);
391
+ $color-invert: nth($pair, 2);
392
+
393
+ &.is-#{$name} {
394
+ .bbr-stepper-step.is-completed {
395
+ .bbr-stepper-marker {
396
+ background: $color;
397
+ border-color: $color;
398
+ color: $color-invert;
399
+ }
400
+ }
401
+
402
+ .bbr-stepper-step.is-current {
403
+ .bbr-stepper-marker {
404
+ border-color: $color;
405
+ color: $color;
406
+ box-shadow: 0 0 0 4px rgba($color, 0.2);
407
+ }
408
+ }
409
+
410
+ .bbr-stepper-connector.is-completed {
411
+ background: $color;
412
+ }
413
+
414
+ // Arrow color for horizontal
415
+ .bbr-stepper-connector.has-arrow.is-completed::before {
416
+ border-left-color: $color;
417
+ }
418
+
419
+ &.is-animated .bbr-stepper-connector.is-completed::after {
420
+ background: $color;
421
+ }
422
+
423
+ // Arrow color for vertical
424
+ &.is-vertical .bbr-stepper-connector.has-arrow.is-completed::before {
425
+ border-top-color: $color;
426
+ border-left-color: transparent;
427
+ }
428
+ }
429
+ }
430
+ }
@@ -0,0 +1,3 @@
1
+ export { default } from "./component";
2
+ export * from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/stepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from "./component";
2
+ export * from "./types";
@@ -0,0 +1,65 @@
1
+ import { BaseElementProps, ElementColor, ElementSize } from "../../types";
2
+ /** Single step item */
3
+ export interface StepItem {
4
+ /** Unique step identifier */
5
+ id: string;
6
+ /** Step title/label */
7
+ title: string;
8
+ /** Optional step description */
9
+ description?: string;
10
+ /** Optional icon class (e.g., "fa-check", "fa-user") */
11
+ icon?: string;
12
+ /** Is step clickable (can navigate to this step) */
13
+ clickable?: boolean;
14
+ }
15
+ /** Step status */
16
+ export type StepStatus = "completed" | "current" | "upcoming";
17
+ /** Stepper component props */
18
+ export type StepperProps = BaseElementProps & {
19
+ /** Array of steps to display */
20
+ steps: Array<StepItem>;
21
+ /** Currently active step id */
22
+ currentStep: string;
23
+ /** Component size */
24
+ size?: ElementSize;
25
+ /** Component color for completed/active steps */
26
+ color?: ElementColor;
27
+ /**
28
+ * Display stepper vertically.
29
+ * @default false
30
+ */
31
+ vertical?: boolean;
32
+ /**
33
+ * Show step numbers instead of icons.
34
+ * @default true
35
+ */
36
+ showNumbers?: boolean;
37
+ /**
38
+ * Allow clicking on completed steps to navigate back.
39
+ * @default false
40
+ */
41
+ clickable?: boolean;
42
+ /**
43
+ * Show connector lines between steps.
44
+ * @default true
45
+ */
46
+ showConnectors?: boolean;
47
+ /**
48
+ * Use animated connectors for completed steps.
49
+ * @default false
50
+ */
51
+ animated?: boolean;
52
+ /**
53
+ * Show arrow connectors (line with arrowhead) between steps.
54
+ * When enabled, replaces regular connectors with arrow-style connectors.
55
+ * @default false
56
+ */
57
+ showArrows?: boolean;
58
+ /**
59
+ * Handler when a step is clicked (only works with clickable=true).
60
+ * @param step The clicked step
61
+ * @param index Step index
62
+ */
63
+ onStepClick?: (step: StepItem, index: number) => void;
64
+ };
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/stepper/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,uBAAuB;AACvB,MAAM,WAAW,QAAQ;IACrB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,kBAAkB;AAClB,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,8BAA8B;AAC9B,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG;IAC1C,gCAAgC;IAChC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEvB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ import "./style.scss";
3
+ import { TimelineProps } from "../types";
4
+ /** Timeline component for displaying chronological events */
5
+ declare const Timeline: FC<TimelineProps>;
6
+ export default Timeline;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/timeline/component/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAOpC,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AAYvD,6DAA6D;AAC7D,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAsG/B,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { getClassName } from "@bodynarf/utils";
4
+ import { ElementColor, ElementSize } from "../../../types";
5
+ import { getElementColorClassName, getSizeClassName, mapDataAttributes } from "../../../utils";
6
+ import "./style.scss";
7
+ /** Get color class for timeline item */
8
+ const getItemColorClass = (item, defaultColor) => {
9
+ const color = item.color ?? defaultColor;
10
+ return getElementColorClassName(color);
11
+ };
12
+ /** Timeline component for displaying chronological events */
13
+ const Timeline = ({ items, size = ElementSize.Normal, color = ElementColor.Primary, leftAligned = true, showConnectors = true, animated = false, showTimestampsSeparate = false, hollow = false, className, title, data, }) => {
14
+ const containerClassName = useMemo(() => getClassName([
15
+ "bbr-timeline",
16
+ className,
17
+ getSizeClassName(size, ElementSize.Normal),
18
+ getElementColorClassName(color),
19
+ leftAligned ? "is-left-aligned" : "is-centered",
20
+ showConnectors ? "has-connectors" : "",
21
+ animated ? "is-animated" : "",
22
+ showTimestampsSeparate && !leftAligned ? "has-separate-timestamps" : "",
23
+ hollow ? "is-hollow" : "",
24
+ ]), [className, size, color, leftAligned, showConnectors, animated, showTimestampsSeparate, hollow]);
25
+ const dataAttributes = mapDataAttributes(data);
26
+ return (_jsx("div", { title: title, ...dataAttributes, className: containerClassName, children: items.map((item, index) => {
27
+ const itemColorClass = getItemColorClass(item, color);
28
+ const itemClassName = getClassName([
29
+ "bbr-timeline-item",
30
+ itemColorClass,
31
+ animated ? `is-animated-${index % 2 === 0 ? "left" : "right"}` : "",
32
+ ]);
33
+ return (_jsxs("div", { className: itemClassName, children: [showTimestampsSeparate === true && leftAligned === false && item.timestamp !== undefined && (_jsx("div", { className: "bbr-timeline-timestamp is-left", children: item.timestamp })), _jsx("div", { className: "bbr-timeline-marker", children: item.icon !== undefined ? (_jsx("span", { className: "bbr-timeline-icon", children: _jsx("i", { className: `fas ${item.icon}` }) })) : item.marker !== undefined ? (_jsx("span", { className: "bbr-timeline-marker-content", children: item.marker })) : null }), _jsxs("div", { className: "bbr-timeline-content", children: [item.timestamp !== undefined && showTimestampsSeparate === false && (_jsx("div", { className: "bbr-timeline-timestamp", children: item.timestamp })), _jsx("div", { className: "bbr-timeline-title", children: item.title }), item.content !== undefined && item.content !== "" && (_jsx("div", { className: "bbr-timeline-text", children: item.content }))] }), showTimestampsSeparate === true && leftAligned === false && item.timestamp !== undefined && (_jsx("div", { className: "bbr-timeline-timestamp is-right", children: item.timestamp })), showConnectors === true && index < items.length - 1 && (_jsx("div", { className: "bbr-timeline-connector" }))] }, item.id));
34
+ }) }));
35
+ };
36
+ export default Timeline;