Re: [community-group] Types for CSS Keywords (#177)

> This issue is not about string values, it is about keywords

Yes, sorry, I was using "string" to mean "a piece of text".

I think many use cases can be covered by defining escape sequences (#171). That will help an author in cases like:

```json
{
  "keyword-like-font-name": {
    "$value": "Helvetica",
    "$type": "string"
  },
  "string-like-font-name": {
    "$value": "\"Helvetica\"",
    "$type": "string"
  }
}
```
(maybe `string` isn't the right word here, but I don't think `keyword` is, either. Maybe something like `raw` or `preformatted`? see #91 )

Which, when translated into css variables, would result in the following. 

```css
:root {
    --keyword-like-font-name: Helvetica;
    --string-like-font-name: "Helvetica";
}
```

If you'll forgive the pedantry, in this example,

```json
{
  "$value": "infinity"
}
```

```js
const foo = Infinity;
```

`Infinity` is a number, not a keyword (is this a good argument for having a `number` type in the spec?)

---

The cases that are not covered by the `string` type and escaping are where each platform has a different convention for referring to the exact same thing.

Your font example is the most salient one. In CSS, the keyword for "the default system font" is `system-ui`. In Swift, (please correct me if i'm wrong), you need to use the `.system()` class with a required `size` property (eg `.system(size: 34)`).

Which leads to the question: should translators be required to maintain the mapping these one-to-many keyword values in tokens to the correct platform-specific versions? Or should the spec allow for the author to provide the mapping? Or both?



-- 
GitHub Notification of comment by ilikescience
Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/177#issuecomment-1337569202 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Monday, 5 December 2022 15:23:59 UTC