@seekalfred/primitives 0.5.1 → 0.7.1

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 (446) hide show
  1. package/README.md +682 -19
  2. package/dist/accordion/accordion.js +10 -4
  3. package/dist/accordion/accordion.js.map +1 -1
  4. package/dist/action-button/action-button.d.ts +50 -0
  5. package/dist/action-button/action-button.js +159 -0
  6. package/dist/action-button/action-button.js.map +1 -0
  7. package/dist/action-button/index.d.ts +2 -0
  8. package/dist/action-button/index.js +2 -0
  9. package/dist/activity-heatmap/activity-heatmap.d.ts +92 -0
  10. package/dist/activity-heatmap/activity-heatmap.js +699 -0
  11. package/dist/activity-heatmap/activity-heatmap.js.map +1 -0
  12. package/dist/activity-heatmap/index.d.ts +2 -0
  13. package/dist/activity-heatmap/index.js +2 -0
  14. package/dist/alert/alert.d.ts +19 -1
  15. package/dist/alert/alert.js +180 -23
  16. package/dist/alert/alert.js.map +1 -1
  17. package/dist/alert-dialog/alert-dialog.d.ts +45 -18
  18. package/dist/alert-dialog/alert-dialog.js +128 -9
  19. package/dist/alert-dialog/alert-dialog.js.map +1 -1
  20. package/dist/alert-dialog/index.d.ts +2 -2
  21. package/dist/alert-dialog/index.js +2 -2
  22. package/dist/animated-counter/animated-counter.d.ts +38 -0
  23. package/dist/animated-counter/animated-counter.js +230 -0
  24. package/dist/animated-counter/animated-counter.js.map +1 -0
  25. package/dist/animated-counter/index.d.ts +2 -0
  26. package/dist/animated-counter/index.js +2 -0
  27. package/dist/announcement-bar/announcement-bar.d.ts +67 -0
  28. package/dist/announcement-bar/announcement-bar.js +364 -0
  29. package/dist/announcement-bar/announcement-bar.js.map +1 -0
  30. package/dist/announcement-bar/index.d.ts +2 -0
  31. package/dist/announcement-bar/index.js +2 -0
  32. package/dist/avatar/avatar.d.ts +6 -0
  33. package/dist/avatar/avatar.js +47 -16
  34. package/dist/avatar/avatar.js.map +1 -1
  35. package/dist/badge/badge.d.ts +10 -3
  36. package/dist/badge/badge.js +35 -5
  37. package/dist/badge/badge.js.map +1 -1
  38. package/dist/bar-chart/bar-chart.d.ts +51 -0
  39. package/dist/bar-chart/bar-chart.js +565 -0
  40. package/dist/bar-chart/bar-chart.js.map +1 -0
  41. package/dist/bar-chart/index.d.ts +2 -0
  42. package/dist/bar-chart/index.js +2 -0
  43. package/dist/breadcrumb/breadcrumb.d.ts +2 -29
  44. package/dist/breadcrumb/breadcrumb.js +32 -9
  45. package/dist/breadcrumb/breadcrumb.js.map +1 -1
  46. package/dist/brush-chart/brush-chart.d.ts +64 -0
  47. package/dist/brush-chart/brush-chart.js +1056 -0
  48. package/dist/brush-chart/brush-chart.js.map +1 -0
  49. package/dist/brush-chart/index.d.ts +2 -0
  50. package/dist/brush-chart/index.js +2 -0
  51. package/dist/button/button.d.ts +36 -23
  52. package/dist/button/button.js +198 -45
  53. package/dist/button/button.js.map +1 -1
  54. package/dist/button-group/button-group.d.ts +76 -0
  55. package/dist/button-group/button-group.js +402 -0
  56. package/dist/button-group/button-group.js.map +1 -0
  57. package/dist/button-group/index.d.ts +2 -0
  58. package/dist/button-group/index.js +2 -0
  59. package/dist/calendar/calendar.d.ts +1 -1
  60. package/dist/calendar/calendar.js +257 -30
  61. package/dist/calendar/calendar.js.map +1 -1
  62. package/dist/card/card.d.ts +9 -2
  63. package/dist/card/card.js +16 -5
  64. package/dist/card/card.js.map +1 -1
  65. package/dist/card-stack/card-stack.d.ts +54 -0
  66. package/dist/card-stack/card-stack.js +492 -0
  67. package/dist/card-stack/card-stack.js.map +1 -0
  68. package/dist/card-stack/index.d.ts +2 -0
  69. package/dist/card-stack/index.js +2 -0
  70. package/dist/carousel/carousel.d.ts +56 -0
  71. package/dist/carousel/carousel.js +389 -0
  72. package/dist/carousel/carousel.js.map +1 -0
  73. package/dist/carousel/index.d.ts +2 -0
  74. package/dist/carousel/index.js +2 -0
  75. package/dist/checkbox/checkbox.d.ts +0 -7
  76. package/dist/checkbox/checkbox.js +26 -29
  77. package/dist/checkbox/checkbox.js.map +1 -1
  78. package/dist/chip-group/chip-group.d.ts +37 -0
  79. package/dist/chip-group/chip-group.js +148 -0
  80. package/dist/chip-group/chip-group.js.map +1 -0
  81. package/dist/chip-group/index.d.ts +2 -0
  82. package/dist/chip-group/index.js +2 -0
  83. package/dist/confirm-morph/confirm-morph.d.ts +85 -0
  84. package/dist/confirm-morph/confirm-morph.js +652 -0
  85. package/dist/confirm-morph/confirm-morph.js.map +1 -0
  86. package/dist/confirm-morph/index.d.ts +2 -0
  87. package/dist/confirm-morph/index.js +2 -0
  88. package/dist/copy-button/copy-button.d.ts +32 -0
  89. package/dist/copy-button/copy-button.js +134 -0
  90. package/dist/copy-button/copy-button.js.map +1 -0
  91. package/dist/copy-button/index.d.ts +2 -0
  92. package/dist/copy-button/index.js +2 -0
  93. package/dist/countdown/countdown.d.ts +45 -0
  94. package/dist/countdown/countdown.js +298 -0
  95. package/dist/countdown/countdown.js.map +1 -0
  96. package/dist/countdown/index.d.ts +2 -0
  97. package/dist/countdown/index.js +2 -0
  98. package/dist/date-picker/date-picker.d.ts +51 -0
  99. package/dist/date-picker/date-picker.js +241 -0
  100. package/dist/date-picker/date-picker.js.map +1 -0
  101. package/dist/date-picker/date-range-picker.d.ts +78 -0
  102. package/dist/date-picker/date-range-picker.js +1015 -0
  103. package/dist/date-picker/date-range-picker.js.map +1 -0
  104. package/dist/date-picker/index.d.ts +4 -0
  105. package/dist/date-picker/index.js +4 -0
  106. package/dist/date-picker/picker-parts.d.ts +46 -0
  107. package/dist/date-picker/picker-parts.js +135 -0
  108. package/dist/date-picker/picker-parts.js.map +1 -0
  109. package/dist/dialog/dialog.d.ts +10 -14
  110. package/dist/dialog/dialog.js +40 -12
  111. package/dist/dialog/dialog.js.map +1 -1
  112. package/dist/donut-chart/donut-chart.d.ts +64 -0
  113. package/dist/donut-chart/donut-chart.js +576 -0
  114. package/dist/donut-chart/donut-chart.js.map +1 -0
  115. package/dist/donut-chart/index.d.ts +2 -0
  116. package/dist/donut-chart/index.js +2 -0
  117. package/dist/empty-state/empty-state.d.ts +55 -0
  118. package/dist/empty-state/empty-state.js +89 -0
  119. package/dist/empty-state/empty-state.js.map +1 -0
  120. package/dist/empty-state/index.d.ts +2 -0
  121. package/dist/empty-state/index.js +2 -0
  122. package/dist/expanding-button-group/expanding-button-group.d.ts +54 -0
  123. package/dist/expanding-button-group/expanding-button-group.js +350 -0
  124. package/dist/expanding-button-group/expanding-button-group.js.map +1 -0
  125. package/dist/expanding-button-group/index.d.ts +2 -0
  126. package/dist/expanding-button-group/index.js +2 -0
  127. package/dist/file-drop-zone/file-drop-zone.d.ts +71 -0
  128. package/dist/file-drop-zone/file-drop-zone.js +116 -0
  129. package/dist/file-drop-zone/file-drop-zone.js.map +1 -0
  130. package/dist/file-drop-zone/index.d.ts +2 -0
  131. package/dist/file-drop-zone/index.js +2 -0
  132. package/dist/filter-bar/filter-bar.d.ts +142 -0
  133. package/dist/filter-bar/filter-bar.js +416 -0
  134. package/dist/filter-bar/filter-bar.js.map +1 -0
  135. package/dist/filter-bar/index.d.ts +2 -0
  136. package/dist/filter-bar/index.js +2 -0
  137. package/dist/floating-button-group/floating-button-group.d.ts +61 -0
  138. package/dist/floating-button-group/floating-button-group.js +340 -0
  139. package/dist/floating-button-group/floating-button-group.js.map +1 -0
  140. package/dist/floating-button-group/index.d.ts +2 -0
  141. package/dist/floating-button-group/index.js +2 -0
  142. package/dist/gauge/gauge.d.ts +45 -0
  143. package/dist/gauge/gauge.js +219 -0
  144. package/dist/gauge/gauge.js.map +1 -0
  145. package/dist/gauge/index.d.ts +2 -0
  146. package/dist/gauge/index.js +2 -0
  147. package/dist/icon-morph/icon-morph.d.ts +55 -0
  148. package/dist/icon-morph/icon-morph.js +331 -0
  149. package/dist/icon-morph/icon-morph.js.map +1 -0
  150. package/dist/icon-morph/index.d.ts +2 -0
  151. package/dist/icon-morph/index.js +2 -0
  152. package/dist/in-view-title/in-view-title.d.ts +33 -0
  153. package/dist/in-view-title/in-view-title.js +119 -0
  154. package/dist/in-view-title/in-view-title.js.map +1 -0
  155. package/dist/in-view-title/index.d.ts +2 -0
  156. package/dist/in-view-title/index.js +2 -0
  157. package/dist/index.d.ts +71 -6
  158. package/dist/index.js +73 -11
  159. package/dist/input/input.d.ts +22 -0
  160. package/dist/input/input.js +36 -12
  161. package/dist/input/input.js.map +1 -1
  162. package/dist/lib/cn.js +11 -1
  163. package/dist/lib/cn.js.map +1 -1
  164. package/dist/lib/count-to.js +113 -0
  165. package/dist/lib/count-to.js.map +1 -0
  166. package/dist/lib/eye-morph.js +62 -0
  167. package/dist/lib/eye-morph.js.map +1 -0
  168. package/dist/lib/field-message.js +354 -0
  169. package/dist/lib/field-message.js.map +1 -0
  170. package/dist/lib/field-shell.js +81 -0
  171. package/dist/lib/field-shell.js.map +1 -0
  172. package/dist/lib/field-surface.js +11 -8
  173. package/dist/lib/field-surface.js.map +1 -1
  174. package/dist/lib/flag-emoji.js +50 -0
  175. package/dist/lib/flag-emoji.js.map +1 -0
  176. package/dist/lib/flip.js +88 -0
  177. package/dist/lib/flip.js.map +1 -0
  178. package/dist/lib/height-follow.js +59 -0
  179. package/dist/lib/height-follow.js.map +1 -0
  180. package/dist/lib/icon-swap.js +47 -0
  181. package/dist/lib/icon-swap.js.map +1 -0
  182. package/dist/lib/leaving-list.js +57 -0
  183. package/dist/lib/leaving-list.js.map +1 -0
  184. package/dist/lib/menu-highlight.js +64 -0
  185. package/dist/lib/menu-highlight.js.map +1 -0
  186. package/dist/lib/merge-refs.js +3 -3
  187. package/dist/lib/merge-refs.js.map +1 -1
  188. package/dist/lib/morph-text.js +128 -0
  189. package/dist/lib/morph-text.js.map +1 -0
  190. package/dist/lib/motion.js +169 -0
  191. package/dist/lib/motion.js.map +1 -0
  192. package/dist/lib/pausable-timeout.js +67 -0
  193. package/dist/lib/pausable-timeout.js.map +1 -0
  194. package/dist/lib/rolling-value.js +31 -0
  195. package/dist/lib/rolling-value.js.map +1 -0
  196. package/dist/lib/spring-progress.js +114 -0
  197. package/dist/lib/spring-progress.js.map +1 -0
  198. package/dist/lib/spring-tween.js +500 -0
  199. package/dist/lib/spring-tween.js.map +1 -0
  200. package/dist/lib/svg-id.js +10 -0
  201. package/dist/lib/svg-id.js.map +1 -0
  202. package/dist/lib/swap-text.js +79 -0
  203. package/dist/lib/swap-text.js.map +1 -0
  204. package/dist/lib/use-copy-feedback.js +36 -0
  205. package/dist/lib/use-copy-feedback.js.map +1 -0
  206. package/dist/line-chart/index.d.ts +2 -0
  207. package/dist/line-chart/index.js +2 -0
  208. package/dist/line-chart/line-chart.d.ts +76 -0
  209. package/dist/line-chart/line-chart.js +611 -0
  210. package/dist/line-chart/line-chart.js.map +1 -0
  211. package/dist/mention-input/index.d.ts +2 -0
  212. package/dist/mention-input/index.js +2 -0
  213. package/dist/mention-input/mention-input.d.ts +98 -0
  214. package/dist/mention-input/mention-input.js +576 -0
  215. package/dist/mention-input/mention-input.js.map +1 -0
  216. package/dist/menu/menu.d.ts +2 -0
  217. package/dist/menu/menu.js +23 -12
  218. package/dist/menu/menu.js.map +1 -1
  219. package/dist/money-input/index.d.ts +2 -0
  220. package/dist/money-input/index.js +2 -0
  221. package/dist/money-input/money-input.d.ts +65 -0
  222. package/dist/money-input/money-input.js +607 -0
  223. package/dist/money-input/money-input.js.map +1 -0
  224. package/dist/morph-select/index.d.ts +2 -0
  225. package/dist/morph-select/index.js +2 -0
  226. package/dist/morph-select/morph-select.d.ts +71 -0
  227. package/dist/morph-select/morph-select.js +693 -0
  228. package/dist/morph-select/morph-select.js.map +1 -0
  229. package/dist/multi-select/index.d.ts +2 -0
  230. package/dist/multi-select/index.js +2 -0
  231. package/dist/multi-select/multi-select.d.ts +36 -0
  232. package/dist/multi-select/multi-select.js +152 -0
  233. package/dist/multi-select/multi-select.js.map +1 -0
  234. package/dist/number-field/index.d.ts +2 -0
  235. package/dist/number-field/index.js +2 -0
  236. package/dist/number-field/number-field.d.ts +42 -0
  237. package/dist/number-field/number-field.js +199 -0
  238. package/dist/number-field/number-field.js.map +1 -0
  239. package/dist/onboarding-checklist/index.d.ts +2 -0
  240. package/dist/onboarding-checklist/index.js +2 -0
  241. package/dist/onboarding-checklist/onboarding-checklist.d.ts +55 -0
  242. package/dist/onboarding-checklist/onboarding-checklist.js +577 -0
  243. package/dist/onboarding-checklist/onboarding-checklist.js.map +1 -0
  244. package/dist/page-header/index.d.ts +2 -0
  245. package/dist/page-header/index.js +2 -0
  246. package/dist/page-header/page-header.d.ts +75 -0
  247. package/dist/page-header/page-header.js +83 -0
  248. package/dist/page-header/page-header.js.map +1 -0
  249. package/dist/password-field/index.d.ts +2 -0
  250. package/dist/password-field/index.js +2 -0
  251. package/dist/password-field/password-field.d.ts +37 -0
  252. package/dist/password-field/password-field.js +101 -0
  253. package/dist/password-field/password-field.js.map +1 -0
  254. package/dist/password-strength/index.d.ts +2 -0
  255. package/dist/password-strength/index.js +2 -0
  256. package/dist/password-strength/password-strength.d.ts +127 -0
  257. package/dist/password-strength/password-strength.js +455 -0
  258. package/dist/password-strength/password-strength.js.map +1 -0
  259. package/dist/phone-input/index.d.ts +3 -0
  260. package/dist/phone-input/index.js +3 -0
  261. package/dist/phone-input/phone-countries.d.ts +29 -0
  262. package/dist/phone-input/phone-countries.js +170 -0
  263. package/dist/phone-input/phone-countries.js.map +1 -0
  264. package/dist/phone-input/phone-input.d.ts +66 -0
  265. package/dist/phone-input/phone-input.js +440 -0
  266. package/dist/phone-input/phone-input.js.map +1 -0
  267. package/dist/popover/popover.d.ts +20 -0
  268. package/dist/popover/popover.js +33 -9
  269. package/dist/popover/popover.js.map +1 -1
  270. package/dist/progress/progress.js +46 -5
  271. package/dist/progress/progress.js.map +1 -1
  272. package/dist/radio-group/radio-group.js +8 -7
  273. package/dist/radio-group/radio-group.js.map +1 -1
  274. package/dist/reactions/index.d.ts +2 -0
  275. package/dist/reactions/index.js +2 -0
  276. package/dist/reactions/reactions.d.ts +50 -0
  277. package/dist/reactions/reactions.js +315 -0
  278. package/dist/reactions/reactions.js.map +1 -0
  279. package/dist/rich-text-editor/index.d.ts +3 -0
  280. package/dist/rich-text-editor/index.js +2 -0
  281. package/dist/rich-text-editor/rich-text-editor.d.ts +70 -0
  282. package/dist/rich-text-editor/rich-text-editor.js +909 -0
  283. package/dist/rich-text-editor/rich-text-editor.js.map +1 -0
  284. package/dist/rich-text-editor/rich-text-engine.d.ts +16 -0
  285. package/dist/rich-text-editor/rich-text-engine.js +366 -0
  286. package/dist/rich-text-editor/rich-text-engine.js.map +1 -0
  287. package/dist/rich-text-editor/rich-text-html.js +174 -0
  288. package/dist/rich-text-editor/rich-text-html.js.map +1 -0
  289. package/dist/rich-text-editor/rich-text-icons.js +43 -0
  290. package/dist/rich-text-editor/rich-text-icons.js.map +1 -0
  291. package/dist/ridgeline/index.d.ts +2 -0
  292. package/dist/ridgeline/index.js +2 -0
  293. package/dist/ridgeline/ridgeline.d.ts +55 -0
  294. package/dist/ridgeline/ridgeline.js +701 -0
  295. package/dist/ridgeline/ridgeline.js.map +1 -0
  296. package/dist/scroll-area/index.d.ts +2 -2
  297. package/dist/scroll-area/index.js +2 -2
  298. package/dist/scroll-area/scroll-area.d.ts +75 -28
  299. package/dist/scroll-area/scroll-area.js +212 -41
  300. package/dist/scroll-area/scroll-area.js.map +1 -1
  301. package/dist/scrub-input/evaluate.d.ts +14 -0
  302. package/dist/scrub-input/evaluate.js +72 -0
  303. package/dist/scrub-input/evaluate.js.map +1 -0
  304. package/dist/scrub-input/index.d.ts +3 -0
  305. package/dist/scrub-input/index.js +3 -0
  306. package/dist/scrub-input/scrub-input.d.ts +74 -0
  307. package/dist/scrub-input/scrub-input.js +486 -0
  308. package/dist/scrub-input/scrub-input.js.map +1 -0
  309. package/dist/search-field/index.d.ts +2 -0
  310. package/dist/search-field/index.js +2 -0
  311. package/dist/search-field/search-field.d.ts +27 -0
  312. package/dist/search-field/search-field.js +155 -0
  313. package/dist/search-field/search-field.js.map +1 -0
  314. package/dist/select/select.d.ts +3 -1
  315. package/dist/select/select.js +95 -25
  316. package/dist/select/select.js.map +1 -1
  317. package/dist/separator/separator.d.ts +1 -1
  318. package/dist/sheet/sheet.js +4 -2
  319. package/dist/sheet/sheet.js.map +1 -1
  320. package/dist/shortcut-recorder/index.d.ts +3 -0
  321. package/dist/shortcut-recorder/index.js +3 -0
  322. package/dist/shortcut-recorder/shortcut-model.d.ts +27 -0
  323. package/dist/shortcut-recorder/shortcut-model.js +206 -0
  324. package/dist/shortcut-recorder/shortcut-model.js.map +1 -0
  325. package/dist/shortcut-recorder/shortcut-recorder.d.ts +93 -0
  326. package/dist/shortcut-recorder/shortcut-recorder.js +489 -0
  327. package/dist/shortcut-recorder/shortcut-recorder.js.map +1 -0
  328. package/dist/side-nav/index.d.ts +2 -0
  329. package/dist/side-nav/index.js +2 -0
  330. package/dist/side-nav/side-nav.d.ts +72 -0
  331. package/dist/side-nav/side-nav.js +142 -0
  332. package/dist/side-nav/side-nav.js.map +1 -0
  333. package/dist/skeleton/skeleton.d.ts +8 -2
  334. package/dist/skeleton/skeleton.js +6 -2
  335. package/dist/skeleton/skeleton.js.map +1 -1
  336. package/dist/slider/index.d.ts +2 -2
  337. package/dist/slider/slider.d.ts +46 -14
  338. package/dist/slider/slider.js +188 -50
  339. package/dist/slider/slider.js.map +1 -1
  340. package/dist/slope-chart/index.d.ts +2 -0
  341. package/dist/slope-chart/index.js +2 -0
  342. package/dist/slope-chart/slope-chart.d.ts +54 -0
  343. package/dist/slope-chart/slope-chart.js +568 -0
  344. package/dist/slope-chart/slope-chart.js.map +1 -0
  345. package/dist/sparkline/index.d.ts +2 -0
  346. package/dist/sparkline/index.js +2 -0
  347. package/dist/sparkline/sparkline.d.ts +46 -0
  348. package/dist/sparkline/sparkline.js +390 -0
  349. package/dist/sparkline/sparkline.js.map +1 -0
  350. package/dist/split-bar/index.d.ts +2 -0
  351. package/dist/split-bar/index.js +2 -0
  352. package/dist/split-bar/split-bar.d.ts +62 -0
  353. package/dist/split-bar/split-bar.js +513 -0
  354. package/dist/split-bar/split-bar.js.map +1 -0
  355. package/dist/split-button/index.d.ts +2 -0
  356. package/dist/split-button/index.js +2 -0
  357. package/dist/split-button/split-button.d.ts +46 -0
  358. package/dist/split-button/split-button.js +123 -0
  359. package/dist/split-button/split-button.js.map +1 -0
  360. package/dist/stat-card/index.d.ts +2 -0
  361. package/dist/stat-card/index.js +2 -0
  362. package/dist/stat-card/stat-card.d.ts +101 -0
  363. package/dist/stat-card/stat-card.js +249 -0
  364. package/dist/stat-card/stat-card.js.map +1 -0
  365. package/dist/stepper/index.d.ts +2 -0
  366. package/dist/stepper/index.js +2 -0
  367. package/dist/stepper/stepper.d.ts +51 -0
  368. package/dist/stepper/stepper.js +215 -0
  369. package/dist/stepper/stepper.js.map +1 -0
  370. package/dist/streamgraph/index.d.ts +2 -0
  371. package/dist/streamgraph/index.js +2 -0
  372. package/dist/streamgraph/streamgraph.d.ts +70 -0
  373. package/dist/streamgraph/streamgraph.js +613 -0
  374. package/dist/streamgraph/streamgraph.js.map +1 -0
  375. package/dist/styles.css +1 -1
  376. package/dist/swipe-actions/index.d.ts +2 -0
  377. package/dist/swipe-actions/index.js +2 -0
  378. package/dist/swipe-actions/swipe-actions.d.ts +67 -0
  379. package/dist/swipe-actions/swipe-actions.js +552 -0
  380. package/dist/swipe-actions/swipe-actions.js.map +1 -0
  381. package/dist/switch/switch.js +10 -9
  382. package/dist/switch/switch.js.map +1 -1
  383. package/dist/table/index.d.ts +2 -2
  384. package/dist/table/index.js +2 -2
  385. package/dist/table/table.d.ts +87 -4
  386. package/dist/table/table.js +441 -165
  387. package/dist/table/table.js.map +1 -1
  388. package/dist/tabs/tabs.js +143 -7
  389. package/dist/tabs/tabs.js.map +1 -1
  390. package/dist/tag-input/index.d.ts +2 -0
  391. package/dist/tag-input/index.js +2 -0
  392. package/dist/tag-input/tag-input.d.ts +40 -0
  393. package/dist/tag-input/tag-input.js +269 -0
  394. package/dist/tag-input/tag-input.js.map +1 -0
  395. package/dist/text-morph/index.d.ts +2 -0
  396. package/dist/text-morph/index.js +2 -0
  397. package/dist/text-morph/text-morph.d.ts +23 -0
  398. package/dist/text-morph/text-morph.js +21 -0
  399. package/dist/text-morph/text-morph.js.map +1 -0
  400. package/dist/text-reveal/index.d.ts +2 -0
  401. package/dist/text-reveal/index.js +2 -0
  402. package/dist/text-reveal/text-reveal.d.ts +27 -0
  403. package/dist/text-reveal/text-reveal.js +51 -0
  404. package/dist/text-reveal/text-reveal.js.map +1 -0
  405. package/dist/text-shimmer/index.d.ts +2 -0
  406. package/dist/text-shimmer/index.js +2 -0
  407. package/dist/text-shimmer/text-shimmer.d.ts +29 -0
  408. package/dist/text-shimmer/text-shimmer.js +29 -0
  409. package/dist/text-shimmer/text-shimmer.js.map +1 -0
  410. package/dist/textarea/textarea.d.ts +23 -0
  411. package/dist/textarea/textarea.js +24 -2
  412. package/dist/textarea/textarea.js.map +1 -1
  413. package/dist/theme-switch/index.d.ts +2 -0
  414. package/dist/theme-switch/index.js +2 -0
  415. package/dist/theme-switch/theme-switch.d.ts +37 -0
  416. package/dist/theme-switch/theme-switch.js +123 -0
  417. package/dist/theme-switch/theme-switch.js.map +1 -0
  418. package/dist/time-picker/index.d.ts +2 -0
  419. package/dist/time-picker/index.js +2 -0
  420. package/dist/time-picker/time-picker.d.ts +54 -0
  421. package/dist/time-picker/time-picker.js +201 -0
  422. package/dist/time-picker/time-picker.js.map +1 -0
  423. package/dist/toast/index.d.ts +2 -2
  424. package/dist/toast/index.js +2 -2
  425. package/dist/toast/toast.d.ts +6 -0
  426. package/dist/toast/toast.js +98 -36
  427. package/dist/toast/toast.js.map +1 -1
  428. package/dist/tooltip/tooltip.d.ts +10 -3
  429. package/dist/tooltip/tooltip.js +67 -18
  430. package/dist/tooltip/tooltip.js.map +1 -1
  431. package/dist/treemap/index.d.ts +2 -0
  432. package/dist/treemap/index.js +2 -0
  433. package/dist/treemap/treemap.d.ts +53 -0
  434. package/dist/treemap/treemap.js +699 -0
  435. package/dist/treemap/treemap.js.map +1 -0
  436. package/dist/usage-meter/index.d.ts +2 -0
  437. package/dist/usage-meter/index.js +2 -0
  438. package/dist/usage-meter/usage-meter.d.ts +50 -0
  439. package/dist/usage-meter/usage-meter.js +440 -0
  440. package/dist/usage-meter/usage-meter.js.map +1 -0
  441. package/dist/waffle-chart/index.d.ts +2 -0
  442. package/dist/waffle-chart/index.js +2 -0
  443. package/dist/waffle-chart/waffle-chart.d.ts +57 -0
  444. package/dist/waffle-chart/waffle-chart.js +426 -0
  445. package/dist/waffle-chart/waffle-chart.js.map +1 -0
  446. package/package.json +245 -3
