@serkonda7/solid-components 0.0.8 → 0.2.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.
- package/README.md +11 -0
- package/dist/combobox.d.ts +2 -0
- package/dist/data-table.d.ts +8 -0
- package/dist/filter-table.d.ts +70 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +675 -140
- package/dist/search-bar.d.ts +25 -0
- package/dist/styles.css +440 -0
- package/dist/vite.d.ts +16 -0
- package/dist/vite.js +2 -0
- package/package.json +24 -14
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { JSX } from 'solid-js';
|
|
2
|
+
export interface SearchBarProps {
|
|
3
|
+
value: string;
|
|
4
|
+
onInput: (value: string) => void;
|
|
5
|
+
/** Accessible name of the input. Defaults to `Search`. */
|
|
6
|
+
ariaLabel?: string;
|
|
7
|
+
/** Defaults to `Search…`. */
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/** Accessible name of the clear button. Defaults to `Clear search`. */
|
|
10
|
+
clearLabel?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Key that focuses the input together with Ctrl/Cmd, from anywhere on the page.
|
|
13
|
+
* Defaults to `k`; `false` disables the shortcut and its hint.
|
|
14
|
+
*/
|
|
15
|
+
shortcutKey?: string | false;
|
|
16
|
+
/** Text of the shortcut hint shown while empty. Defaults to `Ctrl <KEY>`. */
|
|
17
|
+
shortcutLabel?: string;
|
|
18
|
+
class?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Search input with a leading icon, a clear button while filled, and a global
|
|
22
|
+
* Ctrl/Cmd+K shortcut that focuses and selects it. While the input is empty a
|
|
23
|
+
* `<kbd>` hint shows the shortcut (hidden on touch devices).
|
|
24
|
+
*/
|
|
25
|
+
export declare function SearchBar(props: SearchBarProps): JSX.Element;
|
package/dist/styles.css
CHANGED
|
@@ -9,10 +9,17 @@
|
|
|
9
9
|
|
|
10
10
|
.data-table-toolbar {
|
|
11
11
|
display: flex;
|
|
12
|
+
align-items: flex-start;
|
|
12
13
|
justify-content: flex-end;
|
|
14
|
+
gap: 0.5rem;
|
|
13
15
|
margin-bottom: 0.5rem;
|
|
14
16
|
}
|
|
15
17
|
|
|
18
|
+
.data-table-toolbar-start {
|
|
19
|
+
flex: 1;
|
|
20
|
+
min-width: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
.data-table-customizer {
|
|
17
24
|
position: relative;
|
|
18
25
|
}
|
|
@@ -72,13 +79,53 @@
|
|
|
72
79
|
gap: 0.375rem;
|
|
73
80
|
}
|
|
74
81
|
|
|
82
|
+
.data-table-customizer-item {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
gap: 0.25rem;
|
|
86
|
+
border-radius: 0.25rem;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.data-table-customizer-item-dragging {
|
|
90
|
+
opacity: 0.5;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.data-table-customizer-grip {
|
|
94
|
+
flex: none;
|
|
95
|
+
opacity: 0.5;
|
|
96
|
+
cursor: grab;
|
|
97
|
+
}
|
|
98
|
+
|
|
75
99
|
.data-table-customizer-option {
|
|
76
100
|
display: flex;
|
|
101
|
+
flex: 1;
|
|
77
102
|
align-items: center;
|
|
78
103
|
gap: 0.5rem;
|
|
79
104
|
cursor: pointer;
|
|
80
105
|
}
|
|
81
106
|
|
|
107
|
+
.data-table-customizer-move {
|
|
108
|
+
display: inline-flex;
|
|
109
|
+
padding: 0.125rem;
|
|
110
|
+
border: 0;
|
|
111
|
+
border-radius: 0.25rem;
|
|
112
|
+
background: none;
|
|
113
|
+
color: inherit;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.data-table-customizer-move:hover:not(:disabled) {
|
|
118
|
+
background: var(
|
|
119
|
+
--data-table-customizer-hover-bg,
|
|
120
|
+
var(--surface-hover, light-dark(#f5f5f5, #292d33))
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.data-table-customizer-move:disabled {
|
|
125
|
+
opacity: 0.3;
|
|
126
|
+
cursor: default;
|
|
127
|
+
}
|
|
128
|
+
|
|
82
129
|
.data-table-customizer-option:has(input:disabled) {
|
|
83
130
|
opacity: 0.6;
|
|
84
131
|
cursor: not-allowed;
|
|
@@ -355,3 +402,396 @@
|
|
|
355
402
|
display: flex;
|
|
356
403
|
align-items: center;
|
|
357
404
|
}
|
|
405
|
+
|
|
406
|
+
/* FilterTable: Results/Filters tabs around a DataTable. */
|
|
407
|
+
.filter-table-tabs {
|
|
408
|
+
display: flex;
|
|
409
|
+
gap: 0.25rem;
|
|
410
|
+
margin-bottom: 0.75rem;
|
|
411
|
+
border-bottom: 1px solid
|
|
412
|
+
var(--filter-table-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.filter-table-tab {
|
|
416
|
+
display: inline-flex;
|
|
417
|
+
align-items: center;
|
|
418
|
+
gap: 0.4rem;
|
|
419
|
+
margin-bottom: -1px;
|
|
420
|
+
padding: 0.5rem 0.875rem;
|
|
421
|
+
border: 1px solid transparent;
|
|
422
|
+
border-radius: 0.375rem 0.375rem 0 0;
|
|
423
|
+
background: transparent;
|
|
424
|
+
color: var(
|
|
425
|
+
--filter-table-muted,
|
|
426
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
427
|
+
);
|
|
428
|
+
font: inherit;
|
|
429
|
+
cursor: pointer;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.filter-table-tab:hover {
|
|
433
|
+
background: transparent;
|
|
434
|
+
color: inherit;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.filter-table-tab[aria-selected="true"] {
|
|
438
|
+
border-color: var(
|
|
439
|
+
--filter-table-border,
|
|
440
|
+
var(--border, light-dark(#d0d0d0, #3a3e45))
|
|
441
|
+
)
|
|
442
|
+
var(--filter-table-border, var(--border, light-dark(#d0d0d0, #3a3e45)))
|
|
443
|
+
transparent;
|
|
444
|
+
background: var(
|
|
445
|
+
--filter-table-bg,
|
|
446
|
+
var(--surface, light-dark(#ffffff, #1d2024))
|
|
447
|
+
);
|
|
448
|
+
color: inherit;
|
|
449
|
+
font-weight: 600;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.filter-table-badge {
|
|
453
|
+
min-width: 1.25rem;
|
|
454
|
+
padding: 0.05rem 0.4rem;
|
|
455
|
+
border-radius: 999px;
|
|
456
|
+
background: var(
|
|
457
|
+
--filter-table-accent,
|
|
458
|
+
var(--primary, light-dark(#1a66d6, #6ea8fe))
|
|
459
|
+
);
|
|
460
|
+
color: light-dark(#ffffff, #10141a);
|
|
461
|
+
font-size: 0.75em;
|
|
462
|
+
font-weight: 600;
|
|
463
|
+
text-align: center;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.filter-table-toolbar {
|
|
467
|
+
display: flex;
|
|
468
|
+
flex-wrap: wrap;
|
|
469
|
+
align-items: center;
|
|
470
|
+
gap: 0.5rem;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.filter-table-input {
|
|
474
|
+
box-sizing: border-box;
|
|
475
|
+
width: 100%;
|
|
476
|
+
padding: 0.375rem 0.5rem;
|
|
477
|
+
border: 1px solid
|
|
478
|
+
var(--filter-table-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
479
|
+
border-radius: 0.375rem;
|
|
480
|
+
background: var(
|
|
481
|
+
--filter-table-bg,
|
|
482
|
+
var(--surface, light-dark(#ffffff, #1d2024))
|
|
483
|
+
);
|
|
484
|
+
color: inherit;
|
|
485
|
+
font: inherit;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
.filter-table-search {
|
|
489
|
+
position: relative;
|
|
490
|
+
flex: 0 1 16rem;
|
|
491
|
+
min-width: 10rem;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.filter-table-search .filter-table-input {
|
|
495
|
+
padding-left: 1.9rem;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.filter-table-search-icon {
|
|
499
|
+
position: absolute;
|
|
500
|
+
top: 50%;
|
|
501
|
+
left: 0.55rem;
|
|
502
|
+
transform: translateY(-50%);
|
|
503
|
+
color: var(
|
|
504
|
+
--filter-table-muted,
|
|
505
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
506
|
+
);
|
|
507
|
+
pointer-events: none;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
.filter-table-pills,
|
|
511
|
+
.filter-table-chips {
|
|
512
|
+
display: flex;
|
|
513
|
+
flex-wrap: wrap;
|
|
514
|
+
gap: 0.375rem;
|
|
515
|
+
margin: 0;
|
|
516
|
+
padding: 0;
|
|
517
|
+
list-style: none;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
.filter-table-pill,
|
|
521
|
+
.filter-table-chip {
|
|
522
|
+
display: inline-flex;
|
|
523
|
+
align-items: center;
|
|
524
|
+
gap: 0.3rem;
|
|
525
|
+
padding: 0.2rem 0.55rem;
|
|
526
|
+
border: 1px solid transparent;
|
|
527
|
+
border-radius: 999px;
|
|
528
|
+
background: var(
|
|
529
|
+
--filter-table-pill-bg,
|
|
530
|
+
light-dark(rgb(26 102 214 / 12%), rgb(110 168 254 / 16%))
|
|
531
|
+
);
|
|
532
|
+
color: var(
|
|
533
|
+
--filter-table-accent,
|
|
534
|
+
var(--primary, light-dark(#1a66d6, #6ea8fe))
|
|
535
|
+
);
|
|
536
|
+
font: inherit;
|
|
537
|
+
font-size: 0.8125rem;
|
|
538
|
+
line-height: 1.4;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
.filter-table-pill {
|
|
542
|
+
cursor: pointer;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.filter-table-pill:hover {
|
|
546
|
+
border-color: currentColor;
|
|
547
|
+
background: var(
|
|
548
|
+
--filter-table-pill-bg,
|
|
549
|
+
light-dark(rgb(26 102 214 / 12%), rgb(110 168 254 / 16%))
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
.filter-table-pill-clear {
|
|
554
|
+
background: transparent;
|
|
555
|
+
color: var(
|
|
556
|
+
--filter-table-muted,
|
|
557
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
558
|
+
);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
.filter-table-pill-clear:hover {
|
|
562
|
+
background: transparent;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
.filter-table-saved {
|
|
566
|
+
display: flex;
|
|
567
|
+
align-items: center;
|
|
568
|
+
gap: 0.25rem;
|
|
569
|
+
flex: 0 1 14rem;
|
|
570
|
+
min-width: 9rem;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
.filter-table-saved > :first-child {
|
|
574
|
+
flex: 1;
|
|
575
|
+
min-width: 0;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.filter-table-save {
|
|
579
|
+
display: flex;
|
|
580
|
+
align-items: center;
|
|
581
|
+
gap: 0.375rem;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
.filter-table-save .filter-table-input {
|
|
585
|
+
width: 12rem;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.filter-table-chip-remove {
|
|
589
|
+
display: inline-flex;
|
|
590
|
+
padding: 0;
|
|
591
|
+
border: none;
|
|
592
|
+
background: transparent;
|
|
593
|
+
color: inherit;
|
|
594
|
+
cursor: pointer;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
.filter-table-chip-remove:hover {
|
|
598
|
+
background: transparent;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.filter-table-multi {
|
|
602
|
+
display: grid;
|
|
603
|
+
gap: 0.375rem;
|
|
604
|
+
min-width: 0;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.filter-table-form {
|
|
608
|
+
/* Label column width and gap; group headings are indented by both so they
|
|
609
|
+
line up with the inputs. */
|
|
610
|
+
--filter-table-label-width: 9rem;
|
|
611
|
+
--filter-table-label-gap: 1rem;
|
|
612
|
+
display: grid;
|
|
613
|
+
gap: 1.25rem;
|
|
614
|
+
max-width: 40rem;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
/* Groups are plain sections: a muted heading, separated by a thin rule. */
|
|
618
|
+
.filter-table-fieldset {
|
|
619
|
+
display: grid;
|
|
620
|
+
gap: 0.5rem;
|
|
621
|
+
min-width: 0;
|
|
622
|
+
margin: 0;
|
|
623
|
+
padding: 0;
|
|
624
|
+
border: none;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.filter-table-fieldset + .filter-table-fieldset {
|
|
628
|
+
padding-top: 1.25rem;
|
|
629
|
+
border-top: 1px solid
|
|
630
|
+
var(--filter-table-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/* Floated so it lays out as a regular grid item instead of on the border. */
|
|
634
|
+
.filter-table-legend {
|
|
635
|
+
float: left;
|
|
636
|
+
width: 100%;
|
|
637
|
+
margin-bottom: 0.25rem;
|
|
638
|
+
padding: 0 0 0
|
|
639
|
+
calc(var(--filter-table-label-width) + var(--filter-table-label-gap));
|
|
640
|
+
box-sizing: border-box;
|
|
641
|
+
color: var(
|
|
642
|
+
--filter-table-muted,
|
|
643
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
644
|
+
);
|
|
645
|
+
font-size: 0.75rem;
|
|
646
|
+
font-weight: 600;
|
|
647
|
+
letter-spacing: 0.04em;
|
|
648
|
+
text-transform: uppercase;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/* Labels right-aligned in a column next to their inputs. */
|
|
652
|
+
.filter-table-field {
|
|
653
|
+
display: grid;
|
|
654
|
+
grid-template-columns: var(--filter-table-label-width) minmax(0, 1fr);
|
|
655
|
+
align-items: start;
|
|
656
|
+
gap: var(--filter-table-label-gap);
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
.filter-table-label {
|
|
660
|
+
padding-top: calc(0.375rem + 1px);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
.filter-table-form-actions {
|
|
664
|
+
display: flex;
|
|
665
|
+
justify-content: flex-end;
|
|
666
|
+
padding-top: 1.25rem;
|
|
667
|
+
border-top: 1px solid
|
|
668
|
+
var(--filter-table-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
669
|
+
gap: 0.5rem;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
.filter-table-button {
|
|
673
|
+
display: inline-flex;
|
|
674
|
+
align-items: center;
|
|
675
|
+
gap: 0.375rem;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
.filter-table-button-primary {
|
|
679
|
+
border-color: var(
|
|
680
|
+
--filter-table-accent,
|
|
681
|
+
var(--primary, light-dark(#1a66d6, #6ea8fe))
|
|
682
|
+
);
|
|
683
|
+
background: var(
|
|
684
|
+
--filter-table-accent,
|
|
685
|
+
var(--primary, light-dark(#1a66d6, #6ea8fe))
|
|
686
|
+
);
|
|
687
|
+
color: light-dark(#ffffff, #10141a);
|
|
688
|
+
font-weight: 600;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.filter-table-button-primary:hover {
|
|
692
|
+
filter: brightness(1.1);
|
|
693
|
+
background: var(
|
|
694
|
+
--filter-table-accent,
|
|
695
|
+
var(--primary, light-dark(#1a66d6, #6ea8fe))
|
|
696
|
+
);
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
@media (max-width: 640px) {
|
|
700
|
+
.filter-table-field {
|
|
701
|
+
grid-template-columns: 1fr;
|
|
702
|
+
gap: 0.25rem;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
.filter-table-label {
|
|
706
|
+
padding-top: 0;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
.filter-table-legend {
|
|
710
|
+
padding-left: 0;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/* SearchBar: input with a leading icon and trailing clear button / shortcut hint. */
|
|
715
|
+
.search-bar {
|
|
716
|
+
position: relative;
|
|
717
|
+
display: flex;
|
|
718
|
+
align-items: center;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
.search-bar-input {
|
|
722
|
+
box-sizing: border-box;
|
|
723
|
+
width: 100%;
|
|
724
|
+
padding: 0.5rem 2.4rem;
|
|
725
|
+
border: 1px solid
|
|
726
|
+
var(--search-bar-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
727
|
+
border-radius: 0.375rem;
|
|
728
|
+
background: var(
|
|
729
|
+
--search-bar-bg,
|
|
730
|
+
var(--surface, light-dark(#ffffff, #1d2024))
|
|
731
|
+
);
|
|
732
|
+
color: inherit;
|
|
733
|
+
font: inherit;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.search-bar-icon {
|
|
737
|
+
position: absolute;
|
|
738
|
+
left: 0.8rem;
|
|
739
|
+
color: var(
|
|
740
|
+
--search-bar-muted,
|
|
741
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
742
|
+
);
|
|
743
|
+
pointer-events: none;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
.search-bar-clear {
|
|
747
|
+
position: absolute;
|
|
748
|
+
right: 0.4rem;
|
|
749
|
+
display: grid;
|
|
750
|
+
place-items: center;
|
|
751
|
+
width: 28px;
|
|
752
|
+
height: 28px;
|
|
753
|
+
padding: 0;
|
|
754
|
+
border: 1px solid transparent;
|
|
755
|
+
border-radius: 50%;
|
|
756
|
+
background: transparent;
|
|
757
|
+
color: var(
|
|
758
|
+
--search-bar-muted,
|
|
759
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
760
|
+
);
|
|
761
|
+
cursor: pointer;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
.search-bar-clear:hover {
|
|
765
|
+
background: var(
|
|
766
|
+
--search-bar-hover-bg,
|
|
767
|
+
var(--surface-hover, light-dark(#f5f5f5, #292d33))
|
|
768
|
+
);
|
|
769
|
+
color: inherit;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
.search-bar-shortcut {
|
|
773
|
+
position: absolute;
|
|
774
|
+
right: 0.7rem;
|
|
775
|
+
padding: 0.15rem 0.4rem;
|
|
776
|
+
border: 1px solid
|
|
777
|
+
var(--search-bar-border, var(--border, light-dark(#d0d0d0, #3a3e45)));
|
|
778
|
+
border-radius: 6px;
|
|
779
|
+
background: var(
|
|
780
|
+
--search-bar-hover-bg,
|
|
781
|
+
var(--surface-hover, light-dark(#f5f5f5, #292d33))
|
|
782
|
+
);
|
|
783
|
+
color: var(
|
|
784
|
+
--search-bar-muted,
|
|
785
|
+
var(--text-secondary, light-dark(#616161, #9b9da5))
|
|
786
|
+
);
|
|
787
|
+
font-family: inherit;
|
|
788
|
+
font-size: 0.75rem;
|
|
789
|
+
pointer-events: none;
|
|
790
|
+
user-select: none;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
@media (pointer: coarse) {
|
|
794
|
+
.search-bar-shortcut {
|
|
795
|
+
display: none;
|
|
796
|
+
}
|
|
797
|
+
}
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* Keeps `@tabler/icons-solidjs` from loading its barrel, which re-exports ~6000
|
|
4
|
+
* icon modules. `vite-plugin-solid` adds the `solid` export condition, so in dev
|
|
5
|
+
* the barrel is unbundled source and the browser fetches every one of them.
|
|
6
|
+
*
|
|
7
|
+
* - Rewrites `import { IconX, IconY as Y } from '@tabler/icons-solidjs'` to
|
|
8
|
+
* per-icon default imports, in dev and build. `type` specifiers are dropped.
|
|
9
|
+
* - Fails the transform for anything it can't rewrite (namespace, default, or
|
|
10
|
+
* dynamic imports, re-exports, unknown names) instead of falling back.
|
|
11
|
+
* - In dev, resolving the package root from any other module is an error that
|
|
12
|
+
* names the importer, and the package is excluded from dependency pre-bundling.
|
|
13
|
+
*
|
|
14
|
+
* Add it before `solid()`: `plugins: [tablerIcons(), solid()]`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function tablerIcons(): Plugin;
|
package/dist/vite.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{existsSync as d}from"node:fs";import{join as b}from"node:path";var s="@tabler/icons-solidjs",m=`/${s}/`,I=/import\s+(type\s+)?\{([^}]*)\}\s*from\s*(['"])@tabler\/icons-solidjs\3;?/g,_=/(?:\bfrom\s*|\bimport\s*\(?\s*)(['"])@tabler\/icons-solidjs\1|\brequire\s*\(\s*(['"])@tabler\/icons-solidjs\2/,j=/^Icon[A-Za-z0-9]+$/,v=/\.[cm]?[jt]sx?$/;function M(){let p=!1,f=new Map;return{name:"solid-components:tabler-icons",enforce:"pre",config(e,t){return p=t.command==="serve",{optimizeDeps:{exclude:[s]}}},async resolveId(e,t,r){if(!p||e!==s||r.scan)return null;this.error(`${t??"unknown module"} imports the ${s} barrel, which loads every icon. Use plain named imports (import { IconX } from '${s}') in a file transformed by tablerIcons().`)},async transform(e,t){if(!e.includes(s)||t.startsWith("\x00")||t.includes(m))return;let r=t.split("?",1)[0]??t;if(!v.test(r))return;let l=await this.resolve(s,r,{skipSelf:!0});if(!l)this.error(`Cannot resolve ${s} from ${r}`);let c=l.id.slice(0,l.id.lastIndexOf(m)+m.length),o=f.get(c);if(!o){if(o=b(c,"dist/source/icons"),!d(o))this.error(`${s} has no per-icon modules at ${o}`);f.set(c,o)}let h=o,a=e.replace(I,(R,g,y)=>{if(g)return"";return y.split(",").map((n)=>n.trim()).filter((n)=>n!==""&&!n.startsWith("type ")).map((n)=>{let[i="",E=i]=n.split(/\s+as\s+/),u=b(h,`${i}.js`);if(!j.test(i)||!d(u))this.error(`${r}: '${i}' is not a ${s} icon`);return`import ${E} from ${JSON.stringify(u)};`}).join(`
|
|
2
|
+
`)});if(_.test(a))this.error(`${r}: only plain named imports from ${s} are supported (no namespace, default, or dynamic imports, or re-exports)`);return a===e?void 0:{code:a,map:null}}}}export{M as tablerIcons};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serkonda7/solid-components",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Reusable components for SolidJS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "serkonda7",
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"import": "./dist/index.js"
|
|
21
21
|
},
|
|
22
|
+
"./vite": {
|
|
23
|
+
"types": "./dist/vite.d.ts",
|
|
24
|
+
"import": "./dist/vite.js"
|
|
25
|
+
},
|
|
22
26
|
"./styles.css": "./dist/styles.css"
|
|
23
27
|
},
|
|
24
28
|
"main": "./dist/index.js",
|
|
@@ -27,7 +31,7 @@
|
|
|
27
31
|
"scripts": {
|
|
28
32
|
"lint": "biome check --write",
|
|
29
33
|
"lint:ci": "biome ci",
|
|
30
|
-
"check": "
|
|
34
|
+
"check": "bun check",
|
|
31
35
|
"test": "vitest run",
|
|
32
36
|
"examples": "vite --config examples/vite.config.ts",
|
|
33
37
|
"build:dev": "bun run scripts/build.ts --dev",
|
|
@@ -37,20 +41,26 @@
|
|
|
37
41
|
"engines": {
|
|
38
42
|
"node": ">=24"
|
|
39
43
|
},
|
|
40
|
-
"packageManager": "bun@1.4.
|
|
41
|
-
"peerDependencies": {
|
|
42
|
-
"solid-js": ">=1.9.0"
|
|
43
|
-
},
|
|
44
|
+
"packageManager": "bun@1.4.3",
|
|
44
45
|
"devDependencies": {
|
|
45
|
-
"@biomejs/biome": "2.5.
|
|
46
|
-
"@tabler/icons-solidjs": "~3.
|
|
47
|
-
"@types/bun": "1.4.
|
|
48
|
-
"@vitest/browser-playwright": "
|
|
49
|
-
"playwright": "~1.
|
|
50
|
-
"solid-js": "~1.9.
|
|
46
|
+
"@biomejs/biome": "2.5.15",
|
|
47
|
+
"@tabler/icons-solidjs": "~3.49.0",
|
|
48
|
+
"@types/bun": "1.4.3",
|
|
49
|
+
"@vitest/browser-playwright": "~5.0.5",
|
|
50
|
+
"playwright": "~1.64.0",
|
|
51
|
+
"solid-js": "~1.9.17",
|
|
51
52
|
"typescript": "~7.0.2",
|
|
52
|
-
"vite": "~8.3.
|
|
53
|
+
"vite": "~8.3.4",
|
|
53
54
|
"vite-plugin-solid": "~2.11.14",
|
|
54
|
-
"vitest": "~5.0.
|
|
55
|
+
"vitest": "~5.0.5"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"solid-js": ">=1.9.0",
|
|
59
|
+
"vite": ">=8.0.0"
|
|
60
|
+
},
|
|
61
|
+
"peerDependenciesMeta": {
|
|
62
|
+
"vite": {
|
|
63
|
+
"optional": true
|
|
64
|
+
}
|
|
55
65
|
}
|
|
56
66
|
}
|