XML 53 R36.htm IDEA: XBRL DOCUMENT
v3.25.0.1

Note 13 - Industry, Segment and Geographic Financial Information (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2024
Notes Tables |
Schedule of Segment Reporting Information, by Segment [Table Text Block] |
​ |  | Year ended |
​ |  | December 31, |
​ |  | 2024 |  |  | 2023 |
Net Sales: |  | ​ |  |  | ​ |
Distribution |  | $ | 441,940 |  |  | $ | 325,262 |
Solutions |  |  | 23,667 |  |  |  | 26,751 |
​ |  |  | 465,607 |  |  |  | 352,013 |
Cost of Sales: |  | ​ |  |  | ​ |
Distribution |  | $ | 363,648 |  |  | $ | 271,899 |
Solutions |  |  | 10,879 |  |  |  | 15,867 |
​ |  |  | 374,527 |  |  |  | 287,766 |
Direct Costs: |  | ​ |  |  | ​ |
Distribution |  | $ | 31,888 |  |  | $ | 22,467 |
Solutions |  |  | 5,455 |  |  |  | 5,238 |
​ |  |  | 37,343 |  |  |  | 27,705 |
Segment Income: (1) |  | ​ |  |  | ​ |
Distribution |  | $ | 46,404 |  |  | $ | 30,896 |
Solutions |  |  | 7,333 |  |  |  | 5,646 |
Segment Income |  |  | 53,737 |  |  |  | 36,542 |
​ |  | ​ |  |  | ​ |
General and administrative |  | $ | 19,165 |  |  | $ | 16,625 |
Acquisition related costs |  |  | 2,311 |  |  |  | 629 |
Depreciation and amortization expense |  |  | 4,269 |  |  |  | 2,798 |
Interest, net |  |  | 917 |  |  |  | 927 |
Foreign currency transaction loss |  |  | (273 | ) |  |  | (636 | )
Change in fair value of acquisition contingent consideration |  |  | 3,618 |  |  |  | — |
Income before taxes |  | $ | 25,018 |  |  | $ | 16,781 |
​ |  | As of |  |  | As of |
​ |  | December 31, |  |  | December 31, |
Selected Assets by Segment: |  | 2024 |  |  | 2023 |
​ |  | ​ |  |  | ​ |
Distribution |  | $ | 394,809 |  |  | $ | 242,927 |
Solutions |  |  | 21,882 |  |  |  | 37,992 |
Segment Select Assets |  |  | 416,691 |  |  |  | 280,919 |
Corporate Assets |  |  | 52,488 |  |  |  | 54,179 |
Total Assets |  | $ | 469,179 |  |  | $ | 335,098 |
Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas [Table Text Block] |
​ |  | Year ended |
​ |  | December 31, 2024 |
​ |  | Distribution |  |  | Solutions |  |  | Total |
Geography |  |  |  |  |  |  |  |  |  | ​ |
USA |  | $ | 333,197 |  |  | $ | 8,652 |  |  | $ | 341,849 |
Europe and United Kingdom |  |  | 82,039 |  |  |  | 13,889 |  |  |  | 95,928 |
Canada |  |  | 26,704 |  |  |  | 1,126 |  |  |  | 27,830 |
Total net sales |  | $ | 441,940 |  |  | $ | 23,667 |  |  | $ | 465,607 |
​ |  | ​ |  |  | ​ |  |  | ​ |
Timing of Revenue Recognition |  |  |  |  |  |  |  |  |  | ​ |
Transferred at a point in time where the Company is principal (1) |  | $ | 399,360 |  |  | $ | 15,847 |  |  | $ | 415,207 |
Transferred at a point in time where the Company is agent (2) |  |  | 42,580 |  |  |  | 7,820 |  |  |  | 50,400 |
Total net sales |  | $ | 441,940 |  |  | $ | 23,667 |  |  | $ | 465,607 |
​ |  | Year ended |
​ |  | December 31, 2023 |
​ |  | Distribution |  |  | Solutions |  |  | Total |
Geography |  |  |  |  |  |  |  |  |  | ​ |
USA |  | $ | 244,261 |  |  | $ | 15,425 |  |  | $ | 259,686 |
Europe and United Kingdom |  |  | 57,253 |  |  |  | 10,167 |  |  |  | 67,420 |
Canada |  |  | 23,748 |  |  |  | 1,159 |  |  |  | 24,907 |
Total net sales |  | $ | 325,262 |  |  | $ | 26,751 |  |  | $ | 352,013 |
​ |  | ​ |  |  | ​ |  |  | ​ |
Timing of Revenue Recognition |  |  |  |  |  |  |  |  |  | ​ |
Transferred at a point in time where the Company is principal (1) |  | $ | 286,051 |  |  | $ | 19,853 |  |  | $ | 305,904 |
Transferred at a point in time where the Company is agent (2) |  |  | 39,211 |  |  |  | 6,898 |  |  |  | 46,109 |
Total net sales |  | $ | 325,262 |  |  | $ | 26,751 |  |  | $ | 352,013 |
Long-Lived Assets by Geographic Areas [Table Text Block] |
​ |  | December 31, |  |  | December 31, |
Identifiable Assets by Geographic Areas |  | 2024 |  |  | 2023 |
USA |  | $ | 278,957 |  |  | $ | 171,080 |
Canada |  |  | 34,352 |  |  |  | 23,994 |
Europe and United Kingdom |  |  | 155,870 |  |  |  | 140,024 |
Total |  | $ | 469,179 |  |  | $ | 335,098 |

X
- Definition Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 280 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 41 -Subparagraph (b) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41 + Details
Name: | us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of information concerning material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material. An entity may also provide subtotals of geographic information about groups of countries. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Topic 220 -SubTopic 10 -Name Accounting Standards Codification -Section S99 -Paragraph 2 -Subparagraph (SX 210.5-03(1)) -Publisher FASB -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 41 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41 + Details
Name: | us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- Definition Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss. + References Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 25 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-25 Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 22 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22 Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef -Name Accounting Standards Codification -Topic 280 -SubTopic 10 -Section 50 -Paragraph 30 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30 + Details
Name: | us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_TableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration