Roasted Carrot Cauliflower Quinoa Salad


I like to call this salad sunshine in a bowl. Or on a platter. Because however you serve this carrot cauliflower quinoa salad, it’s everything you could want: bright, refreshing, flavorful, bold, cozy and nutritious! Tons of veggies, fresh herbs, crunch and flavor, too.

I originally shared this quinoa salad and the end of winter last year to ring in spring produce, and this hearty salad is perfect for spring-into-summer when you want something in between cozy and refreshing. The carrots and cauliflower are roasted to tender perfection in a blend of spices, then tossed with more herbs, veggies, a hint of sweetness from dates, crunch from pistachios and of course: the sunshine dressing.

This gorgeous salad recipe makes the best lunch or veggie-packed dish for your Easter table! Serve it up next to all of those sweet treats for the perfect balance. Everyone will love it!

roasted cauliflower quinoa salad on a platter

Everything you’ll need to make this cauliflower quinoa salad

This beautiful, vegan cauliflower quinoa salad recipe is packed with flavorful roasted veggies, fluffy quinoa and delicious salad mix-ins. Here’s what you’ll need to make it:

  • For the veggies: we’re roasting up carrots and cauliflower with cumin, turmeric, garlic powder, a little cayenne if you like heat (I recommend!), salt & pepper.
  • For the quinoa: you’ll just need some dry quinoa and water to cook it up. Feel free to use white quinoa or tri-color.
  • For the mix-ins: toss this salad together with fresh green onion, cilantro, parsley, chopped Medjool dates, roasted & salted pistachios and some peas.
  • For the sunshine dressing: grab the recipe for this gorgeous sunshine dressing here! It’s made with tahini, lemon juice, a little maple syrup, fresh ginger, turmeric, garlic powder, salt & pepper.

roasted carrots and cauliflower on a baking sheet

Make this roasted cauliflower salad your own

This cauliflower quinoa salad is great for customizing! Here are some delicious ways to mix it up:

  • Swap your produce. This salad would also be delicious with roasted sweet potato or butternut squash instead of carrots.
  • Try a different sweetener. Instead of dates feel free to mix in some golden or regular raisins, dried cranberries or dried cherries.
  • Use a new nut. Roasted salted almonds or cashews would also be delicious in place of the pistachios. Or omit them to keep the recipe nut free!
  • Try another dressing. The sunshine dressing is absolutely delicious, but this salad would also be great with a plain tahini dressing, a jalapeño green tahini dressing or a curry tahini dressing!

quinoa tossed with green onion & peas in a bowl for a cauliflower quinoa salad

Add a boost of protein

Looking to add some more protein to this roasted carrot quinoa salad? Here are some great options:

roasted carrot quinoa salad on a platter

How to make this roasted cauliflower quinoa salad

  1. Roast your veggies. You’ll start by roasting the carrots and cauliflower in all of those cozy spices.
  2. Cook your quinoa. While the veggies are roasting, cook your quinoa. See tips below for making the best fluffy quinoa!
  3. Combine the toppings. Once the quinoa is done, add it to a bowl with all of those yummy mix-ins, veggies and herbs.
  4. Make the dressing. Mix together the sunshine dressing in a medium bowl.
  5. Toss & serve. Pour the sunshine dressing over the salad, toss and serve as a main meal or a side dish!

vegan roasted cauliflower and quinoa salad with carrots on a plate

How to cook the perfect fluffy quinoa

Get all of my best tips and tricks for cooking perfectly fluffy quinoa here!

roasted cauliflower salad with quinoa and carrots on a plate

Storing tips

Keep this vegan cauliflower quinoa salad in an airtight container in the fridge for about 3-4 days. This salad can easily be made the day before, too, and will be delicious served the next day!

roasted carrot and cauliflower quinoa salad on a plate

More salad recipes to try

Looking for more? Get all of our delicious salad recipes here!

I hope you love this roasted carrot cauliflower quinoa salad! If you make it be sure to leave a comment & a rating so I know how you liked it. Enjoy, xo!

Roasted Carrot Cauliflower Quinoa Salad with Sunshine Dressing

