I’m sure there’s a better syntax out here (by writing a show rule specifically for lists and enums in grids, but you can just rely on the grid for alignment instead.
Writing the boxed number is a bit tricky due to baseline/size, which I am not familiar with but you can get away with the following:
#import "@preview/polylux:0.4.0": *
#set page(height: auto, width: 3cm)
#let m(body) = (sym.square.filled, body)
#let n(i, body) = (
place(bottom+left, dx: .8pt,
rect(
fill: blue,
width: .165cm,
height: .165cm,
inset: 0pt,
outset: 0pt,
place(top+right, dy: 1pt,
text(
fill: white,
weight: 900,
size: 0.5em,
style: "italic",
top-edge: "x-height",
[#i]
)
)
)),
body
)
#slide[
#only(1)[
#grid(columns: (1fr,1fr,1fr,1fr), row-gutter: .2em,
..m[a], ..n(1)[a],
..m[a], ..n(2)[a],
..m[a], ..n(3)[a],
..m[a], ..n(4)[a],
..m[a], ..n(5)[a],
)
]
#only(2)[
#grid(columns: (1fr,1fr,1fr,1fr), row-gutter: .2em,
..n(1)[a], ..m[a],
..n(2)[a], ..m[a],
..n(3)[a], ..m[a],
..n(4)[a], ..m[a],
..n(5)[a], ..m[a],
)
]
]

