/* 念念 Web — 图标集 + 品牌印章 Logo */
(function () {
  const React = window.React;
  const h = React.createElement;

  function Icon({ d, size = 20, fill, stroke = 'currentColor', sw = 1.7, vb = 24, children, style }) {
    return h('svg', {
      width: size, height: size, viewBox: `0 0 ${vb} ${vb}`,
      fill: fill || 'none', stroke: fill ? 'none' : stroke,
      strokeWidth: sw, strokeLinecap: 'round', strokeLinejoin: 'round',
      style: { flex: 'none', ...style },
    }, children || (d ? h('path', { d }) : null));
  }

  const P = {
    dashboard: 'M3 9.5 12 3l9 6.5V20a1 1 0 0 1-1 1h-5v-6h-6v6H4a1 1 0 0 1-1-1z',
    calendar: ['M4 6.5A1.5 1.5 0 0 1 5.5 5h13A1.5 1.5 0 0 1 20 6.5v12A1.5 1.5 0 0 1 18.5 20h-13A1.5 1.5 0 0 1 4 18.5z', 'M4 9.5h16M8 3.5v3M16 3.5v3'],
    records: ['M9 11.5l2 2 4-4.5', 'M4.5 6.2A1.7 1.7 0 0 1 6.2 4.5h11.6A1.7 1.7 0 0 1 19.5 6.2v11.6a1.7 1.7 0 0 1-1.7 1.7H6.2a1.7 1.7 0 0 1-1.7-1.7z'],
    diary: ['M6 4h11a1 1 0 0 1 1 1v15l-2.2-1.4L13.6 20 11.4 18.6 9.2 20 7 18.6 5 20V5a1 1 0 0 1 1-1z', 'M8.5 8.5h7M8.5 12h5'],
    articles: ['M7 3.5h7l4 4V20a.5.5 0 0 1-.5.5h-10A.5.5 0 0 1 7 20z', 'M13.5 3.5V8h4.5M9.5 12.5h5M9.5 16h5'],
    content: ['M3.5 6.5h17M3.5 12h17M3.5 17.5h17'],
    knowledge: ['M3.5 5.2A.7.7 0 0 1 4.2 4.5h4.3l1.6 2h6.7a.7.7 0 0 1 .7.7v1.3', 'M3.5 9.5A.8.8 0 0 1 4.3 8.7h15.4a.8.8 0 0 1 .8.9l-1 8.2a.9.9 0 0 1-.9.8H4.6a.9.9 0 0 1-.9-.8z'],
    star: ['M12 3.6l2.5 5.2 5.7.8-4.1 4 1 5.7L12 16.9 6.9 19.3l1-5.7-4.1-4 5.7-.8z'],
    trash: ['M5 7h14M9.5 7V5.3A.8.8 0 0 1 10.3 4.5h3.4a.8.8 0 0 1 .8.8V7M6.5 7l.8 12a1 1 0 0 0 1 .95h7.4a1 1 0 0 0 1-.95L17.5 7M10 11v5M14 11v5'],
    stats: ['M4 20V4M4 20h16M8 20v-6M12.5 20V9M17 20v-9'],
    settings: ['M12 9.2a2.8 2.8 0 1 0 0 5.6 2.8 2.8 0 0 0 0-5.6z', 'M19.4 13.5a1.4 1.4 0 0 0 .28 1.55l.05.05a1.7 1.7 0 1 1-2.4 2.4l-.05-.05a1.4 1.4 0 0 0-1.55-.28 1.4 1.4 0 0 0-.85 1.28V19a1.7 1.7 0 1 1-3.4 0v-.05a1.4 1.4 0 0 0-.92-1.28 1.4 1.4 0 0 0-1.55.28l-.05.05a1.7 1.7 0 1 1-2.4-2.4l.05-.05a1.4 1.4 0 0 0 .28-1.55 1.4 1.4 0 0 0-1.28-.85H5a1.7 1.7 0 1 1 0-3.4h.05a1.4 1.4 0 0 0 1.28-.92 1.4 1.4 0 0 0-.28-1.55l-.05-.05a1.7 1.7 0 1 1 2.4-2.4l.05.05a1.4 1.4 0 0 0 1.55.28H10a1.4 1.4 0 0 0 .85-1.28V5a1.7 1.7 0 1 1 3.4 0v.05a1.4 1.4 0 0 0 .85 1.28 1.4 1.4 0 0 0 1.55-.28l.05-.05a1.7 1.7 0 1 1 2.4 2.4l-.05.05a1.4 1.4 0 0 0-.28 1.55V10a1.4 1.4 0 0 0 1.28.85H19a1.7 1.7 0 1 1 0 3.4h-.05a1.4 1.4 0 0 0-1.28.85z'],
    globe: ['M12 3.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17z', 'M3.5 12h17M12 3.5c2.3 2.2 3.5 5.3 3.5 8.5s-1.2 6.3-3.5 8.5c-2.3-2.2-3.5-5.3-3.5-8.5S9.7 5.7 12 3.5z'],
    search: ['M11 4.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zM20 20l-4.4-4.4'],
    plus: ['M12 5v14M5 12h14'],
    bell: ['M18 16V11a6 6 0 0 0-12 0v5l-1.5 2.5h15z', 'M9.5 19a2.5 2.5 0 0 0 5 0'],
    sun: ['M12 7.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z', 'M12 2v2.5M12 19.5V22M4.2 4.2l1.8 1.8M18 18l1.8 1.8M2 12h2.5M19.5 12H22M4.2 19.8 6 18M18 6l1.8-1.8'],
    moon: ['M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z'],
    chevronR: ['M9.5 6l6 6-6 6'],
    chevronD: ['M6 9.5l6 6 6-6'],
    chevronL: ['M14.5 6l-6 6 6 6'],
    x: ['M6 6l12 12M18 6 6 18'],
    edit: ['M16.5 4.5l3 3M4 20l1-4L16.5 4.5a1.4 1.4 0 0 1 2 0l1.5 1.5a1.4 1.4 0 0 1 0 2L8.5 19.5z'],
    eye: ['M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12z', 'M12 9.2a2.8 2.8 0 1 0 0 5.6 2.8 2.8 0 0 0 0-5.6z'],
    more: ['M6 12h.01M12 12h.01M18 12h.01'],
    check: ['M5 12.5l4.5 4.5L19 7'],
    arrowR: ['M5 12h14M13 6l6 6-6 6'],
    arrowL: ['M19 12H5M11 18l-6-6 6-6'],
    import: ['M12 3v11M8 10.5l4 4 4-4M5 20.5h14'],
    download: ['M12 14V3M8 10.5l4 4 4-4M5 20.5h14'],
    clock: ['M12 3.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17zM12 7.5V12l3 2'],
    pin: ['M12 21s6.5-5.6 6.5-10.5a6.5 6.5 0 1 0-13 0C5.5 15.4 12 21 12 21z', 'M12 8.5a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'],
    tag: ['M3.5 12.8 11 5.3a1.6 1.6 0 0 1 1.1-.5l5.4-.3a1.6 1.6 0 0 1 1.7 1.7l-.3 5.4a1.6 1.6 0 0 1-.5 1.1l-7.5 7.5a1.6 1.6 0 0 1-2.3 0l-5.3-5.3a1.6 1.6 0 0 1 0-2.1z', 'M15 8.5h.01'],
    lock: ['M6.5 11V8a5.5 5.5 0 0 1 11 0v3', 'M5.5 11h13a.9.9 0 0 1 .9.9v7.2a.9.9 0 0 1-.9.9h-13a.9.9 0 0 1-.9-.9v-7.2a.9.9 0 0 1 .9-.9z'],
    filter: ['M4 6h16M7 12h10M10 18h4'],
    grid: ['M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z'],
    list: ['M8 6h12M8 12h12M8 18h12M4 6h.01M4 12h.01M4 18h.01'],
    copy: ['M9 9h9.5a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5H9a.5.5 0 0 1-.5-.5V9.5A.5.5 0 0 1 9 9z', 'M5.5 15H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5h9.5a.5.5 0 0 1 .5.5v.5'],
    restore: ['M4 9a8 8 0 1 1-1 4', 'M4 4v5h5'],
    media: ['M4.5 5.5h15a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1h-15a1 1 0 0 1-1-1v-11a1 1 0 0 1 1-1z', 'M3.7 16.5l4.3-4 3 2.6 3.4-3.6 5.6 5.5', 'M8.5 10a1.4 1.4 0 1 0 0-2.8 1.4 1.4 0 0 0 0 2.8z'],
  };

  function NNIcon(name, props = {}) {
    const seg = P[name];
    if (!seg) return null;
    const arr = Array.isArray(seg) ? seg : [seg];
    return h(Icon, props, arr.map((d, i) => h('path', { key: i, d })));
  }

  // —— 品牌印章 Logo ——
  function Logo({ size = 34, showText = true, textSize = 19, light = false }) {
    return h('div', { style: { display: 'flex', alignItems: 'center', gap: 11 } },
      h('div', {
        style: {
          width: size, height: size, borderRadius: 'calc(var(--radius-sm) + 1px)',
          background: light ? 'rgba(255,255,255,0.16)' : 'linear-gradient(150deg, var(--accent), var(--accent-strong))',
          color: '#fff', display: 'grid', placeItems: 'center',
          fontFamily: 'var(--font-serif)', fontWeight: 600,
          fontSize: size * 0.5, lineHeight: 1, position: 'relative',
          boxShadow: light ? 'none' : '0 2px 8px var(--accent-ring)',
          flex: 'none',
        }
      },
        '念',
        h('span', { style: { position: 'absolute', right: size * 0.13, bottom: size * 0.11, width: size * 0.13, height: size * 0.13, borderRadius: '50%', background: 'rgba(255,255,255,0.85)' } })
      ),
      showText && h('div', { style: { display: 'flex', flexDirection: 'column', lineHeight: 1.05 } },
        h('span', { style: { fontFamily: 'var(--font-serif)', fontWeight: 600, fontSize: textSize, letterSpacing: '0.04em', color: light ? '#fff' : 'var(--text)' } }, '念念'),
        h('span', { style: { fontSize: textSize * 0.42, color: light ? 'rgba(255,255,255,.7)' : 'var(--text-3)', letterSpacing: '0.22em', marginTop: 2, fontWeight: 400 } }, 'NIANNIAN')
      )
    );
  }

  window.NNIcon = NNIcon;
  window.NNLogo = Logo;
})();
