@handamade/psi-mcp 0.15.0 → 0.16.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.
- package/dist/psi-index.json +527 -8
- package/package.json +3 -3
package/dist/psi-index.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.16.0",
|
|
3
3
|
"themes": [
|
|
4
4
|
"light",
|
|
5
5
|
"dark",
|
|
@@ -1048,7 +1048,7 @@
|
|
|
1048
1048
|
"type": "((sort: TableSortState) => void)",
|
|
1049
1049
|
"required": false,
|
|
1050
1050
|
"default": null,
|
|
1051
|
-
"description": "Called
|
|
1051
|
+
"description": "Called with the **next** sort state, already toggled — store it as given\nand do not toggle again. A fresh column arrives `\"asc\"`; an active `\"asc\"`\ncolumn emits `\"desc\"`; an active `\"desc\"` column emits `\"asc\"`.\n\nOptional in the type because `sortable` may be false; a discriminated union\nexpressing the real contract does not survive docgen's flat prop\nextraction, which would strip these props from the manifest entirely (D62)."
|
|
1052
1052
|
},
|
|
1053
1053
|
{
|
|
1054
1054
|
"name": "selectable",
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"order": 1
|
|
1107
1107
|
}
|
|
1108
1108
|
],
|
|
1109
|
-
"doc": "<!-- Generated by emit-docs.ts — do not edit. -->\n# Table\n\nData table on native table semantics. Holds no state: sorting, selection and pagination are the consumer's (D62, extending D50/D53).\n\n## Props\n\n| Prop | Type | Default | Required | Description |\n|---|---|---|---|---|\n| `size` | `32 \\| 40 \\| 48` | 40 | no | Row height in px. |\n| `stickyHeader` | `boolean` | — | no | Pins the header while the body scrolls. |\n| `sortable` | `boolean` | false | no | Enables the sort affordance on header cells that declare a `sortKey`. |\n| `sort` | `TableSortState \\| null` | — | no | Controlled sort state; `null` when nothing is sorted. |\n| `onSortChange` | `((sort: TableSortState) => void)` | — | no | Called
|
|
1109
|
+
"doc": "<!-- Generated by emit-docs.ts — do not edit. -->\n# Table\n\nData table on native table semantics. Holds no state: sorting, selection and pagination are the consumer's (D62, extending D50/D53).\n\n## Props\n\n| Prop | Type | Default | Required | Description |\n|---|---|---|---|---|\n| `size` | `32 \\| 40 \\| 48` | 40 | no | Row height in px. |\n| `stickyHeader` | `boolean` | — | no | Pins the header while the body scrolls. |\n| `sortable` | `boolean` | false | no | Enables the sort affordance on header cells that declare a `sortKey`. |\n| `sort` | `TableSortState \\| null` | — | no | Controlled sort state; `null` when nothing is sorted. |\n| `onSortChange` | `((sort: TableSortState) => void)` | — | no | Called with the **next** sort state, already toggled — store it as given and do not toggle again. A fresh column arrives `\"asc\"`; an active `\"asc\"` column emits `\"desc\"`; an active `\"desc\"` column emits `\"asc\"`. Optional in the type because `sortable` may be false; a discriminated union expressing the real contract does not survive docgen's flat prop extraction, which would strip these props from the manifest entirely (D62). |\n| `selectable` | `boolean` | false | no | Renders the row-selection checkbox column. |\n| `selected` | `ReadonlySet<string>` | new Set<string>() | no | Controlled selection, keyed by each `TableRow`'s `rowId`. |\n| `onSelectionChange` | `((selected: ReadonlySet<string>) => void)` | — | no | Called with the next selection. See `onSortChange` on why it is optional. |\n| `children` | `ReactNode` | — | yes | TableHead and TableBody. |\n| `className` | `string` | — | no | Additional CSS class name(s) merged onto the component's root element. |\n| `ref` | `Ref<HTMLTableElement>` | — | no | Forwarded ref to the underlying `<table>` element. |\n\n## Theming\n\nOverride `--psi-table-*` custom properties at any scope; interactive states derive automatically (L - 0.04 hover, L - 0.08 active).\n\n\n\n## Rules\n\n- One accent per visual group; everything else neutral or ghost.\n- danger only for actions with real consequences.\n- Sizes are px numbers (24|32|40|48), never S/M/L.\n- Typography tokens are --psi-text-{size}-{lineHeight}-{weight}.\n- Override component tokens (--psi-{component}-*), not semantic tokens, for one-off theming.\n- --psi-button-font overrides button typography across all sizes (documented D34 override; ember → mono).\n- Wrap labeled form controls in Field — label association, description/error line, aria-describedby and aria-invalid come wired; don't hand-roll label+message rows.\n- Field is for a control with a *visible* label. A toolbar filter control named by aria-label or placeholder takes neither a Field nor a hand-rolled label row — compare filter-toolbar (no labels) with table-pagination (\"Rows per page\" visible, so Field).\n- Use Dialog for blocking modal flows — title/footer slots, dismissible gate; danger stays on the footer Buttons, one accent per group.\n"
|
|
1110
1110
|
},
|
|
1111
1111
|
{
|
|
1112
1112
|
"name": "TableHead",
|
|
@@ -1262,7 +1262,7 @@
|
|
|
1262
1262
|
"type": "number",
|
|
1263
1263
|
"required": true,
|
|
1264
1264
|
"default": null,
|
|
1265
|
-
"description": "Current page, 1-based."
|
|
1265
|
+
"description": "Current page, 1-based. A value outside `[1, pageCount]` (including\nnon-finite values like `NaN`) is clamped for rendering and logs a\n`console.warn` in development. `pageCount < 1` renders no page buttons."
|
|
1266
1266
|
},
|
|
1267
1267
|
{
|
|
1268
1268
|
"name": "pageCount",
|
|
@@ -1301,7 +1301,7 @@
|
|
|
1301
1301
|
}
|
|
1302
1302
|
],
|
|
1303
1303
|
"slots": [],
|
|
1304
|
-
"doc": "<!-- Generated by emit-docs.ts — do not edit. -->\n# Pagination\n\nNumbered pager with ellipsis truncation (D63). Standalone rather than a Table family member: `table-pagination` composes it as a Toolbar sibling of the page-size Select.\n\n## Props\n\n| Prop | Type | Default | Required | Description |\n|---|---|---|---|---|\n| `page` | `number` | — | yes | Current page, 1-based. |\n| `pageCount` | `number` | — | yes | Total number of pages. |\n| `onPageChange` | `(page: number) => void` | — | yes | Called with the requested page. Required — unlike Table's `onSortChange`/ `onSelectionChange`, which are optional because `sortable`/`selectable` gate whether they're meaningful, `Pagination` has no such gating boolean: the prop is unconditionally meaningful, so a `Pagination` without it is a dead control (final review finding, D62). |\n| `siblingCount` | `number` | 1 | no | Pages shown either side of the current one before truncating. |\n| `aria-label` | `string` | Pagination | no | Accessible name for the nav landmark. |\n| `className` | `string` | — | no | Additional CSS class name(s) merged onto the component's root element. |\n\n## Theming\n\nThis component has no `--psi-pagination-*` tokens — its styling binds scale tokens only, so there is nothing component-scoped to override. Theme changes reach it through the semantic tokens of its children and surroundings.\n\n\n\n## Rules\n\n- One accent per visual group; everything else neutral or ghost.\n- danger only for actions with real consequences.\n- Sizes are px numbers (24|32|40|48), never S/M/L.\n- Typography tokens are --psi-text-{size}-{lineHeight}-{weight}.\n- Override component tokens (--psi-{component}-*), not semantic tokens, for one-off theming.\n- --psi-button-font overrides button typography across all sizes (documented D34 override; ember → mono).\n- Wrap labeled form controls in Field — label association, description/error line, aria-describedby and aria-invalid come wired; don't hand-roll label+message rows.\n- Field is for a control with a *visible* label. A toolbar filter control named by aria-label or placeholder takes neither a Field nor a hand-rolled label row — compare filter-toolbar (no labels) with table-pagination (\"Rows per page\" visible, so Field).\n- Use Dialog for blocking modal flows — title/footer slots, dismissible gate; danger stays on the footer Buttons, one accent per group.\n"
|
|
1304
|
+
"doc": "<!-- Generated by emit-docs.ts — do not edit. -->\n# Pagination\n\nNumbered pager with ellipsis truncation (D63). Standalone rather than a Table family member: `table-pagination` composes it as a Toolbar sibling of the page-size Select.\n\n## Props\n\n| Prop | Type | Default | Required | Description |\n|---|---|---|---|---|\n| `page` | `number` | — | yes | Current page, 1-based. A value outside `[1, pageCount]` (including non-finite values like `NaN`) is clamped for rendering and logs a `console.warn` in development. `pageCount < 1` renders no page buttons. |\n| `pageCount` | `number` | — | yes | Total number of pages. |\n| `onPageChange` | `(page: number) => void` | — | yes | Called with the requested page. Required — unlike Table's `onSortChange`/ `onSelectionChange`, which are optional because `sortable`/`selectable` gate whether they're meaningful, `Pagination` has no such gating boolean: the prop is unconditionally meaningful, so a `Pagination` without it is a dead control (final review finding, D62). |\n| `siblingCount` | `number` | 1 | no | Pages shown either side of the current one before truncating. |\n| `aria-label` | `string` | Pagination | no | Accessible name for the nav landmark. |\n| `className` | `string` | — | no | Additional CSS class name(s) merged onto the component's root element. |\n\n## Theming\n\nThis component has no `--psi-pagination-*` tokens — its styling binds scale tokens only, so there is nothing component-scoped to override. Theme changes reach it through the semantic tokens of its children and surroundings.\n\n\n\n## Rules\n\n- One accent per visual group; everything else neutral or ghost.\n- danger only for actions with real consequences.\n- Sizes are px numbers (24|32|40|48), never S/M/L.\n- Typography tokens are --psi-text-{size}-{lineHeight}-{weight}.\n- Override component tokens (--psi-{component}-*), not semantic tokens, for one-off theming.\n- --psi-button-font overrides button typography across all sizes (documented D34 override; ember → mono).\n- Wrap labeled form controls in Field — label association, description/error line, aria-describedby and aria-invalid come wired; don't hand-roll label+message rows.\n- Field is for a control with a *visible* label. A toolbar filter control named by aria-label or placeholder takes neither a Field nor a hand-rolled label row — compare filter-toolbar (no labels) with table-pagination (\"Rows per page\" visible, so Field).\n- Use Dialog for blocking modal flows — title/footer slots, dismissible gate; danger stays on the footer Buttons, one accent per group.\n"
|
|
1305
1305
|
},
|
|
1306
1306
|
{
|
|
1307
1307
|
"name": "Toast",
|
|
@@ -3293,6 +3293,10 @@
|
|
|
3293
3293
|
"numeric": true
|
|
3294
3294
|
},
|
|
3295
3295
|
"content": "amount-label"
|
|
3296
|
+
},
|
|
3297
|
+
{
|
|
3298
|
+
"component": "TableHeaderCell",
|
|
3299
|
+
"content": "actions-label"
|
|
3296
3300
|
}
|
|
3297
3301
|
]
|
|
3298
3302
|
}
|
|
@@ -3325,6 +3329,10 @@
|
|
|
3325
3329
|
"numeric": true
|
|
3326
3330
|
},
|
|
3327
3331
|
"content": "amount-cell"
|
|
3332
|
+
},
|
|
3333
|
+
{
|
|
3334
|
+
"component": "TableCell",
|
|
3335
|
+
"content": "actions-cell"
|
|
3328
3336
|
}
|
|
3329
3337
|
]
|
|
3330
3338
|
}
|
|
@@ -3340,13 +3348,15 @@
|
|
|
3340
3348
|
"date-label": "Date",
|
|
3341
3349
|
"payee-label": "Payee",
|
|
3342
3350
|
"amount-label": "Amount",
|
|
3351
|
+
"actions-label": "[a visible \"Actions\" header — the column needs an accessible name, so never an empty th]",
|
|
3343
3352
|
"date-cell": "[one row per record]",
|
|
3344
|
-
"payee-cell": "[
|
|
3345
|
-
"amount-cell": "[numeric columns align right and use tabular figures]"
|
|
3353
|
+
"payee-cell": "[the record's payee]",
|
|
3354
|
+
"amount-cell": "[numeric columns align right and use tabular figures]",
|
|
3355
|
+
"actions-cell": "[the row-actions menu — compose it from the row-actions pattern]"
|
|
3346
3356
|
},
|
|
3347
3357
|
"gaps": [],
|
|
3348
3358
|
"blocked": false,
|
|
3349
|
-
"preset": "<Table\n selectable={true}\n sortable={true}\n>\n <TableHead>\n <TableRow>\n <TableHeaderCell sortKey=\"date\">Date</TableHeaderCell>\n <TableHeaderCell sortKey=\"payee\">Payee</TableHeaderCell>\n <TableHeaderCell numeric={true} sortKey=\"amount\">Amount</TableHeaderCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow\n rowId=\"row-id\"\n >\n <TableCell>[one row per record]</TableCell>\n <TableCell>[
|
|
3359
|
+
"preset": "<Table\n selectable={true}\n sortable={true}\n>\n <TableHead>\n <TableRow>\n <TableHeaderCell sortKey=\"date\">Date</TableHeaderCell>\n <TableHeaderCell sortKey=\"payee\">Payee</TableHeaderCell>\n <TableHeaderCell numeric={true} sortKey=\"amount\">Amount</TableHeaderCell>\n <TableHeaderCell>[a visible \"Actions\" header — the column needs an accessible name, so never an empty th]</TableHeaderCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow\n rowId=\"row-id\"\n >\n <TableCell>[one row per record]</TableCell>\n <TableCell>[the record's payee]</TableCell>\n <TableCell numeric={true}>[numeric columns align right and use tabular figures]</TableCell>\n <TableCell>[the row-actions menu — compose it from the row-actions pattern]</TableCell>\n </TableRow>\n </TableBody>\n</Table>\n"
|
|
3350
3360
|
},
|
|
3351
3361
|
{
|
|
3352
3362
|
"id": "date-range-filter",
|
|
@@ -4181,6 +4191,515 @@
|
|
|
4181
4191
|
"iconInsetLimits": "The selector matches on element order, and :first-child ignores text nodes. Two consequences. (1) An icon wrapped in a <span> never matches — fails safe, no inset; set --psi-button-{size}-padding-inline-icon yourself. (2) A TRAILING icon (<Button>Next<IconChevronRight /></Button>) makes the svg the first ELEMENT child, so the rule fires and narrows the start (text) side while the icon keeps full padding — the inverse of the intent. CSS cannot tell the two apart without a DOM signal. Put the icon first, or override --psi-button-{size}-padding-inline-icon to match --psi-button-{size}-padding-inline to disable the inset.",
|
|
4182
4192
|
"radius": "Control radius is size-invariant (D56) — it does NOT ride the size ramp, because border-radius sits on each component's base rule and all four sizes resolve to radius-8. One dial, --psi-control-radius, is the layer to override, aliased per component: --psi-button-radius (Button, and IconButton via the same token), --psi-input-radius, --psi-select-radius, --psi-checkbox-box-radius, and --psi-tooltip-radius. Checkbox and Tooltip cap themselves with min(var(--psi-control-radius), var(--psi-radius-4)) and min(…, var(--psi-radius-6)) respectively so neither over-rounds a small object — but the published radius scale's floor is radius-4, so Checkbox's cap is a no-op for every on-scale value a theme can set; it only bites at an off-scale value like 0px. Tooltip's higher ceiling does track a sharper theme, down to radius-4. Tag and Switch stay --psi-radius-full: pill-ness is component identity, not theme expression. A theme retunes every control's shape by setting --psi-control-radius once. Psi now has two radius dials, not one: --psi-control-radius (here, for interactive controls) and --psi-surface-radius (for elevated surfaces — Dialog, Panel, Menu). --psi-card-radius sits on neither dial, so a theme that retunes controls or surfaces leaves Card at its own default of radius-8."
|
|
4183
4193
|
},
|
|
4194
|
+
"utilities": {
|
|
4195
|
+
"note": "Every utility class shipped in utilities.css, generated from the same source as the CSS (D79). Utilities set one property each and create no layout context: .psi-gap-* sets gap only, so pair it with display:flex or grid yourself. Import @handamade/psi-tokens/utilities.css — it is required, not optional; .psi-container and the reduced-motion duration zeroing live there.",
|
|
4196
|
+
"families": [
|
|
4197
|
+
{
|
|
4198
|
+
"prefix": "psi-gap-*",
|
|
4199
|
+
"property": "gap",
|
|
4200
|
+
"scale": [
|
|
4201
|
+
0,
|
|
4202
|
+
2,
|
|
4203
|
+
4,
|
|
4204
|
+
6,
|
|
4205
|
+
8,
|
|
4206
|
+
12,
|
|
4207
|
+
16,
|
|
4208
|
+
20,
|
|
4209
|
+
24,
|
|
4210
|
+
32,
|
|
4211
|
+
40,
|
|
4212
|
+
48,
|
|
4213
|
+
64,
|
|
4214
|
+
80,
|
|
4215
|
+
96,
|
|
4216
|
+
120,
|
|
4217
|
+
144
|
|
4218
|
+
],
|
|
4219
|
+
"classes": [
|
|
4220
|
+
"psi-gap-0",
|
|
4221
|
+
"psi-gap-2",
|
|
4222
|
+
"psi-gap-4",
|
|
4223
|
+
"psi-gap-6",
|
|
4224
|
+
"psi-gap-8",
|
|
4225
|
+
"psi-gap-12",
|
|
4226
|
+
"psi-gap-16",
|
|
4227
|
+
"psi-gap-20",
|
|
4228
|
+
"psi-gap-24",
|
|
4229
|
+
"psi-gap-32",
|
|
4230
|
+
"psi-gap-40",
|
|
4231
|
+
"psi-gap-48",
|
|
4232
|
+
"psi-gap-64",
|
|
4233
|
+
"psi-gap-80",
|
|
4234
|
+
"psi-gap-96",
|
|
4235
|
+
"psi-gap-120",
|
|
4236
|
+
"psi-gap-144"
|
|
4237
|
+
]
|
|
4238
|
+
},
|
|
4239
|
+
{
|
|
4240
|
+
"prefix": "psi-p-*",
|
|
4241
|
+
"property": "padding",
|
|
4242
|
+
"scale": [
|
|
4243
|
+
0,
|
|
4244
|
+
2,
|
|
4245
|
+
4,
|
|
4246
|
+
6,
|
|
4247
|
+
8,
|
|
4248
|
+
12,
|
|
4249
|
+
16,
|
|
4250
|
+
20,
|
|
4251
|
+
24,
|
|
4252
|
+
32,
|
|
4253
|
+
40,
|
|
4254
|
+
48,
|
|
4255
|
+
64,
|
|
4256
|
+
80,
|
|
4257
|
+
96,
|
|
4258
|
+
120,
|
|
4259
|
+
144
|
|
4260
|
+
],
|
|
4261
|
+
"classes": [
|
|
4262
|
+
"psi-p-0",
|
|
4263
|
+
"psi-p-2",
|
|
4264
|
+
"psi-p-4",
|
|
4265
|
+
"psi-p-6",
|
|
4266
|
+
"psi-p-8",
|
|
4267
|
+
"psi-p-12",
|
|
4268
|
+
"psi-p-16",
|
|
4269
|
+
"psi-p-20",
|
|
4270
|
+
"psi-p-24",
|
|
4271
|
+
"psi-p-32",
|
|
4272
|
+
"psi-p-40",
|
|
4273
|
+
"psi-p-48",
|
|
4274
|
+
"psi-p-64",
|
|
4275
|
+
"psi-p-80",
|
|
4276
|
+
"psi-p-96",
|
|
4277
|
+
"psi-p-120",
|
|
4278
|
+
"psi-p-144"
|
|
4279
|
+
]
|
|
4280
|
+
},
|
|
4281
|
+
{
|
|
4282
|
+
"prefix": "psi-px-*",
|
|
4283
|
+
"property": "padding-inline",
|
|
4284
|
+
"scale": [
|
|
4285
|
+
0,
|
|
4286
|
+
2,
|
|
4287
|
+
4,
|
|
4288
|
+
6,
|
|
4289
|
+
8,
|
|
4290
|
+
12,
|
|
4291
|
+
16,
|
|
4292
|
+
20,
|
|
4293
|
+
24,
|
|
4294
|
+
32,
|
|
4295
|
+
40,
|
|
4296
|
+
48,
|
|
4297
|
+
64,
|
|
4298
|
+
80,
|
|
4299
|
+
96,
|
|
4300
|
+
120,
|
|
4301
|
+
144
|
|
4302
|
+
],
|
|
4303
|
+
"classes": [
|
|
4304
|
+
"psi-px-0",
|
|
4305
|
+
"psi-px-2",
|
|
4306
|
+
"psi-px-4",
|
|
4307
|
+
"psi-px-6",
|
|
4308
|
+
"psi-px-8",
|
|
4309
|
+
"psi-px-12",
|
|
4310
|
+
"psi-px-16",
|
|
4311
|
+
"psi-px-20",
|
|
4312
|
+
"psi-px-24",
|
|
4313
|
+
"psi-px-32",
|
|
4314
|
+
"psi-px-40",
|
|
4315
|
+
"psi-px-48",
|
|
4316
|
+
"psi-px-64",
|
|
4317
|
+
"psi-px-80",
|
|
4318
|
+
"psi-px-96",
|
|
4319
|
+
"psi-px-120",
|
|
4320
|
+
"psi-px-144"
|
|
4321
|
+
]
|
|
4322
|
+
},
|
|
4323
|
+
{
|
|
4324
|
+
"prefix": "psi-py-*",
|
|
4325
|
+
"property": "padding-block",
|
|
4326
|
+
"scale": [
|
|
4327
|
+
0,
|
|
4328
|
+
2,
|
|
4329
|
+
4,
|
|
4330
|
+
6,
|
|
4331
|
+
8,
|
|
4332
|
+
12,
|
|
4333
|
+
16,
|
|
4334
|
+
20,
|
|
4335
|
+
24,
|
|
4336
|
+
32,
|
|
4337
|
+
40,
|
|
4338
|
+
48,
|
|
4339
|
+
64,
|
|
4340
|
+
80,
|
|
4341
|
+
96,
|
|
4342
|
+
120,
|
|
4343
|
+
144
|
|
4344
|
+
],
|
|
4345
|
+
"classes": [
|
|
4346
|
+
"psi-py-0",
|
|
4347
|
+
"psi-py-2",
|
|
4348
|
+
"psi-py-4",
|
|
4349
|
+
"psi-py-6",
|
|
4350
|
+
"psi-py-8",
|
|
4351
|
+
"psi-py-12",
|
|
4352
|
+
"psi-py-16",
|
|
4353
|
+
"psi-py-20",
|
|
4354
|
+
"psi-py-24",
|
|
4355
|
+
"psi-py-32",
|
|
4356
|
+
"psi-py-40",
|
|
4357
|
+
"psi-py-48",
|
|
4358
|
+
"psi-py-64",
|
|
4359
|
+
"psi-py-80",
|
|
4360
|
+
"psi-py-96",
|
|
4361
|
+
"psi-py-120",
|
|
4362
|
+
"psi-py-144"
|
|
4363
|
+
]
|
|
4364
|
+
},
|
|
4365
|
+
{
|
|
4366
|
+
"prefix": "psi-m-*",
|
|
4367
|
+
"property": "margin",
|
|
4368
|
+
"scale": [
|
|
4369
|
+
0,
|
|
4370
|
+
2,
|
|
4371
|
+
4,
|
|
4372
|
+
6,
|
|
4373
|
+
8,
|
|
4374
|
+
12,
|
|
4375
|
+
16,
|
|
4376
|
+
20,
|
|
4377
|
+
24,
|
|
4378
|
+
32,
|
|
4379
|
+
40,
|
|
4380
|
+
48,
|
|
4381
|
+
64,
|
|
4382
|
+
80,
|
|
4383
|
+
96,
|
|
4384
|
+
120,
|
|
4385
|
+
144
|
|
4386
|
+
],
|
|
4387
|
+
"classes": [
|
|
4388
|
+
"psi-m-0",
|
|
4389
|
+
"psi-m-2",
|
|
4390
|
+
"psi-m-4",
|
|
4391
|
+
"psi-m-6",
|
|
4392
|
+
"psi-m-8",
|
|
4393
|
+
"psi-m-12",
|
|
4394
|
+
"psi-m-16",
|
|
4395
|
+
"psi-m-20",
|
|
4396
|
+
"psi-m-24",
|
|
4397
|
+
"psi-m-32",
|
|
4398
|
+
"psi-m-40",
|
|
4399
|
+
"psi-m-48",
|
|
4400
|
+
"psi-m-64",
|
|
4401
|
+
"psi-m-80",
|
|
4402
|
+
"psi-m-96",
|
|
4403
|
+
"psi-m-120",
|
|
4404
|
+
"psi-m-144"
|
|
4405
|
+
]
|
|
4406
|
+
},
|
|
4407
|
+
{
|
|
4408
|
+
"prefix": "psi-mx-*",
|
|
4409
|
+
"property": "margin-inline",
|
|
4410
|
+
"scale": [
|
|
4411
|
+
0,
|
|
4412
|
+
2,
|
|
4413
|
+
4,
|
|
4414
|
+
6,
|
|
4415
|
+
8,
|
|
4416
|
+
12,
|
|
4417
|
+
16,
|
|
4418
|
+
20,
|
|
4419
|
+
24,
|
|
4420
|
+
32,
|
|
4421
|
+
40,
|
|
4422
|
+
48,
|
|
4423
|
+
64,
|
|
4424
|
+
80,
|
|
4425
|
+
96,
|
|
4426
|
+
120,
|
|
4427
|
+
144
|
|
4428
|
+
],
|
|
4429
|
+
"classes": [
|
|
4430
|
+
"psi-mx-0",
|
|
4431
|
+
"psi-mx-2",
|
|
4432
|
+
"psi-mx-4",
|
|
4433
|
+
"psi-mx-6",
|
|
4434
|
+
"psi-mx-8",
|
|
4435
|
+
"psi-mx-12",
|
|
4436
|
+
"psi-mx-16",
|
|
4437
|
+
"psi-mx-20",
|
|
4438
|
+
"psi-mx-24",
|
|
4439
|
+
"psi-mx-32",
|
|
4440
|
+
"psi-mx-40",
|
|
4441
|
+
"psi-mx-48",
|
|
4442
|
+
"psi-mx-64",
|
|
4443
|
+
"psi-mx-80",
|
|
4444
|
+
"psi-mx-96",
|
|
4445
|
+
"psi-mx-120",
|
|
4446
|
+
"psi-mx-144"
|
|
4447
|
+
]
|
|
4448
|
+
},
|
|
4449
|
+
{
|
|
4450
|
+
"prefix": "psi-my-*",
|
|
4451
|
+
"property": "margin-block",
|
|
4452
|
+
"scale": [
|
|
4453
|
+
0,
|
|
4454
|
+
2,
|
|
4455
|
+
4,
|
|
4456
|
+
6,
|
|
4457
|
+
8,
|
|
4458
|
+
12,
|
|
4459
|
+
16,
|
|
4460
|
+
20,
|
|
4461
|
+
24,
|
|
4462
|
+
32,
|
|
4463
|
+
40,
|
|
4464
|
+
48,
|
|
4465
|
+
64,
|
|
4466
|
+
80,
|
|
4467
|
+
96,
|
|
4468
|
+
120,
|
|
4469
|
+
144
|
|
4470
|
+
],
|
|
4471
|
+
"classes": [
|
|
4472
|
+
"psi-my-0",
|
|
4473
|
+
"psi-my-2",
|
|
4474
|
+
"psi-my-4",
|
|
4475
|
+
"psi-my-6",
|
|
4476
|
+
"psi-my-8",
|
|
4477
|
+
"psi-my-12",
|
|
4478
|
+
"psi-my-16",
|
|
4479
|
+
"psi-my-20",
|
|
4480
|
+
"psi-my-24",
|
|
4481
|
+
"psi-my-32",
|
|
4482
|
+
"psi-my-40",
|
|
4483
|
+
"psi-my-48",
|
|
4484
|
+
"psi-my-64",
|
|
4485
|
+
"psi-my-80",
|
|
4486
|
+
"psi-my-96",
|
|
4487
|
+
"psi-my-120",
|
|
4488
|
+
"psi-my-144"
|
|
4489
|
+
]
|
|
4490
|
+
},
|
|
4491
|
+
{
|
|
4492
|
+
"prefix": "psi-text-*",
|
|
4493
|
+
"property": "font",
|
|
4494
|
+
"scale": null,
|
|
4495
|
+
"classes": [
|
|
4496
|
+
"psi-text-12-16-regular",
|
|
4497
|
+
"psi-text-12-16-medium",
|
|
4498
|
+
"psi-text-14-20-regular",
|
|
4499
|
+
"psi-text-14-20-medium",
|
|
4500
|
+
"psi-text-16-20-regular",
|
|
4501
|
+
"psi-text-16-24-regular",
|
|
4502
|
+
"psi-text-16-24-medium",
|
|
4503
|
+
"psi-text-18-28-regular",
|
|
4504
|
+
"psi-text-18-28-medium",
|
|
4505
|
+
"psi-text-20-28-semibold",
|
|
4506
|
+
"psi-text-24-32-medium",
|
|
4507
|
+
"psi-text-30-36-bold",
|
|
4508
|
+
"psi-text-serif-18-28-regular",
|
|
4509
|
+
"psi-text-serif-20-30-regular",
|
|
4510
|
+
"psi-text-serif-20-32-regular",
|
|
4511
|
+
"psi-text-serif-24-36-regular",
|
|
4512
|
+
"psi-text-serif-28-40-regular",
|
|
4513
|
+
"psi-text-mono-13-20-regular",
|
|
4514
|
+
"psi-text-mono-14-20-regular",
|
|
4515
|
+
"psi-text-mono-15-24-regular",
|
|
4516
|
+
"psi-text-mono-15-24-medium"
|
|
4517
|
+
]
|
|
4518
|
+
},
|
|
4519
|
+
{
|
|
4520
|
+
"prefix": "psi-display-*",
|
|
4521
|
+
"property": "font, letter-spacing, text-transform",
|
|
4522
|
+
"scale": null,
|
|
4523
|
+
"classes": [
|
|
4524
|
+
"psi-display-56-128-black",
|
|
4525
|
+
"psi-display-36-64-black",
|
|
4526
|
+
"psi-display-32-32-extrabold"
|
|
4527
|
+
]
|
|
4528
|
+
},
|
|
4529
|
+
{
|
|
4530
|
+
"prefix": "psi-tabular",
|
|
4531
|
+
"property": "font-variant-numeric",
|
|
4532
|
+
"scale": null,
|
|
4533
|
+
"classes": [
|
|
4534
|
+
"psi-tabular"
|
|
4535
|
+
]
|
|
4536
|
+
},
|
|
4537
|
+
{
|
|
4538
|
+
"prefix": "psi-container",
|
|
4539
|
+
"property": "max-width, margin-inline, padding-inline",
|
|
4540
|
+
"scale": null,
|
|
4541
|
+
"classes": [
|
|
4542
|
+
"psi-container"
|
|
4543
|
+
]
|
|
4544
|
+
},
|
|
4545
|
+
{
|
|
4546
|
+
"prefix": "psi-media-tint",
|
|
4547
|
+
"property": "filter",
|
|
4548
|
+
"scale": null,
|
|
4549
|
+
"classes": [
|
|
4550
|
+
"psi-media-tint"
|
|
4551
|
+
]
|
|
4552
|
+
}
|
|
4553
|
+
],
|
|
4554
|
+
"classes": [
|
|
4555
|
+
"psi-container",
|
|
4556
|
+
"psi-display-32-32-extrabold",
|
|
4557
|
+
"psi-display-36-64-black",
|
|
4558
|
+
"psi-display-56-128-black",
|
|
4559
|
+
"psi-gap-0",
|
|
4560
|
+
"psi-gap-12",
|
|
4561
|
+
"psi-gap-120",
|
|
4562
|
+
"psi-gap-144",
|
|
4563
|
+
"psi-gap-16",
|
|
4564
|
+
"psi-gap-2",
|
|
4565
|
+
"psi-gap-20",
|
|
4566
|
+
"psi-gap-24",
|
|
4567
|
+
"psi-gap-32",
|
|
4568
|
+
"psi-gap-4",
|
|
4569
|
+
"psi-gap-40",
|
|
4570
|
+
"psi-gap-48",
|
|
4571
|
+
"psi-gap-6",
|
|
4572
|
+
"psi-gap-64",
|
|
4573
|
+
"psi-gap-8",
|
|
4574
|
+
"psi-gap-80",
|
|
4575
|
+
"psi-gap-96",
|
|
4576
|
+
"psi-m-0",
|
|
4577
|
+
"psi-m-12",
|
|
4578
|
+
"psi-m-120",
|
|
4579
|
+
"psi-m-144",
|
|
4580
|
+
"psi-m-16",
|
|
4581
|
+
"psi-m-2",
|
|
4582
|
+
"psi-m-20",
|
|
4583
|
+
"psi-m-24",
|
|
4584
|
+
"psi-m-32",
|
|
4585
|
+
"psi-m-4",
|
|
4586
|
+
"psi-m-40",
|
|
4587
|
+
"psi-m-48",
|
|
4588
|
+
"psi-m-6",
|
|
4589
|
+
"psi-m-64",
|
|
4590
|
+
"psi-m-8",
|
|
4591
|
+
"psi-m-80",
|
|
4592
|
+
"psi-m-96",
|
|
4593
|
+
"psi-media-tint",
|
|
4594
|
+
"psi-mx-0",
|
|
4595
|
+
"psi-mx-12",
|
|
4596
|
+
"psi-mx-120",
|
|
4597
|
+
"psi-mx-144",
|
|
4598
|
+
"psi-mx-16",
|
|
4599
|
+
"psi-mx-2",
|
|
4600
|
+
"psi-mx-20",
|
|
4601
|
+
"psi-mx-24",
|
|
4602
|
+
"psi-mx-32",
|
|
4603
|
+
"psi-mx-4",
|
|
4604
|
+
"psi-mx-40",
|
|
4605
|
+
"psi-mx-48",
|
|
4606
|
+
"psi-mx-6",
|
|
4607
|
+
"psi-mx-64",
|
|
4608
|
+
"psi-mx-8",
|
|
4609
|
+
"psi-mx-80",
|
|
4610
|
+
"psi-mx-96",
|
|
4611
|
+
"psi-my-0",
|
|
4612
|
+
"psi-my-12",
|
|
4613
|
+
"psi-my-120",
|
|
4614
|
+
"psi-my-144",
|
|
4615
|
+
"psi-my-16",
|
|
4616
|
+
"psi-my-2",
|
|
4617
|
+
"psi-my-20",
|
|
4618
|
+
"psi-my-24",
|
|
4619
|
+
"psi-my-32",
|
|
4620
|
+
"psi-my-4",
|
|
4621
|
+
"psi-my-40",
|
|
4622
|
+
"psi-my-48",
|
|
4623
|
+
"psi-my-6",
|
|
4624
|
+
"psi-my-64",
|
|
4625
|
+
"psi-my-8",
|
|
4626
|
+
"psi-my-80",
|
|
4627
|
+
"psi-my-96",
|
|
4628
|
+
"psi-p-0",
|
|
4629
|
+
"psi-p-12",
|
|
4630
|
+
"psi-p-120",
|
|
4631
|
+
"psi-p-144",
|
|
4632
|
+
"psi-p-16",
|
|
4633
|
+
"psi-p-2",
|
|
4634
|
+
"psi-p-20",
|
|
4635
|
+
"psi-p-24",
|
|
4636
|
+
"psi-p-32",
|
|
4637
|
+
"psi-p-4",
|
|
4638
|
+
"psi-p-40",
|
|
4639
|
+
"psi-p-48",
|
|
4640
|
+
"psi-p-6",
|
|
4641
|
+
"psi-p-64",
|
|
4642
|
+
"psi-p-8",
|
|
4643
|
+
"psi-p-80",
|
|
4644
|
+
"psi-p-96",
|
|
4645
|
+
"psi-px-0",
|
|
4646
|
+
"psi-px-12",
|
|
4647
|
+
"psi-px-120",
|
|
4648
|
+
"psi-px-144",
|
|
4649
|
+
"psi-px-16",
|
|
4650
|
+
"psi-px-2",
|
|
4651
|
+
"psi-px-20",
|
|
4652
|
+
"psi-px-24",
|
|
4653
|
+
"psi-px-32",
|
|
4654
|
+
"psi-px-4",
|
|
4655
|
+
"psi-px-40",
|
|
4656
|
+
"psi-px-48",
|
|
4657
|
+
"psi-px-6",
|
|
4658
|
+
"psi-px-64",
|
|
4659
|
+
"psi-px-8",
|
|
4660
|
+
"psi-px-80",
|
|
4661
|
+
"psi-px-96",
|
|
4662
|
+
"psi-py-0",
|
|
4663
|
+
"psi-py-12",
|
|
4664
|
+
"psi-py-120",
|
|
4665
|
+
"psi-py-144",
|
|
4666
|
+
"psi-py-16",
|
|
4667
|
+
"psi-py-2",
|
|
4668
|
+
"psi-py-20",
|
|
4669
|
+
"psi-py-24",
|
|
4670
|
+
"psi-py-32",
|
|
4671
|
+
"psi-py-4",
|
|
4672
|
+
"psi-py-40",
|
|
4673
|
+
"psi-py-48",
|
|
4674
|
+
"psi-py-6",
|
|
4675
|
+
"psi-py-64",
|
|
4676
|
+
"psi-py-8",
|
|
4677
|
+
"psi-py-80",
|
|
4678
|
+
"psi-py-96",
|
|
4679
|
+
"psi-tabular",
|
|
4680
|
+
"psi-text-12-16-medium",
|
|
4681
|
+
"psi-text-12-16-regular",
|
|
4682
|
+
"psi-text-14-20-medium",
|
|
4683
|
+
"psi-text-14-20-regular",
|
|
4684
|
+
"psi-text-16-20-regular",
|
|
4685
|
+
"psi-text-16-24-medium",
|
|
4686
|
+
"psi-text-16-24-regular",
|
|
4687
|
+
"psi-text-18-28-medium",
|
|
4688
|
+
"psi-text-18-28-regular",
|
|
4689
|
+
"psi-text-20-28-semibold",
|
|
4690
|
+
"psi-text-24-32-medium",
|
|
4691
|
+
"psi-text-30-36-bold",
|
|
4692
|
+
"psi-text-mono-13-20-regular",
|
|
4693
|
+
"psi-text-mono-14-20-regular",
|
|
4694
|
+
"psi-text-mono-15-24-medium",
|
|
4695
|
+
"psi-text-mono-15-24-regular",
|
|
4696
|
+
"psi-text-serif-18-28-regular",
|
|
4697
|
+
"psi-text-serif-20-30-regular",
|
|
4698
|
+
"psi-text-serif-20-32-regular",
|
|
4699
|
+
"psi-text-serif-24-36-regular",
|
|
4700
|
+
"psi-text-serif-28-40-regular"
|
|
4701
|
+
]
|
|
4702
|
+
},
|
|
4184
4703
|
"getting-started": {
|
|
4185
4704
|
"install": "npm install @handamade/psi-tokens @handamade/psi-react",
|
|
4186
4705
|
"cssImports": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@handamade/psi-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "MCP server and agent-context generator for the Psi (Ψ) design system",
|
|
6
6
|
"type": "module",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"tsx": "^4.22.4",
|
|
34
34
|
"typescript": "^5.7.0",
|
|
35
35
|
"vitest": "^3.2.6",
|
|
36
|
-
"@handamade/psi-
|
|
37
|
-
"@handamade/psi-
|
|
36
|
+
"@handamade/psi-tokens": "0.16.0",
|
|
37
|
+
"@handamade/psi-react": "0.16.0"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "tsx scripts/build-index.ts && tsc -p tsconfig.build.json"
|