@@ -0,0 +1,170 @@
1
+ //#region src/phone-input/phone-countries.ts
2
+ const country = (iso, name, dial, patterns, example, trunk = "0", areaCodes) => ({
3
+ iso,
4
+ name,
5
+ dial,
6
+ patterns: Array.isArray(patterns) ? patterns : [patterns],
7
+ example,
8
+ trunk,
9
+ areaCodes
10
+ });
11
+ const CA_AREA_CODES = "204 226 236 249 250 263 289 306 343 354 365 367 368 382 387 403 416 418 428 431 437 438 450 468 474 506 514 519 548 579 581 584 587 604 613 639 647 672 683 705 709 742 753 778 780 782 807 819 825 867 873 879 902 905".split(" ");
12
+ const PHONE_COUNTRIES = [
13
+ country("US", "United States", "1", "(###) ###-####", "2015550123", "1"),
14
+ country("CA", "Canada", "1", "(###) ###-####", "5065550123", "1", CA_AREA_CODES),
15
+ country("MX", "Mexico", "52", "## #### ####", "2221234567", ""),
16
+ country("BR", "Brazil", "55", ["(##) ####-####", "(##) #####-####"], "11961234567"),
17
+ country("AR", "Argentina", "54", "## ####-####", "1123456789"),
18
+ country("CO", "Colombia", "57", "### ### ####", "3211234567", ""),
19
+ country("CL", "Chile", "56", "# #### ####", "221234567", ""),
20
+ country("PE", "Peru", "51", "### ### ###", "912345678"),
21
+ country("GB", "United Kingdom", "44", "#### ######", "7400123456"),
22
+ country("IE", "Ireland", "353", "## ### ####", "850123456"),
23
+ country("FR", "France", "33", "# ## ## ## ##", "612345678"),
24
+ country("DE", "Germany", "49", ["### #######", "### ########"], "15123456789"),
25
+ country("ES", "Spain", "34", "### ## ## ##", "612345678", ""),
26
+ country("IT", "Italy", "39", ["### ### ###", "### ### ####"], "3123456789", ""),
27
+ country("PT", "Portugal", "351", "### ### ###", "912345678", ""),
28
+ country("NL", "Netherlands", "31", "# ########", "612345678"),
29
+ country("BE", "Belgium", "32", "### ## ## ##", "470123456"),
30
+ country("CH", "Switzerland", "41", "## ### ## ##", "781234567"),
31
+ country("AT", "Austria", "43", ["### #######", "### ########"], "6641234567"),
32
+ country("SE", "Sweden", "46", "## ### ## ##", "701234567"),
33
+ country("NO", "Norway", "47", "### ## ###", "40612345", ""),
34
+ country("DK", "Denmark", "45", "## ## ## ##", "32123456", ""),
35
+ country("FI", "Finland", "358", ["## ### ####", "## ### #####"], "412345678"),
36
+ country("PL", "Poland", "48", "### ### ###", "512345678", ""),
37
+ country("CZ", "Czechia", "420", "### ### ###", "601123456", ""),
38
+ country("GR", "Greece", "30", "### ### ####", "6912345678", ""),
39
+ country("UA", "Ukraine", "380", "## ### ## ##", "501234567"),
40
+ country("TR", "Turkey", "90", "### ### ## ##", "5012345678"),
41
+ country("IL", "Israel", "972", "##-###-####", "502345678"),
42
+ country("AE", "United Arab Emirates", "971", "## ### ####", "501234567"),
43
+ country("SA", "Saudi Arabia", "966", "## ### ####", "512345678"),
44
+ country("EG", "Egypt", "20", "### ### ####", "1001234567"),
45
+ country("NG", "Nigeria", "234", "### ### ####", "8021234567"),
46
+ country("KE", "Kenya", "254", "### ######", "712123456"),
47
+ country("ZA", "South Africa", "27", "## ### ####", "711234567"),
48
+ country("IN", "India", "91", "#####-#####", "8123456789"),
49
+ country("PK", "Pakistan", "92", "### #######", "3012345678"),
50
+ country("CN", "China", "86", "### #### ####", "13123456789"),
51
+ country("JP", "Japan", "81", "##-####-####", "9012345678"),
52
+ country("KR", "South Korea", "82", ["##-###-####", "##-####-####"], "1020000000"),
53
+ country("TW", "Taiwan", "886", "### ### ###", "912345678"),
54
+ country("HK", "Hong Kong", "852", "#### ####", "51234567", ""),
55
+ country("SG", "Singapore", "65", "#### ####", "81234567", ""),
56
+ country("PH", "Philippines", "63", "### ### ####", "9051234567"),
57
+ country("ID", "Indonesia", "62", [
58
+ "###-###-####",
59
+ "###-####-####",
60
+ "###-####-#####"
61
+ ], "81234567890"),
62
+ country("TH", "Thailand", "66", "## ### ####", "812345678"),
63
+ country("VN", "Vietnam", "84", "## ### ## ##", "912345678"),
64
+ country("AU", "Australia", "61", "### ### ###", "412345678"),
65
+ country("NZ", "New Zealand", "64", [
66
+ "# ### ####",
67
+ "## ### ####",
68
+ "## #### ####"
69
+ ], "211234567")
70
+ ];
71
+ const phoneCountryByIso = (iso) => PHONE_COUNTRIES.find((entry) => entry.iso === iso);
72
+ const capacity = (pattern) => pattern.split("#").length - 1;
73
+ const lengthsOf = (entry) => entry.patterns.map(capacity);
74
+ const onlyDigits = (text) => text.replace(/\D/g, "");
75
+ /** Regional indicator letters. Platforms without flag glyphs show the two letters, which still read. */
76
+ const flagOf = (iso) => String.fromCodePoint(...[...iso.toUpperCase()].map((char) => 127462 + char.charCodeAt(0) - 65));
77
+ function splitTrunk(entry, digits) {
78
+ return entry.trunk && digits.startsWith(entry.trunk) ? [entry.trunk, digits.slice(entry.trunk.length)] : ["", digits];
79
+ }
80
+ /** A typed trunk prefix earns its own room; without one the longest valid length is the cap. */
81
+ const capDigits = (entry, digits) => digits.slice(0, splitTrunk(entry, digits)[0].length + Math.max(...lengthsOf(entry)));
82
+ /** Separators only print while digits follow, so a half-typed number never ends in a dangling ") " or "-". */
83
+ function applyPattern(digits, pattern) {
84
+ let out = "";
85
+ let index = 0;
86
+ for (const char of pattern) {
87
+ if (index >= digits.length) break;
88
+ out += char === "#" ? digits[index++] : char;
89
+ }
90
+ return out + digits.slice(index);
91
+ }
92
+ function patternFor(entry, length) {
93
+ return entry.patterns.find((pattern) => capacity(pattern) >= length) ?? entry.patterns[entry.patterns.length - 1];
94
+ }
95
+ /** Formats national digits as typed, keeping a typed trunk prefix: "07911123456" in the UK reads "07911 123456". */
96
+ function formatNational(entry, digits) {
97
+ const [trunk, rest] = splitTrunk(entry, digits);
98
+ const pattern = patternFor(entry, rest.length);
99
+ const body = applyPattern(rest, pattern);
100
+ if (!trunk) return body;
101
+ if (!rest) return trunk;
102
+ return trunk + (pattern.startsWith("#") ? "" : " ") + body;
103
+ }
104
+ function phoneStatus(entry, digits) {
105
+ const length = splitTrunk(entry, digits)[1].length;
106
+ const lengths = lengthsOf(entry);
107
+ if (!length) return "empty";
108
+ if (lengths.includes(length)) return "valid";
109
+ return length > Math.max(...lengths) ? "too-long" : "incomplete";
110
+ }
111
+ /** The number in E.164, such as "+14155550132". Empty when there are no digits. */
112
+ function toE164(entry, digits) {
113
+ const rest = splitTrunk(entry, digits)[1];
114
+ return rest ? `+${entry.dial}${rest}` : "";
115
+ }
116
+ /** Reads "+44 (0)7911 123456", "0044 7911 123456" or "+14165550123" into a country and national digits. The longest calling code wins. */
117
+ function parsePhoneNumber(input, pool = PHONE_COUNTRIES) {
118
+ const trimmed = input.trim();
119
+ let digits = onlyDigits(trimmed);
120
+ if (!trimmed.startsWith("+")) {
121
+ if (!trimmed.startsWith("00")) return null;
122
+ digits = digits.slice(2);
123
+ }
124
+ for (const size of [
125
+ 3,
126
+ 2,
127
+ 1
128
+ ]) {
129
+ const dial = digits.slice(0, size);
130
+ const matches = pool.filter((entry) => entry.dial === dial);
131
+ if (!matches.length) continue;
132
+ let rest = digits.slice(size);
133
+ const entry = matches.find((item) => item.areaCodes?.some((code) => rest.startsWith(code))) ?? matches.find((item) => !item.areaCodes) ?? matches[0];
134
+ if (entry.trunk && rest.startsWith(entry.trunk) && rest.length - entry.trunk.length >= Math.min(...lengthsOf(entry))) rest = rest.slice(entry.trunk.length);
135
+ return {
136
+ country: entry,
137
+ national: capDigits(entry, rest)
138
+ };
139
+ }
140
+ return null;
141
+ }
142
+ /** Formats an E.164 number for display, such as "+44 7400 123456". Returns the input when it cannot be read. */
143
+ function formatPhoneNumber(e164) {
144
+ const parsed = parsePhoneNumber(e164);
145
+ return parsed ? `+${parsed.country.dial} ${formatNational(parsed.country, parsed.national)}` : e164;
146
+ }
147
+ /** Position in the formatted text just after the nth digit. */
148
+ function caretAfterDigits(text, count) {
149
+ if (count <= 0) {
150
+ const first = text.search(/\d/);
151
+ return first < 0 ? text.length : Math.min(first, text.length);
152
+ }
153
+ let seen = 0;
154
+ for (let index = 0; index < text.length; index++) if (/\d/.test(text[index]) && ++seen === count) return index + 1;
155
+ return text.length;
156
+ }
157
+ /** True when a country matches the search text: a name, an ISO code, or the start of a calling code ("+44", "44"). */
158
+ function matchesCountry(entry, query) {
159
+ const needle = query.trim().toLowerCase();
160
+ if (!needle || needle === "+") return true;
161
+ if (/^[+\d\s()-]+$/.test(needle)) {
162
+ const digits = onlyDigits(needle);
163
+ return entry.dial.startsWith(digits) || digits.startsWith(entry.dial);
164
+ }
165
+ return entry.name.toLowerCase().includes(needle) || entry.iso.toLowerCase() === needle;
166
+ }
167
+ //#endregion
168
+ export { PHONE_COUNTRIES, capDigits, caretAfterDigits, flagOf, formatNational, formatPhoneNumber, lengthsOf, matchesCountry, onlyDigits, parsePhoneNumber, phoneCountryByIso, phoneStatus, splitTrunk, toE164 };
169
+
170
+ //# sourceMappingURL=phone-countries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-countries.js","names":[],"sources":["../../src/phone-input/phone-countries.ts"],"sourcesContent":["/*\n * A compact country table and the number maths built on it: no phone-number library and no metadata download.\n * Each entry is a name, a calling code, an ISO code and the national grouping as a pattern, where `#` is a digit and\n * anything else is a separator. Valid lengths are the digit capacities of the patterns. This is formatting help, not\n * carrier-grade validation: it knows how many digits a country usually has, not which prefixes are assigned.\n */\n\nexport interface PhoneCountry {\n /** ISO 3166-1 alpha-2 code, such as \"US\". */\n iso: string;\n name: string;\n /** Calling code without the plus, such as \"44\". */\n dial: string;\n /** National formats from shortest to longest. `#` is a digit, anything else is a separator. */\n patterns: string[];\n /** A digit people may type before the number itself, such as \"0\" in \"07911 123456\". Empty when there is none. */\n trunk: string;\n /** A realistic national number: the placeholder, and the typing guide. */\n example: string;\n /** Area codes that pick this country when several share a calling code, such as Canada inside +1. */\n areaCodes?: string[];\n}\n\nconst country = (\n iso: string,\n name: string,\n dial: string,\n patterns: string | string[],\n example: string,\n trunk = \"0\",\n areaCodes?: string[],\n): PhoneCountry => ({\n iso,\n name,\n dial,\n patterns: Array.isArray(patterns) ? patterns : [patterns],\n example,\n trunk,\n areaCodes,\n});\n\nconst CA_AREA_CODES =\n \"204 226 236 249 250 263 289 306 343 354 365 367 368 382 387 403 416 418 428 431 437 438 450 468 474 506 514 519 548 579 581 584 587 604 613 639 647 672 683 705 709 742 753 778 780 782 807 819 825 867 873 879 902 905\".split(\n \" \",\n );\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [\n country(\"US\", \"United States\", \"1\", \"(###) ###-####\", \"2015550123\", \"1\"),\n country(\"CA\", \"Canada\", \"1\", \"(###) ###-####\", \"5065550123\", \"1\", CA_AREA_CODES),\n country(\"MX\", \"Mexico\", \"52\", \"## #### ####\", \"2221234567\", \"\"),\n country(\"BR\", \"Brazil\", \"55\", [\"(##) ####-####\", \"(##) #####-####\"], \"11961234567\"),\n country(\"AR\", \"Argentina\", \"54\", \"## ####-####\", \"1123456789\"),\n country(\"CO\", \"Colombia\", \"57\", \"### ### ####\", \"3211234567\", \"\"),\n country(\"CL\", \"Chile\", \"56\", \"# #### ####\", \"221234567\", \"\"),\n country(\"PE\", \"Peru\", \"51\", \"### ### ###\", \"912345678\"),\n country(\"GB\", \"United Kingdom\", \"44\", \"#### ######\", \"7400123456\"),\n country(\"IE\", \"Ireland\", \"353\", \"## ### ####\", \"850123456\"),\n country(\"FR\", \"France\", \"33\", \"# ## ## ## ##\", \"612345678\"),\n country(\"DE\", \"Germany\", \"49\", [\"### #######\", \"### ########\"], \"15123456789\"),\n country(\"ES\", \"Spain\", \"34\", \"### ## ## ##\", \"612345678\", \"\"),\n country(\"IT\", \"Italy\", \"39\", [\"### ### ###\", \"### ### ####\"], \"3123456789\", \"\"),\n country(\"PT\", \"Portugal\", \"351\", \"### ### ###\", \"912345678\", \"\"),\n country(\"NL\", \"Netherlands\", \"31\", \"# ########\", \"612345678\"),\n country(\"BE\", \"Belgium\", \"32\", \"### ## ## ##\", \"470123456\"),\n country(\"CH\", \"Switzerland\", \"41\", \"## ### ## ##\", \"781234567\"),\n country(\"AT\", \"Austria\", \"43\", [\"### #######\", \"### ########\"], \"6641234567\"),\n country(\"SE\", \"Sweden\", \"46\", \"## ### ## ##\", \"701234567\"),\n country(\"NO\", \"Norway\", \"47\", \"### ## ###\", \"40612345\", \"\"),\n country(\"DK\", \"Denmark\", \"45\", \"## ## ## ##\", \"32123456\", \"\"),\n country(\"FI\", \"Finland\", \"358\", [\"## ### ####\", \"## ### #####\"], \"412345678\"),\n country(\"PL\", \"Poland\", \"48\", \"### ### ###\", \"512345678\", \"\"),\n country(\"CZ\", \"Czechia\", \"420\", \"### ### ###\", \"601123456\", \"\"),\n country(\"GR\", \"Greece\", \"30\", \"### ### ####\", \"6912345678\", \"\"),\n country(\"UA\", \"Ukraine\", \"380\", \"## ### ## ##\", \"501234567\"),\n country(\"TR\", \"Turkey\", \"90\", \"### ### ## ##\", \"5012345678\"),\n country(\"IL\", \"Israel\", \"972\", \"##-###-####\", \"502345678\"),\n country(\"AE\", \"United Arab Emirates\", \"971\", \"## ### ####\", \"501234567\"),\n country(\"SA\", \"Saudi Arabia\", \"966\", \"## ### ####\", \"512345678\"),\n country(\"EG\", \"Egypt\", \"20\", \"### ### ####\", \"1001234567\"),\n country(\"NG\", \"Nigeria\", \"234\", \"### ### ####\", \"8021234567\"),\n country(\"KE\", \"Kenya\", \"254\", \"### ######\", \"712123456\"),\n country(\"ZA\", \"South Africa\", \"27\", \"## ### ####\", \"711234567\"),\n country(\"IN\", \"India\", \"91\", \"#####-#####\", \"8123456789\"),\n country(\"PK\", \"Pakistan\", \"92\", \"### #######\", \"3012345678\"),\n country(\"CN\", \"China\", \"86\", \"### #### ####\", \"13123456789\"),\n country(\"JP\", \"Japan\", \"81\", \"##-####-####\", \"9012345678\"),\n country(\"KR\", \"South Korea\", \"82\", [\"##-###-####\", \"##-####-####\"], \"1020000000\"),\n country(\"TW\", \"Taiwan\", \"886\", \"### ### ###\", \"912345678\"),\n country(\"HK\", \"Hong Kong\", \"852\", \"#### ####\", \"51234567\", \"\"),\n country(\"SG\", \"Singapore\", \"65\", \"#### ####\", \"81234567\", \"\"),\n country(\"PH\", \"Philippines\", \"63\", \"### ### ####\", \"9051234567\"),\n country(\"ID\", \"Indonesia\", \"62\", [\"###-###-####\", \"###-####-####\", \"###-####-#####\"], \"81234567890\"),\n country(\"TH\", \"Thailand\", \"66\", \"## ### ####\", \"812345678\"),\n country(\"VN\", \"Vietnam\", \"84\", \"## ### ## ##\", \"912345678\"),\n country(\"AU\", \"Australia\", \"61\", \"### ### ###\", \"412345678\"),\n country(\"NZ\", \"New Zealand\", \"64\", [\"# ### ####\", \"## ### ####\", \"## #### ####\"], \"211234567\"),\n];\n\nexport const phoneCountryByIso = (iso: string) =>\n PHONE_COUNTRIES.find((entry) => entry.iso === iso);\n\nconst capacity = (pattern: string) => pattern.split(\"#\").length - 1;\nexport const lengthsOf = (entry: PhoneCountry) => entry.patterns.map(capacity);\nexport const onlyDigits = (text: string) => text.replace(/\\D/g, \"\");\n\n/** Regional indicator letters. Platforms without flag glyphs show the two letters, which still read. */\nexport const flagOf = (iso: string) =>\n String.fromCodePoint(...[...iso.toUpperCase()].map((char) => 0x1f1e6 + char.charCodeAt(0) - 65));\n\nexport function splitTrunk(entry: PhoneCountry, digits: string): [string, string] {\n return entry.trunk && digits.startsWith(entry.trunk)\n ? [entry.trunk, digits.slice(entry.trunk.length)]\n : [\"\", digits];\n}\n\n/** A typed trunk prefix earns its own room; without one the longest valid length is the cap. */\nexport const capDigits = (entry: PhoneCountry, digits: string) =>\n digits.slice(0, splitTrunk(entry, digits)[0].length + Math.max(...lengthsOf(entry)));\n\n/** Separators only print while digits follow, so a half-typed number never ends in a dangling \") \" or \"-\". */\nfunction applyPattern(digits: string, pattern: string) {\n let out = \"\";\n let index = 0;\n for (const char of pattern) {\n if (index >= digits.length) break;\n out += char === \"#\" ? digits[index++] : char;\n }\n return out + digits.slice(index);\n}\n\nfunction patternFor(entry: PhoneCountry, length: number) {\n return (\n entry.patterns.find((pattern) => capacity(pattern) >= length) ??\n entry.patterns[entry.patterns.length - 1]!\n );\n}\n\n/** Formats national digits as typed, keeping a typed trunk prefix: \"07911123456\" in the UK reads \"07911 123456\". */\nexport function formatNational(entry: PhoneCountry, digits: string) {\n const [trunk, rest] = splitTrunk(entry, digits);\n const pattern = patternFor(entry, rest.length);\n const body = applyPattern(rest, pattern);\n if (!trunk) return body;\n if (!rest) return trunk;\n return trunk + (pattern.startsWith(\"#\") ? \"\" : \" \") + body;\n}\n\nexport type PhoneStatus = \"empty\" | \"incomplete\" | \"valid\" | \"too-long\";\n\nexport function phoneStatus(entry: PhoneCountry, digits: string): PhoneStatus {\n const length = splitTrunk(entry, digits)[1].length;\n const lengths = lengthsOf(entry);\n if (!length) return \"empty\";\n if (lengths.includes(length)) return \"valid\";\n return length > Math.max(...lengths) ? \"too-long\" : \"incomplete\";\n}\n\n/** The number in E.164, such as \"+14155550132\". Empty when there are no digits. */\nexport function toE164(entry: PhoneCountry, digits: string) {\n const rest = splitTrunk(entry, digits)[1];\n return rest ? `+${entry.dial}${rest}` : \"\";\n}\n\n/** Reads \"+44 (0)7911 123456\", \"0044 7911 123456\" or \"+14165550123\" into a country and national digits. The longest calling code wins. */\nexport function parsePhoneNumber(\n input: string,\n pool: PhoneCountry[] = PHONE_COUNTRIES,\n): { country: PhoneCountry; national: string } | null {\n const trimmed = input.trim();\n let digits = onlyDigits(trimmed);\n if (!trimmed.startsWith(\"+\")) {\n if (!trimmed.startsWith(\"00\")) return null;\n digits = digits.slice(2);\n }\n for (const size of [3, 2, 1]) {\n const dial = digits.slice(0, size);\n const matches = pool.filter((entry) => entry.dial === dial);\n if (!matches.length) continue;\n let rest = digits.slice(size);\n const entry =\n matches.find((item) => item.areaCodes?.some((code) => rest.startsWith(code))) ??\n matches.find((item) => !item.areaCodes) ??\n matches[0]!;\n // \"+44 (0)7911...\" carries a trunk digit it should not: drop it when the rest is still a full number without it.\n if (\n entry.trunk &&\n rest.startsWith(entry.trunk) &&\n rest.length - entry.trunk.length >= Math.min(...lengthsOf(entry))\n ) {\n rest = rest.slice(entry.trunk.length);\n }\n return { country: entry, national: capDigits(entry, rest) };\n }\n return null;\n}\n\n/** Formats an E.164 number for display, such as \"+44 7400 123456\". Returns the input when it cannot be read. */\nexport function formatPhoneNumber(e164: string) {\n const parsed = parsePhoneNumber(e164);\n return parsed\n ? `+${parsed.country.dial} ${formatNational(parsed.country, parsed.national)}`\n : e164;\n}\n\n/** Position in the formatted text just after the nth digit. */\nexport function caretAfterDigits(text: string, count: number) {\n if (count <= 0) {\n const first = text.search(/\\d/);\n return first < 0 ? text.length : Math.min(first, text.length);\n }\n let seen = 0;\n for (let index = 0; index < text.length; index++) {\n if (/\\d/.test(text[index]!) && ++seen === count) return index + 1;\n }\n return text.length;\n}\n\n/** True when a country matches the search text: a name, an ISO code, or the start of a calling code (\"+44\", \"44\"). */\nexport function matchesCountry(entry: PhoneCountry, query: string) {\n const needle = query.trim().toLowerCase();\n if (!needle || needle === \"+\") return true;\n if (/^[+\\d\\s()-]+$/.test(needle)) {\n const digits = onlyDigits(needle);\n return entry.dial.startsWith(digits) || digits.startsWith(entry.dial);\n }\n return entry.name.toLowerCase().includes(needle) || entry.iso.toLowerCase() === needle;\n}\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { PhoneCountry, PhoneStatus } from "./phone-countries.js";
2
+ import { FocusEvent } from "react";
3
+ //#region src/phone-input/phone-input.d.ts
4
+ /** What `onValueChange` hands over beside the E.164 number. */
5
+ export interface PhoneInputDetails {
6
+ country: PhoneCountry;
7
+ /** The number as shown in the field, without the calling code. */
8
+ formatted: string;
9
+ status: PhoneStatus;
10
+ valid: boolean;
11
+ }
12
+ /**
13
+ * PhoneInput: a phone number with a country picker. The number formats as it is
14
+ * typed (grouping follows the country, the caret stays on the digit it was on, a
15
+ * faint guide shows the rest of the expected shape), a pasted or autofilled
16
+ * international number such as "+44 7400 123456" picks its own country, and the
17
+ * value comes out in E.164. The picker is a searchable list (React Aria
18
+ * Autocomplete) that matches names, ISO codes and calling codes; typing "+" in
19
+ * the number opens it with a calling code search.
20
+ *
21
+ * Formatting and length checks come from a compact country table in this
22
+ * package, not a phone-number library: it knows the usual digit count and
23
+ * grouping of about fifty countries, not which prefixes a carrier has assigned.
24
+ * Use a full library on the server when a number must be a real, assigned line.
25
+ */
26
+ export interface PhoneInputProps {
27
+ /** What the number is for, and the field's accessible name. */
28
+ label: string;
29
+ /** Keep the label for assistive technology only. */
30
+ labelHidden?: boolean;
31
+ /** The number in E.164, such as "+14155550132". An empty string clears the field. */
32
+ value?: string;
33
+ defaultValue?: string;
34
+ /** Fires on every edit with the E.164 number (empty when there are no digits) and its parsed details. */
35
+ onValueChange?: (value: string, details: PhoneInputDetails) => void;
36
+ /** ISO code of the selected country. Controlled when given. */
37
+ country?: string;
38
+ /** ISO code used until someone picks a country or enters an international number. @default "US" */
39
+ defaultCountry?: string;
40
+ onCountryChange?: (iso: string) => void;
41
+ /** Limit the picker to these ISO codes. */
42
+ countries?: string[];
43
+ /** Helper text under the field. A string, because the copy is animated word by word. */
44
+ description?: string;
45
+ /** Replaces the built-in length message. */
46
+ error?: string;
47
+ /** Show a message after blur when the number is incomplete. @default true */
48
+ validate?: boolean;
49
+ /**
50
+ * How a country is marked in the field and the list. `auto` draws the flag emoji where the platform can (Windows
51
+ * cannot) and the two-letter ISO code where it cannot; `emoji` and `code` force one.
52
+ * @default "auto"
53
+ */
54
+ flags?: "auto" | "emoji" | "code";
55
+ disabled?: boolean;
56
+ required?: boolean;
57
+ /** Adds a hidden input carrying the E.164 value for native form submission. */
58
+ name?: string;
59
+ id?: string;
60
+ /** Extra classes for the wrapper. Merged last. */
61
+ className?: string;
62
+ onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
63
+ }
64
+ export declare const PhoneInput: import("react").ForwardRefExoticComponent<PhoneInputProps & import("react").RefAttributes<HTMLInputElement>>;
65
+ //#endregion
66
+ //# sourceMappingURL=phone-input.d.ts.map