;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Decoração exclusiva: cerâmica de Noni traz leveza em peças únicas

Cerâmica da designer Fernanda Giaccio, da marca Noni - Divulgação
Cerâmica da designer Fernanda Giaccio, da marca Noni
Imagem: Divulgação

Marcela Braz

Colaboração para Nossa

05/03/2020 04h00

Fernanda Giaccio

Fernanda Giaccio

Profissão

designer de produto por trás da marca Noni

Formação

bacharel em Design Industrial, na Universidade Presbiteriana Mackenzie

Quem vê as peças delicadas de Fernanda não imagina o suor e as lágrimas envolvidas no processo de transformar lama em ouro.

Quando ainda estava na faculdade começou a trabalhar em um ateliê, onde aprendeu técnicas de modelagem. Naquela época, também atuava com design gráfico em uma agência e abriu o site da Noni em paralelo. A dedicação total só aconteceu quando a empresa faliu em 2016, e todos os funcionários foram demitidos. Era a hora de fazer o projeto da cerâmica virar.

Nada de glamour - mas muito prazer

Dedicada a dar o acabamento perfeito às xícaras, copos e bowls produzidos em seu ateliê, ela garante que a vida de empresária e ceramista não é nada glamourosa. "A palavra que define a cerâmica é disciplina. Você não pode vacilar de jeito nenhum", diz. "Ela é feita a 1200 °C, mas o resultado é leve. É um paradoxo".

A ideia de Fernanda é integrar essa racionalidade à "poesia do artesanato". Segundo ela, a maioria dos ceramistas se deixa levar pelo material, ou seja, começa a modelar e vai se libertando antes de ter um conceito estruturado. Mas na Noni é diferente. "Eu tenho projeto, paleta de cores, uma linha, uma fórmula, uma linguagem. Às vezes sacrifico a função pela forma, a forma pela função. Vai do que eu gosto e da minha estética", explica.

Mesa de trabalho de Fernanda Giaccio - Divulgação - Divulgação
Imagem: Divulgação

Depois de desenhado o projeto, cada item a por um processo de modelagem, acabamento e esmaltação, feitos à mão, um a um. O objetivo é garantir a singularidade de cada peça. Ainda assim, elas são feitas em coleções, conectadas pelo mesmo conceito. São complementares e dialogam entre si.

Xícaras da marca Noni confeccionadas em cerâmica  - Divulgação - Divulgação
Xícaras da marca Noni confeccionadas em cerâmica
Imagem: Divulgação

Ceramista x empresária

"Ter um negócio é muito difícil. Mas é igual ter um filho: dá o maior trabalho, mas se você tem, você gosta", acredita. Para Fernanda, o melhor momento é o de embalar o produto e mandar para o cliente: Ufa! A peça deu certo".

Minha arte combina com...

Gypso @gypso.sp

"São duas amigas queridas, amo as peças que elas produzem e acho que temos uma afinidade estética que se aproximam"

Arqvo @arqvo_

"A ideia de tudo ter uma identidade e um conceito é muito parecido com a minha ideia de construção de marca"