@ikas/component-cli 0.118.0 → 0.120.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/utils/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAmClG;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAoD5B;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAGzE;AAyFD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,EACnE,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAiRjC"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/utils/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAmClG;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAoD5B;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAGzE;AAyFD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,EACnE,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAqRjC"}
@@ -375,12 +375,15 @@ export async function compileAllComponents(components, globalStylesPath) {
375
375
  const css = new Map();
376
376
  const chunkCss = new Map();
377
377
  for (const comp of components) {
378
- // 1. Read entry's own styles.css + resolve @imports (unchanged)
378
+ // 1. Read entry's own styles.css + resolve @imports.
379
+ // Track every file inlined here so step 2's source-tree collection doesn't append them again
380
+ // (which previously emitted each @imported file twice in compiledCss).
379
381
  const cssPath = path.resolve(process.cwd(), comp.stylesPath);
382
+ const alreadyInlinedPaths = new Set();
380
383
  let cssContent = "";
381
384
  if (fs.existsSync(cssPath)) {
382
385
  const rawCss = fs.readFileSync(cssPath, "utf-8");
383
- cssContent = resolveCssImports(rawCss, cssPath);
386
+ cssContent = resolveCssImports(rawCss, cssPath, alreadyInlinedPaths);
384
387
  }
385
388
  // 2. Collect CSS from entry-only dependencies (source files in entry inputs, not in any chunk)
386
389
  const allChunkInputPaths = new Set();
@@ -391,8 +394,10 @@ export async function compileAllComponents(components, globalStylesPath) {
391
394
  const entryOnlyInputs = (entryInputs.get(comp.id) || []).filter(p => !allChunkInputPaths.has(p));
392
395
  const depCss = collectSourceCssFiles(entryOnlyInputs, entryDirSet.get(comp.id));
393
396
  for (const depCssPath of depCss) {
397
+ if (alreadyInlinedPaths.has(path.resolve(depCssPath)))
398
+ continue;
394
399
  const rawDepCss = fs.readFileSync(depCssPath, "utf-8");
395
- cssContent += "\n" + resolveCssImports(rawDepCss, depCssPath);
400
+ cssContent += "\n" + resolveCssImports(rawDepCss, depCssPath, alreadyInlinedPaths);
396
401
  }
397
402
  // 3. Scope combined CSS with entry ID
398
403
  css.set(comp.id, scopeCSS(cssContent, comp.id));
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/utils/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/utils/compile.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,10 @@
4
4
  *
5
5
  * @param css - The CSS content to process
6
6
  * @param cssFilePath - The absolute path to the CSS file (used to resolve relative imports)
7
+ * @param resolvedPaths - Optional Set populated with absolute paths of every file inlined by this
8
+ * call (including the entry file itself). Callers can use it to dedupe a later CSS-collection
9
+ * pass so the same file is not appended twice.
7
10
  * @returns The CSS with all @import statements replaced by the imported content
8
11
  */
9
- export declare function resolveCssImports(css: string, cssFilePath: string): string;
12
+ export declare function resolveCssImports(css: string, cssFilePath: string, resolvedPaths?: Set<string>): string;
10
13
  //# sourceMappingURL=css-import-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"css-import-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/css-import-resolver.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAoC1E"}
1
+ {"version":3,"file":"css-import-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/css-import-resolver.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAoCvG"}
@@ -6,11 +6,14 @@ import * as path from "path";
6
6
  *
7
7
  * @param css - The CSS content to process
8
8
  * @param cssFilePath - The absolute path to the CSS file (used to resolve relative imports)
9
+ * @param resolvedPaths - Optional Set populated with absolute paths of every file inlined by this
10
+ * call (including the entry file itself). Callers can use it to dedupe a later CSS-collection
11
+ * pass so the same file is not appended twice.
9
12
  * @returns The CSS with all @import statements replaced by the imported content
10
13
  */
11
- export function resolveCssImports(css, cssFilePath) {
14
+ export function resolveCssImports(css, cssFilePath, resolvedPaths) {
12
15
  const importRegex = /@import\s+["']([^"']+)["']\s*;?/g;
13
- const processedPaths = new Set();
16
+ const processedPaths = resolvedPaths ?? new Set();
14
17
  function resolveImports(content, currentDir) {
15
18
  return content.replace(importRegex, (match, importPath) => {
16
19
  // Resolve the imported file path
@@ -1 +1 @@
1
- {"version":3,"file":"css-import-resolver.js","sourceRoot":"","sources":["../../src/utils/css-import-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,WAAmB;IAChE,MAAM,WAAW,GAAG,kCAAkC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,SAAS,cAAc,CAAC,OAAe,EAAE,UAAkB;QACzD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACxD,iCAAiC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAE1D,2BAA2B;YAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;gBAC9D,OAAO,+BAA+B,UAAU,KAAK,CAAC;YACxD,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,yBAAyB,UAAU,iBAAiB,YAAY,GAAG,CAAC,CAAC;gBAClF,OAAO,wBAAwB,UAAU,KAAK,CAAC;YACjD,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEjC,4DAA4D;YAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAE7D,OAAO,qBAAqB,UAAU,QAAQ,WAAW,oBAAoB,UAAU,KAAK,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9C,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"css-import-resolver.js","sourceRoot":"","sources":["../../src/utils/css-import-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,WAAmB,EAAE,aAA2B;IAC7F,MAAM,WAAW,GAAG,kCAAkC,CAAC;IACvD,MAAM,cAAc,GAAG,aAAa,IAAI,IAAI,GAAG,EAAU,CAAC;IAE1D,SAAS,cAAc,CAAC,OAAe,EAAE,UAAkB;QACzD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACxD,iCAAiC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAE1D,2BAA2B;YAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;gBAC9D,OAAO,+BAA+B,UAAU,KAAK,CAAC;YACxD,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,yBAAyB,UAAU,iBAAiB,YAAY,GAAG,CAAC,CAAC;gBAClF,OAAO,wBAAwB,UAAU,KAAK,CAAC;YACjD,CAAC;YAED,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEjC,4DAA4D;YAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAE7D,OAAO,qBAAqB,UAAU,QAAQ,WAAW,oBAAoB,UAAU,KAAK,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9C,OAAO,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACxD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/component-cli",
3
- "version": "0.118.0",
3
+ "version": "0.120.0",
4
4
  "description": "CLI for developing ikas code components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,9 +1,26 @@
1
1
  /*
2
2
  * Global styles for your ikas code components project.
3
- * These styles are NOT scoped — they apply across all components.
4
- * Use this for CSS resets, base typography, utility classes, or CSS variables.
5
3
  *
6
- * Loading order:
4
+ * Scoping: at build time every rule here is wrapped in a per-project scope
5
+ * (`:where([data-cc-scope~="<projectId>"])`) so styles from one project cannot
6
+ * leak into another project's components or the host page.
7
+ *
8
+ * What works:
9
+ * - Class / tag / attribute selectors on elements you render (`.card`, `img`, `[data-x]`).
10
+ * - `:root { --var: value }` — variables are rewritten onto the component wrapper
11
+ * and inherit down its subtree. Use this for design tokens.
12
+ * - `@media`, `@supports`, `@container`, `@layer` — walked recursively.
13
+ * - `@keyframes`, `@font-face` — left untouched.
14
+ *
15
+ * What does NOT work (code components only style elements they own):
16
+ * - Top-level `body { ... }` / `html { ... }` rules — dropped.
17
+ * - Descendant selectors starting with `body` / `html` (e.g. `body .x`, `html.dark .y`) —
18
+ * emitted but never match, because the component wrapper is INSIDE body, not
19
+ * the other way around. Use a class on your own wrapper instead
20
+ * (e.g. add `dark` via JS and write `.dark .x`).
21
+ * - Document-wide resets, scrollbar tweaks, page backgrounds — belong to the theme.
22
+ *
23
+ * Loading order (all scoped to this project):
7
24
  * 1. Global CSS (this file) — lowest specificity
8
25
  * 2. Shared chunk CSS — multi-scope (.cc_a .sel, .cc_b .sel)
9
26
  * 3. Component CSS — single scope (.cc_id .sel) — highest specificity
@@ -0,0 +1,737 @@
1
+ Do not hesitate to ask me any questions. ASK ME ANYTHING YOU NEED! Use the AskUserQuestion tool to ask as many follow ups as you need to reach clarity.
2
+
3
+ # ikas Code Components Project
4
+
5
+ You are building **Preact + TypeScript components for an e-commerce storefront**.
6
+ This project uses the ikas Code Components framework with an MCP server for API documentation.
7
+
8
+ **ALWAYS query MCP tools before writing code that uses storefront APIs.**
9
+ Never guess function signatures or type shapes — the MCP server is the source of truth.
10
+
11
+ ## CRITICAL: Auto-Generated Files
12
+
13
+ **NEVER manually create or edit `types.ts`** — it is auto-generated by CLI commands.
14
+ Use `npx ikas-component config add-component --props '[...]'` or `npx ikas-component config add-prop` to manage props.
15
+ These commands update BOTH `ikas.config.json` AND `types.ts` automatically.
16
+
17
+ **The CLI does NOT edit your component source.** `remove-prop` and `remove-enum` update `ikas.config.json` and the generated `types.ts` / `global-types.ts` only — `index.tsx`, sub-components, and `styles.css` are untouched. After removing a prop or enum, grep the source for the old identifier and clean up dead references yourself before building.
18
+
19
+ ## MCP Tools (12 tools)
20
+
21
+ ### Starting a New Section
22
+
23
+ | Tool | Purpose |
24
+ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
25
+ | `get_section_template(sectionType)` | **Start here** — production-ready starter template (index.tsx + types.ts + styles.css + config) for common sections: header, footer, product-detail, product-list, cart, login, register, hero-banner, blog-post, faq, etc. |
26
+ | `get_framework_guide(topic)` | Framework docs — "ai-workflow", "common-pitfalls", "prop-types", "css-scoping", "form-handling", "imports", "sections-vs-components" |
27
+ | `get_code_example(task)` | Code examples — "add to cart", "variant selection", "image-handling", "product-detail-section", "cart-section" |
28
+
29
+ ### Looking Up APIs
30
+
31
+ | Tool | Purpose |
32
+ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
33
+ | `search_docs(query)` | Search across all storefront API docs and framework guides |
34
+ | `get_function_doc(name)` | Full docs for a specific function (e.g. "addItemToCart", "Router.navigate") |
35
+ | `list_functions(category?)` | List functions by category: ProductDetail, Cart, ProductList, Navigation, Customer, Order, Image, Blog, Brand, Category, Pricing, Form, Validation, Pagination, Filtering |
36
+ | `get_prop_types()` | All available ikas.config.json prop types with TS types and examples |
37
+
38
+ ### Exploring Types
39
+
40
+ | Tool | Purpose |
41
+ | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
42
+ | `get_model_guide(model)` | **One-stop-shop** — type definition + all utility functions + examples + related types for a model (e.g. "IkasProduct", "IkasOrder") |
43
+ | `get_type_definition(name)` | Full definition of a type or enum (e.g. "IkasProduct", "IkasOrderStatus") |
44
+ | `get_functions_for_type(typeName)` | All utility functions for a type (e.g. "IkasImage") |
45
+ | `search_types(query)` | Search types/enums by keyword (e.g. "price", "address", "status") |
46
+ | `list_types(domain?, kind?)` | List all types, optionally filtered by domain ("product", "cart", "order") or kind ("type", "enum") |
47
+
48
+ ## CLI Commands
49
+
50
+ **Never edit ikas.config.json or types.ts manually** — use the CLI commands:
51
+
52
+ | Command | Purpose |
53
+ | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
54
+ | `npx ikas-component config add-component --name "Name" --type section --props '[...]'` | **Primary** — create component with all props in one command |
55
+ | `npx ikas-component config add-component --name "Name" --type section` | Create component with no props (add later) |
56
+ | `npx ikas-component config add-prop --component "Name" --name title --displayName "Title" --type TEXT --required [--group content]` | Add a single prop incrementally |
57
+ | `npx ikas-component config update-prop --component "Name" --prop title --type RICH_TEXT [--group colors]` | Update a prop's type or group |
58
+ | `npx ikas-component config remove-prop --component "Name" --prop title` | Remove a prop |
59
+ | `npx ikas-component config remove-component --name "Name"` | Remove a component |
60
+ | `npx ikas-component config add-prop-group --component "Name" --id colors --name "Colors" [--description "..."] [--parent style]` | Create a prop group |
61
+ | `npx ikas-component config update-prop-group --component "Name" --id colors [--name "..."] [--description "..."]` | Update a prop group |
62
+ | `npx ikas-component config remove-prop-group --component "Name" --id colors` | Remove a prop group |
63
+ | `npx ikas-component config list` | List all components and their props |
64
+ | `npx ikas-component config add-enum --name "Size" --options '[{"name":"Small","value":"s"}]'` | Create a custom ENUM type (returns `enumTypeId`) |
65
+ | `npx ikas-component config update-enum --id <enumId> --name "..." [--options '[...]']` | Update enum name/options |
66
+ | `npx ikas-component config remove-enum --id <enumId>` | Remove enum (fails if any prop still references it) |
67
+ | `npx ikas-component config list-enums` | List all custom enums |
68
+ | `npx ikas-component check --json` | Type-check all components, output errors as JSON |
69
+ | `npx ikas-component build` | Compile server.js + client.js + styles.css per component |
70
+ | `npx ikas-component dev` | Start dev server (Vite 5200 + WebSocket 5201) |
71
+
72
+ ## Workflow: Building a New Section
73
+
74
+ 1. `get_section_template("product-detail-section")` → get starter files + CLI command with --props
75
+ 2. For any custom ENUM props the section needs: `config add-enum` **first** (capture the returned `enumTypeId`), then reference it in `add-prop --type ENUM --enumTypeId <id>`. Order matters — an ENUM prop without a pre-existing `enumTypeId` is rejected.
76
+ 3. Run the CLI command (creates component + props + types.ts in one step)
77
+ 4. Write `index.tsx` and `styles.css` using the template (do NOT edit `types.ts` or `global-types.ts` — both are regenerated on every prop/enum mutation)
78
+ 5. Look up APIs → `get_model_guide("IkasProduct")`, `get_function_doc("addItemToCart")`
79
+ 6. `npx ikas-component check --json` → fix type errors
80
+ 7. `npx ikas-component build` → verify clean build
81
+
82
+ ### Custom ENUM lifecycle
83
+
84
+ - **Create:** `add-enum` → `add-prop --type ENUM --enumTypeId <id>`. The enum must exist before the prop is created.
85
+ - **Rename options:** `update-enum --id <id> --options '[...]'`. `types.ts` regenerates automatically.
86
+ - **Remove:** remove (or repoint) every prop that references the enum **first**, then `remove-enum`. `remove-enum` blocks with an error while any prop still references the id.
87
+ - `global-types.ts` is regenerated unconditionally on `add-enum` / `update-enum` / `remove-enum` / `remove-prop` — never hand-edit it.
88
+
89
+ ## Sub-Component Structure
90
+
91
+ **ALWAYS create sub-components in `src/sub-components/` with their own folder containing `index.tsx` and `styles.css`. NEVER create flat .tsx files inside a component folder.**
92
+
93
+ ```
94
+ src/
95
+ ├── components/
96
+ │ ├── ProductList/
97
+ │ │ ├── index.tsx # imports from ../../sub-components/...
98
+ │ │ ├── types.ts # auto-generated (CLI-managed)
99
+ │ │ └── styles.css # @import "../../sub-components/.../styles.css"
100
+ │ └── index.ts
101
+ └── sub-components/
102
+ ├── ProductCard/
103
+ │ ├── index.tsx # sub-component with inline Props
104
+ │ └── styles.css
105
+ └── FilterSidebar/
106
+ ├── index.tsx
107
+ └── styles.css
108
+ ```
109
+
110
+ **Key rules:**
111
+
112
+ - `src/components/` = registered in ikas.config.json. `src/sub-components/` = internal helpers (NOT in ikas.config.json)
113
+ - Sub-components do NOT have `types.ts` — define `Props` inline in `index.tsx`
114
+ - CSS: use `@import "../../sub-components/ProductCard/styles.css";` in parent styles.css
115
+ - TSX: use `import ProductCard from "../../sub-components/ProductCard";`
116
+ - Sub-components that read MobX stores need `observer()`, others don't
117
+ - Sub-components can be shared across multiple parent sections
118
+
119
+ ```tsx
120
+ // src/sub-components/ProductCard/index.tsx — inline Props, no types.ts
121
+ import { IkasProduct, getSelectedProductVariant } from "@ikas/bp-storefront";
122
+
123
+ interface Props { product: IkasProduct; }
124
+
125
+ export default function ProductCard({ product }: Props) { ... }
126
+ ```
127
+
128
+ ## SVG Icons
129
+
130
+ **CRITICAL: Never write inline `<svg>` in components or sub-components.**
131
+ All icons live in `src/sub-components/icons/index.tsx` as named exports.
132
+
133
+ ```tsx
134
+ // Adding a new icon — IconProps extends SVGAttributes<SVGSVGElement>
135
+ export function HeartSVG({ className, ...props }: IconProps) {
136
+ return (
137
+ <svg
138
+ xmlns="http://www.w3.org/2000/svg"
139
+ viewBox="0 0 24 24"
140
+ fill="none"
141
+ className={`kombos-icon ${className}`}
142
+ {...props}
143
+ >
144
+ <path d="M20.84 4.61..." fill="currentColor" />
145
+ </svg>
146
+ );
147
+ }
148
+
149
+ // Using it
150
+ import { HeartSVG } from "../../sub-components/icons";
151
+ <HeartSVG />;
152
+ ```
153
+
154
+ ### Rules
155
+
156
+ - One file (`index.tsx`) holds all icons — no separate files per icon
157
+ - `IconProps` extends `SVGAttributes<SVGSVGElement>` from Preact — accepts all standard SVG attributes
158
+ - Pattern: `{ className, ...props }` with `className={`kombos-icon ${className}`}` and `{...props}` spread
159
+ - Icons use `fill="currentColor"` — they inherit color from the parent element's CSS `color` property
160
+ - Before adding a new icon, check if it already exists in the file
161
+
162
+ ### Sizing Icons
163
+
164
+ **CRITICAL: Never pass `width`/`height` props to size icons.** Icon sizing is controlled via CSS `font-size` on the parent element or a wrapping class.
165
+
166
+ The `.kombos-icon` base class uses `width: 1em; height: 1em` so icons scale with `font-size`.
167
+
168
+ ```css
169
+ /* Size an icon via font-size on the parent or the icon itself */
170
+ .my-section__icon-btn {
171
+ font-size: 1.5rem;
172
+ } /* icon inside will be 24x24 */
173
+ .my-section__small-icon {
174
+ font-size: 1rem;
175
+ } /* icon will be 16x16 */
176
+ ```
177
+
178
+ ```tsx
179
+ /* In JSX — no width/height props needed */
180
+ <button className="my-section__icon-btn"><HeartSVG /></button>
181
+ <span className="my-section__small-icon"><PackageSVG /></span>
182
+ ```
183
+
184
+ ## Button Sub-Component
185
+
186
+ **CRITICAL: Never write custom button styles in components.** All buttons MUST use `src/sub-components/Button`.
187
+ Import: `import Button from "../../sub-components/Button";`
188
+ CSS import: `@import "../../sub-components/Button/styles.css";` in parent styles.css
189
+
190
+ ### Variants
191
+
192
+ | Prop | Values | Default |
193
+ | --------- | ---------------------------- | ----------- |
194
+ | `variant` | `"primary"` \| `"secondary"` | `"primary"` |
195
+ | `size` | `"xs"` \| `"s"` \| `"m"` | `"s"` |
196
+
197
+ ### Size Specs (from Figma)
198
+
199
+ | Size | Padding | Typography class |
200
+ | ---- | --------- | ------------------ |
201
+ | `xs` | 8px 16px | `text-sm-semibold` |
202
+ | `s` | 10px 20px | `text-md-semibold` |
203
+ | `m` | 12px 24px | `text-lg-semibold` |
204
+
205
+ ### Variant Styles
206
+
207
+ - **Primary:** bg gray-900, text white. Hover: bg gray-800. Disabled: bg gray-300, text gray-50.
208
+ - **Secondary:** bg white, border gray-200, text gray-900. Hover: border gray-300. Disabled: bg gray-50, text gray-300.
209
+
210
+ All: `border-radius: 6px`, typography class auto-applied by size.
211
+
212
+ ### Usage
213
+
214
+ ```tsx
215
+ import Button from "../../sub-components/Button";
216
+
217
+ <Button variant="primary" size="s">{buttonText}</Button>
218
+ <Button variant="secondary" size="m" disabled>{disabledText}</Button>
219
+ <Button variant="primary" size="xs" onClick={handleClick}>{label}</Button>
220
+ ```
221
+
222
+ Extends `JSX.HTMLAttributes<HTMLButtonElement>` — accepts all standard button props (`onClick`, `disabled`, `className`, `aria-label`, etc.).
223
+ When placed in flex containers, add a layout class (e.g. `className="my-section__footer-btn"`) with `flex: 1` for full-width behavior.
224
+
225
+ ## Input Sub-Component
226
+
227
+ **CRITICAL: Never write custom input styles in components.** All text inputs MUST use `src/sub-components/Input`.
228
+ Import: `import Input from "../../sub-components/Input";`
229
+ CSS import: `@import "../../sub-components/Input/styles.css";` in parent styles.css
230
+
231
+ Input is a pure input field — no label, no helper text. Wrap with `FormItem` for labels and validation messages.
232
+
233
+ ### Props
234
+
235
+ | Prop | Type | Default | Description |
236
+ | ---------- | ----------------------- | ------- | -------------------------------------------------------------------- |
237
+ | `password` | `boolean` | `false` | Shows eye toggle icon for password visibility |
238
+ | `disabled` | `boolean` | `false` | Disabled state |
239
+ | `leftIcon` | `ComponentChildren` | — | Icon rendered on the left (activates search-style border `gray-500`) |
240
+ | `inputRef` | `Ref<HTMLInputElement>` | — | Ref forwarded to the native `<input>` element |
241
+
242
+ Also extends `InputHTMLAttributes<HTMLInputElement>` — accepts `placeholder`, `value`, `onInput`, `name`, etc.
243
+
244
+ ### Design Specs (from Figma)
245
+
246
+ - Input field: padding `10px 14px`, border-radius `6px`, border `1px solid gray-200`
247
+ - Input text: `text-md-regular`, color `gray-900`
248
+ - Placeholder: color `gray-400`
249
+ - Hover: border `gray-300`
250
+ - With `leftIcon`: border `gray-500`, padding `10px 12px`, gap `12px`
251
+ - Disabled: bg `gray-50`, text `gray-300`
252
+
253
+ ### Usage
254
+
255
+ ```tsx
256
+ import Input from "../../sub-components/Input";
257
+
258
+ <Input placeholder="you@example.com" />
259
+ <Input password placeholder="Enter password" />
260
+ <Input disabled placeholder="Disabled" />
261
+ <Input leftIcon={<MagnifyingGlass1SVG />} placeholder="Search..." />
262
+ ```
263
+
264
+ **Remember:** Use `onInput` instead of `onChange` for text inputs (Preact behavior).
265
+
266
+ ## FormItem Sub-Component
267
+
268
+ Wraps form controls (Input, select, etc.) with a label and helper/error text.
269
+ Import: `import FormItem from "../../sub-components/FormItem";`
270
+ CSS import: `@import "../../sub-components/FormItem/styles.css";` in parent styles.css
271
+
272
+ ### Props
273
+
274
+ | Prop | Type | Default | Description |
275
+ | ------------ | --------------------------------------- | ----------- | ---------------------------------------------------------- |
276
+ | `label` | `string` | — | Label text above the input |
277
+ | `status` | `"default"` \| `"error"` \| `"success"` | `"default"` | Controls border color of child Input and helper text color |
278
+ | `helperText` | `string` | — | Helper/error/success message below the input |
279
+ | `children` | `ComponentChildren` | — | The form control (e.g. `<Input />`) |
280
+
281
+ ### Design Specs (from Figma)
282
+
283
+ - Label: `text-xs-medium`, color `gray-700`
284
+ - Helper text: `text-xs-regular`, default `gray-500`
285
+ - Error: border & helper `--kombos-error` (#FF3C48)
286
+ - Success: border & helper `--kombos-success` (#12B76A)
287
+ - Gap between label / input / helper: `4px`
288
+
289
+ ### Usage
290
+
291
+ ```tsx
292
+ import FormItem from "../../sub-components/FormItem";
293
+ import Input from "../../sub-components/Input";
294
+
295
+ <FormItem label="Email">
296
+ <Input placeholder="you@example.com" />
297
+ </FormItem>
298
+
299
+ <FormItem label="Password">
300
+ <Input password placeholder="Enter password" />
301
+ </FormItem>
302
+
303
+ <FormItem label="Email" status="error" helperText="Invalid email">
304
+ <Input value="bad@" />
305
+ </FormItem>
306
+
307
+ <FormItem label="Email" status="success" helperText="Looks good!">
308
+ <Input value="ok@ikas.com" />
309
+ </FormItem>
310
+ ```
311
+
312
+ ## Media Utilities (`src/utils/media.ts`)
313
+
314
+ **CRITICAL: Never define local `ASPECT_RATIO_MAP`, `OBJECT_FIT_MAP`, or `ALIGNMENT_MAP` in components.**
315
+ All aspect ratio, object fit, and vertical alignment resolution MUST use the shared helpers from `src/utils/media.ts`.
316
+
317
+ ```tsx
318
+ import {
319
+ resolveAspectRatio,
320
+ resolveObjectFit,
321
+ resolveVerticalAlignment,
322
+ } from "../../utils/media";
323
+
324
+ // Each function accepts an optional value and returns the CSS string.
325
+ // When undefined is passed, defaults are applied: "Square" → "1 / 1", "Cover" → "cover", "Middle" → "center"
326
+ const ar = resolveAspectRatio(aspectRatio); // e.g. "1 / 1"
327
+ const of = resolveObjectFit(objectFit); // e.g. "cover"
328
+ const va = resolveVerticalAlignment(align); // e.g. "center"
329
+ ```
330
+
331
+ - No need to set defaults in destructuring (`aspectRatio = "Square"`) — the functions handle it
332
+ - Components that only pass these values through to children (e.g. `ProductDetailBundleFurniture`) don't need to import the utils
333
+
334
+ ## Hooks (`src/hooks/`)
335
+
336
+ ### `useScrollLock` — overlay/modal scroll lock (`src/hooks/useScrollLock.ts`)
337
+
338
+ **CRITICAL: Never write inline `document.body.style.overflow = "hidden"` in components.** All overlay/modal scroll locking MUST use `useScrollLock`.
339
+
340
+ ```tsx
341
+ import { useScrollLock } from "../../hooks/useScrollLock";
342
+
343
+ // Always-on (mount-triggered overlays: CartSidebar, AddressModal, ImagePreviewModal, SearchModal)
344
+ useScrollLock();
345
+
346
+ // Conditional (prop-triggered overlays: MobileFilterModal)
347
+ useScrollLock(isOpen);
348
+
349
+ // With skip-cleanup (overlay handoff: MobileMenu → CartSidebar)
350
+ const skipCleanupRef = useRef(false);
351
+ useScrollLock(true, skipCleanupRef);
352
+ // Set skipCleanupRef.current = true before closing to keep scroll locked for the next overlay
353
+ ```
354
+
355
+ **Parameters:**
356
+
357
+ - `enabled` (default `true`) — lock when true, unlock cleanup when false or unmount
358
+ - `skipCleanupRef` (optional `RefObject<boolean>`) — when `.current` is true, cleanup skips restoring scroll (for seamless overlay transitions)
359
+
360
+ **What it does:** calculates scrollbar width, sets `overflow: hidden` + `paddingRight` on body, restores on cleanup.
361
+
362
+ **Exception:** `Header/index.tsx` uses a raw reset (`overflow = ""`) as a safety cleanup on mount — this is intentionally NOT using the hook.
363
+
364
+ ### `useRedirectIfLoggedIn` — auth page guard (`src/hooks/useRedirectIfLoggedIn.ts`)
365
+
366
+ Redirects logged-in users away from auth pages (Login, Register, ForgotPassword, RecoverPassword).
367
+ Returns `isChecking: boolean` — render `null` while checking to avoid flash.
368
+
369
+ ```tsx
370
+ import { useRedirectIfLoggedIn } from "../../hooks/useRedirectIfLoggedIn";
371
+
372
+ const isChecking = useRedirectIfLoggedIn(() => {
373
+ initLoginForm(loginForm);
374
+ });
375
+ if (isChecking) return null;
376
+ ```
377
+
378
+ ## Utility Modules (`src/utils/`)
379
+
380
+ ### `cx()` — className joiner (`src/utils/cx.ts`)
381
+
382
+ **CRITICAL: Use `cx()` for conditional className assembly.** Never use template literal ternaries for conditional classes.
383
+
384
+ Wrong: `className={\`base ${cond ? "modifier" : ""}\`}`Correct:`className={cx("base", cond && "modifier")}`
385
+
386
+ Import: `import { cx } from "../../utils/cx";`
387
+
388
+ ### `getSelectValuePrice()` — option price formatter (`src/utils/optionPrice.ts`)
389
+
390
+ Formats price for product option select values. Used by ChoiceBox, ChoiceSelect, ChoiceSwatch.
391
+
392
+ ### `isBundleOutOfStock()` — bundle helpers (`src/utils/bundle.ts`)
393
+
394
+ Bundle validation logic shared across ProductDetailAddToCart and ProductDetailPrices.
395
+
396
+ ## Key Patterns
397
+
398
+ ### Component Exports & Reactivity
399
+
400
+ ```tsx
401
+ // Root components are automatically reactive — the ikas runtime wraps them in autorun().
402
+ // Do NOT import or use observer() on root exports.
403
+ import { Props } from "./types";
404
+
405
+ export function MySection({ product }: Props) { ... }
406
+ export default MySection;
407
+ ```
408
+
409
+ ```tsx
410
+ // Only use observer() on extracted SUB-COMPONENTS that independently read MobX stores:
411
+ import { observer } from "@ikas/component-utils";
412
+
413
+ const CartBadge = observer(function CartBadge() {
414
+ const count = cartStore.order?.orderLineItems?.length ?? 0;
415
+ return <span>{count}</span>;
416
+ });
417
+ ```
418
+
419
+ ### Null Safety
420
+
421
+ ```tsx
422
+ // Storefront models can be null — always check before accessing
423
+ if (!product) return null;
424
+ const price = product.selectedVariant?.price?.formattedPrice ?? "";
425
+ ```
426
+
427
+ ### Mutations
428
+
429
+ ```tsx
430
+ // Functions like addItemToCart() mutate the model in-place (MobX observable)
431
+ // No need to capture return value — root components re-render automatically via autorun()
432
+ await addItemToCart({ product });
433
+ ```
434
+
435
+ ### CSS Scoping
436
+
437
+ All CSS is auto-scoped with `.cc_{componentId}` prefix. Write plain class names — they are scoped at build time.
438
+
439
+ ### Preact Event Handling
440
+
441
+ Use `onInput` instead of `onChange` for text inputs (Preact behavior).
442
+
443
+ ### Import Source
444
+
445
+ ```tsx
446
+ import { addItemToCart, IkasProduct, IkasImage } from "@ikas/bp-storefront";
447
+ ```
448
+
449
+ ## No Static Text Rule
450
+
451
+ **CRITICAL: Never hardcode user-visible text in JSX.** All text strings (headings, button labels,
452
+ empty states, loading messages, form labels) MUST be TEXT props with defaultValues.
453
+
454
+ Wrong: `<h1>Sign In</h1>`
455
+ Correct: `<h1>{title}</h1>` with `title` as TEXT prop (defaultValue: "Sign In")
456
+
457
+ For button loading states, use two separate props:
458
+
459
+ - `submitButtonText` (default: "Sign In")
460
+ - `submittingButtonText` (default: "Signing in...")
461
+
462
+ Group text props under a "Texts" propGroup when the component has 5+ props.
463
+
464
+ **Assistive strings (`aria-label`, `aria-describedby`, `alt`, sr-only text):** if the string is meaningful to end users (e.g. icon-only button label, product image alt), make it a TEXT prop. English literal defaults are acceptable for purely structural labels a merchant would never want to change (e.g. `role="dialog" aria-modal="true"`). When in doubt, make it a prop.
465
+
466
+ ## Sections vs Components
467
+
468
+ - **Sections** = page-level, full-width containers (Header, Hero, Product Grid, Footer).
469
+ Set `"type": "section"` via CLI. Use `<section>` root element. Props interface: `Props`.
470
+ **Sections MUST use `kombos-container` for max-width.** The `<section>` root stays full-width (for background color),
471
+ but all inner content MUST be wrapped in a `<div className="kombos-container">` (or added to an existing inner div).
472
+ This limits content to `var(--kombos-max-width)` (1500px) and centers it with `margin: auto`.
473
+ Padding/layout styles go on the container wrapper, NOT on the `<section>` root.
474
+ **Exceptions:** Header (sticky, renders child components via IkasComponentRenderer) and HeroSlider (full-width by design) do NOT use the container.
475
+ - **Components** = child elements placed inside sections (buttons, cards, badges).
476
+ Defaults to `"component"`. Use `<div>` root element. Props interface: `Props`.
477
+
478
+ ## Prop Groups
479
+
480
+ Organize props into collapsible groups in the editor sidebar. Use prop groups when a component has 5+ props to improve UX.
481
+
482
+ ### Config Format
483
+
484
+ - Define groups in `propGroups` array on the component in `ikas.config.json`
485
+ - Assign props to groups via `groupId` on each prop
486
+ - Groups can nest 1 level deep via `children`
487
+ - Props without `groupId` appear ungrouped at root level
488
+ - Group IDs must be unique within a component
489
+ - **NEVER assign `COMPONENT` or `COMPONENT_LIST` props to a prop group** — they don't render in the editor sidebar, so grouping them is meaningless. Leave them ungrouped at root level.
490
+
491
+ ### CLI Commands
492
+
493
+ - `config add-prop-group --component "Name" --id content --name "Content"` — create group
494
+ - `config add-prop-group --component "Name" --id colors --name "Colors" --parent style` — create nested group
495
+ - `config add-prop --component "Name" --name title --displayName "Title" --type TEXT --group content` — add prop to group
496
+ - `config update-prop --component "Name" --prop title --group colors` — move prop to different group
497
+ - `config remove-prop-group --component "Name" --id content` — remove group (props become ungrouped)
498
+
499
+ ### When to Use
500
+
501
+ - 5+ props → group related props
502
+ - Sections with content + style props → separate "Content" and "Appearance" groups
503
+ - Complex sections → use nested groups (e.g., "Style" → "Colors", "Typography")
504
+
505
+ ## Workflow Addition
506
+
507
+ When building a section with 5+ props, organize into prop groups after defining props:
508
+
509
+ ```bash
510
+ npx ikas-component config add-prop-group --component "Name" --id content --name "Content"
511
+ npx ikas-component config update-prop --component "Name" --prop title --group content
512
+ ```
513
+
514
+ ## Global Z-Index (Kombos Design System)
515
+
516
+ **CRITICAL: Never hardcode `z-index` values in component CSS.**
517
+ All z-index levels are defined as CSS custom properties in `src/global.css` under `:root`.
518
+
519
+ | Variable | Value | Usage |
520
+ | --------------------- | ----- | -------------------------------------------- |
521
+ | `--kombos-z-dropdown` | 50 | Dropdown menus |
522
+ | `--kombos-z-header` | 100 | Sticky header |
523
+ | `--kombos-z-overlay` | 200 | Overlays (cart sidebar, mobile menu, modals) |
524
+
525
+ ```css
526
+ .my-dropdown {
527
+ z-index: var(--kombos-z-dropdown);
528
+ }
529
+ .my-header {
530
+ z-index: var(--kombos-z-header);
531
+ }
532
+ .my-overlay {
533
+ z-index: var(--kombos-z-overlay);
534
+ }
535
+ ```
536
+
537
+ ## Global Colors (Kombos Design System)
538
+
539
+ **CRITICAL: Never hardcode hex color values in component CSS.**
540
+ All colors are defined as CSS custom properties in `src/global.css` under `:root`.
541
+ Use `var(--kombos-*)` in component CSS. Only `rgba()` values for overlays/shadows are exempt.
542
+
543
+ ### Available Variables
544
+
545
+ | Variable | Hex | Usage |
546
+ | ------------------- | ------- | ----------------------------------- |
547
+ | `--kombos-white` | #ffffff | Backgrounds, text on dark |
548
+ | `--kombos-gray-50` | #fafafa | Hover backgrounds |
549
+ | `--kombos-gray-100` | #f6f6f6 | Light borders, image placeholders |
550
+ | `--kombos-gray-200` | #ececed | Separator borders |
551
+ | `--kombos-gray-300` | #c4c4c6 | Disabled/muted borders, muted icons |
552
+ | `--kombos-gray-400` | #9c9c9f | Placeholder/empty state text |
553
+ | `--kombos-gray-500` | #727276 | Secondary text (sublinks, captions) |
554
+ | `--kombos-gray-600` | #4a4a4f | — |
555
+ | `--kombos-gray-700` | #2e2e33 | Primary text, icons |
556
+ | `--kombos-gray-800` | #202025 | — |
557
+ | `--kombos-gray-900` | #14141a | Headings, buttons, badges |
558
+ | `--kombos-badge-bg` | #ff0000 | Cart badge background |
559
+
560
+ ### Usage in CSS
561
+
562
+ ```css
563
+ .my-section__title {
564
+ color: var(--kombos-gray-900);
565
+ }
566
+ .my-section__border {
567
+ border: 1px solid var(--kombos-gray-100);
568
+ }
569
+ .my-section__btn {
570
+ background: var(--kombos-gray-900);
571
+ color: var(--kombos-white);
572
+ }
573
+ .my-section__btn:hover {
574
+ background: var(--kombos-gray-700);
575
+ }
576
+ ```
577
+
578
+ ### Rules
579
+
580
+ - Every color in component CSS MUST use a `var(--kombos-*)` variable
581
+ - Only exception: `rgba()` for overlays (`rgba(0,0,0,0.35)`) and box-shadows
582
+ - When props provide dynamic colors (e.g., `backgroundColor`, `textColor`), apply via inline `style` in JSX — CSS variables are for static/design-system colors only
583
+
584
+ ## Global Typography (Kombos Design System)
585
+
586
+ **CRITICAL: Never write `font-family`, `font-weight`, `font-size`, or `line-height` in component CSS.**
587
+ All typography is defined as utility classes in `src/global.css`. Apply them via `className` in JSX.
588
+
589
+ **`font-family` is NOT set by typography classes.** The storefront injects a global `* { font-family: ... }` rule
590
+ which acts as the base font. Our typography classes only control `font-weight`, `font-size`, and `line-height`.
591
+ Never add `font-family` in component CSS or global typography classes — let the storefront's global font cascade through.
592
+
593
+ Font: **Montserrat** | Weights: Regular 400, Medium 500, Semibold 600
594
+
595
+ ### Class Naming Convention
596
+
597
+ ```
598
+ {scale}-{size}-{weight}
599
+ ```
600
+
601
+ - **Scale:** `display` (large headings) or `text` (body/UI text)
602
+ - **Size:** `xxl`, `xl`, `lg`, `md`, `sm`, `xs`
603
+ - **Weight:** `regular`, `medium`, `semibold`
604
+ - **Special variants:** append `-strike` (line-through) or `-underline`
605
+
606
+ ### Available Classes & Sizes
607
+
608
+ | Class prefix | Font size | Line height |
609
+ | --------------- | --------- | ----------- |
610
+ | `display-xxl-*` | 72px | 90px |
611
+ | `display-xl-*` | 60px | 72px |
612
+ | `display-lg-*` | 48px | 60px |
613
+ | `display-md-*` | 36px | 44px |
614
+ | `display-sm-*` | 30px | 38px |
615
+ | `display-xs-*` | 24px | 32px |
616
+ | `text-xl-*` | 20px | 30px |
617
+ | `text-lg-*` | 18px | 28px |
618
+ | `text-md-*` | 16px | 24px |
619
+ | `text-sm-*` | 14px | 20px |
620
+ | `text-xs-*` | 12px | 18px |
621
+
622
+ ### Usage in JSX
623
+
624
+ ```tsx
625
+ // Combine component class with typography class
626
+ <h1 className="my-section__title display-sm-semibold">{title}</h1>
627
+ <p className="my-section__desc text-md-regular">{description}</p>
628
+ <a className="my-section__link text-sm-medium">{label}</a>
629
+ <button className="my-section__btn text-md-semibold">{buttonText}</button>
630
+ ```
631
+
632
+ ### Responsive Prefixes (Tailwind-style)
633
+
634
+ - No prefix = mobile/base (all breakpoints)
635
+ - `sm:` = 640px+
636
+ - `md:` = 768px+
637
+ - `lg:` = 1024px+
638
+
639
+ Usage: `className="text-sm-medium md:text-md-medium lg:text-lg-medium"`
640
+ This renders `text-sm` on mobile, `text-md` on 768px+, `text-lg` on 1024px+.
641
+
642
+ ### Rules
643
+
644
+ - Every visible text element MUST have a typography class in its `className`
645
+ - Component CSS handles layout, spacing, color, decoration — NOT font properties
646
+ - Only exception: elements with non-standard sizes not in the scale (e.g., 10px badge, 22px logo text) can use inline font properties in component CSS
647
+ - Use responsive prefixes (`sm:`, `md:`, `lg:`) instead of writing font-size media queries in component CSS
648
+
649
+ ## Responsive Breakpoints
650
+
651
+ All components use a **mobile-first** approach with three breakpoints: **640px**, **768px**, and **1024px**.
652
+
653
+ - Base styles → Small mobile (< 640px: tightest padding, minimal layout)
654
+ - `≥ 640px` → Small tablet (slightly wider padding)
655
+ - `≥ 768px` → Tablet (hamburger menu, mobile logo size, medium padding)
656
+ - `≥ 1024px` → Desktop (full nav, desktop logo size, wider padding)
657
+
658
+ ```css
659
+ /* Mobile-first: base styles are small mobile, then scale up */
660
+ .my-section__element {
661
+ padding: 0.625rem 1rem;
662
+ }
663
+
664
+ @media (min-width: 768px) {
665
+ .my-section__element {
666
+ padding: 0.75rem 2rem;
667
+ }
668
+ /* tablet adjustments */
669
+ }
670
+
671
+ @media (min-width: 1024px) {
672
+ .my-section__element {
673
+ padding: 0.75rem 4.5rem;
674
+ }
675
+ /* full nav visible, desktop logo size, wider padding */
676
+ }
677
+ ```
678
+
679
+ ## CSS Units — rem Convention
680
+
681
+ **CRITICAL: Use `rem` for all spacing and sizing values. Keep `px` only for borders, border-radius, box-shadow, and outlines.**
682
+
683
+ Base: `16px = 1rem`. Figma gives pixel values — convert with `value / 16`.
684
+
685
+ ### Convert to rem
686
+
687
+ - `font-size`, `line-height`
688
+ - `padding`, `margin` (all sides)
689
+ - `gap`, `row-gap`, `column-gap`
690
+ - `width`, `height`, `max-width`, `max-height`, `min-width`, `min-height`
691
+ - `top`, `right`, `bottom`, `left`
692
+ - CSS custom properties for spacing/sizing
693
+
694
+ ### Keep as px
695
+
696
+ - `border`, `border-width` (1px, 2px borders)
697
+ - `border-radius`
698
+ - `box-shadow`
699
+ - `outline`
700
+ - `@media` breakpoints (640px, 768px, 1024px)
701
+
702
+ ### Common Conversions (Figma px → CSS rem)
703
+
704
+ | px | rem | | px | rem |
705
+ | --- | ----- | --- | --- | ----- |
706
+ | 4 | 0.25 | | 24 | 1.5 |
707
+ | 6 | 0.375 | | 28 | 1.75 |
708
+ | 8 | 0.5 | | 30 | 1.875 |
709
+ | 10 | 0.625 | | 32 | 2 |
710
+ | 12 | 0.75 | | 36 | 2.25 |
711
+ | 14 | 0.875 | | 40 | 2.5 |
712
+ | 16 | 1 | | 48 | 3 |
713
+ | 18 | 1.125 | | 60 | 3.75 |
714
+ | 20 | 1.25 | | 72 | 4.5 |
715
+
716
+ ```css
717
+ /* Correct */
718
+ .my-section {
719
+ padding: 1rem 1.5rem;
720
+ gap: 0.75rem;
721
+ }
722
+ .my-section {
723
+ border: 1px solid var(--kombos-gray-200);
724
+ border-radius: 6px;
725
+ }
726
+
727
+ /* Wrong */
728
+ .my-section {
729
+ padding: 16px 24px;
730
+ gap: 12px;
731
+ }
732
+ ```
733
+
734
+ ## Build Verification
735
+
736
+ IMPORTANT: After completing any task, always run `npx ikas-component build` (or `npm run build`) to check for
737
+ TypeScript and build errors. Fix any errors before considering the task done.
@@ -1,9 +1,26 @@
1
1
  /*
2
2
  * Global styles for your ikas code components project.
3
- * These styles are NOT scoped — they apply across all components.
4
- * Use this for CSS resets, base typography, utility classes, or CSS variables.
5
3
  *
6
- * Loading order:
4
+ * Scoping: at build time every rule here is wrapped in a per-project scope
5
+ * (`:where([data-cc-scope~="<projectId>"])`) so styles from one project cannot
6
+ * leak into another project's components or the host page.
7
+ *
8
+ * What works:
9
+ * - Class / tag / attribute selectors on elements you render (`.card`, `img`, `[data-x]`).
10
+ * - `:root { --var: value }` — variables are rewritten onto the component wrapper
11
+ * and inherit down its subtree. Use this for design tokens.
12
+ * - `@media`, `@supports`, `@container`, `@layer` — walked recursively.
13
+ * - `@keyframes`, `@font-face` — left untouched.
14
+ *
15
+ * What does NOT work (code components only style elements they own):
16
+ * - Top-level `body { ... }` / `html { ... }` rules — dropped.
17
+ * - Descendant selectors starting with `body` / `html` (e.g. `body .x`, `html.dark .y`) —
18
+ * emitted but never match, because the component wrapper is INSIDE body, not
19
+ * the other way around. Use a class on your own wrapper instead
20
+ * (e.g. add `dark` via JS and write `.dark .x`).
21
+ * - Document-wide resets, scrollbar tweaks, page backgrounds — belong to the theme.
22
+ *
23
+ * Loading order (all scoped to this project):
7
24
  * 1. Global CSS (this file) — lowest specificity
8
25
  * 2. Shared chunk CSS — multi-scope (.cc_a .sel, .cc_b .sel)
9
26
  * 3. Component CSS — single scope (.cc_id .sel) — highest specificity
@@ -11,10 +28,6 @@
11
28
  * Component-scoped styles naturally override these globals.
12
29
  */
13
30
 
14
- html {
15
- scrollbar-gutter: stable;
16
- }
17
-
18
31
  /* ===== Colors — Kombos Design System ===== */
19
32
 
20
33
  :root {
@@ -374,7 +387,6 @@ svg.kombos-icon path {
374
387
  }
375
388
  }
376
389
 
377
-
378
390
  /* ===== Base Reset ===== */
379
391
 
380
392
  * {