summaryrefslogtreecommitdiffhomepage
path: root/cloud
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-08-15 19:32:32 -0400
committerDax Raad <[email protected]>2025-08-15 19:32:32 -0400
commit3f9203f9faeed45fd69ba774992084c19322ce4f (patch)
tree42c17f0573825f780016792e7d8a4246c4a3668c /cloud
parent07cf8847fb1908ff5dc47a771f57d23926baa1ce (diff)
downloadopencode-3f9203f9faeed45fd69ba774992084c19322ce4f.tar.gz
opencode-3f9203f9faeed45fd69ba774992084c19322ce4f.zip
wip: css agent
Diffstat (limited to 'cloud')
-rw-r--r--cloud/app/.opencode/agent/css.md47
1 files changed, 43 insertions, 4 deletions
diff --git a/cloud/app/.opencode/agent/css.md b/cloud/app/.opencode/agent/css.md
index 58c59da73..a8accc118 100644
--- a/cloud/app/.opencode/agent/css.md
+++ b/cloud/app/.opencode/agent/css.md
@@ -21,14 +21,21 @@ pages can break down into components using `data-component`
components can break down into slots using `data-slot`
-structure things so that this hierarchy is followed - you should rarely need to
+structure things so that this hierarchy is followed IN YOUR CSS - you should rarely need to
nest components inside other components. you should NEVER nest components inside
slots. you should NEVER nest slots inside other slots.
-thei hierarchy in css file does NOT have to match the hierarchy in the dom - you
-can put components or slots at the same level even if one goes inside another.
+**IMPORTANT: This hierarchy rule applies to CSS structure, NOT JSX/DOM structure.**
-it is more important to follow the pages -> components -> slots structure
+The hierarchy in css file does NOT have to match the hierarchy in the dom - you
+can put components or slots at the same level in CSS even if one goes inside another in the DOM.
+
+Your JSX can nest however makes semantic sense - components can be inside slots,
+slots can contain components, etc. The DOM structure should be whatever makes the most
+semantic and functional sense.
+
+It is more important to follow the pages -> components -> slots structure IN YOUR CSS,
+while keeping your JSX/DOM structure logical and semantic.
use data attributes to represent different states of the component
@@ -59,3 +66,35 @@ page specific styles should go next to the page they are styling so
`./src/routes/about.tsx` should have its styles in `./src/routes/about.css`
`about.css` should be scoped using `data-page="about"`
+
+## Example of correct implementation
+
+JSX can nest however makes sense semantically:
+
+```jsx
+<div data-slot="left">
+ <div data-component="title">Section Title</div>
+ <div data-slot="content">Content here</div>
+</div>
+```
+
+CSS maintains clean hierarchy regardless of DOM nesting:
+
+```css
+[data-page="home"] {
+ [data-component="screenshots"] {
+ [data-slot="left"] {
+ /* styles */
+ }
+ [data-slot="content"] {
+ /* styles */
+ }
+ }
+
+ [data-component="title"] {
+ /* can be at same level even though nested in DOM */
+ }
+}
+```
+
+See ./src/routes/index.css and ./src/routes/index.tsx for a complete example.