@kiva/kv-components 8.9.1 → 8.10.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/SKILLS.md ADDED
@@ -0,0 +1,31 @@
1
+ # @kiva/kv-components Skills Catalog
2
+
3
+ AI-assisted development guides for common workflows in this package.
4
+
5
+ ## Available Skills
6
+
7
+ | Skill | File | Description |
8
+ |-------|------|-------------|
9
+ | make-to-vue | [docs/make-to-vue.md](docs/make-to-vue.md) | Use when porting a Figma Make (or other React) component into a Vue 3 kv-components component. Triggered by requests like "port this to Vue" or by the user sharing React source, a Figma Make URL, or a Figma file link. |
10
+
11
+ ## AI Prompts
12
+
13
+ Drop-in prompts for generating Storybook stories and MDX documentation with an AI assistant.
14
+
15
+ | Prompt | File | Description |
16
+ |--------|------|-------------|
17
+ | ai-stories-prompt | [docs/ai-stories-prompt.md](docs/ai-stories-prompt.md) | Prompt for generating standardized Storybook `.stories.js` files for a component. |
18
+ | ai-documentation-prompt | [docs/ai-documentation-prompt.md](docs/ai-documentation-prompt.md) | Prompt for generating the matching `Docs.mdx` documentation page for a component. |
19
+ | how-to-use-ai-prompts | [docs/how-to-use-ai-prompts.md](docs/how-to-use-ai-prompts.md) | Walkthrough of when and how to use the prompt files above. |
20
+
21
+ ## Authoring Guides & Checklists
22
+
23
+ Reference material the AI prompts pull from — useful when reviewing output by hand or authoring without a prompt.
24
+
25
+ | Doc | File | Description |
26
+ |-----|------|-------------|
27
+ | Component Stories Guide | [docs/component-stories-guide.md](docs/component-stories-guide.md) | Standards and best practices for Storybook stories in kv-components. |
28
+ | Component Stories Checklist | [docs/component-stories-checklist.md](docs/component-stories-checklist.md) | Checklist for verifying story coverage and quality before merging. |
29
+ | Component Documentation Guide | [docs/component-documentation-guide.md](docs/component-documentation-guide.md) | Standards and best practices for MDX component documentation. |
30
+ | Component Documentation Checklist | [docs/component-documentation-checklist.md](docs/component-documentation-checklist.md) | Checklist for verifying documentation completeness before merging. |
31
+ | Storybook Folder Prefixes | [docs/storybook-folder-prefixes.md](docs/storybook-folder-prefixes.md) | Required title prefixes for organizing components in the Storybook sidebar. |
package/dist/index.js CHANGED
@@ -12,9 +12,9 @@ import { default as N } from "./vue/KvChip.js";
12
12
  import { default as E } from "./vue/KvClassicLoanCard.js";
13
13
  import { default as M } from "./vue/KvCompactLoanCard.js";
14
14
  import { default as I } from "./vue/KvCommentsAdd.js";
15
- import { default as g } from "./vue/KvCommentsContainer.js";
15
+ import { default as P } from "./vue/KvCommentsContainer.js";
16
16
  import { default as G } from "./vue/KvCommentsHeartButton.js";
17
- import { default as h } from "./vue/KvCommentsList.js";
17
+ import { default as F } from "./vue/KvCommentsList.js";
18
18
  import { default as B } from "./vue/KvCommentsListItem.js";
19
19
  import { default as y } from "./vue/KvCommentsReplyButton.js";
20
20
  import { default as k } from "./vue/KvContentfulImg.js";
@@ -38,9 +38,9 @@ import { default as Lo } from "./vue/KvLoanActivities.js";
38
38
  import { default as To } from "./vue/KvLoanBookmark.js";
39
39
  import { default as Ro } from "./vue/KvLoanCallouts.js";
40
40
  import { KV_LOAN_INFO_CARD_FRAGMENT as Oo, default as Io } from "./vue/KvLoanInfoCard.js";
41
- import { default as go } from "./vue/KvLoanProgressGroup.js";
41
+ import { default as Po } from "./vue/KvLoanProgressGroup.js";
42
42
  import { default as Go } from "./vue/KvLoanTag.js";
43
- import { default as ho } from "./vue/KvLoanTeamPick.js";
43
+ import { default as Fo } from "./vue/KvLoanTeamPick.js";
44
44
  import { default as Bo } from "./vue/KvLoanUse.js";
45
45
  import { default as yo } from "./vue/KvLoadingPlaceholder.js";
46
46
  import { default as ko } from "./vue/KvLoadingSpinner.js";
@@ -49,85 +49,86 @@ import { default as Ho } from "./vue/KvMaterialIcon.js";
49
49
  import { default as zo } from "./vue/KvPageContainer.js";
50
50
  import { default as Zo } from "./vue/KvPagination.js";
51
51
  import { default as Jo } from "./vue/KvPieChart.js";
