Note 16 - Segment Information (Tables)
   | 
6 Months Ended | 
Jun. 30, 2024  | 
| Notes Tables | 
 
 | 
| Schedule of Segment Reporting Information, by Segment [Table Text Block] | 
    
|      | 
  | 
  Six months ended   | 
  | 
  | 
  Three months ended   | 
  | 
 
|      | 
  | 
  June 30,   | 
  | 
  | 
  June 30,   | 
  | 
 
|      | 
  | 
  2024   | 
  | 
  | 
  2023   | 
  | 
  | 
  2024   | 
  | 
  | 
  2023   | 
  | 
 
|   Net Sales:   | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Distribution   | 
  | 
$ | 
174,663 | 
  | 
  | 
$ | 
154,678 | 
  | 
  | 
$ | 
87,842 | 
  | 
  | 
$ | 
76,128 | 
  | 
 
|   Solutions   | 
  | 
  | 
9,835 | 
  | 
  | 
  | 
12,093 | 
  | 
  | 
  | 
4,234 | 
  | 
  | 
  | 
5,604 | 
  | 
 
|      | 
  | 
  | 
184,498 | 
  | 
  | 
  | 
166,771 | 
  | 
  | 
  | 
92,076 | 
  | 
  | 
  | 
81,732 | 
  | 
 
|   Gross Profit:   | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Distribution   | 
  | 
$ | 
29,898 | 
  | 
  | 
$ | 
23,801 | 
  | 
  | 
$ | 
15,683 | 
  | 
  | 
$ | 
11,074 | 
  | 
 
|   Solutions   | 
  | 
  | 
5,679 | 
  | 
  | 
  | 
5,100 | 
  | 
  | 
  | 
2,875 | 
  | 
  | 
  | 
2,619 | 
  | 
 
|      | 
  | 
  | 
35,577 | 
  | 
  | 
  | 
28,901 | 
  | 
  | 
  | 
18,558 | 
  | 
  | 
  | 
13,693 | 
  | 
 
|   Direct Costs:   | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Distribution   | 
  | 
$ | 
14,912 | 
  | 
  | 
$ | 
9,976 | 
  | 
  | 
$ | 
7,535 | 
  | 
  | 
$ | 
5,010 | 
  | 
 
|   Solutions   | 
  | 
  | 
2,683 | 
  | 
  | 
  | 
2,618 | 
  | 
  | 
  | 
1,302 | 
  | 
  | 
  | 
1,317 | 
  | 
 
|      | 
  | 
  | 
17,595 | 
  | 
  | 
  | 
12,594 | 
  | 
  | 
  | 
8,837 | 
  | 
  | 
  | 
6,327 | 
  | 
 
|   Segment Income Before Taxes: (1)   | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Distribution   | 
  | 
$ | 
14,986 | 
  | 
  | 
$ | 
13,825 | 
  | 
  | 
$ | 
8,148 | 
  | 
  | 
$ | 
6,064 | 
  | 
 
|   Solutions   | 
  | 
  | 
2,996 | 
  | 
  | 
  | 
2,482 | 
  | 
  | 
  | 
1,573 | 
  | 
  | 
  | 
1,302 | 
  | 
 
|   Segment Income Before Taxes   | 
  | 
  | 
17,982 | 
  | 
  | 
  | 
16,307 | 
  | 
  | 
  | 
9,721 | 
  | 
  | 
  | 
7,366 | 
  | 
 
|      | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   General and administrative   | 
  | 
$ | 
7,901 | 
  | 
  | 
$ | 
9,212 | 
  | 
  | 
$ | 
4,137 | 
  | 
  | 
$ | 
5,240 | 
  | 
 
|   Acquisition related costs   | 
  | 
  | 
592 | 
  | 
  | 
  | 
31 | 
  | 
  | 
  | 
469 | 
  | 
  | 
  | 
9 | 
  | 
 
|   Depreciation and amortization expense   | 
  | 
  | 
1,736 | 
  | 
  | 
  | 
1,317 | 
  | 
  | 
  | 
865 | 
  | 
  | 
  | 
604 | 
  | 
 
|   Interest, net   | 
  | 
  | 
557 | 
  | 
  | 
  | 
441 | 
  | 
  | 
  | 
