| Segment Reporting [Table Text Block] |
| |
|
Six months ended |
|
|
Three months ended |
|
| |
|
June 30, |
|
|
June 30, |
|
| |
|
2026 |
|
|
2025 |
|
|
2026 |
|
|
2025 |
|
| Net Sales: |
|
|
|
|
|
|
|
|
|
|
|
|
| Distribution |
|
$ |
344,879 |
|
|
$ |
285,172 |
|
|
$ |
167,777 |
|
|
$ |
153,010 |
|
| Solutions |
|
|
11,706 |
|
|
|
12,156 |
|
|
|
6,432 |
|
|
|
6,274 |
|
| |
|
|
356,585 |
|
|
|
297,328 |
|
|
|
174,209 |
|
|
|
159,284 |
|
| Cost of Sales: |
|
|
|
|
|
|
|
|
|
|
|
|
| Distribution |
|
$ |
295,519 |
|
|
$ |
241,725 |
|
|
$ |
141,773 |
|
|
$ |
129,962 |
|
| Solutions |
|
|
4,410 |
|
|
|
5,899 |
|
|
|
2,279 |
|
|
|
3,014 |
|
| |
|
|
299,929 |
|
|
|
247,624 |
|
|
|
144,052 |
|
|
|
132,976 |
|
| Direct Costs: |
|
|
|
|
|
|
|
|
|
|
|
|
| Distribution |
|
$ |
25,882 |
|
|
$ |
20,119 |
|
|
$ |
13,047 |
|
|
$ |
10,106 |
|
| Solutions |
|
|
3,355 |
|
|
|
3,102 |
|
|
|
1,738 |
|
|
|
1,613 |
|
| |
|
|
29,237 |
|
|
|
23,221 |
|
|
|
14,784 |
|
|
|
11,719 |
|
| Segment Income: (1) |
|
|
|
|
|
|
|
|
|
|
|
|
| Distribution |
|
$ |
23,478 |
|
|
$ |
23,328 |
|
|
$ |
12,958 |
|
|
$ |
12,942 |
|
| Solutions |
|
|
3,941 |
|
|
|
3,155 |
|
|
|
2,415 |
|
|
|
1,647 |
|
| Segment Income |
|
|
27,419 |
|
|
|
26,483 |
|
|
|
15,373 |
|
|
|
14,589 |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| General and administrative |
|
$ |
11,764 |
|
|
$ |
9,891 |
|
|
$ |
5,884 |
|
|
$ |
4,638 |
|
| Acquisition related costs |
|
|
319 |
|
|
|
139 |
|
|
|
19 |
|
|
|
13 |
|
| Depreciation and amortization expense |
|
|
4,063 |
|
|
|
3,720 |
|
|
|
2,080 |
|
|
|
1,982 |
|
| Interest, net |
|
|
418 |
|
|
|
337 |
|
|
|
275 |
|
|
|
151 |
|
| Foreign currency transaction gain (loss) |
|
|
24 |
|
|
|
(567 |
) |
|
|
(120 |
) |
|
|
14 |
|
| Change in fair value of acquisition contingent consideration |
|
|
— |
|
|
|
(515 |
) |
|
|
— |
|
|
|
(379 |
) |
| Income before taxes |
|
$ |
11,715 |
|
|
$ |
11,988 |
|
|
$ |
7,545 |
|
|
$ |
7,742 |
|
| |
|
As of |
|
|
As of |
|
| |
|
June 30, |
|
|
December 31, |
|
| Selected Assets by Segment: |
|
2026 |
|
|
2025 |
|
| |
|
|
|
|
|
|
| Distribution |
|
$ |
355,856 |
|
|
$ |
375,024 |
|
| Solutions |
|
|
21,303 |
|
|
|
22,124 |
|
| Segment Select Assets |
|
|
377,159 |
|
|
|
397,148 |
|
| Corporate Assets |
|
|
85,339 |
|
|
|
63,085 |
|
| Total Assets |
|
$ |
462,498 |
|
|
$ |
460,233 |
|
|
| Segment Reporting, Entity-Wide Information Not Provided as Part of Reportable Segment, Geographical Area, Revenue and Long-Lived Asset [Table Text Block] |
| |
|
Six months ended |
|
|
Three months ended |
|
| |
|
June 30, 2026 |
|
|
June 30, 2026 |
|
| |
|
Distribution |
|
|
Solutions |
|
|
Total |
|
|
Distribution |
|
|
Solutions |
|
|
Total |
|
| Geography |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| USA |
|
$ |
280,706 |
|
|
$ |
3,831 |
|
|
$ |
284,537 |
|
|
$ |
132,880 |
|
|
$ |
2,289 |
|
|
$ |
135,169 |
|
| United Kingdom |
|
|
28,997 |
|
|
|
7,209 |
|
|
|
36,206 |
|
|
|
16,928 |
|
|
|
3,737 |
|
|
|
20,665 |
|
| Europe |
|
|
13,639 |
|
|
|
322 |
|
|
|
13,961 |
|
|
|
8,357 |
|
|
|
252 |
|
|
|
8,610 |
|
| Canada |
|
|
21,537 |
|
|
|
344 |
|
|
|
21,881 |
|
|
|
9,613 |
|
|
|
154 |
|
|
|
9,766 |
|
| Total net sales |
|
$ |
344,879 |
|
|
$ |
11,706 |
|
|
$ |
356,585 |
|
|
$ |
167,777 |
|
|
$ |
6,432 |
|
|
$ |
174,209 |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Timing of Revenue Recognition |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Transferred at a point in time where the Company is principal (1) |
|
$ |
320,848 |
|
|
$ |
8,157 |
|
|
$ |
329,005 |
|
|
$ |
152,743 |
|
|
$ |
4,606 |
|
|
$ |
157,349 |
|
| Transferred at a point in time where the Company is agent (2) |
|
|
24,031 |
|
|
|
3,549 |
|
|
|
27,580 |
|
|
|
15,034 |
|
|
|
1,826 |
|
|
|
16,860 |
|
| Total net sales |
|
$ |
344,879 |
|
|
$ |
11,706 |
|
|
$ |
356,585 |
|
|
$ |
167,777 |
|
|
$ |
6,432 |
|
|
$ |
174,209 |
|
| |
|
Six months ended |
|
|
Three months ended |
|
| |
|
June 30, 2025 |
|
|
June 30, 2025 |
|
| |
|
Distribution |
|
|
Solutions |
|
|
Total |
|
|
Distribution |
|
|
Solutions |
|
|
Total |
|
| Geography |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| USA |
|
$ |
219,450 |
|
|
$ |
4,180 |
|
|
$ |
223,630 |
|
|
$ |
114,362 |
|
|
$ |
2,226 |
|
|
$ |
116,588 |
|
| United Kingdom |
|
|
38,539 |
|
|
|
7,382 |
|
|
|
45,921 |
|
|
|
24,704 |
|
|
|
3,675 |
|
|
|
28,379 |
|
| Europe |
|
|
11,867 |
|
|
|
214 |
|
|
|
12,081 |
|
|
|
7,109 |
|
|
|
141 |
|
|
|
7,250 |
|
| Canada |
|
|
15,316 |
|
|
|
380 |
|
|
|
15,696 |
|
|
|
6,835 |
|
|
|
232 |
|
|
|
7,067 |
|
| Total net sales |
|
$ |
285,172 |
|
|
$ |
12,156 |
|
|
$ |
297,328 |
|
|
$ |
153,010 |
|
|
$ |
6,274 |
|
|
$ |
159,284 |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Timing of Revenue Recognition |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Transferred at a point in time where the Company is principal (1) |
|
$ |
259,164 |
|
|
$ |
8,765 |
|
|
$ |
267,929 |
|
|
$ |
140,176 |
|
|
$ |
4,466 |
|
|
$ |
144,642 |
|
| Transferred at a point in time where the Company is agent (2) |
|
|
26,008 |
|
|
|
3,391 |
|
|
|
29,399 |
|
|
|
12,834 |
|
|
|
1,808 |
|
|
|
14,642 |
|
| Total net sales |
|
$ |
285,172 |
|
|
$ |
12,156 |
|
|
$ |
297,328 |
|
|
$ |
153,010 |
|
|
$ |
6,274 |
|
|
$ |
159,284 |
|
|