Connect with us

Vermont

Grilling the Chef: Robert Smith III Leads a Fresh Chapter at Ferrisburgh's Starry Night Café

Published

on

Grilling the Chef: Robert Smith III Leads a Fresh Chapter at Ferrisburgh's Starry Night Café


click to enlarge
  • Bear Cieri
  • Chef Robert Smith III

Chef Robert Smith III

  • Position: Executive chef
  • Age: 31
  • Cuisine type: Italian-inflected California cuisine with fresh, seasonal ingredients
  • Experience: On-the-job training in Vermont, from dishwashing at Kitchen Table Bistro to holding all stations at Texas Roadhouse to three years cooking at Guild Tavern. Moved to Los Angeles at 22 and spent four years at chef Michael Cimarusti’s two-Michelin-starred Providence — including off-site events in Mexico and cooking onstage for Bob Weir of the Grateful Dead. Other California career highlights include San Francisco’s Flour + Water and Michelin-starred AL’s Place, as well as Sightglass Coffee’s 14,000-square-foot Hollywood expansion.
  • What’s on the menu: Coal-roasted oysters; crispy root vegetables with Cabot clothbound cheddar espuma; an epic deconstructed steak tartare; housemade pasta; and wood-grilled entrées, including black bass and picanha steak with loaded polenta, black garlic steak sauce, grilled lemon and sauce Bordelaise

The first Friday in May was a busy one at Ferrisburgh’s Starry Night Café. The sun was shining, and the team was snipping tulip stems and cleaning off outdoor tables to open the restaurant’s patio for the first time this year. Baby greens and herbs were peeking through the soil in the fine-dining restaurant’s new raised-bed vegetable garden. And as this reporter from Seven Days walked into the kitchen, a health inspector was wrapping up his surprise visit.

“I thought this interview would be the most nerve-racking thing today,” executive chef Robert Smith III joked, settling into a comfy new leather chair in the restaurant’s window-filled sunroom.

That room, formerly a screened-in porch warmed by space heaters, is just one of the updates recently undertaken at the destination restaurant on Route 7. Since Smith began leading Starry Night’s kitchen in late 2021, there have been three separate renovations. Most of the multiroom restaurant has been refreshed, including a hood expansion to accommodate a wood-fired grill in the kitchen, updates to the octagonal dining room and the porch winterization. The most recent project — a complete revamp of the front barroom, for which Starry was closed for five weeks this spring — has created a modern, downright swanky space.

A Jericho native, Smith already thought the restaurant was one of the most beautiful in Vermont when he arrived for his interview in November 2021, two days after moving back to Vermont from a seven-year stint at top restaurants in California. Now, thanks to all the investment from owners Mark and Molly Valade, the setting has a big-city feel befitting his big, bold menu.

Advertisement
click to enlarge Grilled oysters at Starry Night Café - BEAR CIERI
  • Bear Cieri
  • Grilled oysters at Starry Night Café

Starry Night regular Bobby Berg, owner of Haute & Heady Cannabis Cuisine, told Seven Days the renovated restaurant “matches California’s wine country refinement with Vermont’s rustic, earthy palates.” Smith, recalling Berg’s feedback on a recent meal, summarized a more visceral take: “He said he wants to take a bath in the black garlic steak sauce.”

The new marble-topped bar is far from a bathtub, but it’s the perfect place to soak up the delights of a cut-to-order, deconstructed steak tartare ($23) or luxuriate over a bowl of ribbony mafaldine pasta with wild morel ragù ($36) alongside a cocktail from bar pro Nick Roy.

Smith took a break from his busy day to chat about the renovations, forgotten rooms and what’s growing in the garden.

How’d the health inspection go?

I saw [the inspector], and I was like, [big sigh] ‘Hi!’ But it went well. I didn’t get the score yet, but I saw what he wrote down and have a good idea.

I’m sure he was just here to check out this incredible new bar.

Advertisement

[Laughing] This used to be the forgotten room. You’d walk through the door right into the bar, and it was awkward.

A lot of guests would leave notes in their reservations saying they didn’t want to sit in the front room. The first week we were back, we had guests say, “Actually, I do want to sit in there.”

Beyond the physical changes, how has your menu evolved since you started here?

