Fatti

La società B. AG (attrice, resistente al ricorso) gestisce un locale con ristorante e bar a U. Aveva stipulato con la società A. AG (convenuta, ricorrente) una "Assicurazione commerciale X. per PMI" che comprendeva anche un'assicurazione per perdita di fatturato e costi aggiuntivi a causa di un'epidemia fino a un importo massimo di Fr. 2'000'000.- con una franchigia di Fr. 200.-.

Il 16 marzo 2020 il Consiglio federale ha classificato la situazione in Svizzera in relazione alla diffusione del coronavirus come una situazione straordinaria e ha ordinato la chiusura di ristoranti e bar. Ciò ha comportato una perdita di fatturato per l'attrice. Il 18 marzo 2020 ha calcolato un danno da interruzione dell'attività previsto fino al 30 aprile 2020 di Fr. 75'397.- e ha chiesto alla convenuta di erogare le prestazioni assicurate. Tuttavia, la convenuta ha rifiutato gli indennizzi in relazione al coronavirus.

L'attrice ha quindi presentato una domanda parziale presso il Tribunale commerciale del Cantone di Argovia e ha chiesto che la convenuta fosse obbligata a pagarle Fr. 40'000.- per perdita di fatturato e costi aggiuntivi a causa dell'epidemia. Il Tribunale commerciale ha accolto la domanda - ad eccezione dell'inizio del decorso degli interessi di mora - e ha obbligato la convenuta a pagare all'attrice Fr. 40'000.- oltre agli interessi al 5% dal 24 aprile 2020.

Legge

Il Tribunale federale esamina innanzitutto se le Condizioni generali di contratto (CGC) della polizza assicurativa siano diventate parte integrante del contratto. A tal fine, le parti devono aver espressamente o implicitamente adottato le CGC e il contraente assicurativo deve essere stato in possesso delle CGC.

Anche se le CGC sono parte integrante del contratto, esse valgono solo nella misura in cui non esistano accordi individuali che si discostino dalle CGC (prevalenza dell'accordo individuale). Inoltre, le clausole delle CGC non devono essere insolite per il contraente. L'insolito si valuta dal punto…