@brickclay-org/ui 0.0.39 → 0.0.40

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 (56) hide show
  1. package/ASSETS_SETUP.md +59 -0
  2. package/ng-package.json +29 -0
  3. package/package.json +15 -26
  4. package/src/lib/assets/icons.ts +8 -0
  5. package/src/lib/badge/badge.html +24 -0
  6. package/src/lib/badge/badge.ts +42 -0
  7. package/src/lib/brickclay-lib.spec.ts +23 -0
  8. package/src/lib/brickclay-lib.ts +15 -0
  9. package/src/lib/button-group/button-group.html +12 -0
  10. package/src/lib/button-group/button-group.ts +73 -0
  11. package/src/lib/calender/calendar.module.ts +35 -0
  12. package/src/lib/calender/components/custom-calendar/custom-calendar.component.css +698 -0
  13. package/src/lib/calender/components/custom-calendar/custom-calendar.component.html +230 -0
  14. package/src/lib/calender/components/custom-calendar/custom-calendar.component.spec.ts +23 -0
  15. package/src/lib/calender/components/custom-calendar/custom-calendar.component.ts +1554 -0
  16. package/src/lib/calender/components/scheduled-date-picker/scheduled-date-picker.component.css +373 -0
  17. package/src/lib/calender/components/scheduled-date-picker/scheduled-date-picker.component.html +210 -0
  18. package/src/lib/calender/components/scheduled-date-picker/scheduled-date-picker.component.ts +361 -0
  19. package/src/lib/calender/components/time-picker/time-picker.component.css +174 -0
  20. package/src/lib/calender/components/time-picker/time-picker.component.html +60 -0
  21. package/src/lib/calender/components/time-picker/time-picker.component.ts +283 -0
  22. package/src/lib/calender/services/calendar-manager.service.ts +45 -0
  23. package/src/lib/checkbox/checkbox.html +42 -0
  24. package/src/lib/checkbox/checkbox.ts +67 -0
  25. package/src/lib/chips/chips.html +74 -0
  26. package/src/lib/chips/chips.ts +222 -0
  27. package/src/lib/grid/components/grid/grid.html +97 -0
  28. package/src/lib/grid/components/grid/grid.ts +139 -0
  29. package/src/lib/grid/models/grid.model.ts +20 -0
  30. package/src/lib/input/input.html +127 -0
  31. package/src/lib/input/input.ts +394 -0
  32. package/src/lib/pill/pill.html +24 -0
  33. package/src/lib/pill/pill.ts +39 -0
  34. package/src/lib/radio/radio.html +58 -0
  35. package/src/lib/radio/radio.ts +72 -0
  36. package/src/lib/select/select.html +111 -0
  37. package/src/lib/select/select.ts +401 -0
  38. package/src/lib/spinner/spinner.html +5 -0
  39. package/src/lib/spinner/spinner.ts +22 -0
  40. package/src/lib/tabs/tabs.html +28 -0
  41. package/src/lib/tabs/tabs.ts +48 -0
  42. package/src/lib/textarea/textarea.html +80 -0
  43. package/src/lib/textarea/textarea.ts +172 -0
  44. package/src/lib/toggle/toggle.html +24 -0
  45. package/src/lib/toggle/toggle.ts +62 -0
  46. package/src/lib/ui-button/ui-button.html +25 -0
  47. package/src/lib/ui-button/ui-button.ts +55 -0
  48. package/src/lib/ui-icon-button/ui-icon-button.html +7 -0
  49. package/src/lib/ui-icon-button/ui-icon-button.ts +38 -0
  50. package/src/public-api.ts +43 -0
  51. package/tsconfig.lib.json +19 -0
  52. package/tsconfig.lib.prod.json +11 -0
  53. package/tsconfig.spec.json +15 -0
  54. package/fesm2022/brickclay-org-ui.mjs +0 -4035
  55. package/fesm2022/brickclay-org-ui.mjs.map +0 -1
  56. package/index.d.ts +0 -857
