Lunes 27Martes 28Miércoles 29Jueves 309:0010:0011:0012:00
HTML + CSSOverlays

Calendar quick event popover

Click an empty slot in the week and a bubble anchored to it lets you give the event a title and a color.

Settings

16px
1x

Code

<div class="uvq13-cal"><div class="cal" role="group" aria-label="Week of 27 October"><span></span><span class="dh" id="uvq13-cal-d0"><span>Monday</span> <b>27</b></span><span class="dh td" id="uvq13-cal-d1"><span>Tuesday</span> <b>28</b></span><span class="dh" id="uvq13-cal-d2"><span>Wednesday</span> <b>29</b></span><span class="dh" id="uvq13-cal-d3"><span>Thursday</span> <b>30</b></span><span class="hh" id="uvq13-cal-h0">9:00</span><button type="button" class="cell" data-h="0" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d0 uvq13-cal-h0"></button><button type="button" class="cell" data-h="0" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d1 uvq13-cal-h0"></button><button type="button" class="cell" data-h="0" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d2 uvq13-cal-h0"></button><button type="button" class="cell" data-h="0" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d3 uvq13-cal-h0"><span class="ev" style="--c:#f59e0b"><b>Dentist</b><small>9:00</small></span></button><span class="hh" id="uvq13-cal-h1">10:00</span><button type="button" class="cell" data-h="1" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d0 uvq13-cal-h1"></button><button type="button" class="cell" data-h="1" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d1 uvq13-cal-h1"><span class="ev" style="--c:#14b8a6"><b>Design</b><small>10:00</small></span></button><button type="button" class="cell" data-h="1" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d2 uvq13-cal-h1"></button><button type="button" class="cell" data-h="1" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d3 uvq13-cal-h1"></button><span class="hh" id="uvq13-cal-h2">11:00</span><button type="button" class="cell" data-h="2" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d0 uvq13-cal-h2"></button><button type="button" class="cell" data-h="2" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d1 uvq13-cal-h2"></button><button type="button" class="cell" data-h="2" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d2 uvq13-cal-h2"></button><button type="button" class="cell" data-h="2" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d3 uvq13-cal-h2"></button><span class="hh" id="uvq13-cal-h3">12:00</span><button type="button" class="cell" data-h="3" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d0 uvq13-cal-h3"></button><button type="button" class="cell" data-h="3" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d1 uvq13-cal-h3"></button><button type="button" class="cell" data-h="3" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d2 uvq13-cal-h3"><span class="ev" style="--c:#e2553f"><b>Lunch with Leo</b><small>12:00</small></span></button><button type="button" class="cell" data-h="3" aria-haspopup="dialog" aria-labelledby="uvq13-cal-d3 uvq13-cal-h3"></button></div><div class="po" role="dialog" aria-modal="true" aria-labelledby="uvq13-cal-pt"><p class="pt" id="uvq13-cal-pt">New event</p><input class="nm" placeholder="Add title" aria-label="Event title" autocomplete="off"><p class="wh"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="8.5"/><path d="M12 7.5V12l3 2"/></svg><span class="when"></span></p><div class="cs" role="radiogroup" aria-label="Color"><button type="button" role="radio" aria-checked="true" aria-label="Coral" style="--c:#e2553f"></button><button type="button" role="radio" aria-checked="false" aria-label="Teal" style="--c:#14b8a6"></button><button type="button" role="radio" aria-checked="false" aria-label="Amber" style="--c:#f59e0b"></button><button type="button" role="radio" aria-checked="false" aria-label="Indigo" style="--c:#6366f1"></button></div><div class="ac"><button type="button" class="cn">Cancel</button><button type="button" class="ok">Save</button></div><span class="nt" hidden>Untitled</span></div></div>

Prompt for AI

Paste it into ChatGPT, Claude or Cursor and it will adapt the block to your project with these settings, even if you don’t use React.

Markdown version with all the code, for AI assistants

More in Overlays

See all Overlays

Where to use it

Creating an event should not mean leaving the calendar, so this popover opens right next to the slot you click. It reads the day and hour from the grid headers, flips sides when there is no room and points its arrow at the cell. Saving drops a colored block into the slot, which you can click again to edit. It fits schedulers, booking tools and team planners.

The main color marks today, the save button and the selection ring. Move around the grid with the arrow keys, press Enter in the title to save, and Escape cancels with focus back on the cell that opened it.