@astra-kit/ui 0.0.0-stage → 1.0.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 (304) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +330 -2
  4. package/THIRD_PARTY_NOTICES.md +31 -0
  5. package/assets/fonts/geist-LICENSE.txt +93 -0
  6. package/assets/fonts/geist-latin-variable.woff2 +0 -0
  7. package/assets/fonts/ibm-plex-mono-latin-400.woff2 +0 -0
  8. package/assets/fonts/ibm-plex-mono-latin-500.woff2 +0 -0
  9. package/assets/fonts/ibmplexmono-LICENSE.txt +93 -0
  10. package/assets/fonts/inter-LICENSE.txt +93 -0
  11. package/assets/fonts/inter-latin-variable.woff2 +0 -0
  12. package/dist/adapters/unpic-image.d.ts +3 -0
  13. package/dist/adapters/unpic-image.js +98 -0
  14. package/dist/components/account-menu.d.ts +67 -0
  15. package/dist/components/account-menu.js +440 -0
  16. package/dist/components/action-button.d.ts +25 -0
  17. package/dist/components/action-button.js +264 -0
  18. package/dist/components/alert.d.ts +31 -0
  19. package/dist/components/alert.js +503 -0
  20. package/dist/components/animated-collapse.d.ts +19 -0
  21. package/dist/components/animated-collapse.js +170 -0
  22. package/dist/components/animated-count.d.ts +13 -0
  23. package/dist/components/animated-count.js +105 -0
  24. package/dist/components/animated-list-item.d.ts +25 -0
  25. package/dist/components/animated-list-item.js +134 -0
  26. package/dist/components/animated-theme-toggler.d.ts +12 -0
  27. package/dist/components/animated-theme-toggler.js +200 -0
  28. package/dist/components/avatar.d.ts +65 -0
  29. package/dist/components/avatar.js +463 -0
  30. package/dist/components/badge.d.ts +21 -0
  31. package/dist/components/badge.js +297 -0
  32. package/dist/components/button-interaction.d.ts +23 -0
  33. package/dist/components/button-interaction.js +22 -0
  34. package/dist/components/button-label.d.ts +8 -0
  35. package/dist/components/button-label.js +203 -0
  36. package/dist/components/button.d.ts +23 -0
  37. package/dist/components/button.js +145 -0
  38. package/dist/components/calendar.d.ts +47 -0
  39. package/dist/components/calendar.js +155 -0
  40. package/dist/components/card.d.ts +38 -0
  41. package/dist/components/card.js +904 -0
  42. package/dist/components/carousel.d.ts +71 -0
  43. package/dist/components/carousel.js +585 -0
  44. package/dist/components/checkbox.d.ts +15 -0
  45. package/dist/components/checkbox.js +324 -0
  46. package/dist/components/control-button.d.ts +16 -0
  47. package/dist/components/control-button.js +215 -0
  48. package/dist/components/data-table.d.ts +118 -0
  49. package/dist/components/data-table.js +895 -0
  50. package/dist/components/dialog-surface.d.ts +49 -0
  51. package/dist/components/dialog-surface.js +220 -0
  52. package/dist/components/dialog.d.ts +92 -0
  53. package/dist/components/dialog.js +320 -0
  54. package/dist/components/dropdown-menu.d.ts +58 -0
  55. package/dist/components/dropdown-menu.js +135 -0
  56. package/dist/components/field.d.ts +53 -0
  57. package/dist/components/field.js +710 -0
  58. package/dist/components/file-upload.d.ts +88 -0
  59. package/dist/components/file-upload.js +776 -0
  60. package/dist/components/filter-presets-bar.d.ts +73 -0
  61. package/dist/components/filter-presets-bar.js +510 -0
  62. package/dist/components/filter-query-bar.d.ts +21 -0
  63. package/dist/components/filter-query-bar.js +881 -0
  64. package/dist/components/filter-query-grammar.d.ts +188 -0
  65. package/dist/components/filter-query-grammar.js +875 -0
  66. package/dist/components/form.d.ts +29 -0
  67. package/dist/components/form.js +330 -0
  68. package/dist/components/highlighter.d.ts +15 -0
  69. package/dist/components/highlighter.js +152 -0
  70. package/dist/components/hover-card.d.ts +50 -0
  71. package/dist/components/hover-card.js +80 -0
  72. package/dist/components/input-group.d.ts +16 -0
  73. package/dist/components/input-group.js +277 -0
  74. package/dist/components/input.d.ts +17 -0
  75. package/dist/components/input.js +120 -0
  76. package/dist/components/label.d.ts +4 -0
  77. package/dist/components/label.js +43 -0
  78. package/dist/components/link.d.ts +9 -0
  79. package/dist/components/link.js +43 -0
  80. package/dist/components/morph-text.d.ts +14 -0
  81. package/dist/components/morph-text.js +210 -0
  82. package/dist/components/pagination.d.ts +59 -0
  83. package/dist/components/pagination.js +190 -0
  84. package/dist/components/popover.d.ts +17 -0
  85. package/dist/components/popover.js +40 -0
  86. package/dist/components/presence-swap.d.ts +22 -0
  87. package/dist/components/presence-swap.js +209 -0
  88. package/dist/components/primitives/alert-dialog.d.ts +68 -0
  89. package/dist/components/primitives/alert-dialog.js +629 -0
  90. package/dist/components/primitives/avatar.d.ts +46 -0
  91. package/dist/components/primitives/avatar.js +265 -0
  92. package/dist/components/primitives/calendar.d.ts +37 -0
  93. package/dist/components/primitives/calendar.js +1250 -0
  94. package/dist/components/primitives/carousel.d.ts +106 -0
  95. package/dist/components/primitives/carousel.js +928 -0
  96. package/dist/components/primitives/dialog.d.ts +62 -0
  97. package/dist/components/primitives/dialog.js +490 -0
  98. package/dist/components/primitives/dropdown-menu-items.d.ts +59 -0
  99. package/dist/components/primitives/dropdown-menu-items.js +265 -0
  100. package/dist/components/primitives/dropdown-menu.d.ts +64 -0
  101. package/dist/components/primitives/dropdown-menu.js +560 -0
  102. package/dist/components/primitives/hover-card.d.ts +50 -0
  103. package/dist/components/primitives/hover-card.js +507 -0
  104. package/dist/components/primitives/pagination.d.ts +65 -0
  105. package/dist/components/primitives/pagination.js +373 -0
  106. package/dist/components/primitives/popover.d.ts +22 -0
  107. package/dist/components/primitives/popover.js +213 -0
  108. package/dist/components/primitives/select.d.ts +37 -0
  109. package/dist/components/primitives/select.js +428 -0
  110. package/dist/components/primitives/tooltip.d.ts +30 -0
  111. package/dist/components/primitives/tooltip.js +277 -0
  112. package/dist/components/progress-ring.d.ts +20 -0
  113. package/dist/components/progress-ring.js +53 -0
  114. package/dist/components/radio-group.d.ts +34 -0
  115. package/dist/components/radio-group.js +392 -0
  116. package/dist/components/reaction-button.d.ts +30 -0
  117. package/dist/components/reaction-button.js +189 -0
  118. package/dist/components/rich-link-editor.d.ts +25 -0
  119. package/dist/components/rich-link-editor.js +320 -0
  120. package/dist/components/rich-markdown-content.d.ts +10 -0
  121. package/dist/components/rich-markdown-content.js +56 -0
  122. package/dist/components/rich-text-content.d.ts +19 -0
  123. package/dist/components/rich-text-content.js +26 -0
  124. package/dist/components/select.d.ts +55 -0
  125. package/dist/components/select.js +188 -0
  126. package/dist/components/separator.d.ts +3 -0
  127. package/dist/components/separator.js +48 -0
  128. package/dist/components/sheet.d.ts +19 -0
  129. package/dist/components/sheet.js +420 -0
  130. package/dist/components/sidebar-panel-context.d.ts +17 -0
  131. package/dist/components/sidebar-panel-context.js +14 -0
  132. package/dist/components/sidebar.d.ts +195 -0
  133. package/dist/components/sidebar.js +2041 -0
  134. package/dist/components/skeleton.d.ts +23 -0
  135. package/dist/components/skeleton.js +334 -0
  136. package/dist/components/split-button.d.ts +36 -0
  137. package/dist/components/split-button.js +306 -0
  138. package/dist/components/svgs/whatsappIcon.d.ts +3 -0
  139. package/dist/components/svgs/whatsappIcon.js +14 -0
  140. package/dist/components/switch.d.ts +13 -0
  141. package/dist/components/switch.js +444 -0
  142. package/dist/components/table.d.ts +10 -0
  143. package/dist/components/table.js +298 -0
  144. package/dist/components/tabs.d.ts +36 -0
  145. package/dist/components/tabs.js +636 -0
  146. package/dist/components/textarea.d.ts +16 -0
  147. package/dist/components/textarea.js +111 -0
  148. package/dist/components/themed-toaster.d.ts +7 -0
  149. package/dist/components/themed-toaster.js +86 -0
  150. package/dist/components/toaster.d.ts +12 -0
  151. package/dist/components/toaster.js +62 -0
  152. package/dist/components/tooltip.d.ts +43 -0
  153. package/dist/components/tooltip.js +65 -0
  154. package/dist/components/typing-animation.d.ts +34 -0
  155. package/dist/components/typing-animation.js +389 -0
  156. package/dist/constants/action-button.d.ts +20 -0
  157. package/dist/constants/action-button.js +17 -0
  158. package/dist/constants/alert.d.ts +16 -0
  159. package/dist/constants/alert.js +13 -0
  160. package/dist/constants/avatar.d.ts +38 -0
  161. package/dist/constants/avatar.js +32 -0
  162. package/dist/constants/badge.d.ts +6 -0
  163. package/dist/constants/badge.js +6 -0
  164. package/dist/constants/button.d.ts +16 -0
  165. package/dist/constants/button.js +16 -0
  166. package/dist/constants/calendar.d.ts +36 -0
  167. package/dist/constants/calendar.js +34 -0
  168. package/dist/constants/card.d.ts +23 -0
  169. package/dist/constants/card.js +20 -0
  170. package/dist/constants/carousel.d.ts +55 -0
  171. package/dist/constants/carousel.js +74 -0
  172. package/dist/constants/checkbox.d.ts +17 -0
  173. package/dist/constants/checkbox.js +17 -0
  174. package/dist/constants/dialog.d.ts +11 -0
  175. package/dist/constants/dialog.js +10 -0
  176. package/dist/constants/dropdown-menu.d.ts +17 -0
  177. package/dist/constants/dropdown-menu.js +48 -0
  178. package/dist/constants/field.d.ts +24 -0
  179. package/dist/constants/field.js +24 -0
  180. package/dist/constants/hover-card.d.ts +37 -0
  181. package/dist/constants/hover-card.js +85 -0
  182. package/dist/constants/morph-text.d.ts +13 -0
  183. package/dist/constants/morph-text.js +13 -0
  184. package/dist/constants/motion.d.ts +12 -0
  185. package/dist/constants/motion.js +12 -0
  186. package/dist/constants/pagination.d.ts +20 -0
  187. package/dist/constants/pagination.js +20 -0
  188. package/dist/constants/popover.d.ts +7 -0
  189. package/dist/constants/popover.js +33 -0
  190. package/dist/constants/radio-group.d.ts +10 -0
  191. package/dist/constants/radio-group.js +10 -0
  192. package/dist/constants/select.d.ts +7 -0
  193. package/dist/constants/select.js +34 -0
  194. package/dist/constants/sidebar.d.ts +9 -0
  195. package/dist/constants/sidebar.js +17 -0
  196. package/dist/constants/skeleton.d.ts +17 -0
  197. package/dist/constants/skeleton.js +17 -0
  198. package/dist/constants/split-button.d.ts +7 -0
  199. package/dist/constants/split-button.js +5 -0
  200. package/dist/constants/switch.d.ts +33 -0
  201. package/dist/constants/switch.js +41 -0
  202. package/dist/constants/tabs.d.ts +17 -0
  203. package/dist/constants/tabs.js +17 -0
  204. package/dist/constants/toast.d.ts +3 -0
  205. package/dist/constants/toast.js +3 -0
  206. package/dist/constants/tooltip.d.ts +13 -0
  207. package/dist/constants/tooltip.js +52 -0
  208. package/dist/hooks/use-horizontal-swipe.d.ts +23 -0
  209. package/dist/hooks/use-horizontal-swipe.js +80 -0
  210. package/dist/hooks/use-is-hydrated.d.ts +6 -0
  211. package/dist/hooks/use-is-hydrated.js +20 -0
  212. package/dist/hooks/use-mobile.d.ts +1 -0
  213. package/dist/hooks/use-mobile.js +19 -0
  214. package/dist/hooks/use-prefers-reduced-motion.d.ts +2 -0
  215. package/dist/hooks/use-prefers-reduced-motion.js +27 -0
  216. package/dist/hooks/use-rich-link-editor.d.ts +55 -0
  217. package/dist/hooks/use-rich-link-editor.js +515 -0
  218. package/dist/hooks/use-sidebar-persistence.d.ts +6 -0
  219. package/dist/hooks/use-sidebar-persistence.js +52 -0
  220. package/dist/hooks/use-today.d.ts +7 -0
  221. package/dist/hooks/use-today.js +50 -0
  222. package/dist/hooks/use-viewer-time-zone.d.ts +6 -0
  223. package/dist/hooks/use-viewer-time-zone.js +20 -0
  224. package/dist/hooks.d.ts +11 -0
  225. package/dist/hooks.js +11 -0
  226. package/dist/index.d.ts +71 -0
  227. package/dist/index.js +69 -0
  228. package/dist/lib/browser-clipboard.d.ts +13 -0
  229. package/dist/lib/browser-clipboard.js +48 -0
  230. package/dist/lib/column-filter-value.d.ts +12 -0
  231. package/dist/lib/column-filter-value.js +52 -0
  232. package/dist/lib/file-acceptance.d.ts +43 -0
  233. package/dist/lib/file-acceptance.js +107 -0
  234. package/dist/lib/format-file-size.d.ts +16 -0
  235. package/dist/lib/format-file-size.js +34 -0
  236. package/dist/lib/fuzzy-search.d.ts +17 -0
  237. package/dist/lib/fuzzy-search.js +183 -0
  238. package/dist/lib/horizontal-swipe.d.ts +23 -0
  239. package/dist/lib/horizontal-swipe.js +29 -0
  240. package/dist/lib/image-dimensions.d.ts +2 -0
  241. package/dist/lib/image-dimensions.js +7 -0
  242. package/dist/lib/name-initials.d.ts +7 -0
  243. package/dist/lib/name-initials.js +11 -0
  244. package/dist/lib/rich-text/link-markdown-constants.d.ts +147 -0
  245. package/dist/lib/rich-text/link-markdown-constants.js +458 -0
  246. package/dist/lib/rich-text/link-markdown-types.d.ts +53 -0
  247. package/dist/lib/rich-text/link-markdown-types.js +1 -0
  248. package/dist/lib/rich-text/link-markdown.d.ts +193 -0
  249. package/dist/lib/rich-text/link-markdown.js +592 -0
  250. package/dist/lib/rich-text/rich-markdown.d.ts +41 -0
  251. package/dist/lib/rich-text/rich-markdown.js +105 -0
  252. package/dist/lib/rich-text/rich-text-editor-dom.d.ts +26 -0
  253. package/dist/lib/rich-text/rich-text-editor-dom.js +79 -0
  254. package/dist/lib/toast-layer.d.ts +24 -0
  255. package/dist/lib/toast-layer.js +76 -0
  256. package/dist/lib/utils.d.ts +2 -0
  257. package/dist/lib/utils.js +2 -0
  258. package/dist/lib/year-month-filter.d.ts +16 -0
  259. package/dist/lib/year-month-filter.js +46 -0
  260. package/dist/motion/arc-floating-slot.d.ts +40 -0
  261. package/dist/motion/arc-floating-slot.js +177 -0
  262. package/dist/motion/arc-press.d.ts +6 -0
  263. package/dist/motion/arc-press.js +59 -0
  264. package/dist/motion/arc-swap.d.ts +22 -0
  265. package/dist/motion/arc-swap.js +49 -0
  266. package/dist/motion/arc-tokens.d.ts +53 -0
  267. package/dist/motion/arc-tokens.js +73 -0
  268. package/dist/motion/glide-indicator.d.ts +69 -0
  269. package/dist/motion/glide-indicator.js +309 -0
  270. package/dist/motion/glide-slot.d.ts +9 -0
  271. package/dist/motion/glide-slot.js +71 -0
  272. package/dist/motion/motion-slot.d.ts +12 -0
  273. package/dist/motion/motion-slot.js +376 -0
  274. package/dist/motion/overlay-warmth.d.ts +24 -0
  275. package/dist/motion/overlay-warmth.js +70 -0
  276. package/dist/motion/presence.d.ts +40 -0
  277. package/dist/motion/presence.js +101 -0
  278. package/dist/motion/surface-keyframes.d.ts +24 -0
  279. package/dist/motion/surface-keyframes.js +141 -0
  280. package/dist/motion/tokens.d.ts +81 -0
  281. package/dist/motion/tokens.js +67 -0
  282. package/dist/motion/use-attached-element.d.ts +7 -0
  283. package/dist/motion/use-attached-element.js +22 -0
  284. package/dist/motion/use-morph-width.d.ts +13 -0
  285. package/dist/motion/use-morph-width.js +59 -0
  286. package/dist/next.d.ts +14 -0
  287. package/dist/next.js +79 -0
  288. package/dist/providers/astra-ui-provider.d.ts +27 -0
  289. package/dist/providers/astra-ui-provider.js +100 -0
  290. package/dist/providers/native-provider.d.ts +4 -0
  291. package/dist/providers/native-provider.js +45 -0
  292. package/dist/sonner.d.ts +7 -0
  293. package/dist/sonner.js +8 -0
  294. package/dist/styles.css +2 -0
  295. package/dist/tanstack.d.ts +11 -0
  296. package/dist/tanstack.js +50 -0
  297. package/dist/theme.d.ts +3 -0
  298. package/dist/theme.js +1 -0
  299. package/dist/types/data-table.d.ts +27 -0
  300. package/dist/types/data-table.js +1 -0
  301. package/fonts.css +5 -0
  302. package/package.json +450 -4
  303. package/styles.css +4 -0
  304. package/theme.css +248 -0