Beautiful roasted carrot cauliflower quinoa salad tossed with fresh herbs, sweet Medjool dates and salty pistachios. This vegan cauliflower quinoa salad is lightly dressed with a bright sunshine dressing for the perfect plant-based lunch or side dish!

  • For the veggies:
  • 4
    medium carrots (or 3 large), cut in half lengthwise and then cut into 2 inch segments/chunks
  • 2
    cups
    small to medium cauliflower florets
  • 1
    tablespoon
    avocado oil or olive oil
  • 1/2
    teaspoon
    ground cumin
  • 1/2
    teaspoon
    ground turmeric
  • 1/4
    teaspoon
    garlic powder
  • 1/4
    teaspoon
    cayenne pepper, if you like a little heat
  • Freshly ground salt and pepper
  • For the quinoa:
  • ¾
    cup
    quinoa
  • 1 ⅔
    cups
    water
  • For the salad mix-ins:

  • cup
    diced green onion

  • cup
    cilantro

  • cup
    flat leaf parsley

  • cup
    chopped pitted Medjool dates (or sub dried cherries)
  • 1/3
    cup
    shelled roasted and salted pistachios (or sub roasted almonds)
  • ¾
    cup
    thawed frozen peas, optional
  • For the dressing:
  • Sunshine Dressing Recipe
  1. Preheat the oven to 400 degrees F. Line a large pan with parchment paper and add carrots and cauliflower; drizzle with olive oil and sprinkle with cumin, turmeric, garlic powder, cayenne and salt and pepper. Toss well to combine and coat the veggies with the oil and spices. Roast for 25-30 minutes or until carrots and cauliflower are tender and golden; flip veggies halfway through to ensure even roasting.

  2. While the veggies are roasting, you can cook your quinoa: add in quinoa and water to a medium pot and bring mixture to a boil, then cover, reduce heat to low and cook for exactly 15 minutes. After 15 minutes, remove from heat and fluff quinoa with a fork, then replace the lid and allow quinoa to steam for 5-10 more minutes.

  3. Once quinoa is done cooking, add to a large bowl, then add in the roasted carrots and cauliflower, green onion, cilantro, parsley, chopped dates, pistachios and peas.

  4. Make the sunshine dressing: in a medium bowl, mix together the tahini, lemon juice, maple syrup, ginger, turmeric, garlic powder and salt and pepper. Add 2-3 tablespoons of warm water to thin out the dressing so that it’s nice and pourable. Taste and add more salt and pepper if necessary.

  5. Pour dressing over the salad and mix well to combine. Serves 4 as a main meal, 6 as a side.

To store: keep this vegan cauliflower quinoa salad in an airtight container in the fridge for about 3-4 days.

This salad can easily be made the day before, too, and will be delicious served the next day!

Nutrition

Servings: 4 servings

Serving size: 1 serving (based on 4)

Calories: 391kcal

Fat: 16.2g

Saturated fat: 1.9g

Carbohydrates: 55g

Fiber: 10g

Sugar: 18.7g

Protein: 12.2g

Recipe by: Monique Volz // Ambitious Kitchen | Photography by: Eat Love Eats

This post was originally published on February 16th, 2021, and republished on April 13th, 2022.

Shop This Post

Download My FREE 7-Day Meal Plan

Download My FREE 7-Day Meal Plan

Join the AK email list and get my brand new, FREE Simple & Nourishing 7-day Meal Plan delivered to your inbox.

