D
Digmarket. Preview
Navigation
Home Free

CBD Market Ticker – Matcha Organic Flat

<div class="fp-spacetech-astronaut-heart-rate-monitor-ui">
  <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-stage">
    <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-grid"></div>
    <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-orbit"></div>
    
    <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-core">
      <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-header">
        <span>Vitals / O2</span>
        <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-status">
          <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-status-dot"></div>
          <span>NOMINAL</span>
        </div>
      </div>
      
      <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-vitals">
        <span class="fp-spacetech-astronaut-heart-rate-monitor-ui-bpm">72</span>
        <span class="fp-spacetech-astronaut-heart-rate-monitor-ui-bpm-label">BPM</span>
      </div>

      <div class="fp-spacetech-astronaut-heart-rate-monitor-ui-display">
        <canvas class="fp-spacetech-astronaut-heart-rate-monitor-ui-canvas"></canvas>
      </div>
    </div>
  </div>
</div>
.fp-spacetech-astronaut-heart-rate-monitor-ui {
  --fp-container-width: 100%;
  --fp-max-width: 500px;
  --fp-aspect-ratio: 1 / 1;

  --fp-primary-color: #ffffff;
  --fp-secondary-color: #e2e8f0;
  --fp-muted-color: #94a3b8;
  --fp-soft-color: #f8fafc;
  --fp-background-color: transparent;

  --fp-info-color: #001f3f;
  --fp-warning-color: #bce3f6;
  --fp-danger-color: #8ed0ef;
  --fp-accent-color: #dcf1fb;

  width: var(--fp-container-width);
  max-width: var(--fp-max-width);
  margin: 0 auto;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-stage {
  position: relative;
  width: 100%;
  aspect-ratio: var(--fp-aspect-ratio);
  background: var(--fp-primary-color);
  border: 1px solid var(--fp-secondary-color);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 30px rgba(0, 31, 63, 0.05);
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-grid {
  position: absolute;
  inset: 0;
  background-image: 
    linear-gradient(to right, var(--fp-soft-color) 1px, transparent 1px),
    linear-gradient(to bottom, var(--fp-soft-color) 1px, transparent 1px);
  background-size: 20px 20px;
  opacity: 0.8;
  animation: fp-spacetech-astronaut-heart-rate-monitor-ui-breathe 4s ease-in-out infinite alternate;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-orbit {
  position: absolute;
  width: 80%;
  height: 80%;
  border: 1px dashed var(--fp-muted-color);
  border-radius: 50%;
  opacity: 0.3;
  animation: fp-spacetech-astronaut-heart-rate-monitor-ui-spin 30s linear infinite;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-orbit::before {
  content: '';
  position: absolute;
  top: -3px;
  left: 50%;
  transform: translateX(-50%);
  width: 6px;
  height: 6px;
  background-color: var(--fp-info-color);
  border-radius: 50%;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-core {
  position: relative;
  z-index: 10;
  width: 85%;
  height: 60%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  background: var(--fp-primary-color);
  border: 1px solid var(--fp-accent-color);
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 0 20px var(--fp-accent-color);
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-header {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.8rem;
  color: var(--fp-muted-color);
  letter-spacing: 1px;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 10px;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-status {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--fp-info-color);
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-status-dot {
  width: 8px;
  height: 8px;
  background-color: var(--fp-danger-color);
  border-radius: 50%;
  animation: fp-spacetech-astronaut-heart-rate-monitor-ui-pulse 1s ease-in-out infinite;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-vitals {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-bpm {
  font-size: 3.5rem;
  font-weight: 300;
  color: var(--fp-info-color);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-bpm-label {
  font-size: 1rem;
  font-weight: 600;
  color: var(--fp-muted-color);
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-display {
  width: 100%;
  flex-grow: 1;
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  margin-top: 15px;
  background: linear-gradient(180deg, var(--fp-primary-color) 0%, var(--fp-soft-color) 100%);
}

.fp-spacetech-astronaut-heart-rate-monitor-ui-canvas {
  width: 100%;
  height: 100%;
  display: block;
}

@keyframes fp-spacetech-astronaut-heart-rate-monitor-ui-breathe {
  0% { transform: scale(1); opacity: 0.5; }
  100% { transform: scale(1.02); opacity: 0.9; }
}

@keyframes fp-spacetech-astronaut-heart-rate-monitor-ui-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes fp-spacetech-astronaut-heart-rate-monitor-ui-pulse {
  0%, 100% { transform: scale(1); opacity: 1; box-shadow: 0 0 0 0 rgba(142, 208, 239, 0.7); }
  50% { transform: scale(1.2); opacity: 0.8; box-shadow: 0 0 0 6px rgba(142, 208, 239, 0); }
}

@media (max-width: 480px) {
  .fp-spacetech-astronaut-heart-rate-monitor-ui-core {
    width: 90%;
    height: 70%;
    padding: 15px;
  }
  .fp-spacetech-astronaut-heart-rate-monitor-ui-bpm {
    font-size: 2.8rem;
  }
}
document.querySelectorAll('.fp-spacetech-astronaut-heart-rate-monitor-ui').forEach(root => {
  const canvas = root.querySelector('.fp-spacetech-astronaut-heart-rate-monitor-ui-canvas');
  const bpmText = root.querySelector('.fp-spacetech-astronaut-heart-rate-monitor-ui-bpm');
  if (!canvas || !bpmText) return;

  const ctx = canvas.getContext('2d');
  let animationFrameId;
  let isVisible = true;
  let time = 0;
  
  const resizeCanvas = () => {
    const rect = canvas.parentElement.getBoundingClientRect();
    canvas.width = rect.width;
    canvas.height = rect.height;
  };

  const drawWave = () => {
    if (!isVisible) return;
    
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    
    const width = canvas.width;
    const height = canvas.height;
    const centerY = height / 2;
    
    ctx.beginPath();
    ctx.strokeStyle = '#8ed0ef'; 
    ctx.lineWidth = 2;
    ctx.lineCap = 'round';
    ctx.lineJoin = 'round';

    const points = [];
    
    for (let x = 0; x < width; x++) {
      const nx = x + time * 100;
      let y = Math.sin(nx * 0.02) * 5;
      
      const beatCycle = nx % 200;
      if (beatCycle > 80 && beatCycle < 120) {
          const spike = Math.sin((beatCycle - 80) * Math.PI / 40);
          y -= spike * (height * 0.35);
      }

      points.push({x, y: centerY + y});
    }

    ctx.moveTo(points[0].x, points[0].y);
    for (let i = 1; i < points.length; i++) {
      ctx.lineTo(points[i].x, points[i].y);
    }

    ctx.shadowBlur = 8;
    ctx.shadowColor = '#dcf1fb';
    ctx.stroke();
    ctx.shadowBlur = 0;
    
    time += 0.02;
    
    if (Math.random() < 0.02) {
        const currentBpm = parseInt(bpmText.innerText, 10);
        const variation = Math.random() > 0.5 ? 1 : -1;
        let newBpm = currentBpm + variation;
        if (newBpm < 65) newBpm = 65;
        if (newBpm > 80) newBpm = 80;
        bpmText.innerText = newBpm;
    }

    animationFrameId = requestAnimationFrame(drawWave);
  };

  const handleVisibilityChange = () => {
    isVisible = document.visibilityState === 'visible';
    if (isVisible) {
      time = 0;
      drawWave();
    } else {
      cancelAnimationFrame(animationFrameId);
    }
  };

  const observer = new MutationObserver(() => {
    if (!document.body.contains(root)) {
      cancelAnimationFrame(animationFrameId);
      window.removeEventListener('resize', resizeCanvas);
      document.removeEventListener('visibilitychange', handleVisibilityChange);
      observer.disconnect();
    }
  });

  window.addEventListener('resize', resizeCanvas);
  document.addEventListener('visibilitychange', handleVisibilityChange);
  observer.observe(document.body, { childList: true, subtree: true });

  resizeCanvas();
  drawWave();
});
Created by Digital Market Created: Apr 29, 2026 • Updated: Apr 29, 2026

Description

Let us look at the CBD Market Ticker Matcha Organic Flat component. This free UI asset offers a modular card system specifically engineered for the rapidly growing cannabis and CBD technology sector. We built this entirely from scratch to handle live market pricing and inventory data without the usual framework bloat. You get a sterile DOM structure that integrates cleanly into your existing dispensary management or wholesale trading architecture.

Cannabis tech platforms process massive amounts of real time financial data and require absolute reliability during peak trading hours. Heavy client side payloads completely ruin the user experience when dispensaries and buyers expect immediate visual feedback on wholesale commodity prices. This component solves that bottleneck directly. By strictly avoiding external libraries like Tailwind, Bootstrap, or GSAP, it keeps your bundle size minimal. This ensures rapid rendering for developers who need to present active market states to users on varied mobile or warehouse network speeds.

Technical Architecture & Performance

  • Zero dependency codebase: Built strictly with pure HTML, CSS, and Vanilla JavaScript to keep your front end stack incredibly light.

  • Guaranteed performance metrics: Optimized to help your cannabis tech software maintain 90 plus PageSpeed scores and pass Core Web Vitals easily.

  • Safely scoped CSS: All styling is strictly scoped to prevent any class name collisions when you drop these cards into a massive monolithic repository.

  • Sterile DOM markup: Features clean HTML with absolutely no unnecessary wrappers or deep nesting trees to parse.

Design & Aesthetic Impact

The visual direction utilizes professional Matcha Organic tones to establish a natural and trustworthy environment for the end user. This earthy and highly readable flat aesthetic ensures visual clarity for users analyzing complex market trends and dense pricing logs. For the interaction layer, we implemented a custom count up ticker animation using tabular numbers. This precise numeric transition provides clear feedback for live price increases and active valuation shifts without requiring heavy javascript animation scripts. The final result is a clean user interface that looks premium and functions perfectly for strict enterprise CBD platforms.

Enterprise Use Cases

  • Wholesale CBD trading portals: Display active commodity prices and live market valuations using the card grid so regional buyers can monitor market trends quickly.

  • Dispensary inventory dashboards: Build a fast rendering analytics page where retail managers can organize and review massive datasets of strain availability within a lightweight interface.

  • Supply chain tracking panels: Create a responsive control layout for logistics teams to track active crop valuations and distribution metrics across multiple regional growing facilities.

Technical Details

  • ElementCards
  • IndustryCannabis, CBD Tech
  • StyleEco, GreenTech Organic
  • AnimationCount-Up Ticker (Tabular Nums)
  • ColorBlue, White
Report Issue

Highlights & Benefits

Copy-Paste Ready

Drop the code straight into your project without configuration.

Zero Dependencies

Built strictly with pure CSS & Vanilla JS for maximum speed.

ADA & WCAG Ready

Constructed with strict adherence to WCAG accessibility standards for perfect contrast and screen-reader support.

Sterile DOM Structure

Utilizes a highly optimized, clean DOM architecture ensuring lightning-fast render and maximum PageSpeed scores.

You need an active subscription or purchase to leave a review for this premium component.

CBD Market Ticker – Matcha Organic Flat

Category:

Description

Let us look at the CBD Market Ticker Matcha Organic Flat component. This free UI asset offers a modular card system specifically engineered for the rapidly growing cannabis and CBD technology sector. We built this entirely from scratch to handle live market pricing and inventory data without the usual framework bloat. You get a sterile DOM structure that integrates cleanly into your existing dispensary management or wholesale trading architecture.

Cannabis tech platforms process massive amounts of real time financial data and require absolute reliability during peak trading hours. Heavy client side payloads completely ruin the user experience when dispensaries and buyers expect immediate visual feedback on wholesale commodity prices. This component solves that bottleneck directly. By strictly avoiding external libraries like Tailwind, Bootstrap, or GSAP, it keeps your bundle size minimal. This ensures rapid rendering for developers who need to present active market states to users on varied mobile or warehouse network speeds.

Technical Architecture & Performance

  • Zero dependency codebase: Built strictly with pure HTML, CSS, and Vanilla JavaScript to keep your front end stack incredibly light.

  • Guaranteed performance metrics: Optimized to help your cannabis tech software maintain 90 plus PageSpeed scores and pass Core Web Vitals easily.

  • Safely scoped CSS: All styling is strictly scoped to prevent any class name collisions when you drop these cards into a massive monolithic repository.

  • Sterile DOM markup: Features clean HTML with absolutely no unnecessary wrappers or deep nesting trees to parse.

Design & Aesthetic Impact

The visual direction utilizes professional Matcha Organic tones to establish a natural and trustworthy environment for the end user. This earthy and highly readable flat aesthetic ensures visual clarity for users analyzing complex market trends and dense pricing logs. For the interaction layer, we implemented a custom count up ticker animation using tabular numbers. This precise numeric transition provides clear feedback for live price increases and active valuation shifts without requiring heavy javascript animation scripts. The final result is a clean user interface that looks premium and functions perfectly for strict enterprise CBD platforms.

Enterprise Use Cases

  • Wholesale CBD trading portals: Display active commodity prices and live market valuations using the card grid so regional buyers can monitor market trends quickly.

  • Dispensary inventory dashboards: Build a fast rendering analytics page where retail managers can organize and review massive datasets of strain availability within a lightweight interface.

  • Supply chain tracking panels: Create a responsive control layout for logistics teams to track active crop valuations and distribution metrics across multiple regional growing facilities.