I look back in my pictures at early menu stuff, and I think I was really, really focused on “fine dining” and plating things that way. I’m getting more comfortable with my skill set and what I like.

We’ve gotten a lot more pasta-forward, too. I love northern Italian braises of pork and beef that take several days. We make ricotta and marinate the meat in the whey from that to tenderize it. We’ve even got a pasta extruder in the back, so we can make semolina dried noodles in-house — all kinds of shapes.

Advertisement
click to enlarge Bartender Nick Roy - BEAR CIERI
  • Bear Cieri
  • Bartender Nick Roy

You posted a video of beet radiatori recently that looked pretty incredible.

Several people thought that was hamburger — my parents and a delivery driver. He said, “Making hamburg?” I was like, What is hamburg? This is great.

If you were to pair a dish with each of the restaurant’s dining rooms, what would they be?

For the bar, grilled oysters, roasted veg and fun specials that we run. You can see the kitchen, so that makes sense to me there. This room [the former porch], I don’t know what it is, but it attracts the most pasta lovers. We’ll get tables of all pasta. The larger dining room, it’s the big showstopper plates.

You’re adding Saturday lunch in June. What will be on the menu?

We’re gonna do some pastas — carbonara, vongole, a spring zucchini pasta with mafaldine — Korean spareribs, and some sandwiches on housemade buns. We’re working on some type of crispy fry thing. We don’t have a fryer in the kitchen, so that’s the dilemma.

Advertisement

Speaking of fryers, what was it like going from a chain restaurant to fine dining early in your career?

I was hired [at Texas Roadhouse] as a dishwasher and worked cold prep, hot prep, the line, grill. When the Guild was opening up, I was like, “This is sick — a new wood-grilled steakhouse.” I felt confident cooking steak. It’s different quality and seasonings, but you’re cooking a lot of steak at Texas Roadhouse. You get temperature and volume. Still, the Guild was an eye-opening experience. Chef Phillip Clayton was a really great mentor for me. When I left, he gave me a chef coat and a really nice good-grace note to anywhere.

How do you foster that sort of growth now that you’re the mentor?

click to enlarge Mafaldine pasta with wild morel ragù - BEAR CIERI
  • Bear Cieri
  • Mafaldine pasta with wild morel ragù

It’s incredible to see people put more on their plate and just crush it. My sous chef, Eli Eppolito, is really tremendous. He keeps the kitchen afloat — and he’s six foot five and can dunk. He started as a cook; he graduated from UVM and didn’t want to be a sociologist.

I definitely like to promote from within. There’s no reason not to pursue what we have and invest more with them. We’ve got two guys who started in the dish pit, and now they’re on the pasta station and the grill. A chef friend of mine, Austin [Poulin of southern Vermont’s Restaurant at Hill Farm], dined here last week, and he said, “How old are these kids?” I was like, “Combined age of 39. And they’re doing great.” I don’t think they had encouragement like that before.

How do you find people to work here, being a destination spot?

Advertisement

We do a lot of carpooling. Most of us are commuting from Middlebury or Burlington. Staffing is the hardest. That’s why maintaining this team is so important — this is the best staff we’ve ever had. We have under 20 employees, and not all of them are full time. But this restaurant’s only open 15 hours a week.

Even for diners, you’ve got to plan. You’re not often driving by here at 5:30 p.m. like, “Oh, I’m gonna swing in for dinner.”

As things start popping out of the ground, what are the next local ingredients you’re excited to put on the menu?

Asparagus, better peas — they’re starting, but they need to be a little sweeter — ramps and morels. Our six new garden beds were planted this week; Horsford [Gardens & Nursery] built them, and Farmer Hil is maintaining them for us. As cooks, we’ll go out daily to pick herbs and stuff for a garden salad. I just had some lettuce, which I shouldn’t really be eating because it should grow. But it tastes so fresh.

What’s planted in there? It’s cool to see the beds from Route 7.

Advertisement

Let’s walk out there. We’ve got radishes, beets, speckled lettuce, red Russian kale, red-veined sorrel, parsley chives, purple shiso. We got that from Farmer Hil last year for the tartare, and now it will be from here.

[Pointing to plants] Cilantro, curly parsley, chives, onions, sage, oregano, thyme, rosemary. It’s like the French Laundry.