@@ -0,0 +1,698 @@
1
+ /* @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); */
2
+
3
+ .calendar-container,
4
+ .calendar-container * {
5
+ font-family: 'Inter', sans-serif !important;
6
+ }
7
+ /* --------------------------
8
+ CALENDAR CONTAINER
9
+ ---------------------------*/
10
+ .calendar-container {
11
+ position: relative;
12
+ display: inline-block;
13
+ width: 100%;
14
+ }
15
+
16
+ /* --------------------------
17
+ INPUT WRAPPER
18
+ ---------------------------*/
19
+ .input-wrapper {
20
+ position: relative;
21
+ display: flex;
22
+ align-items: center;
23
+ }
24
+
25
+ .calendar-input {
26
+ width: 100%;
27
+ padding: 9px 14px 9px 40px;
28
+ border: 1px solid #ddd;
29
+ border-radius: 8px;
30
+ font-size: 14px;
31
+ cursor: pointer;
32
+ background: #fff;
33
+ transition: all 0.2s;
34
+ }
35
+
36
+ .calendar-input:hover {
37
+ border-color: #999;
38
+ }
39
+
40
+ .calendar-input:focus {
41
+ outline: none;
42
+ border-color: #999;
43
+ box-shadow: 0 0 0 3px rgb(106 106 106 / 10%);
44
+ }
45
+
46
+ .calendar-icon {
47
+ position: absolute;
48
+ left: 12px;
49
+ pointer-events: none;
50
+ font-size: 18px;
51
+ }
52
+
53
+ .clear-btn {
54
+ position: absolute;
55
+ right: 9px;
56
+ background: none;
57
+ border: none;
58
+ font-size: 20px;
59
+ color: #999;
60
+ cursor: pointer;
61
+ padding: 0;
62
+ width: 20px;
63
+ height: 20px;
64
+ display: flex;
65
+ align-items: center;
66
+ justify-content: center;
67
+ line-height: 1;
68
+ transition: color 0.2s;
69
+ top: 8px;
70
+ }
71
+
72
+ .clear-btn:hover {
73
+ color: #333;
74
+ }
75
+
76
+ /* --------------------------
77
+ CALENDAR POPUP
78
+ ---------------------------*/
79
+ .calendar-popup {
80
+ position: absolute;
81
+ top: 110%;
82
+ left: 0;
83
+ width: 320px;
84
+ background: #fff;
85
+ border-radius: 12px;
86
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
87
+ /* padding: 16px; */
88
+ z-index: 1000;
89
+ animation: slideDown 0.2s ease-out;
90
+ }
91
+
92
+ /* Inline Calendar Mode */
93
+ .calendar-popup.inline-calendar {
94
+ position: relative;
95
+ top: 0;
96
+ left: 0;
97
+ width: 100%;
98
+ margin-top: 0;
99
+ animation: none;
100
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
101
+ }
102
+
103
+ .calendar-container.inline-mode {
104
+ display: block;
105
+ width: 100%;
106
+ }
107
+
108
+ /* Increase width for dual calendar */
109
+ .calendar-popup.dual-calendar-mode {
110
+ width: 600px;
111
+ }
112
+ .calendar-popup.dual-calendar-mode.has-ranges {
113
+ width: 730px;
114
+ }
115
+ .calendar-popup.has-ranges {
116
+ width: 450px;
117
+ }
118
+
119
+ .calendar-popup.dual-calendar-mode.has-ranges .dual-calendar {
120
+ border-left: 1px solid #eee;
121
+ }
122
+
123
+ .calendar-popup.drop-up {
124
+ top: auto;
125
+ bottom: 110%;
126
+ animation: slideUp 0.2s ease-out;
127
+ }
128
+
129
+ .calendar-popup.position-right {
130
+ left: auto;
131
+ right: 0;
132
+ }
133
+
134
+ .calendar-popup.position-center {
135
+ left: 50%;
136
+ transform: translateX(-50%);
137
+ }
138
+
139
+ @keyframes slideDown {
140
+ from {
141
+ opacity: 0;
142
+ transform: translateY(-10px);
143
+ }
144
+ to {
145
+ opacity: 1;
146
+ transform: translateY(0);
147
+ }
148
+ }
149
+
150
+ @keyframes slideUp {
151
+ from {
152
+ opacity: 0;
153
+ transform: translateY(10px);
154
+ }
155
+ to {
156
+ opacity: 1;
157
+ transform: translateY(0);
158
+ }
159
+ }
160
+
161
+ /* --------------------------
162
+ RANGES SECTION
163
+ ---------------------------*/
164
+ .ranges {
165
+ display: flex;
166
+ flex-direction: column;
167
+ gap: 4px;
168
+ margin-bottom: 16px;
169
+ padding-bottom: 16px;
170
+ border-bottom: 1px solid #eee;
171
+ /* max-height: 300px; */
172
+ /* overflow-y: auto; */
173
+ min-width: 150px;
174
+ padding-right: 8px;
175
+ }
176
+
177
+ .range-btn {
178
+ padding: 7px 10px;
179
+ border: 1px solid transparent;
180
+ background: transparent;
181
+ border-radius: 4px;
182
+ cursor: pointer;
183
+ text-align: left;
184
+ font-size: 14px;
185
+ transition: all 0.2s;
186
+ color: #838383;
187
+ font-weight: 500;
188
+ }
189
+
190
+ .range-btn:hover {
191
+ background: #f5f5f5;
192
+ color: #000;
193
+ }
194
+
195
+ .range-btn.active {
196
+ background: #f0f0f0;
197
+ color: #000;
198
+ font-weight: 500;
199
+ }
200
+
201
+ /* --------------------------
202
+ CALENDAR WRAPPER
203
+ ---------------------------*/
204
+ .calendar-wrapper {
205
+ /*width: 100%;*/
206
+ padding: 0 12px 12px 12px;
207
+ border-left: 1px solid #eee;
208
+ }
209
+
210
+ /* --------------------------
211
+ HEADER (Month + Year + Arrows)
212
+ ---------------------------*/
213
+ .header {
214
+ display: flex;
215
+ justify-content: space-between;
216
+ align-items: center;
217
+ padding: 12px 0;
218
+ /* margin-bottom: 8px; */
219
+ }
220
+
221
+ .month-year {
222
+ font-size: 15px;
223
+ font-weight: 500;
224
+ color: #333;
225
+ flex: 1;
226
+ text-align: center;
227
+ text-transform: capitalize;
228
+ }
229
+
230
+ .nav-btn {
231
+ background: none;
232
+ border: none;
233
+ font-size: 24px;
234
+ cursor: pointer;
235
+ padding: 11.5px 14px;
236
+ color: #666;
237
+ border-radius: 4px;
238
+ transition: all 0.2s;
239
+ line-height: 1;
240
+ height: 30px;
241
+ width: 30px;
242
+ display: flex;
243
+ justify-content: center;
244
+ align-items: center;
245
+ }
246
+
247
+ .nav-btn:hover {
248
+ background: #f0f0f0;
249
+ color: #000;
250
+ }
251
+ .nav-btn img{
252
+ width: auto;
253
+
254
+ max-width: none !important;
255
+ }
256
+
257
+ /* --------------------------
258
+ CALENDAR TABLE
259
+ ---------------------------*/
260
+ .calendar-table {
261
+ width: 100%;
262
+ border-collapse: collapse;
263
+ text-align: center;
264
+ }
265
+
266
+ .weekday-header {
267
+ font-size: 12px;
268
+ color: #7e7e7e;
269
+ font-weight: 600;
270
+ padding: 8px 4px;
271
+ /*text-transform: uppercase;*/
272
+ letter-spacing: 0.3px;
273
+
274
+ }
275
+
276
+ /* --------------------------
277
+ DATE CELLS
278
+ ---------------------------*/
279
+ .calendar-day {
280
+ padding: 8px 4px;
281
+ font-size: 14px;
282
+ cursor: pointer;
283
+ border-radius: 6px;
284
+ transition: all 0.2s;
285
+ position: relative;
286
+ color: #333;
287
+ font-weight: 500;
288
+ line-height: 1.5;
289
+ /* text-align: center; */
290
+ /* width: 40px; */
291
+ /* height: 40px; */
292
+ /* display: flex; */
293
+ /* align-items: center; */
294
+ /* justify-content: center; */
295
+ }
296
+
297
+ .calendar-day:hover:not(.disabled):not(.other-month) {
298
+ background: #efefef;
299
+ color: #000;
300
+ }
301
+
302
+ .calendar-day.other-month {
303
+ color: #ccc;
304
+ cursor: default;
305
+ }
306
+
307
+ .calendar-day.disabled {
308
+ color: #ddd;
309
+ cursor: not-allowed;
310
+ opacity: 0.5;
311
+ }
312
+
313
+ /* --------------------------
314
+ SELECTED DATE (Active) - Start and End dates
315
+ ---------------------------*/
316
+ .calendar-day.active {
317
+ background: #000 !important;
318
+ color: white !important;
319
+ font-weight: 600;
320
+ /* border-radius: 50%;
321
+ width: 32px;
322
+ height: 32px;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ margin: 0 auto; */
327
+ }
328
+
329
+ /* --------------------------
330
+ TODAY DATE
331
+ ---------------------------*/
332
+ .calendar-day.today {
333
+ /* border: 2px solid #007bff; */
334
+ font-weight: 600;
335
+ }
336
+
337
+ .calendar-day.today:not(.active) {
338
+ background: #e5e4e4;
339
+ /* color: #007bff; */
340
+ }
341
+
342
+ .calendar-day.active:hover {
343
+ background: #000 !important;
344
+ }
345
+
346
+ /* --------------------------
347
+ IN-RANGE DATES - Dates between start and end
348
+ ---------------------------*/
349
+ .calendar-day.in-range {
350
+ background: #f5f5f5;
351
+ color: #333;
352
+ border-radius: 0;
353
+ position: relative;
354
+ }
355
+
356
+ .calendar-day.in-range:hover {
357
+ background: #e8e8e8;
358
+ }
359
+
360
+ /* Make in-range dates span full width */
361
+ .calendar-day.in-range::before {
362
+ content: '';
363
+ position: absolute;
364
+ left: 0;
365
+ right: 0;
366
+ top: 0;
367
+ bottom: 0;
368
+ background: #f5f5f5;
369
+ z-index: -1;
370
+ }
371
+
372
+ .calendar-day.in-range:hover::before {
373
+ background: #e8e8e8;
374
+ }
375
+
376
+ /* --------------------------
377
+ MULTI-SELECTED DATES
378
+ ---------------------------*/
379
+ .calendar-day.multi-selected {
380
+ background: #4caf50;
381
+ color: white;
382
+ font-weight: 600;
383
+ border-radius: 6px;
384
+ }
385
+
386
+ .calendar-day.multi-selected:hover {
387
+ background: #45a049;
388
+ }
389
+
390
+ /* --------------------------
391
+ DUAL CALENDAR
392
+ ---------------------------*/
393
+ .dual-calendar {
394
+ display: flex;
395
+ /* gap: 24px; */
396
+ width: 100%;
397
+ border-left: 1px solid #eee;
398
+ }
399
+
400
+ .calendar-left,
401
+ .calendar-right {
402
+ flex: 1;
403
+ min-width: 0;
404
+ padding: 0 12px 12px;
405
+ }
406
+
407
+ /* When ranges are shown, adjust layout */
408
+ .calendar-popup.has-ranges {
409
+ display: flex;
410
+ flex-direction: row;
411
+ /* gap: 16px; */
412
+ /* padding: 20px; */
413
+ }
414
+
415
+ .calendar-popup.has-ranges .ranges {
416
+ margin-bottom: 0;
417
+ padding-bottom: 0;
418
+ border-bottom: none;
419
+ /* border-right: 1px solid #993535; */
420
+ padding: 10px;
421
+ }
422
+
423
+ .calendar-popup.has-ranges .dual-calendar,
424
+ .calendar-popup.has-ranges .calendar-wrapper {
425
+ flex: 1;
426
+ }
427
+
428
+ .calendar-right .header {
429
+ justify-content: space-between;
430
+ }
431
+
432
+ .calendar-right .header .month-year {
433
+ text-align: center;
434
+ flex: 1;
435
+ }
436
+
437
+ /* --------------------------
438
+ TIMEPICKER SECTION
439
+ ---------------------------*/
440
+ .timepicker-section {
441
+ margin-top: 12px;
442
+ padding-top: 12px;
443
+ /* padding-bottom: 16px; */
444
+ border-top: 1px solid #eee;
445
+ }
446
+
447
+ .timepicker-label {
448
+ font-size: 12px;
449
+ font-weight: 500;
450
+ color: #000000;
451
+ margin-bottom: 4px;
452
+ /* text-transform: uppercase; */
453
+ letter-spacing: -0.28px;
454
+ }
455
+
456
+ /* .timepicker-controls {
457
+ display: flex;
458
+ justify-content: center;
459
+ } */
460
+
461
+ /* --------------------------
462
+ CUSTOM TIME PICKER
463
+ ---------------------------*/
464
+ .custom-time-picker {
465
+ display: flex;
466
+ flex-direction: column;
467
+ gap: 8px;
468
+ align-items: start;
469
+ }
470
+
471
+ .time-input-group {
472
+ display: flex;
473
+ align-items: center;
474
+ justify-content: center;
475
+ /*width: 100%;*/
476
+ gap: 8px;
477
+ background: #f8f9fa;
478
+ padding: 12px;
479
+ border-radius: 8px;
480
+ border: 1px solid #e0e0e0;
481
+ }
482
+
483
+ .time-control {
484
+ display: flex;
485
+ flex-direction: column;
486
+ align-items: center;
487
+ /* gap: 4px; */
488
+ }
489
+
490
+ .time-btn {
491
+ background: #fff;
492
+ border: 1px solid #ddd;
493
+ width: 28px;
494
+ height: 20px;
495
+ cursor: pointer;
496
+ font-size: 10px;
497
+ color: #666;
498
+ border-radius: 4px;
499
+ transition: all 0.2s;
500
+ display: flex;
501
+ align-items: center;
502
+ justify-content: center;
503
+ padding: 0;
504
+ line-height: 1;
505
+ }
506
+
507
+ .time-btn:hover {
508
+ background: #e4e4e4;
509
+ color: white;
510
+ border-color: #e4e4e4;
511
+ }
512
+
513
+ .time-btn.up {
514
+ border-bottom-left-radius: 0;
515
+ border-bottom-right-radius: 0;
516
+ border-bottom: none;
517
+ }
518
+
519
+ .time-btn.down {
520
+ border-top-left-radius: 0;
521
+ border-top-right-radius: 0;
522
+ border-top: none;
523
+ }
524
+
525
+ .time-input {
526
+ width: 40px;
527
+ height: 32px;
528
+ text-align: center;
529
+ border: 1px solid #ddd;
530
+ border-radius: 4px;
531
+ font-size: 16px;
532
+ font-weight: 600;
533
+ background: #fff;
534
+ color: #333;
535
+ }
536
+
537
+ .time-separator {
538
+ font-size: 18px;
539
+ font-weight: 600;
540
+ color: #666;
541
+ margin: 0 2px;
542
+ }
543
+
544
+ .ampm-control {
545
+ display: flex;
546
+ flex-direction: column;
547
+ gap: 4px;
548
+ margin-left: 8px;
549
+ }
550
+
551
+ .ampm-btn {
552
+ padding: 6px 12px;
553
+ border: 1px solid #ddd;
554
+ background: #fff;
555
+ border-radius: 4px;
556
+ cursor: pointer;
557
+ font-size: 12px;
558
+ font-weight: 600;
559
+ color: #666;
560
+ transition: all 0.2s;
561
+ min-width: 45px;
562
+ }
563
+
564
+ .ampm-btn:hover {
565
+ background: #f0f0f0;
566
+ }
567
+
568
+ .ampm-btn.active {
569
+ background: #000;
570
+ color: white;
571
+ border-color: #000;
572
+ }
573
+
574
+ .html5-time-input {
575
+ margin-top: 8px;
576
+ padding: 8px;
577
+ border: 1px solid #ddd;
578
+ border-radius: 6px;
579
+ font-size: 14px;
580
+ width: 100%;
581
+ max-width: 120px;
582
+ }
583
+
584
+ /* --------------------------
585
+ FOOTER (Apply/Cancel Buttons)
586
+ ---------------------------*/
587
+ .footer {
588
+ padding: 12px;
589
+ /* margin-top: 12px; */
590
+ display: flex;
591
+ justify-content: flex-end;
592
+ gap: 8px;
593
+ border-top: 1px solid #eee;
594
+ /* padding-top: 16px; */
595
+ /*width: 100%;*/
596
+ }
597
+
598
+ .btn-cancel,
599
+ .btn-apply {
600
+ padding: 8px 16px;
601
+ border: none;
602
+ border-radius: 4px;
603
+ font-size: 14px;
604
+ font-weight: 500;
605
+ cursor: pointer;
606
+ transition: all 0.2s;
607
+ min-width: 80px;
608
+ }
609
+
610
+ .btn-cancel {
611
+ background: #fff;
612
+ color: #666;
613
+ border: 1px solid #ddd;
614
+ }
615
+
616
+ .btn-cancel:hover {
617
+ background: #f5f5f5;
618
+ border-color: #bbb;
619
+ }
620
+
621
+ .btn-apply {
622
+ background: #000;
623
+ color: #fff;
624
+ }
625
+
626
+ .btn-apply:hover {
627
+ background: #333;
628
+ }
629
+
630
+ .btn-apply:active {
631
+ transform: translateY(0);
632
+ }
633
+
634
+ /* --------------------------
635
+ RESPONSIVE DESIGN
636
+ ---------------------------*/
637
+ @media (max-width: 768px) {
638
+ .calendar-popup {
639
+ width: 100%;
640
+ max-width: 320px;
641
+ }
642
+
643
+ .calendar-popup.dual-calendar-mode {
644
+ width: 100%;
645
+ max-width: 100%;
646
+ }
647
+
648
+ .calendar-popup.has-ranges {
649
+ flex-direction: column;
650
+ }
651
+
652
+ .calendar-popup.has-ranges .ranges {
653
+ border-right: none;
654
+ border-bottom: 1px solid #eee;
655
+ padding-right: 0;
656
+ margin-right: 0;
657
+ padding-bottom: 16px;
658
+ margin-bottom: 16px;
659
+ }
660
+
661
+ .dual-calendar {
662
+ flex-direction: column;
663
+ }
664
+
665
+ .time-input-group {
666
+ flex-wrap: wrap;
667
+ justify-content: center;
668
+ }
669
+ }
670
+
671
+ /* --------------------------
672
+ SCROLLBAR STYLING
673
+ ---------------------------*/
674
+ .ranges::-webkit-scrollbar {
675
+ width: 6px;
676
+ }
677
+
678
+ .ranges::-webkit-scrollbar-track {
679
+ background: #f1f1f1;
680
+ border-radius: 3px;
681
+ }
682
+
683
+ .ranges::-webkit-scrollbar-thumb {
684
+ background: #888;
685
+ border-radius: 3px;
686
+ }
687
+
688
+ .ranges::-webkit-scrollbar-thumb:hover {
689
+ background: #555;
690
+ }
691
+
692
+
693
+ .w-100 {
694
+ width: 100%;
695
+ }
696
+ .flex-grow-1 {
697
+ flex-grow: 1;
698
+ }