354 | 
  | 
  | 
  | 
330 | 
  | 
 
|   Foreign currency transaction loss   | 
  | 
  | 
(246 | 
) | 
  | 
  | 
40 | 
  | 
  | 
  | 
(162 | 
) | 
  | 
  | 
(4 | 
) | 
 
|   Income before taxes   | 
  | 
$ | 
8,064 | 
  | 
  | 
$ | 
6,228 | 
  | 
  | 
$ | 
4,442 | 
  | 
  | 
$ | 
1,839 | 
  | 
 
 
    
|      | 
  | 
  As of   | 
  | 
  | 
  As of   | 
  | 
 
|      | 
  | 
  June 30,   | 
  | 
  | 
  December 31,   | 
  | 
 
|   Selected Assets by Segment:   | 
  | 
  2024   | 
  | 
  | 
  2023   | 
  | 
 
|      | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Distribution   | 
  | 
$ | 
200,974 | 
  | 
  | 
$ | 
242,927 | 
  | 
 
|   Solutions   | 
  | 
  | 
34,471 | 
  | 
  | 
  | 
37,992 | 
  | 
 
|   Segment Select Assets   | 
  | 
  | 
235,445 | 
  | 
  | 
  | 
280,919 | 
  | 
 
|   Corporate Assets   | 
  | 
  | 
67,325 | 
  | 
  | 
  | 
54,179 | 
  | 
 
|   Total Assets   | 
  | 
$ | 
302,770 | 
  | 
  | 
$ | 
335,098 | 
  | 
 
 
   
 | 
| Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas [Table Text Block] | 
    
|   | 
  | 
  Six months ended   | 
  | 
  | 
  Three months ended   | 
  | 
 
|   | 
  | 
  June 30, 2024   | 
  | 
  | 
  June 30, 2024   | 
  | 
 
|      | 
  | 
  Distribution   | 
  | 
  | 
  Solutions   | 
  | 
  | 
  Total   | 
  | 
  | 
  Distribution   | 
  | 
  | 
  Solutions   | 
  | 
  | 
  Total   | 
  | 
 
|   Geography   | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
 
|   USA   | 
  | 
$ | 
130,450 | 
  | 
  | 
$ | 
2,989 | 
  | 
  | 
$ | 
133,439 | 
  | 
  | 
$ | 
68,087 | 
  | 
  | 
$ | 
1,081 | 
  | 
  | 
$ | 
69,168 | 
  | 
 
|   Europe and United Kingdom   | 
  | 
  | 
32,642 | 
  | 
  | 
  | 
6,284 | 
  | 
  | 
  | 
38,926 | 
  | 
  | 
  | 
14,357 | 
  | 
  | 
  | 
2,877 | 
  | 
  | 
  | 
17,234 | 
  | 
 
|   Canada   | 
  | 
  | 
11,571 | 
  | 
  | 
  | 
562 | 
  | 
  | 
  | 
12,133 | 
  | 
  | 
  | 
5,398 | 
  | 
  | 
  | 
276 | 
  | 
  | 
  | 
5,674 | 
  | 
 
|   Total net sales   | 
  | 
$ | 
174,663 | 
  | 
  | 
$ | 
9,835 | 
  | 
  | 
$ | 
184,498 | 
  | 
  | 
$ | 
87,842 | 
  | 
  | 
$ | 
4,234 | 
  | 
  | 
$ | 
92,076 | 
  | 
 
|      | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Timing of Revenue Recognition   | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
 
|   Transferred at a point in time where the Company is principal (1)   | 
  | 
$ | 
151,467 | 
  | 
  | 
$ | 
5,894 | 
  | 
  | 
$ | 
157,361 | 
  | 
  | 
$ | 
75,735 | 
  | 
  | 
$ | 
2,336 | 
  | 
  | 
$ | 
78,071 | 
  | 
 
|   Transferred at a point in time where the Company is agent (2)   | 
  | 
  | 
23,196 | 
  | 
  | 
  | 
3,941 | 
  | 
  | 
  | 
27,137 | 
  | 
  | 
  | 
12,107 | 
  | 
  | 
  | 
1,898 | 
  | 
  | 
  | 
14,005 | 
  | 
 
