XML 39 R30.htm IDEA: XBRL DOCUMENT v3.23.3
Revenue Recognition - Disaggregation of Revenue (Details) - USD ($)
$ in Thousands
3 Months Ended 9 Months Ended
Sep. 30, 2023
Sep. 30, 2022
Sep. 30, 2023
Sep. 30, 2022
Disaggregation of Revenue [Line Items]        
Revenues $ 186,193 $ 148,009 $ 521,152 $ 418,244
Revenue, remaining performance obligation, percentage 100.00% 100.00% 100.00% 100.00%
Revenue recognized over time        
Disaggregation of Revenue [Line Items]        
Revenues $ 11,227 $ 9,324 $ 31,896 $ 25,554
Revenue recognized over time | Service Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 6.00% 6.30% 6.10% 6.10%
Revenue recognized at a point in time        
Disaggregation of Revenue [Line Items]        
Revenues $ 174,966 $ 138,685 $ 489,256 $ 392,690
Revenue recognized at a point in time | Product Concentration Risk | Revenue Benchmark        
Disaggregation of Revenue [Line Items]        
Revenue, remaining performance obligation, percentage 94.00% 93.70% 93.90% 93.90%
United States        
Disaggregation of Revenue [Line Items]        
Revenues $ 165,897 $ 128,434 $ 459,976 $ 362,012
Asia        
Disaggregation of Revenue [Line Items]        
Revenues 3,598 4,257 10,159 11,384
Canada        
Disaggregation of Revenue [Line Items]        
Revenues 3,476 3,761 9,982 9,669
Europe        
Disaggregation of Revenue [Line Items]        
Revenues 9,743 7,489 30,257 22,842
Mexico        
Disaggregation of Revenue [Line Items]        
Revenues 643 1,034 2,130 2,419
Middle East        
Disaggregation of Revenue [Line Items]        
Revenues 2,217 2,475 6,917 6,258
Other        
Disaggregation of Revenue [Line Items]        
Revenues $ 619 $ 559 $ 1,731 $ 3,660