PageSourceSearch

https://noneofthebad.com/assets/BannedIngredients-BqaRl5LM.js

js noneofthebad.com collected 2026-10-07 06:27:26 UTC 21,938 bytes, 1 lines download raw bytes

1import{j as e,L as g,r as y}from"./index-Ch5Tue5y.js";import{P as j}from"./PublicHeader-DavEkgbO.js";import{P as v}from"./PublicFooter-hUvCHtCP.js";import{B as w,E as N,F as S}from"./cleanScore-B4t2HA6W.js";import{I as h,b as x,f as u,m as b}from"./IngredientChipList-BWUB4yDN.js";import{C as k}from"./ChipCloud-4qD1jUJu.js";import{C as c}from"./circle-x-B1ghoV8A.js";import{C}from"./chevron-up-Bgw_pnuM.js";import{C as A}from"./chevron-down-BNpgqVOj.js";import{T as P}from"./triangle-alert-500AUNwu.js";function s({title:a,badge:t,badgeColor:r="bg-gray-100 text-gray-600",children:i,defaultOpen:o=!1}){const[m,p]=y.useState(o);return e.jsxs("div",{className:"mb-8 border border-gray-100 rounded-2xl overflow-hidden",children:[e.jsxs("button",{onClick:()=>p(f=>!f),className:"w-full flex items-center justify-between px-6 py-4 bg-gray-50 hover:bg-gray-100 transition-colors text-left",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"font-bold text-gray-900 text-base",children:a}),t&&e.jsx("span",{className:`text-xs font-semibold px-2.5 py-1 rounded-full ${r}`,children:t})]}),m?e.jsx(C,{className:"w-4 h-4 text-gray-400"}):e.jsx(A,{className:"w-4 h-4 text-gray-400"})]}),m&&e.jsx("div",{className:"px-6 py-5 bg-white",children:i})]})}function d({color:a,label:t,items:r}){const i={red:"bg-red-500",amber:"bg-amber-400",green:"bg-green-500"}[a],o={red:"text-red-800",amber:"text-amber-800",green:"text-green-800"}[a];return e.jsxs("div",{className:"mb-5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[e.jsx("div",{className:`w-2.5 h-2.5 rounded-full shrink-0 ${i}`}),e.jsx("p",{className:`text-sm font-bold uppercase tracking-wider ${o}`,children:t})]}),e.jsx(k,{items:r,tone:a,initial:6})]})}function n({name:a,reason:t}){return e.jsxs("div",{className:"flex items-start gap-3 border rounded-xl px-4 py-3 bg-red-50 border-red-100",children:[e.jsx(c,{className:"w-4 h-4 text-red-400 mt-0.5 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold text-gray-900",children:a}),e.jsx("p",{className:"text-xs mt-0.5 text-red-600",children:t})]})]})}const T=[{name:"Chemical Extraction of Any Kind",reason:"Hexane, acetone and other solvent-based extraction of oils, proteins and flavors"},{name:"Chemical Hydrolysis",reason:"Breaking down proteins or starches with acids or alkalis rather than enzymes or fermentation"},{name:"Alkalization / Dutching (Cocoa)",reason:"Cocoa treated with an alkali such as potassium carbonate to darken it and soften the flavor"},{name:"Ultra-Pasteurization / UHT (Ultra High Temperature)",reason:"Dairy and juices heated above 135°C for long shelf life"},{name:"Liquid Smoke (Chemical Concentrate)",reason:"Smoke flavor condensed from burning wood into a concentrate, used in place of real smoking"},{name:"Ion Exchange Sodium Removal",reason:"An industrial process that lowers sodium by swapping minerals in and out of the food"},{name:"Spray Drying with Synthetic Additives",reason:"Spray drying that relies on maltodextrin, anti-caking agents or other carriers we don't list"},{name:"Any Process Using Chemical Solvents",reason:"Broad prohibition covering all solvent-assisted processing not already listed above"},{name:"Solvent-Extracted Oils (Hexane, etc.)",reason:"Oils extracted with hexane or other petroleum-based solvents"}],B=[{name:"Processed Cheese of Any Kind",reason:"American slices, cheese spreads and anything sold as a 'cheese product', made with emulsifying salts. Real cheese made only from milk, salt, cultures and rennet is allowed and scored normally."},{name:"Standard Soy Sauce (Chemically Hydrolyzed)",reason:"Made via chemical hydrolysis of soy protein rather than traditional fermentation; contains caramel color and preservatives. Tamari from whole fermented soy is reviewed case-by-case."},{name:"Farmed Fish (Unless Certified Premium Equivalent)",reason:"Conventionally farmed fish. Certified farms held to a standard comparable to pasture-raised are reviewed case by case."},{name:"Raw Milk (Future Category — Not Yet Listed)",reason:"Under review for a future category; the legal and sourcing rules aren't written yet. Not accepted today."},{name:"Juice Without Whole Fruit Component",reason:"Clarified or filtered juice with none of the fruit's fiber or pulp"},{name:"UHT / Ultra-Pasteurized Dairy Products",reason:"Dairy heated above 135°C for long shelf life. Low-temperature pasteurized dairy is allowed."},{name:"Mycelium-on-Grain Mushroom Products",reason:"Mushroom products made from mycelium grown on grain, which carries the grain with it. Fruiting-body products are allowed."},{name:"Any Sparkling Water or Beverage Containing Natural Flavors",reason:'Flavored drinks whose flavor is labelled only as "natural flavors", without naming it'},{name:"Uncured Meats Using Celery Powder Nitrate Workaround",reason:"Meats labelled 'no added nitrates' that are cured with celery powder, which adds nitrates by another name"}],F=[{name:"PFAS Chemical Treatments (Water/Stain Repellents)",reason:"Fluorinated finishes used to make fabric water- and stain-repellent"},{name:"Formaldehyde Treatments (Wrinkle-Resistance Finishing)",reason:"Resin finishes used to make fabric easy-care and wrinkle-resistant"},{name:"Synthetic Dyes and Azo Dyes",reason:"Azo dyes and dyes made with heavy metals such as chrome, lead or cadmium"},{name:"Recycled Polyester or Any Microplastic-Shedding Synthetic Fabric",reason:"Polyester and other synthetic fabrics that shed plastic fibres in the wash"},{name:"Nanosilver Antimicrobial Treatments",reason:"Silver nanoparticles added to make fabric 'odor-resistant'"}],E=[{name:"Heavy Metals Above Published Limits (Lead, Cadmium, Arsenic, Mercury)",reason:"Checked by a third-party lab against California Prop 65 and EU limits. Results are required in categories where these turn up most, such as rice, protein powders, cocoa and root vegetables."},{name:"Mycotoxins Above Published Limits (Aflatoxin, Ochratoxin)",reason:"Mold byproducts that can occur in coffee, grains, nuts and dried fruit. Third-party testing is required in those categories, and a clean result earns a credit."},{name:"BPA or BPS in Packaging",reason:"Bisphenols used in can linings and plastic containers. 'BPA-free' isn't enough if BPS or another bisphenol replaced it."},{name:"PFAS in Food Packaging or Textile Treatments",reason:"Per- and polyfluoroalkyl substances used in grease-resistant packaging and fabric treatments. PFAS is on the list we don't allow in any category."},{name:"Pesticide Residues Above Organic-Equivalent Thresholds",reason:"Produce on the EWG Dirty Dozen list must be certified organic or test below detectable residue limits; otherwise it isn't listed."}];function l({group:a,tone:t}){const r=t==="red";return e.jsxs("div",{className:`flex items-start gap-3 border rounded-xl px-4 py-3 ${r?"bg-red-50 border-red-100":"bg-amber-50 border-amber-100"}`,children:[r?e.jsx(c,{className:"w-4 h-4 text-red-400 mt-0.5 shrink-0"}):e.jsx(P,{className:"w-4 h-4 text-amber-400 mt-0.5 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold text-gray-900",children:a.name}),e.jsx("p",{className:`text-xs mt-0.5 ${r?"text-red-600":"text-amber-700"}`,children:a.note}),e.jsxs("p",{className:"text-xs mt-1 text-gray-500",children:["On the list: ",a.terms.join(", ")
1]}),r&&e.jsx("p",{className:"text-xs mt-1 font-semibold text-gray-700",children:"Not listed on None of the Bad."})]})]})}function q(){return e.jsxs("div",{className:"min-h-screen bg-white",children:[e.jsx(j,{}),e.jsxs("div",{className:"max-w-4xl mx-auto px-6 safe-page-pt pb-16",children:[e.jsxs("div",{className:"mb-12",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 bg-red-100 text-red-700 text-xs font-semibold px-3 py-1.5 rounded-full mb-5",children:[e.jsx(c,{className:"w-3.5 h-3.5"})," None of the Bad Ingredient & Product Standards"]}),e.jsx("h1",{className:"text-4xl font-bold text-gray-900 mb-6",children:"Our Standards"}),e.jsxs("p",{className:"text-gray-700 text-lg leading-relaxed max-w-2xl border-l-4 border-green-500 pl-6",children:[`Most product standards are designed to be the floor — the minimum a brand has to hit to say it's "clean." Ours are designed to be the ceiling. Every product on None of the Bad is individually reviewed. Not the brand. Not the founder's story. Not the packaging. The actual ingredients, sourced with documented evidence. `,e.jsx("strong",{children:"We say no more than we say yes."})]})]}),e.jsx("div",{className:"bg-blue-50 border border-blue-100 rounded-2xl px-8 py-6 mb-12",children:e.jsxs("p",{className:"text-base text-blue-900 leading-relaxed",children:[e.jsx("strong",{children:"None of the Bad is currently accepting its first vendors."})," Every product submitted will be individually reviewed against the standards below before being listed."]})}),e.jsxs("div",{className:"mb-12 bg-gray-900 rounded-2xl px-8 py-8 text-white",children:[e.jsx("h2",{className:"text-2xl font-bold mb-3",children:"We don't just reject — we help you get there."}),e.jsx("p",{className:"text-gray-300 text-sm leading-relaxed mb-6",children:"Most certifiers tell you what you can't do. None of the Bad tells you what to change, and walks alongside you until you qualify. If your product doesn't pass, you get a real ingredient-by-ingredient breakdown — not a form rejection. Reformulate, resubmit, get listed. Because our goal isn't a small marketplace of perfect products. It's better products on every shelf."}),e.jsx("a",{href:"/VendorApply",className:"inline-flex items-center gap-2 bg-green-500 hover:bg-green-400 text-white font-semibold px-6 py-3 rounded-xl transition-colors text-sm",children:"Apply to Sell — We'll Tell You How to Get There →"})]}),e.jsxs("div",{className:"mb-10 bg-green-50 border-2 border-green-400 rounded-2xl p-6 flex gap-4 items-start",children:[e.jsx("div",{className:"w-14 h-14 bg-green-500 text-white rounded-2xl flex items-center justify-center text-xl font-black shrink-0",children:"75+"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-bold text-gray-900 text-base mb-1",children:"Minimum Score of 75 Required"}),e.jsxs("p",{className:"text-sm text-gray-600 leading-relaxed",children:["Every product must achieve a ",e.jsx("strong",{children:"score of 75 or higher"})," to be listed on None of the Bad. Products scoring below 75 are ",e.jsx("strong",{children:"automatically rejected"}),", regardless of certifications or brand reputation — any banned ingredient means rejection, and a product with an incomplete label is not scored at all. Listing at 75 is the floor, not the goal: we work with every brand to reach 85. The score is calculated based on the factors below."]})]})]}),e.jsxs(s,{title:"Section 1 — The Score",badge:"Score 0–100",badgeColor:"bg-green-100 text-green-700",defaultOpen:!0,children:[e.jsx("p",{className:"text-sm text-gray-500 leading-relaxed mb-6",children:"The None of the Bad score is a single 0–100 rating assigned to each individual product. It starts at 85 and moves from there: points come off for banned and flagged ingredients, sugar per serving, and undisclosed inputs; points go back on for verified organic certification, published lot testing, and clean sourcing. Every product card on None of the Bad displays that one score, plus decals explaining anything that pulled it down:"}),e.jsx("div",{className:"grid sm:grid-cols-5 gap-3 mb-7",children:[{range:"95–100",label:"Elite Clean",color:"bg-green-600",text:"Top-tier ingredients, premium sourcing, verified"},{range:"90–94",label:"Verified Clean",color:"bg-green-500",text:"Clean label with third-party verification"},{range:"85–89",label:"Clean",color:"bg-emerald-500",text:"Meets our standard comfortably — the number we coach brands to"},{range:"75–84",label:"Approved",color:"bg-yellow-400",text:"Listed. We work with the brand to reach 85"},{range:"0–74",label:"Rejected",color:"bg-red-500",text:"Below the listing threshold — cannot be sold here"}].map(a=>e.jsxs("div",{className:"rounded-xl border border-gray-100 p-4 text-center",children:[e.jsx("div",{className:`${a.color} text-white rounded-lg px-3 py-1.5 mb-2 font-bold text-sm`,children:a.range}),e.jsx("p",{className:"font-semibold text-gray-900 text-sm",children:a.label}),e.jsx("p",{className:"text-xs text-gray-400 mt-1 leading-relaxed",children:a.text})]},a.range))}),e.jsxs("div",{className:"mb-6 bg-amber-50 border-2 border-amber-300 rounded-2xl p-5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("span",{className:"text-xl",children:"🌿"}),e.jsx("p",{className:"font-bold text-amber-900",children:"The Natural Flavors Rule"})]}),e.jsxs("p",{className:"text-sm text-gray-700 leading-relaxed mb-3",children:["An undisclosed natural flavor or natural color means the product is ",e.jsx("strong",{children:"not listed"}),` — whatever else it earns. "Natural flavors," "organic flavor," a bare "flavor," and "natural color" all hide what's in the product, and the rule catches qualifier wording too: "natural fruit flavor" and "natural food color" both trigger it. There are two routes onto the shelf: `,e.jsx("strong",{children:"name the components on the label"}),' (for example, "natural flavor (lavender oil, chamomile extract)"), or ',e.jsx("strong",{children:"provide the flavor's composition for our review"}),"."]}),e.jsx(g,{to:"/HowWeScore",className:"text-sm text-green-600 hover:text-green-800 font-medium",children:"See exactly how we score →"})]}
1),e.jsx("h3",{className:"text-sm font-bold text-gray-800 mb-4 uppercase tracking-wide",children:"Product Card Flag System"}),e.jsx(d,{color:"red",label:"🔴 Red Flags — Disqualifying or Score-Penalizing",items:["High sugar content (triggers score reduction)","Refined or unspecified wheat flour (banned)","No added-sugar figure (not scored until disclosed)","Any banned ingredient present","Unverified 'natural flavor' — source undisclosed","Solvent-extracted oils"]}),e.jsx(d,{color:"amber",label:"🟡 Amber Flags — Acceptable but Not Premium",items:["Dry roasted (vs. raw or steam-roasted)","Standard pasteurization (vs. cold-pressed or low-temp)","OEKO-TEX Standard 100 only (textiles) — no GOTS","Added citric acid (synthetic source not confirmed natural)","Soy lecithin (non-GMO but not organic)","Xanthan or guar gum present"]}),e.jsx(d,{color:"green",label:"🟢 Green Flags — Premium Indicators (Score Boosters)",items:["Ancient grain (einkorn, emmer, spelt, teff, amaranth, millet)","Sprouted grain or sprouted seed","Grass-finished (beef, dairy)","A2 milk protein","Mycotoxin tested (coffee, grains, nuts)","GOTS certified (textiles)","Third-party batch tested","Glass packaging","Biodynamic certified","Cold-pressed or low-temperature processed"]}),e.jsxs("div",{className:"grid sm:grid-cols-2 gap-4 mt-2",children:[e.jsxs("div",{className:"bg-green-50 border border-green-100 rounded-xl p-4",children:[e.jsx("p",{className:"text-xs font-bold text-green-800 mb-1",children:"🫙 Packaging Bonus"}),e.jsx("p",{className:"text-xs text-green-700 leading-relaxed",children:"Glass or metal packaging earns a +4 credit. Other packaging loses nothing — it just doesn't earn the credit."})]}),e.jsxs("div",{className:"bg-red-50 border border-red-100 rounded-xl p-4",children:[e.jsx("p",{className:"text-xs font-bold text-red-800 mb-1",children:"🍬 Sugar Penalty"}),e.jsx("p",{className:"text-xs text-red-700 leading-relaxed",children:"Added sugar costs 1.6 points per gram per serving, weighted by category, regardless of source (cane, coconut, honey, date syrup). 8+ points triggers a HIGH SUGAR decal."})]})]})]}),e.jsxs(s,{title:"Section 2 — Banned Ingredients — Automatic Rejection",badge:"Auto Reject",badgeColor:"bg-red-100 text-red-700",defaultOpen:!0,children:[e.jsx("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:"Any product containing a banned ingredient is automatically rejected from None of the Bad — no exceptions, regardless of quantity, trace amounts, or certification status."}),e.jsxs("div",{className:"bg-red-50 border border-red-200 rounded-xl p-4 mb-3",children:[e.jsx("p",{className:"text-xs font-bold text-red-800 mb-2 uppercase tracking-wider",children:"Generated from the scoring engine — any one means rejection"}),e.jsx(h,{items:w,groups:x(),tone:"red",highlightTerms:new Set(N)})]}),e.jsxs("div",{className:"mb-5 bg-indigo-50 border-2 border-indigo-200 rounded-xl p-4",children:[e.jsx("p",{className:"text-sm font-bold text-indigo-900 mb-1",children:"🛢️ Refined oils — processing matters"}),e.jsx("p",{className:"text-xs text-gray-700 leading-relaxed",children:`Canola, rapeseed, sunflower, safflower, palm oil and palm fat are banned when refined. An oil named without "cold-pressed", "expeller-pressed", "unrefined" or "virgin" is treated as refined, so the product is not listed; the same oil named with one of those words costs nothing (unrefined red palm oil and virgin palm oil are not penalised). Soybean, corn, cottonseed, grapeseed, rice bran and unspecified vegetable oil or vegetable fat are banned however they're made.`})]}),e.jsx("h3",{className:"text-sm font-bold text-gray-800 mb-3 uppercase tracking-wide",children:"Detailed Explanations"}),e.jsx("p",{className:"text-xs text-gray-500 mb-3 leading-relaxed",children:`Each card describes the ingredient and why it's on our list. "Banned" means we don't list it — it's our standard for what we carry, not medical advice.`}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:x().map(a=>e.jsx(l,{group:a,tone:"red"},a.name))})]}),e.jsxs(s,{title:"Section 3 — Banned Processes — Automatic Rejection",badge:"Auto Reject",badgeColor:"bg-red-100 text-red-700",defaultOpen:!1,children:[e.jsxs("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:["Products are rejected not only for what they contain, but for ",e.jsx("em",{children:"how they are made"}),". The following manufacturing and processing methods trigger automatic rejection regardless of the final ingredient list."]}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:T.map((a,t)=>e.jsx(n,{name:a.name,reason:a.reason},t))})]}),e.jsxs(s,{title:"Section 4 — Banned Products — No Clean Alternative",badge:"Auto Reject",badgeColor:"bg-red-100 text-red-700",defaultOpen:!1,children:[e.jsx("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:"These product categories are banned outright — not because of a fixable ingredient, but because no clean version of the product exists within acceptable processing limits. Exceptions are noted where a clean alternative is possible."}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:B.map((a,t)=>e.jsx(n,{name:a.name,reason:a.reason},t))})]}),e.jsxs(s,{title:"Section 5 — Banned Textile Materials",badge:"Auto Reject",badgeColor:"bg-red-100 text-red-700",defaultOpen:!1,children:[e.jsx("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:"All textile products submitted to None of the Bad are reviewed against their own published standard. The following materials and chemical treatments trigger automatic rejection."}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:F.map((a,t)=>e.jsx(n,{name:a.name,reason:a.reason},t))})]}),e.jsxs(s,{title:"Section 6 — Contaminant & Packaging Limits",badge:"Auto Reject Threshold",badgeColor:"bg-red-100 text-red-700",defaultOpen:!1,children:[e.jsx("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:"Products may fail review not because of their ingredient list, but because of contamination, packaging or growing practices. Going over any of the following limits means the product isn't listed."}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:E.map((a,t)=>e.jsx(n,{name:a.name,reason:a.reason},t))})]}),e.jsxs(s,{title:"Flagged Ingredients — Cost Points",badge:"−15 / −2",badgeColor:"bg-
1amber-100 text-amber-700",defaultOpen:!1,children:[e.jsx("p",{className:"text-sm text-gray-500 mb-5 leading-relaxed",children:"Flagged ingredients don't disqualify a product on their own — they cost points. Each flagged ingredient costs 15; each minor one costs 2, capped at 10 in total, so minor flags can cost a badge but never a listing."}),e.jsxs("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 mb-5",children:[e.jsx("p",{className:"text-xs font-bold text-amber-800 mb-2 uppercase tracking-wider",children:"Generated from the scoring engine — −15 pts each (minor −2, −10 at most)"}),e.jsx(h,{items:S,groups:[...u(),...b()],tone:"amber"})]}),e.jsx("h3",{className:"text-sm font-bold text-gray-800 mb-3 uppercase tracking-wide",children:"Detailed Explanations"}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3 mb-5",children:u().map(a=>e.jsx(l,{group:a,tone:"amber"},a.name))}),e.jsx("h3",{className:"text-sm font-bold text-gray-800 mb-3 uppercase tracking-wide",children:"Minor Flags — −2 pts each, −10 at most"}),e.jsx("div",{className:"grid sm:grid-cols-2 gap-3",children:b().map(a=>e.jsx(l,{group:a,tone:"amber"},a.name))})]}),e.jsx("div",{className:"mb-6 text-center",children:e.jsx(g,{to:"/HowWeScore",className:"text-green-600 hover:text-green-800 font-medium underline underline-offset-2",children:"See the full scoring formula →"})}),e.jsxs("div",{className:"p-6 bg-gray-50 rounded-xl border border-gray-100 text-sm text-gray-500 leading-relaxed",children:[e.jsx("strong",{className:"text-gray-700",children:"Note:"})," This list is updated as the evidence changes. When it does, we update the published standard, give it a new version number, and give listed brands notice before it applies. For questions, contact"," ",e.jsx("a",{href:"mailto:[email protected]",className:"text-green-600 underline underline-offset-2",children:"[email protected]"}),"."]})]}),e.jsx(v,{})]})}export{q as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.