@ikas/code-components-mcp 1.4.0-beta.220 → 1.4.0-beta.221

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.
@@ -17,7 +17,7 @@
17
17
  "ikas-config": {
18
18
  "title": "ikas.config.json Schema",
19
19
  "description": "Configuration file that defines components, their props, and metadata",
20
- "content": "The `ikas.config.json` file is the central configuration for your code components project.\n\n```json\n{\n \"name\": \"my-project\",\n \"version\": \"1.0.0\",\n \"globalStyles\": \"./src/global.css\",\n \"components\": [\n {\n \"id\": \"my-component\",\n \"name\": \"My Component\",\n \"entry\": \"./src/components/MyComponent/index.tsx\",\n \"styles\": \"./src/components/MyComponent/styles.css\",\n \"props\": [\n {\n \"name\": \"title\",\n \"displayName\": \"Title\",\n \"type\": \"TEXT\",\n \"required\": true,\n \"defaultValue\": \"Hello\",\n \"description\": \"The main heading text\"\n }\n ]\n },\n {\n \"id\": \"hero-banner\",\n \"name\": \"Hero Banner\",\n \"type\": \"section\",\n \"entry\": \"./src/components/HeroBanner/index.tsx\",\n \"styles\": \"./src/components/HeroBanner/styles.css\",\n \"props\": [\n {\n \"name\": \"heading\",\n \"displayName\": \"Heading\",\n \"type\": \"TEXT\",\n \"required\": true,\n \"defaultValue\": \"Welcome\"\n }\n ]\n }\n ]\n}\n```\n\n### Top-level fields:\n- `name` (string): Project name\n- `version` (string): Project version\n- `globalStyles` (string, optional): Path to a global CSS file (e.g., `\"./src/global.css\"`). See `get_framework_guide(\"global-css\")` for details\n- `components` (array): List of component definitions\n\n### Component fields:\n- `id` (string): Unique identifier (kebab-case)\n- `name` (string): Display name in the editor\n- `type` (string, optional): `\"component\"` (default) or `\"section\"` — sections are page-level containers (e.g. header, hero banner, footer), components are child elements placed inside sections (e.g. button, card, badge)\n- `entry` (string): Path to the component's entry file (index.tsx)\n- `styles` (string): Path to the component's CSS file\n- `props` (array): List of prop definitions\n- `isHeader` (boolean, optional): Mark this section as the store's header. Only for `type: \"section\"`. At most one component should have `isHeader: true`\n- `isFooter` (boolean, optional): Mark this section as the store's footer. Only for `type: \"section\"`. At most one component should have `isFooter: true`\n\n### Prop fields:\n- `name` (string): Prop name used in code (camelCase)\n- `displayName` (string): Label shown in the editor UI\n- `type` (string): One of the available prop types\n- `required` (boolean): Whether the prop must be set\n- `defaultValue` (any): Default value matching the prop type. NOT allowed for dynamic merchant-data types (IMAGE, IMAGE_LIST, VIDEO, PRODUCT, PRODUCT_LIST, PRODUCT_ATTRIBUTE, PRODUCT_ATTRIBUTE_LIST, BRAND, BRAND_LIST, CATEGORY, CATEGORY_LIST, BLOG, BLOG_LIST, BLOG_CATEGORY, BLOG_CATEGORY_LIST, RAFFLE, RAFFLE_LIST) — they resolve from store data at render time, so the CLI rejects a default on these and the editor strips it\n- `description` (string): Help text shown in editor\n- `groupId` (string, optional): Assign this prop to a prop group (references a group's `id`)\n- `requiredProp` (string, optional): Show this prop in the editor panel only while the named BOOLEAN/ENUM prop on the same component satisfies the condition. A prop NAME, not an id. See `get_framework_guide(\"conditional-visibility\")`\n- `requiredPropValue` (boolean, optional): For a BOOLEAN `requiredProp` — which state shows this prop (defaults to `true`)\n- `requiredEnumOptionValue` (string, optional): For an ENUM `requiredProp` — the option value that shows this prop\n\n### Prop Groups (optional):\nAdd `propGroups` array on a component to organize props into collapsible groups in the editor.\n- `id` (string): Unique group identifier within the component\n- `name` (string): Display name in editor\n- `description` (string, optional): Group description\n- `children` (array, optional): Nested groups (max 1 level)\n- `requiredProp` / `requiredPropValue` / `requiredEnumOptionValue` (optional): Gate the whole group — it and everything under it are shown only while the named BOOLEAN/ENUM prop satisfies the condition. See `get_framework_guide(\"conditional-visibility\")`\n\nSee `get_framework_guide(\"prop-groups\")` for full details and examples.\n\n### Translations (optional)\nTechnical texts are shown in the editor's own language. The base fields (`name`, `displayName`, `description`) are the default texts; `translations` holds another editor language's texts keyed by locale (`en`). A store language's default prop values go under the component's `translations.<locale>.propValues` (by prop name) — they seed the section's values in that language.\n```json\n{\n \"id\": \"hero-banner\",\n \"name\": \"Kapak Bölümü\",\n \"translations\": {\n \"en\": { \"name\": \"Hero Banner\", \"propValues\": { \"heading\": \"Welcome\" } },\n \"de\": { \"propValues\": { \"heading\": \"Willkommen\" } }\n },\n \"props\": [\n {\n \"name\": \"heading\", \"displayName\": \"Başlık\", \"type\": \"TEXT\", \"defaultValue\": \"Hoş geldiniz\",\n \"translations\": { \"en\": { \"displayName\": \"Heading\", \"description\": \"The section heading\" } }\n }\n ],\n \"propGroups\": [\n { \"id\": \"content\", \"name\": \"İçerik\", \"translations\": { \"en\": { \"name\": \"Content\" } } }\n ]\n}\n```\nThe config gives the default texts. A text edited on the editor's \"Editor Texts\" page stays over the config (a reset button puts the config's text back); while `ikas theme dev` is running, the edited texts and a component's edited default and language values are written to the config on their own (on connecting and on every save). The editor's value wins over a hand edit of the same field in the config; a field not edited in the editor follows the config. To translate from an agent, use the editor's translations page tools (`list_translations`, `update_translations`, `manage_translation_languages`) rather than editing `translations` in the config by hand: they go through the editor and on to the config.\n\n### UI Texts (i18n)\nThe project's fixed UI texts — button labels, status lines, empty states — that the merchant does not edit per section but that must follow the store's language. Use a **prop** for content the merchant chooses per section (a heading, a banner text); use a **UI text** for a fixed text of a component's UI (`Sepete ekle`, `{{count}} adet kaldı`). Never hard-code such a text in JSX.\n\nThey are project-wide (shared by every component) and live in `src/i18n/`: `default.json` holds the base texts, `<locale>.json` a language's (`en.json`, `de.json`). Keys are dotted groups:\n```json\n{ \"common\": { \"addToCart\": \"Sepete ekle\" }, \"product\": { \"stockLeft\": \"{{count}} adet kaldı\" } }\n```\n- Add or change one with `ikas-component config set-text --key common.addToCart --text \"Sepete ekle\"` (`--locale en` for a language's text); `config remove-text --key <key>` removes it (from every language, or with `--locale` only that language's); `config list-texts` lists the texts and the keys each language lacks; `config rename-text --key product --to item` renames a text or a whole group in every language (then change the `t()` calls: the type check reports the old keys). There are no plural forms: give each form its own key (`cart.itemCount_one`: \"{{count}} item\", `cart.itemCount_other`: \"{{count}} items\") and pick one in the component. The first `set-text` adds `\"i18n\": \"./src/i18n\"` to `ikas.config.json`. A language's text must use exactly the base text's `{{params}}`; a base text cannot be empty; a language file is named by a real language code.\n- Change the texts only with these commands (or on the editor's page), never by editing the JSON files by hand: a text that breaks the rules is left out of the editor and the store, and `build`/`publish` stop until it is fixed — after a change, `config list-texts` must report no `errors`. A base text's `{{params}}` are what the code's `t()` calls pass: the editor never changes them; with `set-text` change them together with the `t()` calls, after removing or rewriting the languages' texts that use the old ones.\n- Import `t` from the storefront package: `import { t } from \"@ikas/bp-storefront\"`, then `t(\"common.addToCart\")`, `t(\"product.stockLeft\", { count: 3 })`. The build binds it to the project's own texts (each project on a store reads its own); it reads the store language's text and falls back to the base text. The CLI keeps `src/i18n/index.d.ts` (types only; do not edit it) in step with `default.json`, so a missing key or param is a type error. Never read `t` through `import * as` or re-export it: the build refuses both.\n- On the editor's \"Store Translations\" page the texts are listed under \"UI Texts\", one item per top-level group; while `ikas theme dev` runs, edits there are written to the `src/i18n` files (the editor's value wins). An agent translates them with `list_translations` / `update_translations` (`area: \"i18n\"`, item `<projectId>:<group>`, key = the dotted path, locale `\"default\"` for the base texts). The texts travel with the published components and with a design asset.\n\n### Header & Footer Flags\nFor section-type components that serve as the store's header or footer, set `isHeader: true` or `isFooter: true`:\n```json\n{\n \"id\": \"header\",\n \"name\": \"Header\",\n \"type\": \"section\",\n \"isHeader\": true,\n \"entry\": \"./src/components/Header/index.tsx\",\n \"styles\": \"./src/components/Header/styles.css\",\n \"props\": [...]\n}\n```\nThese flags tell the editor to treat the wrapper section as a common header/footer, which affects page composition (header/footer appear on all pages automatically).",
20
+ "content": "The `ikas.config.json` file is the central configuration for your code components project.\n\n```json\n{\n \"name\": \"my-project\",\n \"version\": \"1.0.0\",\n \"globalStyles\": \"./src/global.css\",\n \"components\": [\n {\n \"id\": \"my-component\",\n \"name\": \"My Component\",\n \"entry\": \"./src/components/MyComponent/index.tsx\",\n \"styles\": \"./src/components/MyComponent/styles.css\",\n \"props\": [\n {\n \"name\": \"title\",\n \"displayName\": \"Title\",\n \"type\": \"TEXT\",\n \"required\": true,\n \"defaultValue\": \"Hello\",\n \"description\": \"The main heading text\"\n }\n ]\n },\n {\n \"id\": \"hero-banner\",\n \"name\": \"Hero Banner\",\n \"type\": \"section\",\n \"entry\": \"./src/components/HeroBanner/index.tsx\",\n \"styles\": \"./src/components/HeroBanner/styles.css\",\n \"props\": [\n {\n \"name\": \"heading\",\n \"displayName\": \"Heading\",\n \"type\": \"TEXT\",\n \"required\": true,\n \"defaultValue\": \"Welcome\"\n }\n ]\n }\n ]\n}\n```\n\n### Top-level fields:\n- `name` (string): Project name\n- `version` (string): Project version\n- `globalStyles` (string, optional): Path to a global CSS file (e.g., `\"./src/global.css\"`). See `get_framework_guide(\"global-css\")` for details\n- `components` (array): List of component definitions\n\n### Component fields:\n- `id` (string): Unique identifier (kebab-case)\n- `name` (string): Display name in the editor\n- `type` (string, optional): `\"component\"` (default) or `\"section\"` — sections are page-level containers (e.g. header, hero banner, footer), components are child elements placed inside sections (e.g. button, card, badge)\n- `entry` (string): Path to the component's entry file (index.tsx)\n- `styles` (string): Path to the component's CSS file\n- `props` (array): List of prop definitions\n- `isHeader` (boolean, optional): Mark this section as the store's header. Only for `type: \"section\"`. At most one component should have `isHeader: true`\n- `isFooter` (boolean, optional): Mark this section as the store's footer. Only for `type: \"section\"`. At most one component should have `isFooter: true`\n\n### Prop fields:\n- `name` (string): Prop name used in code (camelCase)\n- `displayName` (string): Label shown in the editor UI\n- `type` (string): One of the available prop types\n- `required` (boolean): Whether the prop must be set\n- `defaultValue` (any): Default value matching the prop type. NOT allowed for dynamic merchant-data types (IMAGE, IMAGE_LIST, VIDEO, PRODUCT, PRODUCT_LIST, PRODUCT_ATTRIBUTE, PRODUCT_ATTRIBUTE_LIST, BRAND, BRAND_LIST, CATEGORY, CATEGORY_LIST, BLOG, BLOG_LIST, BLOG_CATEGORY, BLOG_CATEGORY_LIST, RAFFLE, RAFFLE_LIST) — they resolve from store data at render time, so the CLI rejects a default on these and the editor strips it\n- `description` (string): Help text shown in editor\n- `groupId` (string, optional): Assign this prop to a prop group (references a group's `id`)\n- `requiredProp` (string, optional): Show this prop in the editor panel only while the named BOOLEAN/ENUM prop on the same component satisfies the condition. A prop NAME, not an id. See `get_framework_guide(\"conditional-visibility\")`\n- `requiredPropValue` (boolean, optional): For a BOOLEAN `requiredProp` — which state shows this prop (defaults to `true`)\n- `requiredEnumOptionValue` (string, optional): For an ENUM `requiredProp` — the option value that shows this prop\n\n### Prop Groups (optional):\nAdd `propGroups` array on a component to organize props into collapsible groups in the editor.\n- `id` (string): Unique group identifier within the component\n- `name` (string): Display name in editor\n- `description` (string, optional): Group description\n- `children` (array, optional): Nested groups (max 1 level)\n- `requiredProp` / `requiredPropValue` / `requiredEnumOptionValue` (optional): Gate the whole group — it and everything under it are shown only while the named BOOLEAN/ENUM prop satisfies the condition. See `get_framework_guide(\"conditional-visibility\")`\n\nSee `get_framework_guide(\"prop-groups\")` for full details and examples.\n\n### Translations (optional)\nTechnical texts are shown in the editor's own language. The base fields (`name`, `displayName`, `description`) are the default texts; `translations` holds another editor language's texts keyed by locale (`en`). A store language's default prop values go under the component's `translations.<locale>.propValues` (by prop name) — they seed the section's values in that language.\n```json\n{\n \"id\": \"hero-banner\",\n \"name\": \"Kapak Bölümü\",\n \"translations\": {\n \"en\": { \"name\": \"Hero Banner\", \"propValues\": { \"heading\": \"Welcome\" } },\n \"de\": { \"propValues\": { \"heading\": \"Willkommen\" } }\n },\n \"props\": [\n {\n \"name\": \"heading\", \"displayName\": \"Başlık\", \"type\": \"TEXT\", \"defaultValue\": \"Hoş geldiniz\",\n \"translations\": { \"en\": { \"displayName\": \"Heading\", \"description\": \"The section heading\" } }\n }\n ],\n \"propGroups\": [\n { \"id\": \"content\", \"name\": \"İçerik\", \"translations\": { \"en\": { \"name\": \"Content\" } } }\n ]\n}\n```\nThe config gives the default texts. A text edited on the editor's \"Editor Texts\" page stays over the config (a reset button puts the config's text back); while `ikas theme dev` is running, the edited texts and a component's edited default and language values are written to the config on their own (on connecting and on every save). The editor's value wins over a hand edit of the same field in the config; a field not edited in the editor follows the config. To translate from an agent, use the editor's translations page tools (`list_translations`, `update_translations`, `manage_translation_languages`) rather than editing `translations` in the config by hand: they go through the editor and on to the config.\n\n### UI Texts (i18n)\nThe project's fixed UI texts — button labels, status lines, empty states — that the merchant does not edit per section but that must follow the store's language. Use a **prop** for content the merchant chooses per section (a heading, a banner text); use a **UI text** for a fixed text of a component's UI (`Sepete ekle`, `{{count}} adet kaldı`). Never hard-code such a text in JSX.\n\nThey are project-wide (shared by every component) and live in `src/i18n/`: `default.json` holds the base texts, `<locale>.json` a language's (`en.json`, `de.json`). Keys are dotted groups:\n```json\n{ \"common\": { \"addToCart\": \"Sepete ekle\" }, \"product\": { \"stockLeft\": \"{{count}} adet kaldı\" } }\n```\n- Add or change one with `ikas-component config set-text --key common.addToCart --text \"Sepete ekle\"` (`--locale en` for a language's text); `config remove-text --key <key>` removes it (from every language, or with `--locale` only that language's); `config list-texts` lists the texts and the keys each language lacks; `config rename-text --key product --to item` renames a text or a whole group in every language (then change the `t()` calls: the type check reports the old keys). There are no plural forms: give each form its own key (`cart.itemCount_one`: \"{{count}} item\", `cart.itemCount_other`: \"{{count}} items\") and pick one in the component. The first `set-text` adds `\"i18n\": \"./src/i18n\"` to `ikas.config.json`. A language's text must use exactly the base text's `{{params}}`; a base text cannot be empty; a language file is named by a real language code.\n- Change the texts only with these commands (or on the editor's page), never by editing the JSON files by hand: a text that breaks the rules is left out of the editor and the store, and `build`/`publish` stop until it is fixed — after a change, `config list-texts` must report no `errors`. A base text's `{{params}}` are what the code's `t()` calls pass: the editor never changes them; with `set-text` change them together with the `t()` calls, after removing or rewriting the languages' texts that use the old ones.\n- Import `t` from the storefront package: `import { t } from \"@ikas/bp-storefront\"`, then `t(\"common.addToCart\")`, `t(\"product.stockLeft\", { count: 3 })`. The build binds it to the project's own texts (each project on a store reads its own); it reads the store language's text and falls back to the base text. The CLI keeps `src/i18n/index.d.ts` (types only; do not edit it) in step with `default.json`, so a missing key or param is a type error. The store's common texts (the ikas set: labels, placeholders, validation messages, ...) are read with the same `t` under the `ikas:` prefix: `t(\"ikas:validation.required\")`, `t(\"ikas:validation.min\", { min: 3 })`; their keys and params are typed too, and a project needs no texts of its own for them. Never read `t` through `import * as` or re-export it: the build refuses both.\n- On the editor's \"Store Translations\" page the texts are listed under \"UI Texts\", one item per top-level group; while `ikas theme dev` runs, edits there are written to the `src/i18n` files (the editor's value wins). An agent translates them with `list_translations` / `update_translations` (`area: \"i18n\"`, item `<projectId>:<group>`, key = the dotted path, locale `\"default\"` for the base texts). The texts travel with the published components and with a design asset.\n\n### Header & Footer Flags\nFor section-type components that serve as the store's header or footer, set `isHeader: true` or `isFooter: true`:\n```json\n{\n \"id\": \"header\",\n \"name\": \"Header\",\n \"type\": \"section\",\n \"isHeader\": true,\n \"entry\": \"./src/components/Header/index.tsx\",\n \"styles\": \"./src/components/Header/styles.css\",\n \"props\": [...]\n}\n```\nThese flags tell the editor to treat the wrapper section as a common header/footer, which affects page composition (header/footer appear on all pages automatically).",
21
21
  "tags": [
22
22
  "config",
23
23
  "configuration",
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-10-15T17:14:09.892Z",
2
+ "generatedAt": "2026-10-19T11:36:02.817Z",
3
3
  "functions": [
4
4
  {
5
5
  "name": "apiListProductBrand",
@@ -15632,14 +15632,17 @@
15632
15632
  },
15633
15633
  {
15634
15634
  "name": "t",
15635
- "signature": "function t(key: K, [params]: UiTextArgs<K>): string",
15636
- "description": "The project's UI text `key` in the store's language, its `{{param}}`s filled; the key itself when no text has it.\nTypes only: the code component build binds it to the project's own texts (this shared runtime has no `t`).",
15635
+ "signature": "function t(key: K & (K extends `ikas:${string}` ? IkasTextKey : unknown), [params]: UiTextArgs<[K][K extends unknown ? 0 : never]>): string",
15636
+ "description": "The project's UI text `key` in the store's language, its `{{param}}`s filled; the key itself when no text has it.\n`ikas:<key>` reads the store's common texts instead (`t(\"ikas:validation.required\")`).\nTypes only: the code component build binds it to the project's own texts (this shared runtime has no `t`).",
15637
15637
  "params": [],
15638
15638
  "returnType": "string",
15639
15639
  "categories": [],
15640
15640
  "related": [],
15641
15641
  "isAsync": false,
15642
- "isClass": false
15642
+ "isClass": false,
15643
+ "parameterTypes": [
15644
+ "IkasTextKey"
15645
+ ]
15643
15646
  },
15644
15647
  {
15645
15648
  "name": "Router.navigate",
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-10-15T17:14:09.921Z",
2
+ "generatedAt": "2026-10-19T11:36:02.846Z",
3
3
  "types": [
4
4
  {
5
5
  "name": "TextElementTagTypes",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikas/code-components-mcp",
3
- "version": "1.4.0-beta.220",
3
+ "version": "1.4.0-beta.221",
4
4
  "description": "MCP server for ikas code components documentation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",