# to-flutter

## Interface

```typescript
interface parser {
  name: 'to-flutter';
  output: {
    type: 'file';
    filePath: string;
  };
  options?:{
    tokenNameTemplate?: string;
  }
}
```

## Options

<table data-full-width="true"><thead><tr><th width="220">Parameter</th><th width="103">Required</th><th width="110">Type</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>tokenNameTemplate</code></td><td><code>false</code></td><td><code>string</code></td><td><code>{{path}}{{token}}{{mode}}</code></td><td>The template the parser follows to name your tokens.<br><br>You can use the <code>path</code> of your tokens, their <code>token</code> name, and their respective <code>mode</code>.</td></tr></tbody></table>

## Basic usage

{% tabs %}
{% tab title="Input" %}
{% code lineNumbers="true" %}

```json
{
  "colors": {
    "$collection": {
      "$modes": [
        "light",
        "dark"
      ]
    },
    "aliases": {
      "border": {
        "active": {
          "$type": "color",
          "$value": {
            "dark": {
              "$alias": "colors.core.label.blue-base",
              "$mode": "dark"
            },
            "light": {
              "$alias": "colors.core.label.blue-base",
              "$mode": "light"
            }
          }
        }
      }
    },
    "core": {
      "label": {
        "blue-base": {
          "$type": "color",
          "$value": {
            "dark": {
              "model": "rgb",
              "red": 96,
              "green": 168,
              "blue": 250,
              "alpha": 1
            },
            "light": {
              "model": "rgb",
              "red": 17,
              "green": 125,
              "blue": 249,
              "alpha": 1
            }
          }
        },
        "blue-lighter": {
          "$type": "color",
          "$value": {
            "dark": {
              "model": "rgb",
              "red": 41,
              "green": 52,
              "blue": 67,
              "alpha": 1
            },
            "light": {
              "model": "rgb",
              "red": 219,
              "green": 236,
              "blue": 254,
              "alpha": 1
            }
          }
        }
      }
    }
  },
  "dimensions": {
    "$collection": {
      "$modes": [
        "desktop",
        "mobile"
      ]
    },
    "base": {
      "dimension-01": {
        "$type": "dimension",
        "$value": {
          "mobile": {
            "value": 2,
            "unit": "px"
          },
          "desktop": {
            "value": 4,
            "unit": "px"
          }
        }
      },
      "dimension-02": {
        "$type": "dimension",
        "$value": {
          "mobile": {
            "value": 4,
            "unit": "px"
          },
          "desktop": {
            "value": 8,
            "unit": "px"
          }
        }
      }
    }
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Config" %}
{% code title=".specifyrc.json" lineNumbers="true" %}

```json
{
  "version": "2",
  "repository": "@organization/repository",
  // Only use the personalAccessToken when working with the CLI
  "personalAccessToken": "<your-personal-access-token>",
  "rules": [
    {
      "name": "To Flutter",
      "parsers": [
        {
          "name": "to-flutter",
          "output": {
            "type": "file",
            "filePath": "public/tokens.dart"
          }
        }
      ]
    }
  ]
}
```

{% endcode %}
{% endtab %}

{% tab title="Output" %}
{% code title="output/assets/icons/menu.tsx" lineNumbers="true" %}

```dart
// ignore_for_file: camel_case_types

import 'dart:core';
import 'package:flutter/painting.dart';
import 'package:flutter/animation.dart';

class Color_ {
  static const colorsCoreLabelBlueBaseDark = Color.fromRGBO(96, 250, 168, 1.0);
  static const colorsCoreLabelBlueBaseLight = Color.fromRGBO(17, 249, 125, 1.0);
  static const colorsAliasesBorderActiveDark = Color.fromRGBO(96, 250, 168, 1.0);
  static const colorsAliasesBorderActiveLight = Color.fromRGBO(17, 249, 125, 1.0);
  static const colorsCoreLabelBlueLighterDark = Color.fromRGBO(41, 67, 52, 1.0);
  static const colorsCoreLabelBlueLighterLight = Color.fromRGBO(219, 254, 236, 1.0);
}

class Dimension_ {
  static const dimensionsBaseDimension_01Desktop = 4;
  static const dimensionsBaseDimension_01Mobile = 2;
  static const dimensionsBaseDimension_02Desktop = 8;
  static const dimensionsBaseDimension_02Mobile = 4;
}
```

{% endcode %}
{% endtab %}
{% endtabs %}
