@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.
Files changed (102) hide show
  1. package/AGENTS.md +4 -0
  2. package/dist/data/ne_110m_admin_0_countries.json.js +1 -1
  3. package/dist/utils/Alea.js +2 -2
  4. package/dist/utils/mapUtils.js +5 -7
  5. package/dist/vendor/aria-hidden/dist/es2015/index.js +23 -23
  6. package/dist/vendor/popper.js/dist/esm/popper.js +6 -6
  7. package/dist/vue/KvAtbModal.css +1 -1
  8. package/dist/vue/KvCarousel.css +1 -1
  9. package/dist/vue/KvCarousel2.js +5 -5
  10. package/dist/vue/KvCartModal.css +1 -1
  11. package/dist/vue/KvCartModal2.js +7 -7
  12. package/dist/vue/KvCheckbox.js +3 -3
  13. package/dist/vue/KvClassicLoanCard.css +1 -1
  14. package/dist/vue/KvClassicLoanCard.js +2 -2
  15. package/dist/vue/KvClassicLoanCard.vue.d.ts +29 -12
  16. package/dist/vue/KvClassicLoanCard2.js +52 -46
  17. package/dist/vue/KvCommentsContainer2.js +7 -7
  18. package/dist/vue/KvCommentsListItem2.js +11 -11
  19. package/dist/vue/KvCompactLoanCard.css +1 -1
  20. package/dist/vue/KvCompactLoanCard.js +147 -147
  21. package/dist/vue/KvCompactLoanCard.vue.d.ts +11 -6
  22. package/dist/vue/KvCompactLoanCard2.js +15 -15
  23. package/dist/vue/KvContentfulImg.js +3 -3
  24. package/dist/vue/KvDatePicker.vue.d.ts +5 -2
  25. package/dist/vue/KvDatePicker2.js +9 -5
  26. package/dist/vue/KvExpandable2.js +3 -3
  27. package/dist/vue/KvExpandableQuestion2.js +3 -3
  28. package/dist/vue/KvFlag.js +5 -5
  29. package/dist/vue/KvIconButton.js +4 -4
  30. package/dist/vue/KvImageUpload.js +1 -1
  31. package/dist/vue/KvImageUpload2.js +3 -3
  32. package/dist/vue/KvIntroductionLoanCard.css +1 -1
  33. package/dist/vue/KvIntroductionLoanCard.js +11 -11
  34. package/dist/vue/KvIntroductionLoanCard.vue.d.ts +8 -4
  35. package/dist/vue/KvIntroductionLoanCard2.js +34 -31
  36. package/dist/vue/KvLendAmountButton.vue.d.ts +4 -2
  37. package/dist/vue/KvLendAmountButton2.js +3 -0
  38. package/dist/vue/KvLendCta.css +1 -1
  39. package/dist/vue/KvLendCta.js +9 -9
  40. package/dist/vue/KvLendCta.vue.d.ts +9 -4
  41. package/dist/vue/KvLendCta2.js +11 -7
  42. package/dist/vue/KvLightbox2.js +4 -4
  43. package/dist/vue/KvLoanActivities.js +4 -4
  44. package/dist/vue/KvLoanActivities.vue.d.ts +9 -4
  45. package/dist/vue/KvLoanActivities2.js +13 -13
  46. package/dist/vue/KvLoanBookmark.vue.d.ts +4 -2
  47. package/dist/vue/KvLoanBookmark2.js +8 -5
  48. package/dist/vue/KvLoanInfoCard.css +1 -1
  49. package/dist/vue/KvLoanInfoCard.js +2 -2
  50. package/dist/vue/KvLoanTag.js +9 -9
  51. package/dist/vue/KvLoanTag2.js +1 -1
  52. package/dist/vue/KvMap.vue.d.ts +4 -2
  53. package/dist/vue/KvMap2.js +9 -6
  54. package/dist/vue/KvPagination.vue.d.ts +4 -2
  55. package/dist/vue/KvPagination2.js +7 -4
  56. package/dist/vue/KvPieChartV2.css +1 -1
  57. package/dist/vue/KvPieChartV22.js +3 -3
  58. package/dist/vue/KvPopper2.js +4 -4
  59. package/dist/vue/KvRadio.js +1 -1
  60. package/dist/vue/KvSecondaryNav.js +25 -25
  61. package/dist/vue/KvSecondaryNav2.js +8 -8
  62. package/dist/vue/KvSelect.js +12 -12
  63. package/dist/vue/KvSideSheet.js +1 -1
  64. package/dist/vue/KvSideSheet2.js +3 -3
  65. package/dist/vue/KvSimpleMap.css +1 -1
  66. package/dist/vue/KvSimpleMap.js +2 -2
  67. package/dist/vue/KvSimpleMap2.js +1 -0
  68. package/dist/vue/KvSwitch.js +1 -1
  69. package/dist/vue/KvTabs.vue.d.ts +4 -2
  70. package/dist/vue/KvTabs2.js +17 -14
  71. package/dist/vue/KvTextInput.js +1 -1
  72. package/dist/vue/KvTextInput2.js +3 -3
  73. package/dist/vue/KvThemeProvider.css +1 -1
  74. package/dist/vue/KvTooltip.css +1 -1
  75. package/dist/vue/KvTooltip.js +7 -7
  76. package/dist/vue/KvTooltip2.js +22 -22
  77. package/dist/vue/KvTreeMapChart.css +1 -1
  78. package/dist/vue/KvVerticalCarousel2.js +5 -5
  79. package/dist/vue/KvVotingCard.css +1 -1
  80. package/dist/vue/KvVotingCard.js +11 -11
  81. package/dist/vue/KvVotingCard.vue.d.ts +5 -2
  82. package/dist/vue/KvVotingCard2.js +4 -0
  83. package/dist/vue/KvWideLoanCard.css +1 -1
  84. package/dist/vue/KvWideLoanCard.js +4 -4
  85. package/dist/vue/KvWideLoanCard.vue.d.ts +18 -8
  86. package/dist/vue/KvWideLoanCard2.js +39 -35
  87. package/dist/vue/KvWwwHeader/KvHeaderLinkBar.js +1 -1
  88. package/dist/vue/KvWwwHeader/KvHeaderLinkBar2.js +5 -5
  89. package/dist/vue/KvWwwHeader/KvHeaderTakeActionMenu.js +3 -3
  90. package/dist/vue/KvWwwHeader/LendMenu/KvLendListMenu.js +4 -4
  91. package/dist/vue/KvWwwHeader/LendMenu/KvLendMegaMenu.js +9 -9
  92. package/dist/vue/KvWwwHeader/LendMenu/KvLendMegaMenu2.js +3 -3
  93. package/dist/vue/KvWwwHeaderBasic/LinkBar.css +1 -1
  94. package/dist/vue/KvWwwHeaderBasic/LinkBar2.js +3 -3
  95. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MobileLendMenu.css +1 -1
  96. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MobileLendMenu.js +1 -1
  97. package/dist/vue/KvWwwHeaderBasic/SearchBar2.js +6 -6
  98. package/docs/code-connect.md +266 -0
  99. package/figma.config.json +6 -0
  100. package/package.json +6 -21
  101. package/tsconfig.json +2 -1
  102. 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.
@@ -0,0 +1,6 @@
1
+ {
2
+ "codeConnect": {
3
+ "parser": "html",
4
+ "include": ["src/vue/code-connect/**/*.figma.ts"]
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiva/kv-components",
3
- "version": "8.19.2",
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": "ee58af92f939c12b65a9346938f51fb152fc521f"
116
+ "gitHead": "32daf0d9133bf15a96343d59440a637f69fdbf3c"
132
117
  }
package/tsconfig.json CHANGED
@@ -27,6 +27,7 @@
27
27
  "exclude": [
28
28
  "**/*/node_modules",
29
29
  "**/*/tests",
30
- "**/*/dist"
30
+ "**/*/dist",
31
+ "src/vue/code-connect/**"
31
32
  ]
32
33
  }
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
  });