“;
element.insertAdjacentHTML(position, tag);
}
return document.getElementById(id);
};
ClsDynamicAdsInjector.prototype._repeatDynamicAds = function (dynamicAd) {
var repeatedDynamicAds = [];
var maxLazySequence = dynamicAd.lazy ? defaultTo(this.locationMaxLazySequence.get(dynamicAd.location), 0) : 0;
var initialMax = Math.max(dynamicAd.min, dynamicAd.max);
var lazyMax = maxLazySequence === 0 && dynamicAd.lazy
? initialMax + dynamicAd.lazyMax
: Math.min(Math.max(maxLazySequence – dynamicAd.sequence + 1, 0), initialMax + dynamicAd.lazyMax);
var max = Math.max(initialMax, lazyMax);
for (var dynamicSequence = 0; dynamicSequence = initialMax;
repeatedDynamicAds.push(__assign(__assign({}, dynamicAd), { sequence: sequence, lazy: lazy }));
}
return repeatedDynamicAds;
};
ClsDynamicAdsInjector.prototype._locationEnabled = function (dynamicAdUnit) {
var clsEnabledLocation = this._clsOptions.enabledLocations.indexOf(dynamicAdUnit.location) !== -1;
var allLocationsDisabled = (this._clsOptions.disableAds && this._clsOptions.disableAds.all) || document.body.classList.contains(‘adthrive-disable-all’);
var contentEnabled = !document.body.classList.contains(‘adthrive-disable-content’) && !this._clsOptions.disableAds.reasons.has(‘content_plugin’);
return clsEnabledLocation && !allLocationsDisabled && contentEnabled;
};
return ClsDynamicAdsInjector;
}());

var VideoAdUnit;
(function (VideoAdUnit) {
VideoAdUnit[“Video_Collapse_Autoplay_SoundOff”] = “Video_Collapse_Autoplay_SoundOff”;
VideoAdUnit[“Video_Individual_Autoplay_SOff”] = “Video_Individual_Autoplay_SOff”;
VideoAdUnit[“Video_Coll_SOff_Smartphone”] = “Video_Coll_SOff_Smartphone”;
VideoAdUnit[“Video_In_Post_ClicktoPlay_SoundOn”] = “Video_In-Post_ClicktoPlay_SoundOn”;
})(VideoAdUnit || (VideoAdUnit = {}));
var PinterestReplacedPlayer;
(function (PinterestReplacedPlayer) {
PinterestReplacedPlayer[“StickySekindo”] = “stickySekindo”;
PinterestReplacedPlayer[“StaticSekindo”] = “staticSekindo”;
PinterestReplacedPlayer[“None”] = “none”;
})(PinterestReplacedPlayer || (PinterestReplacedPlayer = {}));

var SekindoHoldoutExperiment = (function (_super) {
__extends$1(SekindoHoldoutExperiment, _super);
function SekindoHoldoutExperiment() {
var _this = _super.call(this) || this;
_this.key = ‘sekho’;
_this._result = false;
_this._choices = [{ choice: true }, { choice: false }];
_this._result = _this.run();
_this.setExperimentKey();
logger$1.info(‘ClsSekindoHoldoutExperiment’, ‘result’, _this._result);
return _this;
}
Object.defineProperty(SekindoHoldoutExperiment.prototype, “result”, {
get: function () {
return this._result;
},
enumerable: false,
configurable: true
});
SekindoHoldoutExperiment.prototype.run = function () {
return new BernoulliTrial(0.05).get();
};
return SekindoHoldoutExperiment;
}(PluginExperiment));

var Component = (function () {
function Component() {
}
Object.defineProperty(Component.prototype, “enabled”, {
get: function () {
return true;
},
enumerable: false,
configurable: true
});
return Component;
}());