|   Total net sales   | 
  | 
$ | 
174,663 | 
  | 
  | 
$ | 
9,835 | 
  | 
  | 
$ | 
184,498 | 
  | 
  | 
$ | 
87,842 | 
  | 
  | 
$ | 
4,234 | 
  | 
  | 
$ | 
92,076 | 
  | 
 
 
    
|   | 
  | 
  Six months ended   | 
  | 
  | 
  Three months ended   | 
  | 
 
|   | 
  | 
  June 30, 2023   | 
  | 
  | 
  June 30, 2023   | 
  | 
 
|      | 
  | 
  Distribution   | 
  | 
  | 
  Solutions   | 
  | 
  | 
  Total   | 
  | 
  | 
  Distribution   | 
  | 
  | 
  Solutions   | 
  | 
  | 
  Total   | 
  | 
 
|   Geography   | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
 
|   USA   | 
  | 
$ | 
119,387 | 
  | 
  | 
$ | 
6,303 | 
  | 
  | 
$ | 
125,690 | 
  | 
  | 
$ | 
62,644 | 
  | 
  | 
$ | 
2,637 | 
  | 
  | 
$ | 
65,281 | 
  | 
 
|   Europe and United Kingdom   | 
  | 
  | 
22,550 | 
  | 
  | 
  | 
5,089 | 
  | 
  | 
  | 
27,639 | 
  | 
  | 
  | 
7,134 | 
  | 
  | 
  | 
2,589 | 
  | 
  | 
  | 
9,723 | 
  | 
 
|   Canada   | 
  | 
  | 
12,741 | 
  | 
  | 
  | 
701 | 
  | 
  | 
  | 
13,442 | 
  | 
  | 
  | 
6,350 | 
  | 
  | 
  | 
378 | 
  | 
  | 
  | 
6,728 | 
  | 
 
|   Total net sales   | 
  | 
$ | 
154,678 | 
  | 
  | 
$ | 
12,093 | 
  | 
  | 
$ | 
166,771 | 
  | 
  | 
$ | 
76,128 | 
  | 
  | 
$ | 
5,604 | 
  | 
  | 
$ | 
81,732 | 
  | 
 
|      | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
  | 
     | 
  | 
 
|   Timing of Revenue Recognition   | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
  | 
     | 
  | 
 
|   Transferred at a point in time where the Company is principal (1)   | 
  | 
$ | 
136,439 | 
  | 
  | 
$ | 
8,869 | 
  | 
  | 
$ | 
145,308 | 
  | 
  | 
$ | 
67,872 | 
  | 
  | 
$ | 
4,036 | 
  | 
  | 
$ | 
71,908 | 
  | 
 
|   Transferred at a point in time where the Company is agent (2)   | 
  | 
  | 
18,239 | 
  | 
  | 
  | 
3,224 | 
  | 
  | 
  | 
21,463 | 
  | 
  | 
  | 
8,256 | 
  | 
  | 
  | 
1,568 | 
  | 
  | 
  | 
9,824 | 
  | 
 
|   Total net sales   | 
  | 
$ | 
154,678 | 
  | 
  | 
$ | 
12,093 | 
  | 
  | 
$ | 
166,771 | 
  | 
  | 
$ | 
76,128 | 
  | 
  | 
$ | 
5,604 | 
  | 
  | 
$ | 
81,732 | 
  | 
 
 
   
 | 
| Long-Lived Assets by Geographic Areas [Table Text Block] | 
    
|      | 
  | 
  June 30,   | 
  | 
  | 
  December 31,   | 
  | 
 
|   Identifiable Assets by Geographic Areas   | 
  | 
  2024   | 
  | 
  | 
  2023   | 
  | 
 
|   USA   | 
  | 
$ | 
155,976 | 
  | 
  | 
$ | 
171,080 | 
  | 
 
|   Canada   | 
  | 
  | 
26,537 | 
  | 
  | 
  | 
23,994 | 
  | 
 
|   Europe and United Kingdom   | 
  | 
  | 
120,257 | 
  | 
  | 
  | 
140,024 | 
  | 
 
|   Total   | 
  | 
$ | 
302,770 | 
  | 
  | 
$ | 
335,098 | 
  | 
 
 
   
 |