v3.26.1
Note 17 - Segment Information - Schedule of Segment Information (Details) - USD ($)
$ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2026
Jun. 30, 2025
Jun. 30, 2026
Jun. 30, 2025
Dec. 31, 2025
Net sales $ 174,209 $ 159,284 $ 356,585 $ 297,328  
Cost of sales 144,052 132,976 299,929 247,624  
Direct costs 14,784 11,719 29,237 23,221  
Segment Income Before Taxes 15,373 14,589 27,419 26,483  
General and administrative 5,884 4,638 11,764 9,891  
Acquisition related costs 19 13 319 139  
Depreciation and amortization expense 2,080 1,982 4,063 3,720  
Interest, net 275 151 418 337  
Foreign currency transaction gain (loss) (120) 14 24 (567)  
Change in fair value of acquisition contingent consideration 0 (379) 0 (515)  
Income before taxes 7,545 7,742 11,715 11,988  
Total assets 462,498   462,498   $ 460,233
Operating Segments [Member]          
Total assets 377,159   377,159   397,148
Segment Reporting, Reconciling Item, Corporate Nonsegment [Member]          
Total assets 85,339   85,339   63,085
Distribution Segment [Member]          
Net sales 167,777 153,010 344,879 285,172  
Cost of sales 141,773 129,962 295,519 241,725  
Direct costs 13,047 10,106 25,882 20,119  
Segment Income Before Taxes 12,958 12,942 23,478 23,328  
Distribution Segment [Member] | Operating Segments [Member]          
Total assets 355,856   355,856   375,024
Solutions Segment [Member]          
Net sales 6,432 6,274 11,706 12,156  
Cost of sales 2,279 3,014 4,410 5,899  
Direct costs 1,738 1,613 3,355 3,102  
Segment Income Before Taxes 2,415 $ 1,647 3,941 $ 3,155  
Solutions Segment [Member] | Operating Segments [Member]          
Total assets $ 21,303   $ 21,303   $ 22,124