Want to go in and light the grill? I have it all set up, because I figured this is a “grilling” thing. I’ll give you the blowtorch.

This interview was edited and condensed for clarity and length.



Source link

Advertisement
Continue Reading
Click to comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Vermont

Tourism Leaders To Gather In Killington For Vermont Tourism Summit

Published

on

Tourism Leaders To Gather In Killington For Vermont Tourism Summit


Tuesday, April 28-Wednesday, April 29 —KILLINGTON— The Killington Grand Resort Hotel & Conference Center will host the 41st Annual Vermont Tourism Summit, bringing together business owners, operators, and industry professionals from across the state for two days focused on collaboration, strategy, and growth within Vermont’s tourism economy.



Source link

Continue Reading

Vermont

Vermont residents remain concerned over potential environmental provisions

Published

on

Vermont residents remain concerned over potential environmental provisions


This week, a bill that would make changes to Vermont’s Act 181 is receiving testimony in the House Committee on Environment. Certain provisions in Act 181 could trigger a permitting process through Vermont’s land use protection law, Act 250. A rule related to road building and some lands identified as “critical natural resource areas” by the state’s land use review board are expected to take effect this year. Last month, legislation passed the Senate and is currently in the House to push those deadlines back by a few years. For Corinth resident Neil Ryan, that not enough. “The group of people that was largely left out of the process: Rural Vermonters are having this imposed upon them with no say,” he said. Ryan and his family have built their own farms for generations. He believes if the provisions take effect, it would be very difficult for future generations to accomplish what he has. “The difficulty of the Act 250 process, the costs associated with the Act 250 process, we wouldn’t have started those farms likely,” he said. However, Ryan said he does support the portion of Act 181 that allows towns to opt into being exempt from the permitting process altogether. This is meant to assist housing development. On Tuesday, regional planning commissions told lawmakers that many towns have opted in. Still, Vermont is not on track for its goal of 40,000 + homes by 2030. “We’re not saying rural housing growth should stop or slow,” Executive Director of the Northwest RPC Catherine Dimitruk said. “Were saying those additional units that we need, we should be doing all we can to encourage and incentivize.”The bill will remain in House environment for the foreseeable future.

This week, a bill that would make changes to Vermont’s Act 181 is receiving testimony in the House Committee on Environment.

Certain provisions in Act 181 could trigger a permitting process through Vermont’s land use protection law, Act 250.

Advertisement

A rule related to road building and some lands identified as “critical natural resource areas” by the state’s land use review board are expected to take effect this year.

Last month, legislation passed the Senate and is currently in the House to push those deadlines back by a few years. For Corinth resident Neil Ryan, that not enough.

“The group of people that was largely left out of the process: Rural Vermonters are having this imposed upon them with no say,” he said.

Advertisement

Ryan and his family have built their own farms for generations. He believes if the provisions take effect, it would be very difficult for future generations to accomplish what he has.

“The difficulty of the Act 250 process, the costs associated with the Act 250 process, we wouldn’t have started those farms likely,” he said.

However, Ryan said he does support the portion of Act 181 that allows towns to opt into being exempt from the permitting process altogether. This is meant to assist housing development.

On Tuesday, regional planning commissions told lawmakers that many towns have opted in. Still, Vermont is not on track for its goal of 40,000 + homes by 2030.

“We’re not saying rural housing growth should stop or slow,” Executive Director of the Northwest RPC Catherine Dimitruk said. “Were saying those additional units that we need, we should be doing all we can to encourage and incentivize.”

Advertisement

The bill will remain in House environment for the foreseeable future.



Source link

Continue Reading

Vermont

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Published

on

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York


Roads will turn slippery mid-morning through mid-afternoon

Advertisement

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Roads will turn slippery mid-morning through mid-afternoon

Advertisement

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon. Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.Watch the video above to see the timeline for your area.

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon.

Advertisement

Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.

Watch the video above to see the timeline for your area.

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

Advertisement

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

Advertisement

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

Advertisement

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

Advertisement

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

Advertisement

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

Advertisement

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

Advertisement

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

Advertisement

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

Advertisement

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

Advertisement

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Advertisement

Loading more articles…



Source link

Continue Reading

Trending