Faits : A. Par jugement du 8 mai 2018, le Tribunal pénal de l'arrondissement de la Sarine a condamné X._ pour crime contre la loi fédérale sur les stupéfiants (art. 19 al. 1 let. c et d et al. 2 let. a LStup) à une peine privative de liberté de 12 mois, avec sursis pendant 5 ans. B. Par arrêt du 18 mars 2019, la Cour d'appel pénal du Tribunal cantonal fribourgeois a rejeté l'appel formé par X._ contre le jugement du 8 mai 2018, qui a été confirmé. La cour cantonale a retenu qu'entre le 5 mars 2016 et le 30 juin 2016, X._ avait vendu de la cocaïne à A._ et à B._, revendeurs de rue, respectivement à raison de 50 et 10 grammes. Dès lors que la drogue avait un taux de pureté de 31%, les transactions en question avaient porté au total sur 18.6 grammes de substance pure (60 grammes x 31%). C. X._ forme un recours en matière pénale au Tribunal fédéral contre l'arrêt du 18 mars 2019. Elle conclut, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'elle est condamnée pour infraction à la LStup (art. 19 al. 1 let. c et d LStup) à une peine pécuniaire de 90 jours-amende, avec sursis pendant 2 ans. Subsidiairement, elle conclut à la réforme de l'arrêt attaqué en ce sens qu'elle est condamnée pour la même infraction à une peine fixée par la cour cantonale après renvoi de la cause. Invité à se déterminer, le ministère public a conclu au rejet du recours. Quant à l'autorité précédente, elle a renoncé à présenter des observations.