(function() {
  var ICON = {
    size: 20,
    stroke: 1.75,
    fill: 'none',
    strokeLinecap: 'round',
    strokeLinejoin: 'round'
  };

  function SvgIcon(props) {
    var children = props.children;
    var className = props.className;
    var size = props.size || ICON.size;
    var fill = props.fill != null ? props.fill : ICON.fill;
    var stroke = props.stroke != null ? props.stroke : 'currentColor';
    return React.createElement('svg', {
      className: className,
      width: size,
      height: size,
      viewBox: '0 0 24 24',
      fill: fill,
      stroke: stroke,
      strokeWidth: props.strokeWidth != null ? props.strokeWidth : (fill !== 'none' && stroke === 'none' ? 0 : ICON.stroke),
      strokeLinecap: ICON.strokeLinecap,
      strokeLinejoin: ICON.strokeLinejoin,
      'aria-hidden': true
    }, children);
  }

  var GlassIcons = {
    Home: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M4 10.5L12 4l8 6.5V20a1 1 0 0 1-1 1h-5v-6H10v6H5a1 1 0 0 1-1-1v-9.5z' })
      );
    },
    Search: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('circle', { cx: 11, cy: 11, r: 6.5 }),
        React.createElement('path', { d: 'M16 16l4.5 4.5' })
      );
    },
    Map: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M9 4l-6 2v14l6-2 6 2 6-2V4l-6 2-6-2z' }),
        React.createElement('path', { d: 'M9 4v14M15 6v14' })
      );
    },
    Quest: function(p) {
      return React.createElement(SvgIcon, Object.assign({}, p, { fill: 'currentColor', stroke: 'none' }),
        React.createElement('path', {
          d: 'M12 2.15l2.62 5.31 5.86.85-4.24 4.13 1 5.83L12 15.5l-5.24 2.77 1-5.83L3.52 8.31l5.86-.85L12 2.15z'
        })
      );
    },
    Wallet: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('rect', { x: 3, y: 6, width: 18, height: 13, rx: 2 }),
        React.createElement('path', { d: 'M3 10h18M16 14h2' })
      );
    },
    Plus: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M12 5v14M5 12h14' })
      );
    },
    User: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('circle', { cx: 12, cy: 8, r: 3.5 }),
        React.createElement('path', { d: 'M5 20c0-3.9 3.1-7 7-7s7 3.1 7 7' })
      );
    },
    Settings: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('circle', { cx: 12, cy: 12, r: 3 }),
        React.createElement('path', { d: 'M12 2v2M12 20v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M2 12h2M20 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4' })
      );
    },
    ChevronDown: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M6 9l6 6 6-6' })
      );
    },
    Close: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M6 6l12 12M18 6L6 18' })
      );
    },

    /* ── construction-themed nav glyphs (profile dropdown) ──────────
       Line art, not photoreal: these render at 22px in GlassMenu. */

    // Survey marker — opportunities near you
    Pin: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M12 21c4.2-4.6 6.3-8 6.3-10.4A6.3 6.3 0 0 0 5.7 10.6C5.7 13 7.8 16.4 12 21z' }),
        React.createElement('circle', { cx: 12, cy: 10.3, r: 2.4 })
      );
    },
    // Civic building — owner dashboard
    Building: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M3.5 9.5L12 4.5l8.5 5' }),
        React.createElement('path', { d: 'M6.5 10.5v8M10.2 10.5v8M13.8 10.5v8M17.5 10.5v8' }),
        React.createElement('path', { d: 'M3.5 20.5h17' })
      );
    },
    // Wheelbarrow — marketplace. Deeper tray and a leg give it a
    // distinct silhouette; a shallow trapezoid alone read as a cart.
    Wheelbarrow: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M3.4 8.6h10.2l2.8 7H6.6z' }),  // tray
        React.createElement('path', { d: 'M15.4 12.4L20 17.6' }),         // handle
        React.createElement('path', { d: 'M13.9 15.6L14.8 19' }),         // leg
        React.createElement('circle', { cx: 8.4, cy: 18.6, r: 2.1 })      // wheel
      );
    },
    // Site toolbox — inventory
    Toolbox: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('rect', { x: 3.6, y: 9.4, width: 16.8, height: 9.4, rx: 1.4 }),
        React.createElement('path', { d: 'M8.6 9.4V7.2a1.6 1.6 0 0 1 1.6-1.6h3.6a1.6 1.6 0 0 1 1.6 1.6v2.2' }),
        React.createElement('path', { d: 'M3.6 13.6h16.8' })
      );
    },
    // Spark — generate new vision
    Spark: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M12 3.6l1.7 4.7 4.7 1.7-4.7 1.7L12 16.4l-1.7-4.7L5.6 10l4.7-1.7z' }),
        React.createElement('path', { d: 'M18.2 15.4l.7 1.9 1.9.7-1.9.7-.7 1.9-.7-1.9-1.9-.7 1.9-.7z' })
      );
    },
    // Tower crane — my projects & 3D.
    // The hook + counterweight are what make this read as a crane at
    // 18px; without them the mast/jib is just a bracket.
    Crane: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M7 21V5.2' }),          // mast
        React.createElement('path', { d: 'M3.2 5.2h17.4' }),       // jib
        React.createElement('path', { d: 'M3.2 3.6h2.4v1.6' }),    // counterweight
        React.createElement('path', { d: 'M16.4 5.2v4.6' }),       // cable
        React.createElement('path', { d: 'M15.1 9.8h2.6' }),       // hook block
        React.createElement('path', { d: 'M4.2 21h5.6' })          // base
      );
    },
    // AR brackets + lens — ar demo
    ArFrame: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M4 8.4V6a2 2 0 0 1 2-2h2.4M15.6 4H18a2 2 0 0 1 2 2v2.4M20 15.6V18a2 2 0 0 1-2 2h-2.4M8.4 20H6a2 2 0 0 1-2-2v-2.4' }),
        React.createElement('circle', { cx: 12, cy: 12, r: 3.2 })
      );
    },
    // Heart — fund projects
    Heart: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M12 20.2C7.4 17 4.6 14 4.6 10.8A3.9 3.9 0 0 1 12 8.6a3.9 3.9 0 0 1 7.4 2.2c0 3.2-2.8 6.2-7.4 9.4z' })
      );
    },
    // Trophy — community & leagues
    Trophy: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M8 4.4h8v4.8a4 4 0 0 1-8 0z' }),
        React.createElement('path', { d: 'M8 5.6H5.2v1.8A3 3 0 0 0 8 10.3M16 5.6h2.8v1.8A3 3 0 0 1 16 10.3' }),
        React.createElement('path', { d: 'M12 13.2v3.6M9 20.4h6' })
      );
    },
    // Exit door — sign out
    Exit: function(p) {
      return React.createElement(SvgIcon, p,
        React.createElement('path', { d: 'M10.4 4.4H6.4a2 2 0 0 0-2 2v11.2a2 2 0 0 0 2 2h4' }),
        React.createElement('path', { d: 'M15.6 8.4L19.6 12l-4 3.6M19.6 12H9.6' })
      );
    }
  };

  window.GlassIcons = GlassIcons;
})();