52
- import { default as Yo } from "./vue/KvPill.js";
53
- import { default as oe } from "./vue/KvPopper.js";
54
- import { default as re } from "./vue/KvProgressBar.js";
55
- import { default as ae } from "./vue/KvProgressCircle.js";
56
- import { default as le } from "./vue/KvPulsingDot.js";
57
- import { default as se } from "./vue/KvRadio.js";
58
- import { default as de } from "./vue/KvSelect.js";
59
- import { default as xe } from "./vue/KvSideSheet.js";
60
- import { default as Ke } from "./vue/KvSwitch.js";
61
- import { default as Ae } from "./vue/KvTab.js";
62
- import { default as ie } from "./vue/KvTabPanel.js";
63
- import { default as ce } from "./vue/KvTabs.js";
64
- import { default as Ne } from "./vue/KvTextInput.js";
65
- import { default as Ee } from "./vue/KvTextLink.js";
66
- import { default as Me } from "./vue/KvThemeProvider.js";
67
- import { default as Ie } from "./vue/KvToast.js";
68
- import { default as ge } from "./vue/KvTooltip.js";
69
- import { default as Ge } from "./vue/KvTreeMapChart.js";
70
- import { default as he } from "./vue/KvUserAvatar.js";
71
- import { default as Be } from "./vue/KvUtilityMenu.js";
72
- import { default as ye } from "./vue/KvVerticalCarousel.js";
73
- import { default as ke } from "./vue/KvVotingCard.js";
74
- import { default as we } from "./vue/KvVotingCardV2.js";
75
- import { default as He } from "./vue/KvWideLoanCard.js";
76
- import { default as ze } from "./vue/KvAtbModal.js";
77
- import { default as Ze } from "./vue/KvSecondaryNav.js";
78
- import { default as Je } from "./vue/KvWwwHeader.js";
79
- import { default as Ye, Mash as $e } from "./utils/Alea.js";
80
- import { groupBy as er, sortBy as rr } from "./utils/arrayUtils.js";
81
- import { useAttrs as ar } from "./utils/attrs.js";
82
- import { carouselUtil as lr } from "./utils/carousels.js";
83
- import { abc as sr, indexIn as pr, startsWith as dr } from "./utils/comparators.js";
84
- import { debounce as xr } from "./utils/debounce.js";
85
- import { useEventListener as Kr } from "./utils/event.js";
86
- import { collapse as Ar, expand as Cr } from "./utils/expander.js";
87
- import { getKivaImageUrl as _r, isLegacyPlaceholderAvatar as cr, randomizedUserAvatarClass as Lr } from "./utils/imageUtils.js";
88
- import { LOAN_CALLOUTS_FRAGMENT as Tr, LOAN_GEOCODE_FRAGMENT as Er, LOAN_PROGRESS_FRAGMENT as Rr, loanCardComputedProperties as Mr, loanCardMethods as Or } from "./utils/loanCard.js";
89
- import { BALANCE_CAMPAIGN as Sr, BASE_CAMPAIGN as gr, ERL_COOKIE_NAME as Pr, NO_BALANCE_CAMPAIGN as Gr, TOP_UP_CAMPAIGN as Fr, getDropdownPriceArray as hr, getLendCtaSelectedOption as Vr, isBetween25And50 as Br, isLessThan25 as Dr, truncateStringByWords as yr } from "./utils/loanUtils.js";
90
- import { animationCoordinator as kr, computeMapCenter as Ur, computeMapZoom as wr, generateMapMarkers as Wr, getCoordinatesBetween as Hr, getCountryColor as jr, getLoansIntervals as zr } from "./utils/mapUtils.js";
91
- import { lockPrintSingleEl as Zr, unlockPrintSingleEl as qr } from "./utils/printing.js";
92
- import { lockScroll as Xr, lockScrollSmallOnly as Yr, unlockScroll as $r, unlockScrollSmallOnly as ot } from "./utils/scrollLock.js";
93
- import { buildTailwindClassName as rt, headerNumberCase as tt, kebabCase as at, removeObjectProperty as ft } from "./utils/themeUtils.js";
94
- import { throttle as mt } from "./utils/throttle.js";
95
- import { isTargetElement as pt, offBodyTouchstart as dt, onBodyTouchstart as ut } from "./utils/touchEvents.js";
96
- import { getTreemap as nt } from "./utils/treemap.js";
97
- import { KvBlueskyIcon as vt } from "./assets/icons/bluesky.js";
98
- import { KV_CLASSIC_LOAN_CARD_FRAGMENT as Ct, KV_CLASSIC_LOAN_CARD_USER_FRAGMET as it } from "./vue/KvClassicLoanCard2.js";
99
- import { KV_COMPACT_LOAN_CARD_FRAGMENT as ct, KV_COMPACT_LOAN_CARD_USER_FRAGMENT as Lt } from "./vue/KvCompactLoanCard2.js";
100
- import { KV_INTRODUCTION_LOAN_CARD_FRAGMENT as Tt, KV_INTRODUCTION_LOAN_CARD_USER_FRAGMENT as Et } from "./vue/KvIntroductionLoanCard2.js";
101
- import { KV_LEND_CTA_FRAGMENT as Mt, KV_LEND_CTA_USER_FRAGMENT as Ot } from "./vue/KvLendCta2.js";
102
- import { KV_LOAN_ACTIVITIES_FRAGMENT as St } from "./vue/KvLoanActivities2.js";
103
- import { KV_LOAN_BOOKMARK_FRAGMENT as Pt } from "./vue/KvLoanBookmark2.js";
104
- import { KV_LOAN_TAG_FRAGMENT as Ft } from "./vue/KvLoanTag2.js";
105
- import { KV_LOAN_USE_FRAGMENT as Vt } from "./vue/KvLoanUse2.js";
106
- import { KV_WIDE_LOAN_CARD_FRAGMENT as Dt, KV_WIDE_LOAN_CARD_USER_FRAGMENT as yt } from "./vue/KvWideLoanCard2.js";
52
+ import { default as Yo } from "./vue/KvPieChartV2.js";
53
+ import { default as oe } from "./vue/KvPill.js";
54
+ import { default as re } from "./vue/KvPopper.js";
55
+ import { default as ae } from "./vue/KvProgressBar.js";
56
+ import { default as le } from "./vue/KvProgressCircle.js";
57
+ import { default as se } from "./vue/KvPulsingDot.js";
58
+ import { default as de } from "./vue/KvRadio.js";
59
+ import { default as xe } from "./vue/KvSelect.js";
60
+ import { default as Ke } from "./vue/KvSideSheet.js";
61
+ import { default as Ae } from "./vue/KvSwitch.js";
62
+ import { default as ie } from "./vue/KvTab.js";
63
+ import { default as ce } from "./vue/KvTabPanel.js";
64
+ import { default as Ne } from "./vue/KvTabs.js";
65
+ import { default as Ee } from "./vue/KvTextInput.js";
66
+ import { default as Me } from "./vue/KvTextLink.js";
67
+ import { default as Ie } from "./vue/KvThemeProvider.js";
68
+ import { default as Pe } from "./vue/KvToast.js";
69
+ import { default as Ge } from "./vue/KvTooltip.js";
70
+ import { default as Fe } from "./vue/KvTreeMapChart.js";
71
+ import { default as Be } from "./vue/KvUserAvatar.js";
72
+ import { default as ye } from "./vue/KvUtilityMenu.js";
73
+ import { default as ke } from "./vue/KvVerticalCarousel.js";
74
+ import { default as we } from "./vue/KvVotingCard.js";
75
+ import { default as He } from "./vue/KvVotingCardV2.js";
76
+ import { default as ze } from "./vue/KvWideLoanCard.js";
77
+ import { default as Ze } from "./vue/KvAtbModal.js";
78
+ import { default as Je } from "./vue/KvSecondaryNav.js";
79
+ import { default as Ye } from "./vue/KvWwwHeader.js";
80
+ import { default as or, Mash as er } from "./utils/Alea.js";
81
+ import { groupBy as tr, sortBy as ar } from "./utils/arrayUtils.js";
82
+ import { useAttrs as lr } from "./utils/attrs.js";
83
+ import { carouselUtil as sr } from "./utils/carousels.js";
84
+ import { abc as dr, indexIn as ur, startsWith as xr } from "./utils/comparators.js";
85
+ import { debounce as Kr } from "./utils/debounce.js";
86
+ import { useEventListener as Ar } from "./utils/event.js";
87
+ import { collapse as ir, expand as _r } from "./utils/expander.js";
88
+ import { getKivaImageUrl as Lr, isLegacyPlaceholderAvatar as Nr, randomizedUserAvatarClass as Tr } from "./utils/imageUtils.js";
89
+ import { LOAN_CALLOUTS_FRAGMENT as Rr, LOAN_GEOCODE_FRAGMENT as Mr, LOAN_PROGRESS_FRAGMENT as Or, loanCardComputedProperties as Ir, loanCardMethods as Sr } from "./utils/loanCard.js";
90
+ import { BALANCE_CAMPAIGN as gr, BASE_CAMPAIGN as Gr, ERL_COOKIE_NAME as hr, NO_BALANCE_CAMPAIGN as Fr, TOP_UP_CAMPAIGN as Vr, getDropdownPriceArray as Br, getLendCtaSelectedOption as Dr, isBetween25And50 as yr, isLessThan25 as br, truncateStringByWords as kr } from "./utils/loanUtils.js";
91
+ import { animationCoordinator as wr, computeMapCenter as Wr, computeMapZoom as Hr, generateMapMarkers as jr, getCoordinatesBetween as zr, getCountryColor as Qr, getLoansIntervals as Zr } from "./utils/mapUtils.js";
92
+ import { lockPrintSingleEl as Jr, unlockPrintSingleEl as Xr } from "./utils/printing.js";
93
+ import { lockScroll as $r, lockScrollSmallOnly as ot, unlockScroll as et, unlockScrollSmallOnly as rt } from "./utils/scrollLock.js";
94
+ import { buildTailwindClassName as at, headerNumberCase as ft, kebabCase as lt, removeObjectProperty as mt } from "./utils/themeUtils.js";
95
+ import { throttle as pt } from "./utils/throttle.js";
96
+ import { isTargetElement as ut, offBodyTouchstart as xt, onBodyTouchstart as nt } from "./utils/touchEvents.js";
97
+ import { getTreemap as vt } from "./utils/treemap.js";
98
+ import { KvBlueskyIcon as Ct } from "./assets/icons/bluesky.js";
99
+ import { KV_CLASSIC_LOAN_CARD_FRAGMENT as _t, KV_CLASSIC_LOAN_CARD_USER_FRAGMET as ct } from "./vue/KvClassicLoanCard2.js";
100
+ import { KV_COMPACT_LOAN_CARD_FRAGMENT as Nt, KV_COMPACT_LOAN_CARD_USER_FRAGMENT as Tt } from "./vue/KvCompactLoanCard2.js";
101
+ import { KV_INTRODUCTION_LOAN_CARD_FRAGMENT as Rt, KV_INTRODUCTION_LOAN_CARD_USER_FRAGMENT as Mt } from "./vue/KvIntroductionLoanCard2.js";
102
+ import { KV_LEND_CTA_FRAGMENT as It, KV_LEND_CTA_USER_FRAGMENT as St } from "./vue/KvLendCta2.js";
103
+ import { KV_LOAN_ACTIVITIES_FRAGMENT as gt } from "./vue/KvLoanActivities2.js";
104
+ import { KV_LOAN_BOOKMARK_FRAGMENT as ht } from "./vue/KvLoanBookmark2.js";
105
+ import { KV_LOAN_TAG_FRAGMENT as Vt } from "./vue/KvLoanTag2.js";
106
+ import { KV_LOAN_USE_FRAGMENT as Dt } from "./vue/KvLoanUse2.js";
107
+ import { KV_WIDE_LOAN_CARD_FRAGMENT as bt, KV_WIDE_LOAN_CARD_USER_FRAGMENT as kt } from "./vue/KvWideLoanCard2.js";
107
108
  export {
108
- Ye as Alea,
109
- Sr as BALANCE_CAMPAIGN,
110
- gr as BASE_CAMPAIGN,
111
- Pr as ERL_COOKIE_NAME,
112
- Ct as KV_CLASSIC_LOAN_CARD_FRAGMENT,
113
- it as KV_CLASSIC_LOAN_CARD_USER_FRAGMET,
114
- ct as KV_COMPACT_LOAN_CARD_FRAGMENT,
115
- Lt as KV_COMPACT_LOAN_CARD_USER_FRAGMENT,
116
- Tt as KV_INTRODUCTION_LOAN_CARD_FRAGMENT,
117
- Et as KV_INTRODUCTION_LOAN_CARD_USER_FRAGMENT,
118
- Mt as KV_LEND_CTA_FRAGMENT,
119
- Ot as KV_LEND_CTA_USER_FRAGMENT,
120
- St as KV_LOAN_ACTIVITIES_FRAGMENT,
121
- Pt as KV_LOAN_BOOKMARK_FRAGMENT,
109
+ or as Alea,
110
+ gr as BALANCE_CAMPAIGN,
111
+ Gr as BASE_CAMPAIGN,
112
+ hr as ERL_COOKIE_NAME,
113
+ _t as KV_CLASSIC_LOAN_CARD_FRAGMENT,
114
+ ct as KV_CLASSIC_LOAN_CARD_USER_FRAGMET,
115
+ Nt as KV_COMPACT_LOAN_CARD_FRAGMENT,
116
+ Tt as KV_COMPACT_LOAN_CARD_USER_FRAGMENT,
117
+ Rt as KV_INTRODUCTION_LOAN_CARD_FRAGMENT,
118
+ Mt as KV_INTRODUCTION_LOAN_CARD_USER_FRAGMENT,
119
+ It as KV_LEND_CTA_FRAGMENT,
120
+ St as KV_LEND_CTA_USER_FRAGMENT,
121
+ gt as KV_LOAN_ACTIVITIES_FRAGMENT,
122
+ ht as KV_LOAN_BOOKMARK_FRAGMENT,
122
123
  Oo as KV_LOAN_INFO_CARD_FRAGMENT,
123
- Ft as KV_LOAN_TAG_FRAGMENT,
124
- Vt as KV_LOAN_USE_FRAGMENT,
125
- Dt as KV_WIDE_LOAN_CARD_FRAGMENT,
126
- yt as KV_WIDE_LOAN_CARD_USER_FRAGMENT,
124
+ Vt as KV_LOAN_TAG_FRAGMENT,
125
+ Dt as KV_LOAN_USE_FRAGMENT,
126
+ bt as KV_WIDE_LOAN_CARD_FRAGMENT,
127
+ kt as KV_WIDE_LOAN_CARD_USER_FRAGMENT,
127
128
  r as KvAccordionItem,
128
129
  a as KvActivityRow,
129
- ze as KvAtbModal,
130
- vt as KvBlueskyIcon,
130
+ Ze as KvAtbModal,
131
+ Ct as KvBlueskyIcon,
131
132
  l as KvBorrowerImage,
132
133
  s as KvButton,
133
134
  d as KvCardFrame,
@@ -139,9 +140,9 @@ export {
139
140
  N as KvChip,
140
141
  E as KvClassicLoanCard,
141
142
  I as KvCommentsAdd,
142
- g as KvCommentsContainer,
143
+ P as KvCommentsContainer,
143
144
  G as KvCommentsHeartButton,
144
- h as KvCommentsList,
145
+ F as KvCommentsList,
145
146
  B as KvCommentsListItem,
146
147
  y as KvCommentsReplyButton,
147
148
  M as KvCompactLoanCard,
@@ -168,88 +169,89 @@ export {
168
169
  To as KvLoanBookmark,
169
170
  Ro as KvLoanCallouts,
170
171
  Io as KvLoanInfoCard,
171
- go as KvLoanProgressGroup,
172
+ Po as KvLoanProgressGroup,
172
173
  Go as KvLoanTag,
173
- ho as KvLoanTeamPick,
174
+ Fo as KvLoanTeamPick,
174
175
  Bo as KvLoanUse,
175
176
  wo as KvMap,
176
177
  Ho as KvMaterialIcon,
177
178
  zo as KvPageContainer,
178
179
  Zo as KvPagination,
179
180
  Jo as KvPieChart,
180
- Yo as KvPill,
181
- oe as KvPopper,
182
- re as KvProgressBar,
183
- ae as KvProgressCircle,
184
- le as KvPulsingDot,
185
- se as KvRadio,
186
- Ze as KvSecondaryNav,
187
- de as KvSelect,
188
- xe as KvSideSheet,
189
- Ke as KvSwitch,
190
- Ae as KvTab,
191
- ie as KvTabPanel,
192
- ce as KvTabs,
193
- Ne as KvTextInput,
194
- Ee as KvTextLink,
195
- Me as KvThemeProvider,
196
- Ie as KvToast,
197
- ge as KvTooltip,
198
- Ge as KvTreeMapChart,
199
- he as KvUserAvatar,
200
- Be as KvUtilityMenu,
201
- ye as KvVerticalCarousel,
202
- ke as KvVotingCard,
203
- we as KvVotingCardV2,
204
- He as KvWideLoanCard,
205
- Je as KvWwwHeader,
206
- Tr as LOAN_CALLOUTS_FRAGMENT,
207
- Er as LOAN_GEOCODE_FRAGMENT,
208
- Rr as LOAN_PROGRESS_FRAGMENT,
209
- $e as Mash,
210
- Gr as NO_BALANCE_CAMPAIGN,
211
- Fr as TOP_UP_CAMPAIGN,
212
- sr as abc,
213
- kr as animationCoordinator,
214
- rt as buildTailwindClassName,
215
- lr as carouselUtil,
216
- Ar as collapse,
217
- Ur as computeMapCenter,
218
- wr as computeMapZoom,
219
- xr as debounce,
220
- Cr as expand,
221
- Wr as generateMapMarkers,
222
- Hr as getCoordinatesBetween,
223
- jr as getCountryColor,
224
- hr as getDropdownPriceArray,
225
- _r as getKivaImageUrl,
226
- Vr as getLendCtaSelectedOption,
227
- zr as getLoansIntervals,
228
- nt as getTreemap,
229
- er as groupBy,
230
- tt as headerNumberCase,
231
- pr as indexIn,
232
- Br as isBetween25And50,
233
- cr as isLegacyPlaceholderAvatar,
234
- Dr as isLessThan25,
235
- pt as isTargetElement,
236
- at as kebabCase,
237
- Mr as loanCardComputedProperties,
238
- Or as loanCardMethods,
239
- Zr as lockPrintSingleEl,
240
- Xr as lockScroll,
241
- Yr as lockScrollSmallOnly,
242
- dt as offBodyTouchstart,
243
- ut as onBodyTouchstart,
244
- Lr as randomizedUserAvatarClass,
245
- ft as removeObjectProperty,
246
- rr as sortBy,
247
- dr as startsWith,
248
- mt as throttle,
249
- yr as truncateStringByWords,
250
- qr as unlockPrintSingleEl,
251
- $r as unlockScroll,
252
- ot as unlockScrollSmallOnly,
253
- ar as useAttrs,
254
- Kr as useEventListener
181
+ Yo as KvPieChartV2,
182
+ oe as KvPill,
183
+ re as KvPopper,
184
+ ae as KvProgressBar,
185
+ le as KvProgressCircle,
186
+ se as KvPulsingDot,
187
+ de as KvRadio,
188
+ Je as KvSecondaryNav,
189
+ xe as KvSelect,
190
+ Ke as KvSideSheet,
191
+ Ae as KvSwitch,
192
+ ie as KvTab,
193
+ ce as KvTabPanel,
194
+ Ne as KvTabs,
195
+ Ee as KvTextInput,
196
+ Me as KvTextLink,
197
+ Ie as KvThemeProvider,
198
+ Pe as KvToast,
199
+ Ge as KvTooltip,
200
+ Fe as KvTreeMapChart,
201
+ Be as KvUserAvatar,
202
+ ye as KvUtilityMenu,
203
+ ke as KvVerticalCarousel,
204
+ we as KvVotingCard,
205
+ He as KvVotingCardV2,
206
+ ze as KvWideLoanCard,
207
+ Ye as KvWwwHeader,
208
+ Rr as LOAN_CALLOUTS_FRAGMENT,
209
+ Mr as LOAN_GEOCODE_FRAGMENT,
210
+ Or as LOAN_PROGRESS_FRAGMENT,
211
+ er as Mash,
212
+ Fr as NO_BALANCE_CAMPAIGN,
213
+ Vr as TOP_UP_CAMPAIGN,
214
+ dr as abc,
215
+ wr as animationCoordinator,
216
+ at as buildTailwindClassName,
217
+ sr as carouselUtil,
218
+ ir as collapse,
219
+ Wr as computeMapCenter,
220
+ Hr as computeMapZoom,
221
+ Kr as debounce,
222
+ _r as expand,
223
+ jr as generateMapMarkers,
224
+ zr as getCoordinatesBetween,
225
+ Qr as getCountryColor,
226
+ Br as getDropdownPriceArray,
227
+ Lr as getKivaImageUrl,
228
+ Dr as getLendCtaSelectedOption,
229
+ Zr as getLoansIntervals,
230
+ vt as getTreemap,
231
+ tr as groupBy,
232
+ ft as headerNumberCase,
233
+ ur as indexIn,
234
+ yr as isBetween25And50,
235
+ Nr as isLegacyPlaceholderAvatar,
236
+ br as isLessThan25,
237
+ ut as isTargetElement,
238
+ lt as kebabCase,
239
+ Ir as loanCardComputedProperties,
240
+ Sr as loanCardMethods,
241
+ Jr as lockPrintSingleEl,
242
+ $r as lockScroll,
243
+ ot as lockScrollSmallOnly,
244
+ xt as offBodyTouchstart,
245
+ nt as onBodyTouchstart,
246
+ Tr as randomizedUserAvatarClass,
247
+ mt as removeObjectProperty,
248
+ ar as sortBy,
249
+ xr as startsWith,
250
+ pt as throttle,
251
+ kr as truncateStringByWords,
252
+ Xr as unlockPrintSingleEl,
253
+ et as unlockScroll,
254
+ rt as unlockScrollSmallOnly,
255
+ lr as useAttrs,
256
+ Ar as useEventListener
255
257
  };
@@ -0,0 +1,4 @@
1
+ export declare const LOADING_BG_COLOR: string;
2
+ export declare const OTHER_SEGMENT_BG_COLOR: string;
3
+ export declare const PIE_CHART_COLORS: string[];
4
+ export declare function getPieChartColor(index: number, customColor?: string): string;
@@ -0,0 +1,42 @@
1
+ import n from "@kiva/kv-tokens";
2
+ const { colors: e } = n, i = e.gray[100], g = e.gray[300], o = [
3
+ // Tier 1 — Bold primaries
4
+ e["eco-green"][3],
5
+ // #276A43
6
+ e.marigold.DEFAULT,
7
+ // #F4B539
8
+ e["desert-rose"].DEFAULT,
9
+ // #C45F4F
10
+ "#2E3BAD",
11
+ // Custom blue for contrast
12
+ "#874FFF",
13
+ // Custom purple for contrast
14
+ e.stone[3],
15
+ // #635544
16
+ e.brand[500],
17
+ // #4AB67E
18
+ e.marigold[3],
19
+ // #996210
20
+ // Tier 2 — Lighter variants
21
+ e["eco-green"][2],
22
+ // #78C79F
23
+ e.marigold[2],
24
+ // #F8CD69
25
+ e["desert-rose"][2],
26
+ // #E0988D
27
+ e.stone[2],
28
+ // #AA9E8D
29
+ e.brand[300],
30
+ // #95D4B3
31
+ e["desert-rose"][3]
32
+ // #A24536
33
+ ];
34
+ function a(t, r) {
35
+ return r || o[t % o.length];
36
+ }
37
+ export {
38
+ i as LOADING_BG_COLOR,
39
+ g as OTHER_SEGMENT_BG_COLOR,
40
+ o as PIE_CHART_COLORS,
41
+ a as getPieChartColor
42
+ };
@@ -0,0 +1,5 @@
1
+ import { Ref } from 'vue';
2
+ export declare function easeInOutCubic(t: number): number;
3
+ export declare function useCountUp(target: Ref<number>, active: Ref<boolean>, duration?: number): {
4
+ displayValue: Ref<number, number>;
5
+ };
@@ -0,0 +1,7 @@
1
+ import "vue";
2
+ function r(e) {
3
+ return e < 0.5 ? 4 * e * e * e : 1 - (-2 * e + 2) ** 3 / 2;
4
+ }
5
+ export {
6
+ r as easeInOutCubic
7
+ };
@@ -0,0 +1 @@
1
+ .segment-circle[data-v-3e2d3156]{transition:stroke-dashoffset .5s ease-in-out}.skeleton-ring[data-v-3e2d3156]{transition:opacity .5s ease-in-out}.legend-dot[data-v-3e2d3156]{transition:background-color .5s ease-in-out}
@@ -0,0 +1,143 @@
1
+ import y from "./KvPieChartV22.js";
2
+ import { resolveComponent as x, openBlock as l, createElementBlock as o, createElementVNode as r, normalizeClass as k, createCommentVNode as n, Fragment as d, renderList as c, normalizeStyle as a, toDisplayString as w, createBlock as _, withCtx as b } from "vue";
3
+ import "./KvPieChartV2.css";
4
+ import u from "../_virtual/_plugin-vue_export-helper.js";
5
+ const v = {
6
+ class: "kv-pie-chart-v2 tw-flex tw-flex-col tw-items-center tw-gap-1",
7
+ "aria-label": "Pie chart"
8
+ }, C = { class: "tw-px-2" }, D = {
9
+ viewBox: "0 0 262 262",
10
+ fill: "none",
11
+ class: "tw-w-full",
12
+ role: "img",
13
+ "aria-hidden": "true"
14
+ }, S = ["cx", "cy", "r", "stroke", "stroke-width"], L = ["cx", "cy", "r", "stroke", "stroke-width", "stroke-dasharray", "transform"], O = ["cx", "cy", "r", "stroke", "stroke-width", "stroke-dasharray", "transform"], V = {
15
+ key: 0,
16
+ class: "tw-flex tw-flex-wrap tw-justify-center tw-gap-0.5 tw-w-full tw-pt-0.5"
17
+ }, W = { class: "tw-flex tw-gap-0.5 tw-items-center tw-min-w-0 tw-overflow-hidden" }, p = { class: "tw-font-medium tw-text-small tw-text-primary tw-whitespace-nowrap tw-truncate" }, B = { class: "tw-flex tw-gap-0.5 tw-items-center tw-shrink-0" }, I = { class: "tw-grid tw-grid-cols-2 tw-grid-flow-row tw-gap-0.5" }, E = { class: "tw-flex tw-gap-0.5 tw-items-center tw-shrink-0 tw-overflow-hidden" }, X = { class: "tw-font-medium tw-text-small tw-text-primary tw-whitespace-nowrap tw-truncate" }, Y = {
18
+ class: "tw-font-light tw-text-small tw-text-primary tw-text-right tw-shrink-0 tw-tabular-nums",
19
+ style: { "min-width": "2.8ch" }
20
+ };
21
+ function G(N, s, i, t, M, R) {
22
+ var h, m;
23
+ const f = x("kv-lightbox");
24
+ return l(), o("figure", v, [
25
+ r("div", C, [
26
+ (l(), o("svg", D, [
27
+ i.loading || !t.hasData ? (l(), o("circle", {
28
+ key: 0,
29
+ cx: t.CX,
30
+ cy: t.CY,
31
+ r: t.radius,
32
+ stroke: t.LOADING_BG_COLOR,
33
+ "stroke-width": i.strokeWidth,
34
+ fill: "none",
35
+ class: k(["skeleton-ring tw-opacity-0", { "skeleton-ring--hidden": t.animatedIn }])
36
+ }, null, 10, S)) : n("", !0),
37
+ (l(!0), o(d, null, c(t.visibleSegments, (e) => (l(), o("circle", {
38
+ key: e.label,
39
+ cx: t.CX,
40
+ cy: t.CY,
41
+ r: t.radius,
42
+ stroke: e.color,
43
+ "stroke-width": i.strokeWidth,
44
+ fill: "none",
45
+ "stroke-dasharray": `${e.dashLength} ${t.circumference * 2}`,
46
+ transform: `rotate(${e.startDeg}, ${t.CX}, ${t.CY})`,
47
+ class: "segment-circle",
48
+ style: a({
49
+ strokeDashoffset: e.isVisible ? 0 : e.dashLength,
50
+ transitionDelay: `${e.delay}ms`
51
+ })
52
+ }, null, 12, L))), 128)),
53
+ t.otherSegment ? (l(), o("circle", {
54
+ key: 1,
55
+ cx: t.CX,
56
+ cy: t.CY,
57
+ r: t.radius,
58
+ stroke: t.OTHER_SEGMENT_BG_COLOR,
59
+ "stroke-width": i.strokeWidth,
60
+ fill: "none",
61
+ "stroke-dasharray": `${t.otherSegment.dashLength} ${t.circumference * 2}`,
62
+ transform: `rotate(${t.otherSegment.startDeg}, ${t.CX}, ${t.CY})`,
63
+ class: "segment-circle",
64
+ style: a({
65
+ strokeDashoffset: t.otherSegment.isVisible ? 0 : t.otherSegment.dashLength,
66
+ transitionDelay: `${t.otherSegment.delay}ms`
67
+ })
68
+ }, null, 12, O)) : n("", !0)
69
+ ]))
70
+ ]),
71
+ t.hasData && !i.loading ? (l(), o("div", V, [
72
+ (l(!0), o(d, null, c(t.visibleSegments, (e, g) => (l(), o("div", {
73
+ key: e.label,
74
+ class: "tw-bg-gray-100 tw-flex tw-gap-0.5 tw-items-center tw-px-1 tw-py-0.5 tw-rounded-xs"
75
+ }, [
76
+ r("div", W, [
77
+ r("span", {
78
+ class: "tw-shrink-0 tw-w-1 tw-h-1 tw-rounded-full legend-dot",
79
+ style: a({
80
+ backgroundColor: e.isVisible ? e.color : "#d1d5db",
81
+ transitionDelay: `${e.delay}ms`
82
+ })
83
+ }, null, 4),
84
+ r("span", p, w(e.label), 1)
85
+ ]),
86
+ r("span", {
87
+ class: "tw-font-light tw-text-small tw-text-primary tw-text-right tw-shrink-0 tw-tabular-nums",
88
+ style: a({ minWidth: t.valueMinWidth })
89
+ }, w(t.formatDisplayValue(g)), 5)
90
+ ]))), 128)),
91
+ t.otherItems.length > 0 ? (l(), o("button", {
92
+ key: 0,
93
+ class: "tw-bg-gray-100 tw-flex tw-gap-0.5 tw-items-center tw-px-1 tw-py-0.5 tw-rounded-xs tw-cursor-pointer tw-border-0 tw-text-left",
94
+ type: "button",
95
+ onClick: s[0] || (s[0] = (e) => t.showOtherLightbox = !0)
96
+ }, [
97
+ r("div", B, [
98
+ r("span", {
99
+ class: "tw-shrink-0 tw-w-1 tw-h-1 tw-rounded-full legend-dot",
100
+ style: a({
101
+ backgroundColor: (h = t.otherSegment) != null && h.isVisible ? "#C4C4C4" : "#d1d5db",
102
+ transitionDelay: `${((m = t.otherSegment) == null ? void 0 : m.delay) ?? 0}ms`
103
+ })
104
+ }, null, 4),
105
+ s[2] || (s[2] = r("span", { class: "tw-font-medium tw-text-small tw-text-primary tw-whitespace-nowrap" }, " Other ", -1))
106
+ ]),
107
+ r("span", {
108
+ class: "tw-font-light tw-text-small tw-text-primary tw-text-right tw-shrink-0 tw-tabular-nums",
109
+ style: a({ minWidth: t.valueMinWidth })
110
+ }, w(t.formatOtherDisplayValue()), 5)
111
+ ])) : n("", !0)
112
+ ])) : n("", !0),
113
+ t.hasData && !i.loading ? (l(), _(f, {
114
+ key: 1,
115
+ visible: t.showOtherLightbox,
116
+ title: "Other",
117
+ onLightboxClosed: s[1] || (s[1] = (e) => t.showOtherLightbox = !1)
118
+ }, {
119
+ default: b(() => [
120
+ r("div", I, [
121
+ (l(!0), o(d, null, c(t.allItemsWithColors, (e) => (l(), o("div", {
122
+ key: e.label,
123
+ class: "tw-bg-gray-100 tw-flex tw-gap-0.5 tw-items-center tw-px-1 tw-py-0.5 tw-rounded-xs tw-justify-between tw-w-full"
124
+ }, [
125
+ r("div", E, [
126
+ r("span", {
127
+ class: "tw-shrink-0 tw-w-1 tw-h-1 tw-rounded-full",
128
+ style: a({ backgroundColor: e.color })
129
+ }, null, 4),
130
+ r("span", X, w(e.label), 1)
131
+ ]),
132
+ r("span", Y, w(t.formatItemValue(e)), 1)
133
+ ]))), 128))
134
+ ])
135
+ ]),
136
+ _: 1
137
+ }, 8, ["visible"])) : n("", !0)
138
+ ]);
139
+ }
140
+ const A = /* @__PURE__ */ u(y, [["render", G], ["__scopeId", "data-v-3e2d3156"]]);
141
+ export {
142
+ A as default
143
+ };