@kiva/kv-components 8.19.2 → 8.20.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/AGENTS.md +4 -0
- package/dist/data/ne_110m_admin_0_countries.json.js +1 -1
- package/dist/utils/Alea.js +2 -2
- package/dist/utils/mapUtils.js +5 -7
- package/dist/vendor/aria-hidden/dist/es2015/index.js +23 -23
- package/dist/vendor/popper.js/dist/esm/popper.js +6 -6
- package/dist/vue/KvAtbModal.css +1 -1
- package/dist/vue/KvCarousel.css +1 -1
- package/dist/vue/KvCarousel2.js +5 -5
- package/dist/vue/KvCartModal.css +1 -1
- package/dist/vue/KvCartModal2.js +7 -7
- package/dist/vue/KvCheckbox.js +3 -3
- package/dist/vue/KvClassicLoanCard.css +1 -1
- package/dist/vue/KvClassicLoanCard.js +2 -2
- package/dist/vue/KvClassicLoanCard.vue.d.ts +29 -12
- package/dist/vue/KvClassicLoanCard2.js +52 -46
- package/dist/vue/KvCommentsContainer2.js +7 -7
- package/dist/vue/KvCommentsListItem2.js +11 -11
- package/dist/vue/KvCompactLoanCard.css +1 -1
- package/dist/vue/KvCompactLoanCard.js +147 -147
- package/dist/vue/KvCompactLoanCard.vue.d.ts +11 -6
- package/dist/vue/KvCompactLoanCard2.js +15 -15
- package/dist/vue/KvContentfulImg.js +3 -3
- package/dist/vue/KvDatePicker.vue.d.ts +5 -2
- package/dist/vue/KvDatePicker2.js +9 -5
- package/dist/vue/KvExpandable2.js +3 -3
- package/dist/vue/KvExpandableQuestion2.js +3 -3
- package/dist/vue/KvFlag.js +5 -5
- package/dist/vue/KvIconButton.js +4 -4
- package/dist/vue/KvImageUpload.js +1 -1
- package/dist/vue/KvImageUpload2.js +3 -3
- package/dist/vue/KvIntroductionLoanCard.css +1 -1
- package/dist/vue/KvIntroductionLoanCard.js +11 -11
- package/dist/vue/KvIntroductionLoanCard.vue.d.ts +8 -4
- package/dist/vue/KvIntroductionLoanCard2.js +34 -31
- package/dist/vue/KvLendAmountButton.vue.d.ts +4 -2
- package/dist/vue/KvLendAmountButton2.js +3 -0
- package/dist/vue/KvLendCta.css +1 -1
- package/dist/vue/KvLendCta.js +9 -9
- package/dist/vue/KvLendCta.vue.d.ts +9 -4
- package/dist/vue/KvLendCta2.js +11 -7
- package/dist/vue/KvLightbox2.js +4 -4
- package/dist/vue/KvLoanActivities.js +4 -4
- package/dist/vue/KvLoanActivities.vue.d.ts +9 -4
- package/dist/vue/KvLoanActivities2.js +13 -13
- package/dist/vue/KvLoanBookmark.vue.d.ts +4 -2
- package/dist/vue/KvLoanBookmark2.js +8 -5
- package/dist/vue/KvLoanInfoCard.css +1 -1
- package/dist/vue/KvLoanInfoCard.js +2 -2
- package/dist/vue/KvLoanTag.js +9 -9
- package/dist/vue/KvLoanTag2.js +1 -1
- package/dist/vue/KvMap.vue.d.ts +4 -2
- package/dist/vue/KvMap2.js +9 -6
- package/dist/vue/KvPagination.vue.d.ts +4 -2
- package/dist/vue/KvPagination2.js +7 -4
- package/dist/vue/KvPieChartV2.css +1 -1
- package/dist/vue/KvPieChartV22.js +3 -3
- package/dist/vue/KvPopper2.js +4 -4
- package/dist/vue/KvRadio.js +1 -1
- package/dist/vue/KvSecondaryNav.js +25 -25
- package/dist/vue/KvSecondaryNav2.js +8 -8
- package/dist/vue/KvSelect.js +12 -12
- package/dist/vue/KvSideSheet.js +1 -1
- package/dist/vue/KvSideSheet2.js +3 -3
- package/dist/vue/KvSimpleMap.css +1 -1
- package/dist/vue/KvSimpleMap.js +2 -2
- package/dist/vue/KvSimpleMap2.js +1 -0
- package/dist/vue/KvSwitch.js +1 -1
- package/dist/vue/KvTabs.vue.d.ts +4 -2
- package/dist/vue/KvTabs2.js +17 -14
- package/dist/vue/KvTextInput.js +1 -1
- package/dist/vue/KvTextInput2.js +3 -3
- package/dist/vue/KvThemeProvider.css +1 -1
- package/dist/vue/KvTooltip.css +1 -1
- package/dist/vue/KvTooltip.js +7 -7
- package/dist/vue/KvTooltip2.js +22 -22
- package/dist/vue/KvTreeMapChart.css +1 -1
- package/dist/vue/KvVerticalCarousel2.js +5 -5
- package/dist/vue/KvVotingCard.css +1 -1
- package/dist/vue/KvVotingCard.js +11 -11
- package/dist/vue/KvVotingCard.vue.d.ts +5 -2
- package/dist/vue/KvVotingCard2.js +4 -0
- package/dist/vue/KvWideLoanCard.css +1 -1
- package/dist/vue/KvWideLoanCard.js +4 -4
- package/dist/vue/KvWideLoanCard.vue.d.ts +18 -8
- package/dist/vue/KvWideLoanCard2.js +39 -35
- package/dist/vue/KvWwwHeader/KvHeaderLinkBar.js +1 -1
- package/dist/vue/KvWwwHeader/KvHeaderLinkBar2.js +5 -5
- package/dist/vue/KvWwwHeader/KvHeaderTakeActionMenu.js +3 -3
- package/dist/vue/KvWwwHeader/LendMenu/KvLendListMenu.js +4 -4
- package/dist/vue/KvWwwHeader/LendMenu/KvLendMegaMenu.js +9 -9
- package/dist/vue/KvWwwHeader/LendMenu/KvLendMegaMenu2.js +3 -3
- package/dist/vue/KvWwwHeaderBasic/LinkBar.css +1 -1
- package/dist/vue/KvWwwHeaderBasic/LinkBar2.js +3 -3
- package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MobileLendMenu.css +1 -1
- package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MobileLendMenu.js +1 -1
- package/dist/vue/KvWwwHeaderBasic/SearchBar2.js +6 -6
- package/docs/code-connect.md +266 -0
- package/figma.config.json +6 -0
- package/package.json +6 -21
- package/tsconfig.json +2 -1
- package/vite.config.ts +3 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# Figma Code Connect
|
|
2
|
+
|
|
3
|
+
[Figma Code Connect](https://developers.figma.com/docs/code-connect/) maps a Figma
|
|
4
|
+
component's variants and properties to a real code snippet from this repo. Once a
|
|
5
|
+
component is mapped and published, designers and engineers see the actual
|
|
6
|
+
`@kiva/kv-components` usage — not generated markup — right next to the component in
|
|
7
|
+
Figma Dev Mode.
|
|
8
|
+
|
|
9
|
+
The snippet comes from a small mapping file we author and commit
|
|
10
|
+
(`src/vue/code-connect/<Name>.figma.ts`) — not from anything Figma infers. Mapping is
|
|
11
|
+
opt-in and incremental: nothing changes in Figma or the built package until we
|
|
12
|
+
explicitly publish a mapping.
|
|
13
|
+
|
|
14
|
+
The repo-side setup is already in place, so mapping a new component is just adding one
|
|
15
|
+
file. Start here; setup internals and tooling reference are at the bottom.
|
|
16
|
+
|
|
17
|
+
## Map a new component
|
|
18
|
+
|
|
19
|
+
1. **Get the component's Figma URL, including its `node-id`** — from the published
|
|
20
|
+
component in the team library. (The component must already be published to a Figma
|
|
21
|
+
team library; Code Connect maps to a published node, not a local frame.)
|
|
22
|
+
2. **Confirm the real property names/values** against the published node — never guess.
|
|
23
|
+
Every `getEnum`/`getString`/`findText` name and enum value must match Figma **exactly,
|
|
24
|
+
including case**, or Figma shows "Property not found" on that prop. See
|
|
25
|
+
[Reading the real Figma property names](#reading-the-real-figma-property-names) for how
|
|
26
|
+
(Figma MCP preferred; CLI/manual fallbacks).
|
|
27
|
+
3. **Add `src/vue/code-connect/<Name>.figma.ts`**, following the KvButton worked example
|
|
28
|
+
below. Map every Figma variant value; omit code props that have no Figma equivalent.
|
|
29
|
+
4. **Validate locally** — no network write:
|
|
30
|
+
```bash
|
|
31
|
+
npm run codeconnect:parse --workspace @kiva/kv-components
|
|
32
|
+
```
|
|
33
|
+
Expect a clean JSON array and exit code 0. Note: `parse` is structural only — it has no
|
|
34
|
+
live component, so it does **not** catch name/case mismatches. Those surface only when
|
|
35
|
+
Figma renders the published mapping, so verify in Dev Mode after publishing.
|
|
36
|
+
5. **Publish** — a deliberate, manual step (see [Publishing](#publishing)).
|
|
37
|
+
|
|
38
|
+
No config changes are needed per component — `figma.config.json`'s `include` glob, the
|
|
39
|
+
scoped `tsconfig.json`, and the ESLint/`dts` guards already cover any file added to
|
|
40
|
+
`src/vue/code-connect/`. Prioritize components by Dev Mode usage/visibility.
|
|
41
|
+
|
|
42
|
+
### Reading the real Figma property names
|
|
43
|
+
|
|
44
|
+
Steps 1–2 need the component's actual property names, enum values, and nested layer names.
|
|
45
|
+
These must match your mapping **exactly, including case** — a mismatch renders "Property
|
|
46
|
+
not found" on that prop in Dev Mode. Get them one of these ways, best first:
|
|
47
|
+
|
|
48
|
+
- **Figma MCP server (preferred).** With the Figma Dev Mode MCP server connected, call
|
|
49
|
+
`get_context_for_code_connect` against the node (it takes the `fileKey` + `node-id` from
|
|
50
|
+
the component URL). It returns each property's name, type, and variant options, plus the
|
|
51
|
+
descendant tree — including nested `TEXT` layers like a button's `label`, which are read
|
|
52
|
+
with `findText`, not `getString`. `get_code_connect_suggestions` can propose a starting
|
|
53
|
+
template. This is how the `KvButton` mapping was reconciled.
|
|
54
|
+
- **CLI fallback — `figma connect create <figma-node-url>`.** If MCP isn't available, this
|
|
55
|
+
scaffolds a mapping file from the node via the Figma REST API (needs `FIGMA_ACCESS_TOKEN`
|
|
56
|
+
with read scope). You don't keep the generated file — diff it against yours to read the
|
|
57
|
+
real names/values, then discard it.
|
|
58
|
+
- **Manual fallback — Figma Dev Mode.** Open the component in Dev Mode and read the
|
|
59
|
+
Properties panel: each variant property's name and its options appear there verbatim. For
|
|
60
|
+
nested content (e.g. a text label mapped with `findText`), copy the exact layer name from
|
|
61
|
+
the Layers panel. Slowest and easiest to get casing wrong — always confirm against a
|
|
62
|
+
publish.
|
|
63
|
+
|
|
64
|
+
### Worked example: `KvButton.figma.ts`
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
// url=https://www.figma.com/design/TPmBUB4olYPMF6glEhBGDG/Ecosystem-2026--WIP-?node-id=20280-98&m=dev
|
|
68
|
+
// source=src/vue/KvButton.vue
|
|
69
|
+
// component=KvButton
|
|
70
|
+
//
|
|
71
|
+
// Reconciled against the published "KvButton (WIP)" component (CIT-4435) via
|
|
72
|
+
// get_context_for_code_connect: Figma property names AND enum values are lowercase,
|
|
73
|
+
// `label` is a nested TEXT layer (read with findText, not a component property), and
|
|
74
|
+
// Figma's `hover` state has no KvButton prop value so it maps to the default (no attr).
|
|
75
|
+
import figma from 'figma';
|
|
76
|
+
|
|
77
|
+
const instance = figma.selectedInstance;
|
|
78
|
+
|
|
79
|
+
// Property name and enum values must match Figma exactly (all lowercase here).
|
|
80
|
+
const variant = instance.getEnum('variant', {
|
|
81
|
+
primary: 'primary',
|
|
82
|
+
secondary: 'secondary',
|
|
83
|
+
danger: 'danger',
|
|
84
|
+
link: 'link',
|
|
85
|
+
ghost: 'ghost',
|
|
86
|
+
caution: 'caution',
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
// `hover` is a visual-only Figma state with no KvButton equivalent -> render as default ('').
|
|
90
|
+
const state = instance.getEnum('state', {
|
|
91
|
+
default: '',
|
|
92
|
+
active: 'active',
|
|
93
|
+
disabled: 'disabled',
|
|
94
|
+
loading: 'loading',
|
|
95
|
+
hover: '',
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const size = instance.getEnum('size', {
|
|
99
|
+
default: 'default',
|
|
100
|
+
small: 'small',
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// `label` is a nested TEXT layer, not a component property — read its text content.
|
|
104
|
+
const label = instance.findText('label').textContent;
|
|
105
|
+
|
|
106
|
+
export default {
|
|
107
|
+
example: figma.code`
|
|
108
|
+
<KvButton
|
|
109
|
+
variant="${variant}"
|
|
110
|
+
${state ? figma.code`state="${state}"` : ''}
|
|
111
|
+
${size !== 'default' ? figma.code`size="${size}"` : ''}
|
|
112
|
+
>
|
|
113
|
+
${label}
|
|
114
|
+
</KvButton>
|
|
115
|
+
`,
|
|
116
|
+
imports: ["import { KvButton } from '@kiva/kv-components'"],
|
|
117
|
+
id: 'kv-button',
|
|
118
|
+
metadata: { nestable: true },
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Note the two things that trip people up here, both confirmed from the real component
|
|
123
|
+
(never assumed): **property names and enum values are lowercase** and must match Figma's
|
|
124
|
+
case exactly, and the **`label` is a nested TEXT layer** read with `findText(...).textContent`
|
|
125
|
+
— not a component text property, so `getString('label')` would render "Property not found".
|
|
126
|
+
|
|
127
|
+
### Best practices
|
|
128
|
+
|
|
129
|
+
- **PascalCase tag + package import** — snippets should read like real usage:
|
|
130
|
+
`<KvButton ...>`, imported via `import { KvButton } from '@kiva/kv-components'`, not a
|
|
131
|
+
relative path or the internal `.vue` filename.
|
|
132
|
+
- **Map slots to slot content** — a component's default/named slot content (e.g. a
|
|
133
|
+
button's label) should come from the Figma text/content property, rendered between the
|
|
134
|
+
opening and closing tags — not as a prop.
|
|
135
|
+
- **Map variants exhaustively** — every Figma enum value for a property needs an entry in
|
|
136
|
+
the corresponding `getEnum(...)` map. An unmapped value silently resolves to `undefined`
|
|
137
|
+
in the emitted snippet, which is worse than an explicit mapping.
|
|
138
|
+
- **Omit props with no Figma equivalent** — if a code prop has no visual/Figma-side
|
|
139
|
+
counterpart (e.g. `KvButton`'s `to`, `href`, `type`), leave it out rather than
|
|
140
|
+
inventing a Figma property for it.
|
|
141
|
+
- **Keep mappings in sync with the component** — when a mapped component's props, slots,
|
|
142
|
+
or variant values change, update its `.figma.ts` file (and re-parse) in the same change,
|
|
143
|
+
the same way you'd update a story or a test.
|
|
144
|
+
|
|
145
|
+
## Publishing
|
|
146
|
+
|
|
147
|
+
Publish writes the mapping to the **shared Figma org library** — every designer and
|
|
148
|
+
engineer with access to that library sees the result. Do this deliberately, not as a
|
|
149
|
+
side effect of another task:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
npm run codeconnect:publish --workspace @kiva/kv-components
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
(equivalent to `figma connect publish`). Requires `FIGMA_ACCESS_TOKEN` with Code Connect
|
|
156
|
+
write scope in the environment. Whoever owns the Figma-side write for the team library
|
|
157
|
+
should run this — typically the person who reconciled the mapping's property names
|
|
158
|
+
against the real published node.
|
|
159
|
+
|
|
160
|
+
**Do not run `codeconnect:publish` as part of routine repo work** (adding a component,
|
|
161
|
+
fixing a build issue, etc.) — only when a mapping has been reconciled against a real
|
|
162
|
+
published Figma node and is ready to go live for the whole org.
|
|
163
|
+
|
|
164
|
+
## KvButton reconciliation status (published)
|
|
165
|
+
|
|
166
|
+
`src/vue/code-connect/KvButton.figma.ts` was authored **code-first** from
|
|
167
|
+
`src/vue/KvButton.vue`, then **reconciled against the published "KvButton (WIP)" component
|
|
168
|
+
and published** (CIT-4435). Its `url=` points at the real node and its property names/values
|
|
169
|
+
are confirmed via `get_context_for_code_connect`, not assumed.
|
|
170
|
+
|
|
171
|
+
It doubles as the reference for what reconciliation actually caught — the mapping was first
|
|
172
|
+
written with assumed names and every prop showed "Property not found" in Dev Mode until:
|
|
173
|
+
|
|
174
|
+
- Property names **and** enum values were lowercased to match Figma exactly (`Variant` →
|
|
175
|
+
`variant`, `Primary` → `primary`, …).
|
|
176
|
+
- The `label` was switched from `getString('Label')` to `findText('label').textContent`,
|
|
177
|
+
because it's a nested TEXT layer, not a component text property.
|
|
178
|
+
- Figma's extra `hover` state (no KvButton equivalent) was mapped to `''` rather than left
|
|
179
|
+
unmapped (which would render `undefined`).
|
|
180
|
+
|
|
181
|
+
If the design team later changes the component, re-reconcile with the same loop: get the
|
|
182
|
+
node URL → confirm names/values (see
|
|
183
|
+
[Reading the real Figma property names](#reading-the-real-figma-property-names)) → update
|
|
184
|
+
the file → `npm run codeconnect:parse` → `npm run codeconnect:publish`. The emitted
|
|
185
|
+
`<KvButton ...>` snippet is **code-derived** (from `KvButton.vue`'s props/slot), so
|
|
186
|
+
reconciling Figma-side names changes whether props resolve, not the snippet's shape.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Setup reference
|
|
191
|
+
|
|
192
|
+
Everything below is already in place and scoped to `@kiva/kv-components`. You don't need
|
|
193
|
+
to touch it to map a component — it's here for maintenance.
|
|
194
|
+
|
|
195
|
+
### Prerequisites (for publishing)
|
|
196
|
+
|
|
197
|
+
- **Figma plan**: Org or Enterprise (Code Connect publish is gated on this).
|
|
198
|
+
- **A published component** in a Figma team library — Code Connect maps to a published
|
|
199
|
+
component's `node-id`, not a local/unpublished frame.
|
|
200
|
+
- **`FIGMA_ACCESS_TOKEN`** with Code Connect write scope, as a local/CI environment
|
|
201
|
+
variable. **Never commit this token.** It's only required for `publish`; `parse` needs
|
|
202
|
+
no token.
|
|
203
|
+
- **A way to read the component's real property names/values** before writing or
|
|
204
|
+
reconciling a mapping — the **Figma MCP server** (`get_context_for_code_connect` /
|
|
205
|
+
`get_code_connect_suggestions`) preferred, or the `figma connect create <node-url>` CLI
|
|
206
|
+
/ Figma Dev Mode as fallbacks. See
|
|
207
|
+
[Reading the real Figma property names](#reading-the-real-figma-property-names).
|
|
208
|
+
|
|
209
|
+
### Repo config & guards
|
|
210
|
+
|
|
211
|
+
- **`figma.config.json`** (package root):
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"codeConnect": {
|
|
215
|
+
"parser": "html",
|
|
216
|
+
"include": ["src/vue/code-connect/**/*.figma.ts"]
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
`parser: "html"` is the CLI's template-file mode for Vue and other non-React web
|
|
221
|
+
frameworks — the mapping file produces the snippet string rather than the CLI parsing
|
|
222
|
+
JSX. `include` is the only glob the CLI needs; it auto-discovers this config from the
|
|
223
|
+
package directory. `importPaths` is intentionally omitted (a no-op under `html`); the
|
|
224
|
+
import guarantee comes from each mapping file's own `imports` array.
|
|
225
|
+
|
|
226
|
+
- **`src/vue/code-connect/`** — dedicated directory for one `.figma.ts` file per mapped
|
|
227
|
+
component, kept separate from `src/vue/` so mapping files are easy to find and exclude
|
|
228
|
+
from the build.
|
|
229
|
+
|
|
230
|
+
- **Types** — `src/vue/code-connect/tsconfig.json` gives `.figma.ts` files the ambient
|
|
231
|
+
`figma` module (`import figma from 'figma'`) via
|
|
232
|
+
`@figma/code-connect/figma-types`, with `skipLibCheck` scoped to that config to
|
|
233
|
+
tolerate a quirk in the vendored `.d.ts`. It's consumed **only** by the editor/IDE —
|
|
234
|
+
not by `codeconnect:parse` (which reads `figma.config.json`) nor by the Vite/`dts`
|
|
235
|
+
build (which uses the package's main `tsconfig.json`). The main `tsconfig.json` excludes
|
|
236
|
+
`src/vue/code-connect/**`, so the main type environment never reconciles with the
|
|
237
|
+
vendored ambient declarations.
|
|
238
|
+
|
|
239
|
+
- **Build/lint/test guards** — `.figma.ts` files use idioms that don't fit our normal
|
|
240
|
+
rules, so they're excluded everywhere except `codeconnect:parse`:
|
|
241
|
+
- **ESLint**: ignored via `ignorePatterns: ['**/src/vue/code-connect/**']` in the root
|
|
242
|
+
`.eslintrc.cjs`. It must live in the root config (not a package `.eslintignore`)
|
|
243
|
+
because the husky pre-commit hook runs each workspace's `lint` against staged files,
|
|
244
|
+
and only `ignorePatterns` in an `.eslintrc.*` participates in ESLint's per-file config
|
|
245
|
+
cascade regardless of which workspace's script is linting.
|
|
246
|
+
- **`vite-plugin-dts`**: `vite.config.ts` excludes `src/vue/code-connect/**` from
|
|
247
|
+
declaration generation.
|
|
248
|
+
- **Jest**: no change needed — `testMatch` is scoped to `**/unit/specs/**`.
|
|
249
|
+
- **Vite library build**: no change needed — the build follows the import graph from
|
|
250
|
+
`src/index.ts`, and nothing imports `src/vue/code-connect/**`.
|
|
251
|
+
|
|
252
|
+
### CLI reference
|
|
253
|
+
|
|
254
|
+
Confirmed against the installed `@figma/code-connect@1.4.9`:
|
|
255
|
+
|
|
256
|
+
- `figma connect parse` — parses locally, converts to JSON, **prints to stdout only**. No
|
|
257
|
+
network write. Exposed as `npm run codeconnect:parse --workspace @kiva/kv-components`.
|
|
258
|
+
- `figma connect publish` — parses and **publishes** to the shared org. Exposed as
|
|
259
|
+
`npm run codeconnect:publish --workspace @kiva/kv-components`.
|
|
260
|
+
- Other CLI subcommands (not wrapped in scripts): `unpublish`, `create <figma-node-url>`
|
|
261
|
+
(scaffold a mapping from a node URL), `migrate` (convert older formats), `preview`.
|
|
262
|
+
- `parser: "html"` is the confirmed value for Vue — the CLI's label for "Web Components,
|
|
263
|
+
Angular and Vue" template-file mode.
|
|
264
|
+
- The template-file API — `figma.selectedInstance`, `instance.getEnum(...)`, and the
|
|
265
|
+
`` figma.code`...` `` tagged template — parses cleanly with this CLI version under
|
|
266
|
+
`parser: "html"`; no rewrite into the older `figma.connect()` style is needed for Vue.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kiva/kv-components",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.20.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -30,10 +30,9 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@apollo/client": "^3.13.1",
|
|
32
32
|
"@babel/core": "^7.14.8",
|
|
33
|
-
"@babel/eslint-parser": "^7.13.14",
|
|
34
|
-
"@babel/preset-env": "^7.24.8",
|
|
35
33
|
"@babel/preset-react": "^7.24.7",
|
|
36
34
|
"@babel/preset-typescript": "^7.24.7",
|
|
35
|
+
"@figma/code-connect": "^1.4.9",
|
|
37
36
|
"@kiva/kv-tokens": "^4.2.0",
|
|
38
37
|
"@kiva/vite-plugin-vue-lib-css": "^2.0.0",
|
|
39
38
|
"@laynezh/vite-plugin-lib-assets": "^0.6.1",
|
|
@@ -48,10 +47,6 @@
|
|
|
48
47
|
"@testing-library/user-event": "^13.2.1",
|
|
49
48
|
"@testing-library/vue": "^8.1.0",
|
|
50
49
|
"@types/leaflet": "^1.9.21",
|
|
51
|
-
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
52
|
-
"@typescript-eslint/parser": "^5.62.0",
|
|
53
|
-
"@vitejs/plugin-vue": "^5.2.1",
|
|
54
|
-
"@vue/eslint-config-typescript": "^8.0.0",
|
|
55
50
|
"@vue/reactivity": "3.2.37",
|
|
56
51
|
"@vue/vue3-jest": "^29.2.6",
|
|
57
52
|
"@vueuse/integrations": "^14.1.0",
|
|
@@ -67,31 +62,19 @@
|
|
|
67
62
|
"embla-carousel": "^8.5.2",
|
|
68
63
|
"embla-carousel-autoplay": "^8.5.2",
|
|
69
64
|
"embla-carousel-fade": "^8.5.2",
|
|
70
|
-
"eslint": "^7.26.0",
|
|
71
|
-
"eslint-config-airbnb-base": "^14.1.0",
|
|
72
|
-
"eslint-plugin-import": "^2.20.2",
|
|
73
65
|
"eslint-plugin-storybook": "^0.9.0",
|
|
74
|
-
"eslint-plugin-vue": "^7.9.0",
|
|
75
66
|
"flag-icons": "^7.3.0",
|
|
76
67
|
"focus-trap": "^7.7.1",
|
|
77
68
|
"graphql-tag": "^2.12.6",
|
|
78
|
-
"jest": "^29.7.0",
|
|
79
69
|
"jest-axe": "^5.0.1",
|
|
80
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
81
70
|
"maplibre-gl": "^5.15.0",
|
|
82
71
|
"nanoid": "^3.3.8",
|
|
83
72
|
"numeral": "^2.0.6",
|
|
84
73
|
"popper.js": "^1.16.1",
|
|
85
|
-
"postcss": "^8.4.5",
|
|
86
74
|
"react": "^16.8.0",
|
|
87
75
|
"react-dom": "^16.8.0",
|
|
88
76
|
"storybook": "^10.1.11",
|
|
89
77
|
"tailwindcss": "^3.4.3",
|
|
90
|
-
"ts-jest": "^29.4.6",
|
|
91
|
-
"typescript": "^5.9.3",
|
|
92
|
-
"vite": "^6.0.7",
|
|
93
|
-
"vite-plugin-dts": "^4.5.4",
|
|
94
|
-
"vite-plugin-no-bundle": "^4.0.0",
|
|
95
78
|
"vue": "^3.2.37",
|
|
96
79
|
"vue-router": "^4.5.0"
|
|
97
80
|
},
|
|
@@ -102,7 +85,9 @@
|
|
|
102
85
|
"test": "npm run lint && jest",
|
|
103
86
|
"prebuild": "node build/copyFlags.js",
|
|
104
87
|
"build": "rimraf dist && vite build",
|
|
105
|
-
"postbuild": "mkdir -p ../../dist/kvui && mv -v dist/kvui/* ../../dist/kvui/"
|
|
88
|
+
"postbuild": "mkdir -p ../../dist/kvui && mv -v dist/kvui/* ../../dist/kvui/",
|
|
89
|
+
"codeconnect:parse": "figma connect parse",
|
|
90
|
+
"codeconnect:publish": "figma connect publish"
|
|
106
91
|
},
|
|
107
92
|
"peerDependencies": {
|
|
108
93
|
"@apollo/client": "3.x",
|
|
@@ -128,5 +113,5 @@
|
|
|
128
113
|
"dependencies": {
|
|
129
114
|
"fuse.js": "^7.1.0"
|
|
130
115
|
},
|
|
131
|
-
"gitHead": "
|
|
116
|
+
"gitHead": "32daf0d9133bf15a96343d59440a637f69fdbf3c"
|
|
132
117
|
}
|
package/tsconfig.json
CHANGED
package/vite.config.ts
CHANGED
|
@@ -79,6 +79,9 @@ export default defineConfig({
|
|
|
79
79
|
},
|
|
80
80
|
// Disable rollup types for now to avoid Vue file resolution issues
|
|
81
81
|
rollupTypes: false,
|
|
82
|
+
// Figma Code Connect mappings are not part of the public API surface; exclude them
|
|
83
|
+
// from type declaration generation.
|
|
84
|
+
exclude: ['src/vue/code-connect/**'],
|
|
82
85
|
}),
|
|
83
86
|
],
|
|
84
87
|
});
|