You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split out of #52 so Tier 1 could ship independently (acceptance criterion 7). Tier 1 landed in #53.
This one is a decide-then-maybe-build, not a build. #52 raised it as open question 2 and did not answer it. The answer should be written down here before any file is created, because the honest answer may be "no."
The problem
Bootstrap, Bulma, Foundation and Fomantic each ship a 12-column grid with its own class vocabulary — col-md-6, is-6, medium-6, eight wide column. Those four are a genuine adapter: same concept, four spellings, exactly what cf-ui exists to absorb.
daisyUI ships no grid. It defers entirely to Tailwind utilities. So the daisy variant of <c-cf.grid> would emit grid grid-cols-12 gap-4 and a column would emit col-span-6 — raw Tailwind utilities, not framework component classes. That is a different kind of thing from the other four, not a thinner version of it.
Measured use in the reference repo: 25 columns + 28 column + 53 width tokens.
Why this is not obviously worth doing
The abstraction leaks at exactly the point people use it. Responsive breakpoints are where grids actually earn their keep, and the four frameworks disagree about breakpoint names and count. col-md-6 and is-6-tablet are not the same breakpoint. A <c-cf.column span="6" at="tablet"> has to pick a canonical breakpoint set and map it, and any mapping will be wrong for someone.
The Tailwind literal-class constraint bites hardest here. Every span × every breakpoint has to be spelled out longhand in the daisy template, because Tailwind's scanner reads source text — col-span-{{ span }} is tree-shaken away silently. 12 spans × 5 breakpoints is 60 literal branches per template, and primitives.py would carry the same 60 twice for the parity test. That is a real maintenance surface for a component whose value is questionable.
A repo that wants to stay theme-switchable cannot write layout in any framework's vocabulary — a CF_UI_THEME flip would break every page's layout while leaving every component intact. If layout is the one thing that does not switch, "switching CSS frameworks means changing CF_UI_THEME in one place" is not quite true.
Acceptance criteria
A written decision: build it, build a reduced version, or close as won't-do — with the reasoning, so it is not re-litigated.
If reduced: state what was cut and why (e.g. a fixed set of column counts with no responsive axis is a much smaller surface and covers most measured uses).
If built: canonical breakpoint set chosen and its per-theme mapping documented, including which frameworks it maps to imperfectly.
If built: the daisy asymmetry stated plainly in docs/primitives.md — that the daisy variant emits Tailwind utilities rather than framework classes, and what that means for a consumer without Tailwind.
If closed: docs/primitives.md says layout is out of scope and what to do instead, so the question does not come back as a bug report.
Split out of #52 so Tier 1 could ship independently (acceptance criterion 7). Tier 1 landed in #53.
This one is a decide-then-maybe-build, not a build. #52 raised it as open question 2 and did not answer it. The answer should be written down here before any file is created, because the honest answer may be "no."
The problem
Bootstrap, Bulma, Foundation and Fomantic each ship a 12-column grid with its own class vocabulary —
col-md-6,is-6,medium-6,eight wide column. Those four are a genuine adapter: same concept, four spellings, exactly what cf-ui exists to absorb.daisyUI ships no grid. It defers entirely to Tailwind utilities. So the daisy variant of
<c-cf.grid>would emitgrid grid-cols-12 gap-4and a column would emitcol-span-6— raw Tailwind utilities, not framework component classes. That is a different kind of thing from the other four, not a thinner version of it.Measured use in the reference repo: 25
columns+ 28column+ 53 width tokens.Why this is not obviously worth doing
col-md-6andis-6-tabletare not the same breakpoint. A<c-cf.column span="6" at="tablet">has to pick a canonical breakpoint set and map it, and any mapping will be wrong for someone.col-span-{{ span }}is tree-shaken away silently. 12 spans × 5 breakpoints is 60 literal branches per template, andprimitives.pywould carry the same 60 twice for the parity test. That is a real maintenance surface for a component whose value is questionable.grid-cols-3directly and a cf-ui grid component is pure indirection.The case for doing it anyway
A repo that wants to stay theme-switchable cannot write layout in any framework's vocabulary — a
CF_UI_THEMEflip would break every page's layout while leaving every component intact. If layout is the one thing that does not switch, "switching CSS frameworks means changingCF_UI_THEMEin one place" is not quite true.Acceptance criteria
docs/primitives.md— that the daisy variant emits Tailwind utilities rather than framework classes, and what that means for a consumer without Tailwind.docs/primitives.mdsays layout is out of scope and what to do instead, so the question does not come back as a bug report.