var VideoBase = (function (_super) {
__extends$1(VideoBase, _super);
function VideoBase(_videoConfig, sekindoHoldoutExperimentResult, _component) {
var _this = _super.call(this) || this;
_this._videoConfig = _videoConfig;
_this._component = _component;
_this._stickyRelatedOnPage = false;
_this._contextualMediaIds = [];
var players = _this._videoConfig.players || [];
_this._device = isDesktop() ? ‘desktop’ : ‘mobile’;
_this._potentialPlayerMap = _this._setPotentialPlayerMap(sekindoHoldoutExperimentResult);
var stationaryRelated = players.filter(function (player) { return player.type === “stationaryRelated” && player.enabled; });
_this._potentialPlayerMap.stationaryRelated = stationaryRelated;
return _this;
}
VideoBase.prototype._setPotentialPlayerMap = function (sekindoHoldoutExperimentResult) {
var _this = this;
var players = this._videoConfig.players;
var defaultMap = {
stickyRelated: [],
stickyPlaylist: [],
sekindo: [],
stationaryRelated: [],
};
return players && players.length
? players
.filter(function (player) { var _a; return ((_a = player.devices) === null || _a === void 0 ? void 0 : _a.indexOf(_this._device)) > -1; })
.reduce(function (accumulator, player) {
if (!accumulator[player.type]) {
logger.event(_this._component, ‘constructor’, ‘Unknown Video Player Type detected’, player.type);
accumulator[player.type] = [];
}
if (player.enabled) {
if (!sekindoHoldoutExperimentResult || player.type !== “sekindo” ) {
accumulator[player.type].push(player);
}
}
return accumulator;
}, defaultMap)
: defaultMap;
};
VideoBase.prototype._checkPlayerSelectorOnPage = function (playerType) {
var _this = this;
var players = this._potentialPlayerMap[playerType].map(function (player) {
return {
player: player,
playerElement: _this._getPlacementElement(player),
};
});
if (!players.length) {
return { player: null, playerElement: null };
}
return players[0];
};
VideoBase.prototype._getOverrideElement = function (player, playerElement, publisherPageElement) {
if (player && playerElement) {
var div = document.createElement(‘div’);
playerElement.insertAdjacentElement(player.position, div);
publisherPageElement = div;
logger.info(this._component, ‘_initializeRelatedPlayers’, ‘Changing injection element’, publisherPageElement);
}
else {
var _a = this._checkPlayerSelectorOnPage(“stickyPlaylist” ), stickyPlaylistPlayer = _a.player, stickyPlaylistElement = _a.playerElement;
if (stickyPlaylistPlayer && stickyPlaylistElement) {
var div = document.createElement(‘div’);
stickyPlaylistElement.insertAdjacentElement(stickyPlaylistPlayer.position, div);
publisherPageElement = div;
logger.info(this._component, ‘_initializeRelatedPlayers’, ‘Changing injection element’, publisherPageElement);
}
}
return publisherPageElement;
};
VideoBase.prototype._shouldOverrideElement = function (element) {
var overrideEmbed = element.getAttribute(‘override-embed’);
if (overrideEmbed === ‘true’ || overrideEmbed === ‘false’) {
return overrideEmbed === ‘true’;
}
return this._videoConfig.contextualSettings ? this._videoConfig.contextualSettings.overrideEmbedLocation : false;
};
VideoBase.prototype._getPlacementElement = function (settings) {
var pageSelectorEl = allowablePageSelector(settings.pageSelector);
var elementSelectorEl = validCssSelector(settings.elementSelector);
if (!pageSelectorEl.valid) {
logger.error(‘VideoUtils’, ‘getPlacementElement’, new Error(settings.pageSelector + ” is not a valid selector”));
return null;
}
if (settings.pageSelector && !pageSelectorEl.elements.length) {
logger.error(‘VideoUtils’, ‘getPlacementElement’, new Error(“PSNF: ” + settings.pageSelector + ” does not exist on the page”));
return null;
}
if (!elementSelectorEl.valid) {
logger.error(‘VideoUtils’, ‘getPlacementElement’, new Error(settings.elementSelector + ” is not a valid selector”));
return null;
}
if (elementSelectorEl.elements.length > settings.skip) {
return elementSelectorEl.elements[settings.skip];
}
else {
logger.error(‘VideoUtils’, ‘getPlacementElement’, new Error(“ESNF: ” + settings.elementSelector + ” does not exist on the page”));
return null;
}
};
VideoBase.prototype._getEmbeddedPlayerType = function (element) {
var embeddedPlayerType = element.getAttribute(‘data-player-type’);
if (!embeddedPlayerType || embeddedPlayerType === ‘default’) {
embeddedPlayerType = this._videoConfig.contextualSettings ? this._videoConfig.contextualSettings.defaultPlayerType : ‘static’;
}
if (this._stickyRelatedOnPage) {
embeddedPlayerType = ‘static’;
}
return embeddedPlayerType;
};
VideoBase.prototype._getUnusedMediaId = function (publisherPageElement) {
var mediaId = publisherPageElement.getAttribute(‘data-video-id’);
if (mediaId && this._contextualMediaIds.indexOf(mediaId) === -1) {
this._contextualMediaIds.push(mediaId);
return mediaId;
}
else {
logger.info(this._component, ‘_getUnusedMediaId’, ‘No Unique MediaId’);
return false;
}
};
VideoBase.prototype._createRelatedPlayer = function (mediaId, embeddedPlayerType, publisherPageElement) {
if (embeddedPlayerType === ‘collapse’) {
this._createCollapsePlayer(mediaId, publisherPageElement);
}
else if (embeddedPlayerType === ‘static’) {
this._createStaticPlayer(mediaId, publisherPageElement);
}
};
VideoBase.prototype._createCollapsePlayer = function (mediaId, publisherPageElement) {
var _a = this._checkPlayerSelectorOnPage(“stickyRelated” ), stickyRelatedPlayer = _a.player, stickyRelatedElement = _a.playerElement;
var player = stickyRelatedPlayer ? stickyRelatedPlayer : this._potentialPlayerMap[“stationaryRelated” ][0];
if (player && player.playerId) {
var shouldOverrideElement = this._shouldOverrideElement(publisherPageElement);
if (shouldOverrideElement) {
publisherPageElement = this._getOverrideElement(stickyRelatedPlayer, stickyRelatedElement, publisherPageElement);
}
publisherPageElement = document.querySelector(“#cls-video-container-” + mediaId + ” > div”) || publisherPageElement;
this._createStickyRelatedPlayer(__assign(__assign({}, player), { mediaId: mediaId }), publisherPageElement);
}
else {
logger.error(this._component, ‘_createCollapsePlayer’, ‘No video player found’);
}
};
VideoBase.prototype._createStaticPlayer = function (mediaId, publisherPageElement) {
if (this._potentialPlayerMap[“stationaryRelated” ].length && this._potentialPlayerMap[“stationaryRelated” ][0].playerId) {
var player = this._potentialPlayerMap[“stationaryRelated” ][0];
this._createStationaryRelatedPlayer(__assign(__assign({}, player), { mediaId: mediaId }), publisherPageElement);
}
else {
logger.error(this._component, ‘_createStaticPlayer’, ‘No video player found’);
}
};
VideoBase.prototype._shouldRunAutoplayPlayers = function () {
if (this._isVideoAllowedOnPage()) {
if (this._potentialPlayerMap[“stickyRelated” ].length ||
this._potentialPlayerMap[“stickyPlaylist” ].length ||
this._potentialPlayerMap[“sekindo” ].length) {
return true;
}
}
return false;
};
VideoBase.prototype._determineAutoplayPlayers = function () {
var componentName = this._component;
var isVideoManagerComponent = componentName === ‘VideoManagerComponent’;
var config = this._config;
if (this._stickyRelatedOnPage) {
logger.event(componentName, ‘stickyRelatedOnPage’, (isVideoManagerComponent && {
device: config && config.context.device,
isDesktop: this._device,
}) ||
{});
return;
}
var _a = this._checkPlayerSelectorOnPage(“stickyPlaylist” ), stickyPlaylistPlayer = _a.player, stickyPlaylistElement = _a.playerElement;
var _b = this._checkPlayerSelectorOnPage(“sekindo” ), sekindoPlayer = _b.player, sekindoElement = _b.playerElement;
if (stickyPlaylistPlayer && stickyPlaylistPlayer.playerId && stickyPlaylistPlayer.playlistId && stickyPlaylistElement) {
this._createPlaylistPlayer(stickyPlaylistPlayer, stickyPlaylistElement);
}
else if (sekindoPlayer && sekindoPlayer.playlistId && sekindoElement) {
this._createSekindoPlayer(sekindoPlayer, sekindoElement);
}
else {
logger.event(componentName, ‘noStickyPlaylistOrSekindo’, (isVideoManagerComponent && {
vendor: ‘none’,
device: config && config.context.device,
isDesktop: this._device,
}) ||
{});
}
};
VideoBase.prototype._initializeRelatedPlayers = function (publisherPageElements) {
for (var t = 0; t Adding Stationary Related Player Container”);
this._wrapJWPlayerWithCLS(element, player.mediaId);
this._playersAddedFromPlugin.push(player.mediaId);
}
};
ClsVideoInsertion.prototype._createStickyRelatedPlayer = function (player, element) {
this._device === ‘mobile’ ? [400, 225] : [640, 360];
VideoAdUnit.Video_Individual_Autoplay_SOff;
this._stickyRelatedOnPage = true;
this._videoConfig.mobileStickyPlayerOnPage = this._device === ‘mobile’;
if (element && player.position && player.mediaId) {
logger$1.info(‘ClsVideoInsertion’, ‘_createStickyRelatedPlayer’, “Video > Adding Sticky Related OnPage Player Container”);
var playerContainer = document.createElement(‘div’);
element.insertAdjacentElement(player.position, playerContainer);
var title = document.createElement(‘h3′);
title.style.margin = ’10px 0’;
var titleHeight = this._getTitleHeight(title);
this._wrapJWPlayerWithCLS(playerContainer, player.mediaId, this._WRAPPER_BAR_HEIGHT + titleHeight);
this._playersAddedFromPlugin.push(player.mediaId);
}
};
ClsVideoInsertion.prototype._createSekindoPlayer = function (player, element) {
var playlistId = player.playlistId;
__assign(__assign({}, player), { classNames: [] });
var playerSize = this._device === ‘mobile’ ? { width: 340, height: 260 } : { width: 320, height: 250 };
logger$1.info(‘ClsVideoInsertion’, ‘_createSekindoPlayer’, “Video > Adding Sekindo Player Container”);
var clsWrapper = this._createSekindoCLSWrapper(playerSize.height, playlistId);
element.insertAdjacentElement(player.position, clsWrapper);
this._playersAddedFromPlugin.push(playlistId);
};
ClsVideoInsertion.prototype._createPlaylistPlayer = function (player, element) {
var playlistId = player.playlistId;
this._videoConfig.mobileStickyPlayerOnPage = true;
var playerContainer = document.createElement(‘div’);
element.insertAdjacentElement(player.position, playerContainer);
logger$1.info(‘ClsVideoInsertion’, ‘_createPlaylistPlayer’, “Video > Adding Playlist Player Container”);
this._wrapJWPlayerWithCLS(playerContainer, playlistId, this._WRAPPER_BAR_HEIGHT);
this._playersAddedFromPlugin.push(“playlist-” + playlistId);
};
ClsVideoInsertion.prototype._isVideoAllowedOnPage = function () {
var disableAds = this._clsOptions.disableAds;
if (disableAds && disableAds.video) {
logger$1.info(‘ClsVideoInsertionMigrated’, ‘isVideoAllowedOnPage’, ‘Video > Non in post players are disabled on page’);
var disableAdsReason = ”;
if (disableAds.reasons.has(‘video_tag’)) {
disableAdsReason = ‘video tag’;
}
else if (disableAds.reasons.has(‘video_plugin’)) {
disableAdsReason = ‘video plugin’;
}
else if (disableAds.reasons.has(‘video_page’)) {
disableAdsReason = ‘command queue’;
}
var loggedClassName = disableAdsReason ? ‘ClsVideoInsertionMigrated’ : ‘ClsVideoInsertion’;
logger$1.error(loggedClassName, ‘isVideoAllowedOnPage’, new Error(“DBP: Disabled by publisher via ” + (disableAdsReason || ‘other’)));
return false;
}
if (this._clsOptions.videoDisabledFromPlugin) {
return false;
}
return true;
};
return ClsVideoInsertion;
}(VideoBase));

(function () {
var clsOptions = new ClsOptions();
if (!clsOptions || !clsOptions.enabled) {
return;
}
new ClsDynamicAdsInjector(clsOptions, new TargetDensityExperiment()).start();
new ClsVideoInsertion(new Video(clsOptions), clsOptions).init();
})();

})();



Original Source Link