@@ -0,0 +1,389 @@
1
+ "use client";
2
+ import { c as _c } from "react/compiler-runtime";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { motion } from "motion/react";
5
+ import { usePrefersReducedMotion } from "../hooks/use-prefers-reduced-motion.js";
6
+ import { MOTION_TIMING } from "../motion/tokens.js";
7
+ import { cn } from "../lib/utils.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const motionElements = {
10
+ article: motion.article,
11
+ div: motion.div,
12
+ h1: motion.h1,
13
+ h2: motion.h2,
14
+ h3: motion.h3,
15
+ h4: motion.h4,
16
+ h5: motion.h5,
17
+ h6: motion.h6,
18
+ li: motion.li,
19
+ p: motion.p,
20
+ section: motion.section,
21
+ span: motion.span
22
+ };
23
+ /** Idle cursors fade out and back in, like a text editor's caret. */
24
+ const CURSOR_BLINK_OPACITY = [
25
+ 1,
26
+ 1,
27
+ 0,
28
+ 0,
29
+ 1
30
+ ];
31
+ const CURSOR_BLINK_TIMES = [
32
+ 0,
33
+ .4,
34
+ .5,
35
+ .9,
36
+ 1
37
+ ];
38
+ export function TypingAnimation(t0) {
39
+ const $ = _c(68);
40
+ let children;
41
+ let className;
42
+ let deleteSpeed;
43
+ let props;
44
+ let t1;
45
+ let t2;
46
+ let t3;
47
+ let t4;
48
+ let t5;
49
+ let t6;
50
+ let t7;
51
+ let t8;
52
+ let t9;
53
+ let typeSpeed;
54
+ let words;
55
+ if ($[0] !== t0) {
56
+ ({children, words, className, duration: t1, typeSpeed, deleteSpeed, delay: t2, pauseDelay: t3, loop: t4, as: t5, startOnView: t6, showCursor: t7, blinkCursor: t8, cursorStyle: t9, ...props} = t0);
57
+ $[0] = t0;
58
+ $[1] = children;
59
+ $[2] = className;
60
+ $[3] = deleteSpeed;
61
+ $[4] = props;
62
+ $[5] = t1;
63
+ $[6] = t2;
64
+ $[7] = t3;
65
+ $[8] = t4;
66
+ $[9] = t5;
67
+ $[10] = t6;
68
+ $[11] = t7;
69
+ $[12] = t8;
70
+ $[13] = t9;
71
+ $[14] = typeSpeed;
72
+ $[15] = words;
73
+ } else {
74
+ children = $[1];
75
+ className = $[2];
76
+ deleteSpeed = $[3];
77
+ props = $[4];
78
+ t1 = $[5];
79
+ t2 = $[6];
80
+ t3 = $[7];
81
+ t4 = $[8];
82
+ t5 = $[9];
83
+ t6 = $[10];
84
+ t7 = $[11];
85
+ t8 = $[12];
86
+ t9 = $[13];
87
+ typeSpeed = $[14];
88
+ words = $[15];
89
+ }
90
+ const duration = t1 === undefined ? 80 : t1;
91
+ const delay = t2 === undefined ? 0 : t2;
92
+ const pauseDelay = t3 === undefined ? 1e3 : t3;
93
+ const loop = t4 === undefined ? false : t4;
94
+ const Component = t5 === undefined ? "span" : t5;
95
+ const startOnView = t6 === undefined ? true : t6;
96
+ const showCursor = t7 === undefined ? true : t7;
97
+ const blinkCursor = t8 === undefined ? true : t8;
98
+ const cursorStyle = t9 === undefined ? "line" : t9;
99
+ const shouldReduceMotion = usePrefersReducedMotion();
100
+ const wasReducedMotionRef = useRef(false);
101
+ const MotionComponent = motionElements[Component];
102
+ const [displayedText, setDisplayedText] = useState("");
103
+ const [currentWordIndex, setCurrentWordIndex] = useState(0);
104
+ const [currentCharIndex, setCurrentCharIndex] = useState(0);
105
+ const [phase, setPhase] = useState("typing");
106
+ const elementRef = useRef(null);
107
+ let t10;
108
+ if ($[16] !== startOnView) {
109
+ t10 = () => !startOnView || typeof IntersectionObserver === "undefined";
110
+ $[16] = startOnView;
111
+ $[17] = t10;
112
+ } else {
113
+ t10 = $[17];
114
+ }
115
+ const [isInView, setIsInView] = useState(t10);
116
+ let t11;
117
+ if ($[18] !== children || $[19] !== words) {
118
+ t11 = words ?? (children ? [children] : []);
119
+ $[18] = children;
120
+ $[19] = words;
121
+ $[20] = t11;
122
+ } else {
123
+ t11 = $[20];
124
+ }
125
+ const wordsToAnimate = t11;
126
+ const hasMultipleWords = wordsToAnimate.length > 1;
127
+ const typingSpeed = typeSpeed ?? duration;
128
+ const deletingSpeed = deleteSpeed ?? typingSpeed / 2;
129
+ const shouldStart = startOnView ? isInView : true;
130
+ let t12;
131
+ if ($[21] !== children || $[22] !== words) {
132
+ t12 = words ? words.join("\0") : children ?? "";
133
+ $[21] = children;
134
+ $[22] = words;
135
+ $[23] = t12;
136
+ } else {
137
+ t12 = $[23];
138
+ }
139
+ const animationSourceKey = t12;
140
+ const lastResetSourceKeyRef = useRef(animationSourceKey);
141
+ let t13;
142
+ let t14;
143
+ if ($[24] !== isInView || $[25] !== startOnView) {
144
+ t13 = () => {
145
+ if (!startOnView || isInView) {
146
+ return;
147
+ }
148
+ const element = elementRef.current;
149
+ if (!element || typeof IntersectionObserver === "undefined") {
150
+ return;
151
+ }
152
+ const observer = new IntersectionObserver((t15) => {
153
+ const [entry] = t15;
154
+ if (entry.isIntersecting) {
155
+ setIsInView(true);
156
+ observer.disconnect();
157
+ }
158
+ }, { threshold: .3 });
159
+ observer.observe(element);
160
+ return () => {
161
+ observer.disconnect();
162
+ };
163
+ };
164
+ t14 = [isInView, startOnView];
165
+ $[24] = isInView;
166
+ $[25] = startOnView;
167
+ $[26] = t13;
168
+ $[27] = t14;
169
+ } else {
170
+ t13 = $[26];
171
+ t14 = $[27];
172
+ }
173
+ useEffect(t13, t14);
174
+ let t15;
175
+ let t16;
176
+ if ($[28] !== animationSourceKey || $[29] !== shouldReduceMotion || $[30] !== wordsToAnimate) {
177
+ t15 = () => {
178
+ if (shouldReduceMotion) {
179
+ wasReducedMotionRef.current = true;
180
+ lastResetSourceKeyRef.current = animationSourceKey;
181
+ setDisplayedText(wordsToAnimate.join(" · "));
182
+ return;
183
+ }
184
+ if (lastResetSourceKeyRef.current === animationSourceKey && !wasReducedMotionRef.current) {
185
+ return;
186
+ }
187
+ wasReducedMotionRef.current = false;
188
+ lastResetSourceKeyRef.current = animationSourceKey;
189
+ const resetTimeout = setTimeout(() => {
190
+ setDisplayedText("");
191
+ setCurrentWordIndex(0);
192
+ setCurrentCharIndex(0);
193
+ setPhase("typing");
194
+ }, 0);
195
+ return () => {
196
+ clearTimeout(resetTimeout);
197
+ };
198
+ };
199
+ t16 = [
200
+ animationSourceKey,
201
+ shouldReduceMotion,
202
+ wordsToAnimate
203
+ ];
204
+ $[28] = animationSourceKey;
205
+ $[29] = shouldReduceMotion;
206
+ $[30] = wordsToAnimate;
207
+ $[31] = t15;
208
+ $[32] = t16;
209
+ } else {
210
+ t15 = $[31];
211
+ t16 = $[32];
212
+ }
213
+ useEffect(t15, t16);
214
+ let t17;
215
+ let t18;
216
+ if ($[33] !== currentCharIndex || $[34] !== currentWordIndex || $[35] !== delay || $[36] !== deletingSpeed || $[37] !== displayedText || $[38] !== hasMultipleWords || $[39] !== loop || $[40] !== pauseDelay || $[41] !== phase || $[42] !== shouldReduceMotion || $[43] !== shouldStart || $[44] !== typingSpeed || $[45] !== wordsToAnimate) {
217
+ t17 = () => {
218
+ if (shouldReduceMotion) {
219
+ return;
220
+ }
221
+ let timeout = null;
222
+ if (shouldStart && wordsToAnimate.length > 0) {
223
+ const timeoutDelay = delay > 0 && displayedText === "" ? delay : phase === "typing" ? typingSpeed : phase === "deleting" ? deletingSpeed : pauseDelay;
224
+ timeout = setTimeout(() => {
225
+ const currentWord = wordsToAnimate[currentWordIndex] || "";
226
+ const graphemes = Array.from(currentWord);
227
+ bb136: switch (phase) {
228
+ case "typing": {
229
+ if (currentCharIndex < graphemes.length) {
230
+ setDisplayedText(graphemes.slice(0, currentCharIndex + 1).join(""));
231
+ setCurrentCharIndex(currentCharIndex + 1);
232
+ } else {
233
+ if (hasMultipleWords || loop) {
234
+ const isLastWord = currentWordIndex === wordsToAnimate.length - 1;
235
+ if (!isLastWord || loop) {
236
+ setPhase("pause");
237
+ }
238
+ }
239
+ }
240
+ break bb136;
241
+ }
242
+ case "pause": {
243
+ setPhase("deleting");
244
+ break bb136;
245
+ }
246
+ case "deleting": {
247
+ if (currentCharIndex > 0) {
248
+ setDisplayedText(graphemes.slice(0, currentCharIndex - 1).join(""));
249
+ setCurrentCharIndex(currentCharIndex - 1);
250
+ } else {
251
+ const nextIndex = (currentWordIndex + 1) % wordsToAnimate.length;
252
+ setCurrentWordIndex(nextIndex);
253
+ setPhase("typing");
254
+ }
255
+ }
256
+ }
257
+ }, timeoutDelay);
258
+ }
259
+ return () => {
260
+ if (timeout !== null) {
261
+ clearTimeout(timeout);
262
+ }
263
+ };
264
+ };
265
+ t18 = [
266
+ shouldStart,
267
+ shouldReduceMotion,
268
+ phase,
269
+ currentCharIndex,
270
+ currentWordIndex,
271
+ displayedText,
272
+ wordsToAnimate,
273
+ hasMultipleWords,
274
+ loop,
275
+ typingSpeed,
276
+ deletingSpeed,
277
+ pauseDelay,
278
+ delay
279
+ ];
280
+ $[33] = currentCharIndex;
281
+ $[34] = currentWordIndex;
282
+ $[35] = delay;
283
+ $[36] = deletingSpeed;
284
+ $[37] = displayedText;
285
+ $[38] = hasMultipleWords;
286
+ $[39] = loop;
287
+ $[40] = pauseDelay;
288
+ $[41] = phase;
289
+ $[42] = shouldReduceMotion;
290
+ $[43] = shouldStart;
291
+ $[44] = typingSpeed;
292
+ $[45] = wordsToAnimate;
293
+ $[46] = t17;
294
+ $[47] = t18;
295
+ } else {
296
+ t17 = $[46];
297
+ t18 = $[47];
298
+ }
299
+ useEffect(t17, t18);
300
+ let t19;
301
+ if ($[48] !== currentWordIndex || $[49] !== wordsToAnimate) {
302
+ t19 = Array.from(wordsToAnimate[currentWordIndex] || "");
303
+ $[48] = currentWordIndex;
304
+ $[49] = wordsToAnimate;
305
+ $[50] = t19;
306
+ } else {
307
+ t19 = $[50];
308
+ }
309
+ const currentWordGraphemes = t19;
310
+ const isComplete = !loop && currentWordIndex === wordsToAnimate.length - 1 && currentCharIndex >= currentWordGraphemes.length && phase !== "deleting";
311
+ const shouldShowCursor = showCursor && !shouldReduceMotion && !isComplete && (hasMultipleWords || loop || currentCharIndex < currentWordGraphemes.length);
312
+ const isCursorIdle = !shouldStart || phase === "pause" || displayedText === "";
313
+ let t20;
314
+ if ($[51] !== cursorStyle) {
315
+ t20 = () => {
316
+ switch (cursorStyle) {
317
+ case "block": {
318
+ return "▌";
319
+ }
320
+ case "underscore": {
321
+ return "_";
322
+ }
323
+ case "line":
324
+ default: {
325
+ return "|";
326
+ }
327
+ }
328
+ };
329
+ $[51] = cursorStyle;
330
+ $[52] = t20;
331
+ } else {
332
+ t20 = $[52];
333
+ }
334
+ const getCursorChar = t20;
335
+ const t21 = Component === "h1" && "text-3xl font-medium leading-tight md:text-4xl";
336
+ const t22 = Component === "span" && "inline-block";
337
+ let t23;
338
+ if ($[53] !== className || $[54] !== t21 || $[55] !== t22) {
339
+ t23 = cn("tracking-[-0.02em]", t21, t22, className);
340
+ $[53] = className;
341
+ $[54] = t21;
342
+ $[55] = t22;
343
+ $[56] = t23;
344
+ } else {
345
+ t23 = $[56];
346
+ }
347
+ let t24;
348
+ if ($[57] !== blinkCursor || $[58] !== getCursorChar || $[59] !== isCursorIdle || $[60] !== shouldShowCursor) {
349
+ t24 = shouldShowCursor && /* @__PURE__ */ _jsx(motion.span, {
350
+ "aria-hidden": "true",
351
+ "data-slot": "typing-animation-cursor",
352
+ className: "inline-block",
353
+ animate: { opacity: blinkCursor && isCursorIdle ? CURSOR_BLINK_OPACITY : 1 },
354
+ transition: blinkCursor && isCursorIdle ? {
355
+ duration: MOTION_TIMING.cursorBlink,
356
+ times: CURSOR_BLINK_TIMES,
357
+ repeat: Infinity,
358
+ ease: "easeInOut"
359
+ } : { duration: MOTION_TIMING.fast },
360
+ children: getCursorChar()
361
+ });
362
+ $[57] = blinkCursor;
363
+ $[58] = getCursorChar;
364
+ $[59] = isCursorIdle;
365
+ $[60] = shouldShowCursor;
366
+ $[61] = t24;
367
+ } else {
368
+ t24 = $[61];
369
+ }
370
+ let t25;
371
+ if ($[62] !== MotionComponent || $[63] !== displayedText || $[64] !== props || $[65] !== t23 || $[66] !== t24) {
372
+ t25 = /* @__PURE__ */ _jsxs(MotionComponent, {
373
+ ref: elementRef,
374
+ "data-slot": "typing-animation",
375
+ className: t23,
376
+ ...props,
377
+ children: [displayedText, t24]
378
+ });
379
+ $[62] = MotionComponent;
380
+ $[63] = displayedText;
381
+ $[64] = props;
382
+ $[65] = t23;
383
+ $[66] = t24;
384
+ $[67] = t25;
385
+ } else {
386
+ t25 = $[67];
387
+ }
388
+ return t25;
389
+ }
@@ -0,0 +1,20 @@
1
+ /** Tuning of `ActionButton`: its async states, reset delay and the icon that follows each state. */
2
+ /** Phases an action goes through: ready to run, running, and finished successfully. */
3
+ export type ActionButtonState = "idle" | "pending" | "success";
4
+ /** Value of each phase, exposed on the button as `data-action-state`, apart from `data-state`, which marks popup triggers that never press. */
5
+ export declare const ACTION_BUTTON_STATE: {
6
+ readonly idle: "idle";
7
+ readonly pending: "pending";
8
+ readonly success: "success";
9
+ };
10
+ /** Time the success state stays on the button before it returns to idle on its own. */
11
+ export declare const ACTION_BUTTON_DEFAULT_RESET_AFTER_MS = 2400;
12
+ /** Side, in pixels, of the slot that swaps the arrow, the spinner and the check. */
13
+ export declare const ACTION_BUTTON_ICON_SIZE_PX = 17;
14
+ /** Horizontal offsets, in pixels, of the arrow returning from behind and leaving forward. */
15
+ export declare const ACTION_BUTTON_ARROW_OFFSET_PX: {
16
+ readonly enter: -6;
17
+ readonly exit: 8;
18
+ };
19
+ /** Delay, in seconds, before the success check starts drawing itself. */
20
+ export declare const ACTION_BUTTON_CHECK_DRAW_DELAY_S = 0.05;
@@ -0,0 +1,17 @@
1
+ /** Value of each phase, exposed on the button as `data-action-state`, apart from `data-state`, which marks popup triggers that never press. */
2
+ export const ACTION_BUTTON_STATE = {
3
+ idle: "idle",
4
+ pending: "pending",
5
+ success: "success"
6
+ };
7
+ /** Time the success state stays on the button before it returns to idle on its own. */
8
+ export const ACTION_BUTTON_DEFAULT_RESET_AFTER_MS = 2400;
9
+ /** Side, in pixels, of the slot that swaps the arrow, the spinner and the check. */
10
+ export const ACTION_BUTTON_ICON_SIZE_PX = 17;
11
+ /** Horizontal offsets, in pixels, of the arrow returning from behind and leaving forward. */
12
+ export const ACTION_BUTTON_ARROW_OFFSET_PX = {
13
+ enter: -6,
14
+ exit: 8
15
+ };
16
+ /** Delay, in seconds, before the success check starts drawing itself. */
17
+ export const ACTION_BUTTON_CHECK_DRAW_DELAY_S = .05;
@@ -0,0 +1,16 @@
1
+ /** Copy and options of Arc's Alert. */
2
+ /** Arc's semantic tones for an alert; `danger` interrupts as an alert, the rest are polite statuses. */
3
+ export type AlertTone = "info" | "success" | "warning" | "danger";
4
+ /** Default Spanish accessible name of the dismiss button, followed by the alert's title. */
5
+ export declare const ALERT_DISMISS_LABEL = "Descartar aviso";
6
+ /** Separator between the dismiss label and the title, as in "Descartar aviso: Nueva versión". */
7
+ export declare const ALERT_DISMISS_LABEL_SEPARATOR = ": ";
8
+ /** Vertical travel, in em, of a new title or detail rising in and the old one lifting out. */
9
+ export declare const ALERT_TEXT_OFFSET_EM = 0.3;
10
+ /** Live-region roles: only a danger alert interrupts; every other tone is announced politely. */
11
+ export declare const ALERT_TONE_ROLE: {
12
+ readonly info: "status";
13
+ readonly success: "status";
14
+ readonly warning: "status";
15
+ readonly danger: "alert";
16
+ };
@@ -0,0 +1,13 @@
1
+ /** Default Spanish accessible name of the dismiss button, followed by the alert's title. */
2
+ export const ALERT_DISMISS_LABEL = "Descartar aviso";
3
+ /** Separator between the dismiss label and the title, as in "Descartar aviso: Nueva versión". */
4
+ export const ALERT_DISMISS_LABEL_SEPARATOR = ": ";
5
+ /** Vertical travel, in em, of a new title or detail rising in and the old one lifting out. */
6
+ export const ALERT_TEXT_OFFSET_EM = .3;
7
+ /** Live-region roles: only a danger alert interrupts; every other tone is announced politely. */
8
+ export const ALERT_TONE_ROLE = {
9
+ info: "status",
10
+ success: "status",
11
+ warning: "status",
12
+ danger: "alert"
13
+ };
@@ -0,0 +1,38 @@
1
+ /** Presence an avatar can show with Arc's status dot. */
2
+ export type AvatarStatus = "online" | "offline";
3
+ /** Avatar diameters: 24px (`sm`), 32px (`md`), 40px (`lg`) and Arc's 88px profile size (`xl`). */
4
+ export type AvatarSize = "sm" | "md" | "lg" | "xl";
5
+ /** Sizes an avatar group accepts for its avatars and overflow chip. */
6
+ export type AvatarGroupSize = "sm" | "md" | "lg";
7
+ /**
8
+ * Referrer policy of avatar photos. They are usually hosted by an identity provider (Google, GitHub), and Google rejects
9
+ * some photos requested with a cross-site `Referer`, which left the avatar on its initials. Omitting the referrer also
10
+ * keeps the consumer's page private. A consumer can still pass its own `referrerPolicy`.
11
+ */
12
+ export declare const AVATAR_IMAGE_REFERRER_POLICY = "no-referrer";
13
+ /** Default Spanish labels read by assistive technology for each presence. */
14
+ export declare const AVATAR_STATUS_LABEL: {
15
+ readonly online: "En línea";
16
+ readonly offline: "Desconectado";
17
+ };
18
+ /** Separator between the name and the presence in the avatar's accessible name, as in "Ana, En línea". */
19
+ export declare const AVATAR_LABEL_SEPARATOR = ", ";
20
+ /** Scale the status dot grows from and shrinks back to. */
21
+ export declare const AVATAR_STATUS_HIDDEN_SCALE = 0.6;
22
+ /** Diameter of each size in CSS pixels, passed to image adapters as the `sizes` hint. */
23
+ export declare const AVATAR_SIZE_PX: {
24
+ readonly sm: 24;
25
+ readonly md: 32;
26
+ readonly lg: 40;
27
+ readonly xl: 88;
28
+ };
29
+ /** Default Spanish accessible name of an avatar group, also used in its overflow label. */
30
+ export declare const AVATAR_GROUP_DEFAULT_LABEL = "Integrantes";
31
+ /** Avatars an avatar group shows before the rest collapse into the overflow chip. */
32
+ export declare const AVATAR_GROUP_DEFAULT_MAX = 4;
33
+ /** Word that closes the overflow chip's accessible name, as in "2 integrantes más". */
34
+ export declare const AVATAR_GROUP_OVERFLOW_SUFFIX = "m\u00E1s";
35
+ /** Vertical travel, in em, of the overflow count rolling in the direction it moved. */
36
+ export declare const AVATAR_GROUP_COUNT_OFFSET_EM = 0.4;
37
+ /** Scale a joining or leaving member's slot opens from and closes to. */
38
+ export declare const AVATAR_GROUP_SLOT_HIDDEN_SCALE = 0.9;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Referrer policy of avatar photos. They are usually hosted by an identity provider (Google, GitHub), and Google rejects
3
+ * some photos requested with a cross-site `Referer`, which left the avatar on its initials. Omitting the referrer also
4
+ * keeps the consumer's page private. A consumer can still pass its own `referrerPolicy`.
5
+ */
6
+ export const AVATAR_IMAGE_REFERRER_POLICY = "no-referrer";
7
+ /** Default Spanish labels read by assistive technology for each presence. */
8
+ export const AVATAR_STATUS_LABEL = {
9
+ online: "En línea",
10
+ offline: "Desconectado"
11
+ };
12
+ /** Separator between the name and the presence in the avatar's accessible name, as in "Ana, En línea". */
13
+ export const AVATAR_LABEL_SEPARATOR = ", ";
14
+ /** Scale the status dot grows from and shrinks back to. */
15
+ export const AVATAR_STATUS_HIDDEN_SCALE = .6;
16
+ /** Diameter of each size in CSS pixels, passed to image adapters as the `sizes` hint. */
17
+ export const AVATAR_SIZE_PX = {
18
+ sm: 24,
19
+ md: 32,
20
+ lg: 40,
21
+ xl: 88
22
+ };
23
+ /** Default Spanish accessible name of an avatar group, also used in its overflow label. */
24
+ export const AVATAR_GROUP_DEFAULT_LABEL = "Integrantes";
25
+ /** Avatars an avatar group shows before the rest collapse into the overflow chip. */
26
+ export const AVATAR_GROUP_DEFAULT_MAX = 4;
27
+ /** Word that closes the overflow chip's accessible name, as in "2 integrantes más". */
28
+ export const AVATAR_GROUP_OVERFLOW_SUFFIX = "más";
29
+ /** Vertical travel, in em, of the overflow count rolling in the direction it moved. */
30
+ export const AVATAR_GROUP_COUNT_OFFSET_EM = .4;
31
+ /** Scale a joining or leaving member's slot opens from and closes to. */
32
+ export const AVATAR_GROUP_SLOT_HIDDEN_SCALE = .9;
@@ -0,0 +1,6 @@
1
+ /** Tuning of Arc's Badge label swap. */
2
+ /** Vertical offsets, in em, of a new label rising in and the old one lifting out. */
3
+ export declare const BADGE_LABEL_OFFSET_EM: {
4
+ readonly enter: 0.3;
5
+ readonly exit: -0.3;
6
+ };
@@ -0,0 +1,6 @@
1
+ /** Tuning of Arc's Badge label swap. */
2
+ /** Vertical offsets, in em, of a new label rising in and the old one lifting out. */
3
+ export const BADGE_LABEL_OFFSET_EM = {
4
+ enter: .3,
5
+ exit: -.3
6
+ };
@@ -0,0 +1,16 @@
1
+ /** Tuning shared by Button's Arc press feedback and label width morph. */
2
+ /** Buttons wider than this press a little less so large surfaces don't feel spongy. */
3
+ export declare const BUTTON_WIDE_THRESHOLD_PX = 220;
4
+ /** Buttons up to this width are icon-sized and press a little deeper. */
5
+ export declare const BUTTON_ICON_THRESHOLD_PX = 48;
6
+ /** Press scale for wide buttons. */
7
+ export declare const BUTTON_WIDE_PRESS_SCALE = 0.985;
8
+ /** Press scale for icon-sized buttons. */
9
+ export declare const BUTTON_ICON_PRESS_SCALE = 0.96;
10
+ /** Press scale for every other button. */
11
+ export declare const BUTTON_DEFAULT_PRESS_SCALE = 0.97;
12
+ /**
13
+ * After the label changes, resizes inside this window spring to the new width; later resizes
14
+ * (late web fonts, parent reflows) jump so nothing wobbles on first paint.
15
+ */
16
+ export declare const BUTTON_MORPH_WINDOW_MS = 700;
@@ -0,0 +1,16 @@
1
+ /** Tuning shared by Button's Arc press feedback and label width morph. */
2
+ /** Buttons wider than this press a little less so large surfaces don't feel spongy. */
3
+ export const BUTTON_WIDE_THRESHOLD_PX = 220;
4
+ /** Buttons up to this width are icon-sized and press a little deeper. */
5
+ export const BUTTON_ICON_THRESHOLD_PX = 48;
6
+ /** Press scale for wide buttons. */
7
+ export const BUTTON_WIDE_PRESS_SCALE = .985;
8
+ /** Press scale for icon-sized buttons. */
9
+ export const BUTTON_ICON_PRESS_SCALE = .96;
10
+ /** Press scale for every other button. */
11
+ export const BUTTON_DEFAULT_PRESS_SCALE = .97;
12
+ /**
13
+ * After the label changes, resizes inside this window spring to the new width; later resizes
14
+ * (late web fonts, parent reflows) jump so nothing wobbles on first paint.
15
+ */
16
+ export const BUTTON_MORPH_WINDOW_MS = 700;
@@ -0,0 +1,36 @@
1
+ /** Tuning of `Calendar`, adapted from Arc's calendar (https://uiarc.dev, MIT License, see THIRD_PARTY_NOTICES.md). */
2
+ /** Spring of a month sliding in: Arc's month strip, critically damped so it never overshoots or queues. */
3
+ export declare const CALENDAR_MONTH_SPRING: {
4
+ readonly type: "spring";
5
+ readonly visualDuration: 0.36;
6
+ readonly bounce: 0;
7
+ readonly restDelta: 0.002;
8
+ };
9
+ /** Opacity a month starts from while it slides in, matching Arc's neighbouring pane one step off the strip. */
10
+ export declare const CALENDAR_MONTH_ENTER_OPACITY = 0.4;
11
+ /** Scale the selected disc grows from when the selection enters a month. */
12
+ export declare const CALENDAR_SELECTION_ENTER_SCALE = 0.6;
13
+ /** Duration, in seconds, of the selected disc fading out when the selection leaves a month. */
14
+ export declare const CALENDAR_SELECTION_EXIT_DURATION_S = 0.14;
15
+ /** Day button that holds a single selection, the only one the gliding disc follows. */
16
+ export declare const CALENDAR_SELECTED_DAY_SELECTOR = "[data-selected-single=\"true\"]";
17
+ /** Attribute the month sets while its disc paints the selection, so the selected day drops its own fill. */
18
+ export declare const CALENDAR_SELECTION_DISC_ATTRIBUTE = "data-selection-disc";
19
+ /** Default copy of the optional Today button. */
20
+ export declare const CALENDAR_COPY: {
21
+ readonly today: "Hoy";
22
+ };
23
+ /** Months in a year, to compare dates by calendar month. */
24
+ export declare const CALENDAR_MONTHS_PER_YEAR = 12;
25
+ /** Locale of `Calendar` when the consumer does not pick one: Spanish as written in Argentina, weeks start on Monday. */
26
+ export declare const CALENDAR_DEFAULT_LOCALE = "es-AR";
27
+ /**
28
+ * Languages `Calendar` ships full translations for, including react-day-picker's accessible labels. Any other locale
29
+ * keeps English labels while month and weekday names come from `Intl`.
30
+ */
31
+ export declare const CALENDAR_TRANSLATED_LANGUAGE: {
32
+ readonly spanish: "es";
33
+ readonly english: "en";
34
+ };
35
+ /** Separator between the language and the region of a BCP 47 locale such as `es-AR`. */
36
+ export declare const CALENDAR_LOCALE_SEPARATOR = "-";
@@ -0,0 +1,34 @@
1
+ /** Tuning of `Calendar`, adapted from Arc's calendar (https://uiarc.dev, MIT License, see THIRD_PARTY_NOTICES.md). */
2
+ /** Spring of a month sliding in: Arc's month strip, critically damped so it never overshoots or queues. */
3
+ export const CALENDAR_MONTH_SPRING = {
4
+ type: "spring",
5
+ visualDuration: .36,
6
+ bounce: 0,
7
+ restDelta: .002
8
+ };
9
+ /** Opacity a month starts from while it slides in, matching Arc's neighbouring pane one step off the strip. */
10
+ export const CALENDAR_MONTH_ENTER_OPACITY = .4;
11
+ /** Scale the selected disc grows from when the selection enters a month. */
12
+ export const CALENDAR_SELECTION_ENTER_SCALE = .6;
13
+ /** Duration, in seconds, of the selected disc fading out when the selection leaves a month. */
14
+ export const CALENDAR_SELECTION_EXIT_DURATION_S = .14;
15
+ /** Day button that holds a single selection, the only one the gliding disc follows. */
16
+ export const CALENDAR_SELECTED_DAY_SELECTOR = "[data-selected-single=\"true\"]";
17
+ /** Attribute the month sets while its disc paints the selection, so the selected day drops its own fill. */
18
+ export const CALENDAR_SELECTION_DISC_ATTRIBUTE = "data-selection-disc";
19
+ /** Default copy of the optional Today button. */
20
+ export const CALENDAR_COPY = { today: "Hoy" };
21
+ /** Months in a year, to compare dates by calendar month. */
22
+ export const CALENDAR_MONTHS_PER_YEAR = 12;
23
+ /** Locale of `Calendar` when the consumer does not pick one: Spanish as written in Argentina, weeks start on Monday. */
24
+ export const CALENDAR_DEFAULT_LOCALE = "es-AR";
25
+ /**
26
+ * Languages `Calendar` ships full translations for, including react-day-picker's accessible labels. Any other locale
27
+ * keeps English labels while month and weekday names come from `Intl`.
28
+ */
29
+ export const CALENDAR_TRANSLATED_LANGUAGE = {
30
+ spanish: "es",
31
+ english: "en"
32
+ };
33
+ /** Separator between the language and the region of a BCP 47 locale such as `es-AR`. */
34
+ export const CALENDAR_LOCALE_SEPARATOR = "-";
@@ -0,0 +1,23 @@
1
+ /** Copy and tuning of Arc's Card and its quick look, adapted from Arc (https://uiarc.dev, MIT License, see THIRD_PARTY_NOTICES.md). */
2
+ /** Heading levels a card title can take; Arc renders an `h3`. */
3
+ export type CardHeadingLevel = 2 | 3 | 4;
4
+ /** Heading level of the card title when none is passed. */
5
+ export declare const CARD_DEFAULT_HEADING_LEVEL = 3;
6
+ /** Default Spanish accessible name of the quick look's close button. */
7
+ export declare const CARD_CLOSE_LABEL = "Cerrar vista r\u00E1pida";
8
+ /** Visual duration, in seconds, of the spring that grows the card into the quick look. */
9
+ export declare const CARD_GROW_DURATION_S = 0.3;
10
+ /** Visual duration, in seconds, of the slightly quicker spring that settles the quick look back into the card. */
11
+ export declare const CARD_SETTLE_DURATION_S = 0.26;
12
+ /** Time, in milliseconds, the closing quick look travels above the page before the card takes over again. */
13
+ export declare const CARD_RETURN_MS = 300;
14
+ /** Delay, in seconds, between the words of a new status rising in one after another. */
15
+ export declare const CARD_STATUS_WORD_STAGGER_S = 0.03;
16
+ /** Vertical travel, in em, of a status line rising in and the old one lifting away. */
17
+ export declare const CARD_STATUS_OFFSET_EM = 0.3;
18
+ /** Vertical travel, in pixels, of the quick look details settling in under the copy. */
19
+ export declare const CARD_DETAILS_OFFSET_PX = 6;
20
+ /** Scale the quick look's close button grows from. */
21
+ export declare const CARD_CLOSE_HIDDEN_SCALE = 0.9;
22
+ /** Scale the close button dips to while pressed. */
23
+ export declare const CARD_CLOSE_PRESS_SCALE = 0.94;