@kanso-labs/kanso-ui 0.2.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 (112) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +83 -0
  3. package/dist/assets/stylex.css +1623 -0
  4. package/dist/cjs/assets/stylex.css +1623 -0
  5. package/dist/cjs/components/avatar/index.cjs +89 -0
  6. package/dist/cjs/components/avatar/index.cjs.map +1 -0
  7. package/dist/cjs/components/avatar/index.d.cts +29 -0
  8. package/dist/cjs/components/badge/index.cjs +93 -0
  9. package/dist/cjs/components/badge/index.cjs.map +1 -0
  10. package/dist/cjs/components/badge/index.d.cts +27 -0
  11. package/dist/cjs/components/button/index.cjs +101 -0
  12. package/dist/cjs/components/button/index.cjs.map +1 -0
  13. package/dist/cjs/components/button/index.d.cts +22 -0
  14. package/dist/cjs/components/card/index.cjs +84 -0
  15. package/dist/cjs/components/card/index.cjs.map +1 -0
  16. package/dist/cjs/components/card/index.d.cts +29 -0
  17. package/dist/cjs/components/chip/index.cjs +53 -0
  18. package/dist/cjs/components/chip/index.cjs.map +1 -0
  19. package/dist/cjs/components/chip/index.d.cts +13 -0
  20. package/dist/cjs/components/currency/index.cjs +56 -0
  21. package/dist/cjs/components/currency/index.cjs.map +1 -0
  22. package/dist/cjs/components/currency/index.d.cts +36 -0
  23. package/dist/cjs/components/icon-button/index.cjs +80 -0
  24. package/dist/cjs/components/icon-button/index.cjs.map +1 -0
  25. package/dist/cjs/components/icon-button/index.d.cts +32 -0
  26. package/dist/cjs/components/index.d.cts +15 -0
  27. package/dist/cjs/components/link/index.cjs +61 -0
  28. package/dist/cjs/components/link/index.cjs.map +1 -0
  29. package/dist/cjs/components/link/index.d.cts +30 -0
  30. package/dist/cjs/components/list-item/index.cjs +42 -0
  31. package/dist/cjs/components/list-item/index.cjs.map +1 -0
  32. package/dist/cjs/components/list-item/index.d.cts +22 -0
  33. package/dist/cjs/components/separator/index.cjs +34 -0
  34. package/dist/cjs/components/separator/index.cjs.map +1 -0
  35. package/dist/cjs/components/separator/index.d.cts +14 -0
  36. package/dist/cjs/components/sheet/index.cjs +266 -0
  37. package/dist/cjs/components/sheet/index.cjs.map +1 -0
  38. package/dist/cjs/components/sheet/index.d.cts +73 -0
  39. package/dist/cjs/components/tabs/index.cjs +77 -0
  40. package/dist/cjs/components/tabs/index.cjs.map +1 -0
  41. package/dist/cjs/components/tabs/index.d.cts +24 -0
  42. package/dist/cjs/components/text/index.cjs +173 -0
  43. package/dist/cjs/components/text/index.cjs.map +1 -0
  44. package/dist/cjs/components/text/index.d.cts +19 -0
  45. package/dist/cjs/components/text-field/index.cjs +53 -0
  46. package/dist/cjs/components/text-field/index.cjs.map +1 -0
  47. package/dist/cjs/components/text-field/index.d.cts +30 -0
  48. package/dist/cjs/hooks/useRipple.cjs +391 -0
  49. package/dist/cjs/hooks/useRipple.cjs.map +1 -0
  50. package/dist/cjs/index.cjs +29 -0
  51. package/dist/cjs/index.d.cts +16 -0
  52. package/dist/cjs/node_modules/@stylexjs/stylex/lib/es/stylex.cjs +121 -0
  53. package/dist/cjs/node_modules/@stylexjs/stylex/lib/es/stylex.cjs.map +1 -0
  54. package/dist/cjs/styles/ripple.cjs +33 -0
  55. package/dist/cjs/styles/ripple.cjs.map +1 -0
  56. package/dist/cjs/tokens/values.cjs +36 -0
  57. package/dist/cjs/tokens/values.cjs.map +1 -0
  58. package/dist/components/avatar/index.d.ts +29 -0
  59. package/dist/components/avatar/index.js +89 -0
  60. package/dist/components/avatar/index.js.map +1 -0
  61. package/dist/components/badge/index.d.ts +27 -0
  62. package/dist/components/badge/index.js +93 -0
  63. package/dist/components/badge/index.js.map +1 -0
  64. package/dist/components/button/index.d.ts +22 -0
  65. package/dist/components/button/index.js +101 -0
  66. package/dist/components/button/index.js.map +1 -0
  67. package/dist/components/card/index.d.ts +29 -0
  68. package/dist/components/card/index.js +84 -0
  69. package/dist/components/card/index.js.map +1 -0
  70. package/dist/components/chip/index.d.ts +13 -0
  71. package/dist/components/chip/index.js +53 -0
  72. package/dist/components/chip/index.js.map +1 -0
  73. package/dist/components/currency/index.d.ts +36 -0
  74. package/dist/components/currency/index.js +56 -0
  75. package/dist/components/currency/index.js.map +1 -0
  76. package/dist/components/icon-button/index.d.ts +32 -0
  77. package/dist/components/icon-button/index.js +80 -0
  78. package/dist/components/icon-button/index.js.map +1 -0
  79. package/dist/components/index.d.ts +15 -0
  80. package/dist/components/link/index.d.ts +30 -0
  81. package/dist/components/link/index.js +61 -0
  82. package/dist/components/link/index.js.map +1 -0
  83. package/dist/components/list-item/index.d.ts +22 -0
  84. package/dist/components/list-item/index.js +42 -0
  85. package/dist/components/list-item/index.js.map +1 -0
  86. package/dist/components/separator/index.d.ts +14 -0
  87. package/dist/components/separator/index.js +34 -0
  88. package/dist/components/separator/index.js.map +1 -0
  89. package/dist/components/sheet/index.d.ts +73 -0
  90. package/dist/components/sheet/index.js +266 -0
  91. package/dist/components/sheet/index.js.map +1 -0
  92. package/dist/components/tabs/index.d.ts +24 -0
  93. package/dist/components/tabs/index.js +77 -0
  94. package/dist/components/tabs/index.js.map +1 -0
  95. package/dist/components/text/index.d.ts +19 -0
  96. package/dist/components/text/index.js +173 -0
  97. package/dist/components/text/index.js.map +1 -0
  98. package/dist/components/text-field/index.d.ts +30 -0
  99. package/dist/components/text-field/index.js +53 -0
  100. package/dist/components/text-field/index.js.map +1 -0
  101. package/dist/hooks/useRipple.js +391 -0
  102. package/dist/hooks/useRipple.js.map +1 -0
  103. package/dist/index.d.ts +16 -0
  104. package/dist/index.js +15 -0
  105. package/dist/node_modules/@stylexjs/stylex/lib/es/stylex.js +121 -0
  106. package/dist/node_modules/@stylexjs/stylex/lib/es/stylex.js.map +1 -0
  107. package/dist/styles/ripple.js +33 -0
  108. package/dist/styles/ripple.js.map +1 -0
  109. package/dist/tokens/values.js +34 -0
  110. package/dist/tokens/values.js.map +1 -0
  111. package/dist/tokens.css +282 -0
  112. package/package.json +109 -0
@@ -0,0 +1,173 @@
1
+ import { props } from "../../node_modules/@stylexjs/stylex/lib/es/stylex.js";
2
+ import { useRender } from "@base-ui/react/use-render";
3
+ //#region src/components/text/index.tsx
4
+ const styles = {
5
+ base: {
6
+ kogj98: "x1ghz6dp",
7
+ $$css: true
8
+ },
9
+ bodyLarge: {
10
+ kMv6JI: "x16svsjw",
11
+ kGuDYH: "x1848etk",
12
+ k63SB2: "x1c52epr",
13
+ kb6lSQ: "x1qn8t5l",
14
+ kLWn49: "xh7dzej",
15
+ $$css: true
16
+ },
17
+ bodyMedium: {
18
+ kMv6JI: "xpo2rfv",
19
+ kGuDYH: "x193rfdd",
20
+ k63SB2: "x1hews6w",
21
+ kb6lSQ: "xn43zvd",
22
+ kLWn49: "xv61bfh",
23
+ $$css: true
24
+ },
25
+ bodySmall: {
26
+ kMv6JI: "x1yicsit",
27
+ kGuDYH: "x1b35g6e",
28
+ k63SB2: "x9d6959",
29
+ kb6lSQ: "xwth0xh",
30
+ kLWn49: "xybisxh",
31
+ $$css: true
32
+ },
33
+ displayLarge: {
34
+ kMv6JI: "xjaampf",
35
+ kGuDYH: "xuyiek4",
36
+ k63SB2: "x1n2oj23",
37
+ kb6lSQ: "x1hxa6v5",
38
+ kLWn49: "x1iwmiir",
39
+ $$css: true
40
+ },
41
+ displayMedium: {
42
+ kMv6JI: "x1gi70vc",
43
+ kGuDYH: "xlzzeuu",
44
+ k63SB2: "xh9quta",
45
+ kb6lSQ: "x148mp24",
46
+ kLWn49: "xs5hucj",
47
+ $$css: true
48
+ },
49
+ displaySmall: {
50
+ kMv6JI: "x1eslvzl",
51
+ kGuDYH: "x1g52wnc",
52
+ k63SB2: "x1x664hp",
53
+ kb6lSQ: "x1rnjaw4",
54
+ kLWn49: "x92ldg4",
55
+ $$css: true
56
+ },
57
+ headlineLarge: {
58
+ kMv6JI: "x1vsmgmf",
59
+ kGuDYH: "xh9c4x",
60
+ k63SB2: "x1y15vu6",
61
+ kb6lSQ: "xoqu3bc",
62
+ kLWn49: "x10x9d6x",
63
+ $$css: true
64
+ },
65
+ headlineMedium: {
66
+ kMv6JI: "x18s19nt",
67
+ kGuDYH: "xcohea8",
68
+ k63SB2: "x1mtpwof",
69
+ kb6lSQ: "x1kuyk5j",
70
+ kLWn49: "xucx483",
71
+ $$css: true
72
+ },
73
+ headlineSmall: {
74
+ kMv6JI: "x1fz0g89",
75
+ kGuDYH: "xkb6epg",
76
+ k63SB2: "x76yrz5",
77
+ kb6lSQ: "x1s1qhaa",
78
+ kLWn49: "x1voeury",
79
+ $$css: true
80
+ },
81
+ labelLarge: {
82
+ kMv6JI: "xkknnkr",
83
+ kGuDYH: "x14zspaw",
84
+ k63SB2: "x1v9cpvo",
85
+ kb6lSQ: "x155f00i",
86
+ kLWn49: "x1lz68p4",
87
+ $$css: true
88
+ },
89
+ labelMedium: {
90
+ kMv6JI: "xp6n8n2",
91
+ kGuDYH: "xkucv67",
92
+ k63SB2: "x14hhc5u",
93
+ kb6lSQ: "x12utw95",
94
+ kLWn49: "xvzb9hk",
95
+ $$css: true
96
+ },
97
+ labelSmall: {
98
+ kMv6JI: "xs1w0rn",
99
+ kGuDYH: "x1n35her",
100
+ k63SB2: "x1su64ma",
101
+ kb6lSQ: "xdlnduh",
102
+ kLWn49: "xaomhve",
103
+ $$css: true
104
+ },
105
+ titleLarge: {
106
+ kMv6JI: "xdy5w5q",
107
+ kGuDYH: "xete2z3",
108
+ k63SB2: "x14ijtet",
109
+ kb6lSQ: "xug9e1u",
110
+ kLWn49: "x2divse",
111
+ $$css: true
112
+ },
113
+ titleMedium: {
114
+ kMv6JI: "x46eyla",
115
+ kGuDYH: "x5ehqhr",
116
+ k63SB2: "xrf6cl6",
117
+ kb6lSQ: "x1g135zh",
118
+ kLWn49: "x1ggk5va",
119
+ $$css: true
120
+ },
121
+ titleSmall: {
122
+ kMv6JI: "xrgwony",
123
+ kGuDYH: "x12s497w",
124
+ k63SB2: "x1szcwkt",
125
+ kb6lSQ: "xo803ec",
126
+ kLWn49: "xyl1r0q",
127
+ $$css: true
128
+ }
129
+ };
130
+ const tones = {
131
+ default: {
132
+ kMwMTN: "x139gbkf",
133
+ $$css: true
134
+ },
135
+ error: {
136
+ kMwMTN: "x4ii1qj",
137
+ $$css: true
138
+ },
139
+ inherit: {
140
+ kMwMTN: "x1heor9g",
141
+ $$css: true
142
+ },
143
+ muted: {
144
+ kMwMTN: "x1w5n3ug",
145
+ $$css: true
146
+ },
147
+ negative: {
148
+ kMwMTN: "x12gp0t",
149
+ $$css: true
150
+ },
151
+ positive: {
152
+ kMwMTN: "x4no3js",
153
+ $$css: true
154
+ },
155
+ primary: {
156
+ kMwMTN: "x1mxwv8y",
157
+ $$css: true
158
+ }
159
+ };
160
+ function Text({ render, tone = "default", variant = "bodyMedium", ...props$1 }) {
161
+ return useRender({
162
+ defaultTagName: "span",
163
+ props: {
164
+ ...props$1,
165
+ ...props(styles.base, styles[variant], tones[tone])
166
+ },
167
+ render
168
+ });
169
+ }
170
+ //#endregion
171
+ export { Text as default };
172
+
173
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/text/index.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport * as stylex from '@stylexjs/stylex';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, typography } from '../../tokens/design.tokens.stylex';\n\n// One key per style in the 15-entry type scale, named exactly as the token\n// group names it, so `styles[variant]` indexes straight off the prop with no\n// lookup table to keep in sync. Every style sets all five fields the scale\n// defines rather than inheriting any of them: a Text nested inside another\n// Text would otherwise pick up the outer line-height or tracking, which is\n// the kind of drift the scale exists to prevent.\n//\n// `margin: 0` is the one UA reset here. Text renders a <span> by default, but\n// `render` is how a consumer reaches for semantic markup — `<Text\n// render={<h2 />}>` — and an h2's UA margin would then vary the spacing\n// around otherwise identical type.\nconst styles = {\n base: {\n kogj98: \"x1ghz6dp\",\n $$css: true\n },\n bodyLarge: {\n kMv6JI: \"x16svsjw\",\n kGuDYH: \"x1848etk\",\n k63SB2: \"x1c52epr\",\n kb6lSQ: \"x1qn8t5l\",\n kLWn49: \"xh7dzej\",\n $$css: true\n },\n bodyMedium: {\n kMv6JI: \"xpo2rfv\",\n kGuDYH: \"x193rfdd\",\n k63SB2: \"x1hews6w\",\n kb6lSQ: \"xn43zvd\",\n kLWn49: \"xv61bfh\",\n $$css: true\n },\n bodySmall: {\n kMv6JI: \"x1yicsit\",\n kGuDYH: \"x1b35g6e\",\n k63SB2: \"x9d6959\",\n kb6lSQ: \"xwth0xh\",\n kLWn49: \"xybisxh\",\n $$css: true\n },\n displayLarge: {\n kMv6JI: \"xjaampf\",\n kGuDYH: \"xuyiek4\",\n k63SB2: \"x1n2oj23\",\n kb6lSQ: \"x1hxa6v5\",\n kLWn49: \"x1iwmiir\",\n $$css: true\n },\n displayMedium: {\n kMv6JI: \"x1gi70vc\",\n kGuDYH: \"xlzzeuu\",\n k63SB2: \"xh9quta\",\n kb6lSQ: \"x148mp24\",\n kLWn49: \"xs5hucj\",\n $$css: true\n },\n displaySmall: {\n kMv6JI: \"x1eslvzl\",\n kGuDYH: \"x1g52wnc\",\n k63SB2: \"x1x664hp\",\n kb6lSQ: \"x1rnjaw4\",\n kLWn49: \"x92ldg4\",\n $$css: true\n },\n headlineLarge: {\n kMv6JI: \"x1vsmgmf\",\n kGuDYH: \"xh9c4x\",\n k63SB2: \"x1y15vu6\",\n kb6lSQ: \"xoqu3bc\",\n kLWn49: \"x10x9d6x\",\n $$css: true\n },\n headlineMedium: {\n kMv6JI: \"x18s19nt\",\n kGuDYH: \"xcohea8\",\n k63SB2: \"x1mtpwof\",\n kb6lSQ: \"x1kuyk5j\",\n kLWn49: \"xucx483\",\n $$css: true\n },\n headlineSmall: {\n kMv6JI: \"x1fz0g89\",\n kGuDYH: \"xkb6epg\",\n k63SB2: \"x76yrz5\",\n kb6lSQ: \"x1s1qhaa\",\n kLWn49: \"x1voeury\",\n $$css: true\n },\n labelLarge: {\n kMv6JI: \"xkknnkr\",\n kGuDYH: \"x14zspaw\",\n k63SB2: \"x1v9cpvo\",\n kb6lSQ: \"x155f00i\",\n kLWn49: \"x1lz68p4\",\n $$css: true\n },\n labelMedium: {\n kMv6JI: \"xp6n8n2\",\n kGuDYH: \"xkucv67\",\n k63SB2: \"x14hhc5u\",\n kb6lSQ: \"x12utw95\",\n kLWn49: \"xvzb9hk\",\n $$css: true\n },\n labelSmall: {\n kMv6JI: \"xs1w0rn\",\n kGuDYH: \"x1n35her\",\n k63SB2: \"x1su64ma\",\n kb6lSQ: \"xdlnduh\",\n kLWn49: \"xaomhve\",\n $$css: true\n },\n titleLarge: {\n kMv6JI: \"xdy5w5q\",\n kGuDYH: \"xete2z3\",\n k63SB2: \"x14ijtet\",\n kb6lSQ: \"xug9e1u\",\n kLWn49: \"x2divse\",\n $$css: true\n },\n titleMedium: {\n kMv6JI: \"x46eyla\",\n kGuDYH: \"x5ehqhr\",\n k63SB2: \"xrf6cl6\",\n kb6lSQ: \"x1g135zh\",\n kLWn49: \"x1ggk5va\",\n $$css: true\n },\n titleSmall: {\n kMv6JI: \"xrgwony\",\n kGuDYH: \"x12s497w\",\n k63SB2: \"x1szcwkt\",\n kb6lSQ: \"xo803ec\",\n kLWn49: \"xyl1r0q\",\n $$css: true\n }\n};\n\n// Tone is a separate axis from variant so the two compose freely — any of the\n// 15 scale styles in any of these colors. Kept to the roles text actually\n// takes on a surface; a consumer needing something outside this set uses\n// `inherit` and colors the parent, rather than this growing a case per role.\nconst tones = {\n default: {\n kMwMTN: \"x139gbkf\",\n $$css: true\n },\n error: {\n kMwMTN: \"x4ii1qj\",\n $$css: true\n },\n inherit: {\n kMwMTN: \"x1heor9g\",\n $$css: true\n },\n muted: {\n kMwMTN: \"x1w5n3ug\",\n $$css: true\n },\n negative: {\n kMwMTN: \"x12gp0t\",\n $$css: true\n },\n positive: {\n kMwMTN: \"x4no3js\",\n $$css: true\n },\n primary: {\n kMwMTN: \"x1mxwv8y\",\n $$css: true\n }\n};\ntype TextProps = useRender.ComponentProps<'span'> & {\n /**\n * The color role to render in. `inherit` takes the color of the nearest\n * colored ancestor instead of setting one.\n * @default 'default'\n */\n tone?: 'default' | 'error' | 'inherit' | 'muted' | 'negative' | 'positive' | 'primary';\n /**\n * Which style of the type scale to render.\n * @default 'bodyMedium'\n */\n variant?: 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'labelLarge' | 'labelMedium' | 'labelSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall';\n};\nfunction Text({\n render,\n tone = 'default',\n variant = 'bodyMedium',\n ...props\n}: TextProps) {\n // stylex.props() spreads after `props` for the same reason Button does it:\n // it wins over a consumer-supplied className/style rather than merging with\n // one. useRender would otherwise join the two class strings, and which of\n // the two won would come down to stylesheet order rather than anything the\n // call site can see.\n return useRender({\n defaultTagName: 'span',\n props: {\n ...props,\n ...stylex.props(styles.base, styles[variant], tones[tone])\n },\n render\n });\n}\nexport type { TextProps };\nexport default Text;"],"mappings":";;;AAgBA,MAAM,SAAS;CACb,MAAM;EACJ,QAAQ;EACR,OAAO;CACT;CACA,WAAW;EACT,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,YAAY;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,WAAW;EACT,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,cAAc;EACZ,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,eAAe;EACb,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,cAAc;EACZ,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,eAAe;EACb,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,gBAAgB;EACd,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,eAAe;EACb,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,YAAY;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,aAAa;EACX,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,YAAY;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,YAAY;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,aAAa;EACX,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,YAAY;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;AACF;AAMA,MAAM,QAAQ;CACZ,SAAS;EACP,QAAQ;EACR,OAAO;CACT;CACA,OAAO;EACL,QAAQ;EACR,OAAO;CACT;CACA,SAAS;EACP,QAAQ;EACR,OAAO;CACT;CACA,OAAO;EACL,QAAQ;EACR,OAAO;CACT;CACA,UAAU;EACR,QAAQ;EACR,OAAO;CACT;CACA,UAAU;EACR,QAAQ;EACR,OAAO;CACT;CACA,SAAS;EACP,QAAQ;EACR,OAAO;CACT;AACF;AAcA,SAAS,KAAK,EACZ,QACA,OAAO,WACP,UAAU,cACV,GAAG,WACS;CAMZ,OAAO,UAAU;EACf,gBAAgB;EAChB,OAAO;GACL,GAAG;GACH,GAAG,MAAa,OAAO,MAAM,OAAO,UAAU,MAAM,KAAK;EAC3D;EACA;CACF,CAAC;AACH"}
@@ -0,0 +1,30 @@
1
+ import { FieldControlProps } from "@base-ui/react/field";
2
+ //#region src/components/text-field/index.d.ts
3
+ type TextFieldProps = {
4
+ /**
5
+ * A hint shown under the field. Replaced by `error` when there is one, so
6
+ * the two never stack.
7
+ */
8
+ description?: string;
9
+ /**
10
+ * The problem with the current value, in words. Its presence is what puts
11
+ * the field in its error state — the message, the red underline, and
12
+ * `aria-invalid` all follow from it.
13
+ */
14
+ error?: string;
15
+ /**
16
+ * What the field is for. Required rather than optional: a text field with
17
+ * no label is a box a screen reader cannot name.
18
+ */
19
+ label: string;
20
+ /**
21
+ * Renders the value in the mono face with tabular figures, for amounts and
22
+ * other numbers meant to be compared down a column.
23
+ * @default false
24
+ */
25
+ numeric?: boolean;
26
+ } & Omit<FieldControlProps, 'render'>;
27
+ declare function TextField({ description, disabled, error, label, numeric, ...props }: TextFieldProps): import("react").JSX.Element;
28
+ //#endregion
29
+ export { type TextFieldProps, TextField as default };
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,53 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useCallback } from "react";
3
+ import { Field } from "@base-ui/react/field";
4
+ //#region src/components/text-field/index.tsx
5
+ function TextField({ description, disabled = false, error, label, numeric = false, ...props }) {
6
+ const invalid = error !== void 0;
7
+ const labelClassName = useCallback((state) => ({
8
+ 0: { className: "x1w5n3ug xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7" },
9
+ 4: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1xj74d8" },
10
+ 2: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x4ii1qj" },
11
+ 6: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x4ii1qj" },
12
+ 1: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y" },
13
+ 5: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y" },
14
+ 3: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y" },
15
+ 7: { className: "xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y" }
16
+ })[!!disabled << 2 | !!invalid << 1 | !!(!disabled && !invalid && state.focused) << 0].className, [disabled, invalid]);
17
+ return /* @__PURE__ */ jsxs(Field.Root, {
18
+ disabled,
19
+ invalid,
20
+ className: "x78zum5 xdt5ytf",
21
+ children: [/* @__PURE__ */ jsxs("div", {
22
+ ...{
23
+ 0: { className: "x1rrhr5q xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x89kqus x18rfq6m x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7" },
24
+ 2: { className: "x1rrhr5q xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 x1lxxh4i x1d6xoej" },
25
+ 1: { className: "xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 xepofeg x1pqbjc1" },
26
+ 3: { className: "xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 xepofeg x1pqbjc1" }
27
+ }[!!invalid << 1 | !!disabled << 0],
28
+ children: [/* @__PURE__ */ jsx(Field.Label, {
29
+ className: labelClassName,
30
+ children: label
31
+ }), /* @__PURE__ */ jsx(Field.Control, {
32
+ ...props,
33
+ ...{
34
+ 0: { className: "xjbqb8w xc342km x139gbkf x16svsjw x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv" },
35
+ 2: { className: "xjbqb8w xc342km x139gbkf x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv xbppi91 xss6m8b" },
36
+ 1: { className: "xjbqb8w xc342km x16svsjw x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv x1xj74d8" },
37
+ 3: { className: "xjbqb8w xc342km x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv xbppi91 xss6m8b x1xj74d8" }
38
+ }[!!numeric << 1 | !!disabled << 0]
39
+ })]
40
+ }), invalid ? /* @__PURE__ */ jsx(Field.Error, {
41
+ match: true,
42
+ className: "x1yicsit x1b35g6e x9d6959 xwth0xh xybisxh x10im51j x1y88zpp xboopgi x4ii1qj",
43
+ children: error
44
+ }) : description === void 0 ? null : /* @__PURE__ */ jsx(Field.Description, {
45
+ className: "x1w5n3ug x1yicsit x1b35g6e x9d6959 xwth0xh xybisxh x10im51j x1y88zpp xboopgi",
46
+ children: description
47
+ })]
48
+ });
49
+ }
50
+ //#endregion
51
+ export { TextField as default };
52
+
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/text-field/index.tsx"],"sourcesContent":["import type { FieldControlProps as BaseUIFieldControlProps, FieldLabelState as BaseUIFieldLabelState } from '@base-ui/react/field';\nimport { Field as BaseUIField } from '@base-ui/react/field';\nimport * as stylex from '@stylexjs/stylex';\nimport { useCallback } from 'react';\nimport '../../tokens/design.tokens.stylex';\nimport { colors, motion, radii, spacing, stateLayerOpacity, typography } from '../../tokens/design.tokens.stylex';\n\n// The focus indicator is an inset box-shadow on the bottom edge rather than a\n// border that thickens. A real border going 1px -> 2px on focus grows the\n// box, which pushes every sibling below it down by a pixel — so a form\n// twitches each time focus moves between its fields. A shadow is drawn inside\n// the box and changes nothing about its size.\n//\n// The label sits at a fixed size at the top rather than floating up out of\n// the input on focus: the design draws it small and in place at all times, so\n// there is no transition between two positions to get right.\n\ntype TextFieldProps = {\n /**\n * A hint shown under the field. Replaced by `error` when there is one, so\n * the two never stack.\n */\n description?: string;\n /**\n * The problem with the current value, in words. Its presence is what puts\n * the field in its error state — the message, the red underline, and\n * `aria-invalid` all follow from it.\n */\n error?: string;\n /**\n * What the field is for. Required rather than optional: a text field with\n * no label is a box a screen reader cannot name.\n */\n label: string;\n /**\n * Renders the value in the mono face with tabular figures, for amounts and\n * other numbers meant to be compared down a column.\n * @default false\n */\n numeric?: boolean;\n} & Omit<BaseUIFieldControlProps, 'render'>;\nfunction TextField({\n description,\n disabled = false,\n error,\n label,\n numeric = false,\n ...props\n}: TextFieldProps) {\n const invalid = error !== undefined;\n\n // The label's colour follows the field's focus, which is a state only Base\n // UI knows — StyleX cannot express `.box:focus-within .label`, because the\n // label is the input's sibling rather than its ancestor. useCallback keeps\n // it one reference between renders, which is what react-perf is after.\n const labelClassName = useCallback((state: BaseUIFieldLabelState) => ({\n 0: {\n className: \"x1w5n3ug xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7\"\n },\n 4: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1xj74d8\"\n },\n 2: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x4ii1qj\"\n },\n 6: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x4ii1qj\"\n },\n 1: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y\"\n },\n 5: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y\"\n },\n 3: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y\"\n },\n 7: {\n className: \"xp6n8n2 xkucv67 x14hhc5u x1we8soy x19v39ok x12utw95 xvzb9hk x10l6tqk x1qno0dh xt3l3uh xpc4ca7 x1mxwv8y\"\n }\n })[!!disabled << 2 | !!invalid << 1 | !!(!disabled && !invalid && state.focused) << 0].className, [disabled, invalid]);\n return <BaseUIField.Root disabled={disabled} invalid={invalid} className=\"x78zum5 xdt5ytf\">\n <div {...{\n 0: {\n className: \"x1rrhr5q xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x89kqus x18rfq6m x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7\"\n },\n 2: {\n className: \"x1rrhr5q xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 x1lxxh4i x1d6xoej\"\n },\n 1: {\n className: \"xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 xepofeg x1pqbjc1\"\n },\n 3: {\n className: \"xnnlda6 x16uus16 xbiv7yw xirz1nw xzcck0f x18d9i69 xi7mcox x790zyz x1n2onr6 x1qno0dh xkdsq27 xpc4ca7 xepofeg x1pqbjc1\"\n }\n }[!!invalid << 1 | !!disabled << 0]}>\n <BaseUIField.Label className={labelClassName}>\n {label}\n </BaseUIField.Label>\n <BaseUIField.Control {...props} {...{\n 0: {\n className: \"xjbqb8w xc342km x139gbkf x16svsjw x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv\"\n },\n 2: {\n className: \"xjbqb8w xc342km x139gbkf x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv xbppi91 xss6m8b\"\n },\n 1: {\n className: \"xjbqb8w xc342km x16svsjw x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv x1xj74d8\"\n },\n 3: {\n className: \"xjbqb8w xc342km x1848etk x1c52epr xh8yej3 x1qn8t5l xh7dzej x1hmvnq2 x1t137rt x1717udv xbppi91 xss6m8b x1xj74d8\"\n }\n }[!!numeric << 1 | !!disabled << 0]} />\n </div>\n {invalid ? <BaseUIField.Error match className=\"x1yicsit x1b35g6e x9d6959 xwth0xh xybisxh x10im51j x1y88zpp xboopgi x4ii1qj\">\n {error}\n </BaseUIField.Error> : description === undefined ? null : <BaseUIField.Description className=\"x1w5n3ug x1yicsit x1b35g6e x9d6959 xwth0xh xybisxh x10im51j x1y88zpp xboopgi\">\n {description}\n </BaseUIField.Description>}\n </BaseUIField.Root>;\n}\nexport type { TextFieldProps };\nexport default TextField;"],"mappings":";;;;AAyCA,SAAS,UAAU,EACjB,aACA,WAAW,OACX,OACA,OACA,UAAU,OACV,GAAG,SACc;CACjB,MAAM,UAAU,UAAU,KAAA;CAM1B,MAAM,iBAAiB,aAAa,WAAkC;EACpE,GAAG,EACD,WAAW,yGACb;EACA,GAAG,EACD,WAAW,yGACb;EACA,GAAG,EACD,WAAW,wGACb;EACA,GAAG,EACD,WAAW,wGACb;EACA,GAAG,EACD,WAAW,yGACb;EACA,GAAG,EACD,WAAW,yGACb;EACA,GAAG,EACD,WAAW,yGACb;EACA,GAAG,EACD,WAAW,yGACb;CACF,EAAA,CAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,MAAM,YAAY,EAAE,CAAC,WAAW,CAAC,UAAU,OAAO,CAAC;CACrH,OAAO,qBAAC,MAAY,MAAb;EAA4B;EAAmB;EAAS,WAAU;EAAlE,UAAA,CACH,qBAAC,OAAD;GAAK,GAAI;IACT,GAAG,EACD,WAAW,gIACb;IACA,GAAG,EACD,WAAW,iIACb;IACA,GAAG,EACD,WAAW,uHACb;IACA,GAAG,EACD,WAAW,uHACb;GACF,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY;GAb/B,UAAA,CAcE,oBAAC,MAAY,OAAb;IAAmB,WAAW;IAC3B,UAAA;GACgB,CAAA,GACnB,oBAAC,MAAY,SAAb;IAAqB,GAAI;IAAO,GAAI;KACpC,GAAG,EACD,WAAW,0GACb;KACA,GAAG,EACD,WAAW,iHACb;KACA,GAAG,EACD,WAAW,0GACb;KACA,GAAG,EACD,WAAW,iHACb;IACF,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,YAAY;GAAG,CAAA,CAC/B;EACJ,CAAA,GAAA,UAAU,oBAAC,MAAY,OAAb;GAAmB,OAAA;GAAM,WAAU;GACzC,UAAA;EACgB,CAAA,IAAI,gBAAgB,KAAA,IAAY,OAAO,oBAAC,MAAY,aAAb;GAAyB,WAAU;GAC1F,UAAA;EACsB,CAAA,CACX;;AACtB"}
@@ -0,0 +1,391 @@
1
+ import { props } from "../node_modules/@stylexjs/stylex/lib/es/stylex.js";
2
+ import { rippleStyles as styles } from "../styles/ripple.js";
3
+ import { motionDurationMs, motionEasing, spacingPx } from "../tokens/values.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { c } from "react/compiler-runtime";
6
+ import { useRef, useState } from "react";
7
+ //#region src/hooks/useRipple.tsx
8
+ /** How far the ripple grows past the host's corners. `spacing.sm`. */
9
+ const PADDING = spacingPx.sm;
10
+ const INITIAL_ORIGIN_SCALE = .2;
11
+ const SOFT_EDGE_MINIMUM_SIZE = 75;
12
+ const SOFT_EDGE_CONTAINER_RATIO = .35;
13
+ const surfaceProps = props(styles.surface);
14
+ /**
15
+ * On touch: `Inactive -> TouchDelay -> WaitingForClick -> Inactive`, or
16
+ * `Inactive -> TouchDelay -> Holding -> WaitingForClick -> Inactive` for a
17
+ * held press.
18
+ *
19
+ * On mouse or pen: `Inactive -> WaitingForClick -> Inactive`.
20
+ */
21
+ const RippleState = {
22
+ /** A touch has been confirmed as a press (held past the touch delay). */
23
+ Holding: 2,
24
+ /** No press in progress. Touch down moves to TouchDelay; mouse/pen down moves to WaitingForClick. */
25
+ Inactive: 0,
26
+ /** Touch down received; waiting to see if it's a tap or a scroll/swipe. */
27
+ TouchDelay: 1,
28
+ /** The press has finished growing; waiting for the click that ends it. */
29
+ WaitingForClick: 3
30
+ };
31
+ function isTouch(event) {
32
+ return event.pointerType === "touch";
33
+ }
34
+ /**
35
+ * Renders a press ripple that grows from the pointer's position, or from
36
+ * the element's center for a keyboard or other non-pointer activation.
37
+ *
38
+ * Growth runs via the Web Animations API on a single reused element (no
39
+ * per-click DOM nodes to clean up), over a fixed duration independent of how
40
+ * long the element is held — a real press-and-hold keeps the ripple
41
+ * growing until release, while a quick tap is still held visible for a
42
+ * minimum duration so it plays a complete animation rather than a flicker.
43
+ *
44
+ * Merges its own handlers with `externalHandlers` (e.g. a component's own
45
+ * consumer-supplied props — ripple's own run first, then the external
46
+ * ones) and returns `handlers` to spread onto the interactive element and
47
+ * `surface`, the node to render as a child. The host element must
48
+ * establish a positioning context (`position: relative` or similar) so
49
+ * `surface`, which fills it via `inset: 0`, clips to its bounds and
50
+ * inherits its shape.
51
+ *
52
+ * Pass `enabled: false` to opt out — no ripple listeners are attached and
53
+ * no surface is rendered, leaving `externalHandlers` and a component's own
54
+ * hover/press state layer (if any) untouched.
55
+ *
56
+ * `handlers` and `surface` are hand-memoized (not left to build-tool
57
+ * optimization) so a consumer rendering many instances — a list of icon
58
+ * buttons, say — can memoize around them too, and so stability doesn't
59
+ * depend on any particular compiler being configured.
60
+ */
61
+ function useRipple(t0, t1) {
62
+ const $ = c(43);
63
+ const enabled = t0 === void 0 ? true : t0;
64
+ let t2;
65
+ if ($[0] !== t1) {
66
+ t2 = t1 === void 0 ? {} : t1;
67
+ $[0] = t1;
68
+ $[1] = t2;
69
+ } else t2 = $[1];
70
+ const externalHandlers = t2;
71
+ const [pressed, setPressed] = useState(false);
72
+ const rippleRef = useRef(null);
73
+ const state = useRef(RippleState.Inactive);
74
+ const growAnimation = useRef(void 0);
75
+ const rippleStartEvent = useRef(void 0);
76
+ const initialSize = useRef(0);
77
+ const rippleScale = useRef("1");
78
+ let t3;
79
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
80
+ t3 = (event) => {
81
+ if (!event.isPrimary) return false;
82
+ const startEvent = rippleStartEvent.current;
83
+ if (startEvent && startEvent.pointerId !== event.pointerId) return false;
84
+ return isTouch(event) || event.buttons === 1;
85
+ };
86
+ $[2] = t3;
87
+ } else t3 = $[2];
88
+ const shouldReactToEvent = t3;
89
+ let t4;
90
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
91
+ t4 = (rect) => {
92
+ const { height, width } = rect;
93
+ const maxDimension = Math.max(height, width);
94
+ const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDimension, SOFT_EDGE_MINIMUM_SIZE);
95
+ const size = Math.floor(maxDimension * INITIAL_ORIGIN_SCALE);
96
+ const maxRadius = Math.hypot(width, height) + PADDING;
97
+ initialSize.current = size;
98
+ rippleScale.current = `${(maxRadius + softEdgeSize) / size}`;
99
+ return `${size}px`;
100
+ };
101
+ $[3] = t4;
102
+ } else t4 = $[3];
103
+ const determineRippleSize = t4;
104
+ let t5;
105
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
106
+ t5 = (rect_0, positionEvent) => {
107
+ const { height: height_0, left, top, width: width_0 } = rect_0;
108
+ const size_0 = initialSize.current;
109
+ const endPoint = {
110
+ x: (width_0 - size_0) / 2,
111
+ y: (height_0 - size_0) / 2
112
+ };
113
+ const origin = positionEvent ? {
114
+ x: positionEvent.clientX - left,
115
+ y: positionEvent.clientY - top
116
+ } : {
117
+ x: width_0 / 2,
118
+ y: height_0 / 2
119
+ };
120
+ return {
121
+ endPoint,
122
+ startPoint: {
123
+ x: origin.x - size_0 / 2,
124
+ y: origin.y - size_0 / 2
125
+ }
126
+ };
127
+ };
128
+ $[4] = t5;
129
+ } else t5 = $[4];
130
+ const getTranslationCoordinates = t5;
131
+ let t6;
132
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
133
+ t6 = (target, positionEvent_0) => {
134
+ const ripple = rippleRef.current;
135
+ if (!ripple) return;
136
+ setPressed(true);
137
+ growAnimation.current?.cancel();
138
+ const rect_1 = target.getBoundingClientRect();
139
+ const size_1 = determineRippleSize(rect_1);
140
+ const { endPoint: endPoint_0, startPoint: startPoint_0 } = getTranslationCoordinates(rect_1, positionEvent_0);
141
+ ripple.style.width = size_1;
142
+ ripple.style.height = size_1;
143
+ growAnimation.current = ripple.animate({ transform: [`translate(${startPoint_0.x}px, ${startPoint_0.y}px) scale(1)`, `translate(${endPoint_0.x}px, ${endPoint_0.y}px) scale(${rippleScale.current})`] }, {
144
+ duration: motionDurationMs.long1,
145
+ easing: motionEasing.standard,
146
+ fill: "forwards"
147
+ });
148
+ };
149
+ $[5] = t6;
150
+ } else t6 = $[5];
151
+ const startPressAnimation = t6;
152
+ let t7;
153
+ if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
154
+ t7 = async () => {
155
+ rippleStartEvent.current = void 0;
156
+ state.current = RippleState.Inactive;
157
+ const animation = growAnimation.current;
158
+ const elapsed = typeof animation?.currentTime === "number" ? animation.currentTime : Infinity;
159
+ if (elapsed >= motionDurationMs.medium1) {
160
+ setPressed(false);
161
+ return;
162
+ }
163
+ await new Promise((resolve) => {
164
+ setTimeout(resolve, motionDurationMs.medium1 - elapsed);
165
+ });
166
+ if (growAnimation.current !== animation) return;
167
+ setPressed(false);
168
+ };
169
+ $[6] = t7;
170
+ } else t7 = $[6];
171
+ const endPressAnimation = t7;
172
+ let t8;
173
+ if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
174
+ t8 = () => state.current;
175
+ $[7] = t8;
176
+ } else t8 = $[7];
177
+ const getState = t8;
178
+ let t9;
179
+ if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
180
+ t9 = async (event_0) => {
181
+ if (!shouldReactToEvent(event_0)) return;
182
+ rippleStartEvent.current = event_0;
183
+ const target_0 = event_0.currentTarget;
184
+ if (!isTouch(event_0)) {
185
+ state.current = RippleState.WaitingForClick;
186
+ startPressAnimation(target_0, event_0);
187
+ return;
188
+ }
189
+ state.current = RippleState.TouchDelay;
190
+ await new Promise(_temp);
191
+ if (getState() !== RippleState.TouchDelay) return;
192
+ state.current = RippleState.Holding;
193
+ startPressAnimation(target_0, event_0);
194
+ };
195
+ $[8] = t9;
196
+ } else t9 = $[8];
197
+ const handlePointerDownAsync = t9;
198
+ let t10;
199
+ if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
200
+ t10 = (event_1) => {
201
+ handlePointerDownAsync(event_1);
202
+ };
203
+ $[9] = t10;
204
+ } else t10 = $[9];
205
+ const handlePointerDown = t10;
206
+ let t11;
207
+ if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
208
+ t11 = (event_2) => {
209
+ if (!shouldReactToEvent(event_2)) return;
210
+ if (state.current === RippleState.Holding) {
211
+ state.current = RippleState.WaitingForClick;
212
+ return;
213
+ }
214
+ if (state.current === RippleState.TouchDelay) {
215
+ state.current = RippleState.WaitingForClick;
216
+ startPressAnimation(event_2.currentTarget, rippleStartEvent.current);
217
+ }
218
+ };
219
+ $[10] = t11;
220
+ } else t11 = $[10];
221
+ const handlePointerUp = t11;
222
+ let t12;
223
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
224
+ t12 = (event_3) => {
225
+ if (isTouch(event_3) || !shouldReactToEvent(event_3)) return;
226
+ if (state.current !== RippleState.Inactive) endPressAnimation();
227
+ };
228
+ $[11] = t12;
229
+ } else t12 = $[11];
230
+ const handlePointerLeave = t12;
231
+ let t13;
232
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
233
+ t13 = (event_4) => {
234
+ if (!shouldReactToEvent(event_4)) return;
235
+ endPressAnimation();
236
+ };
237
+ $[12] = t13;
238
+ } else t13 = $[12];
239
+ const handlePointerCancel = t13;
240
+ let t14;
241
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
242
+ t14 = (event_5) => {
243
+ if (state.current === RippleState.WaitingForClick) {
244
+ endPressAnimation();
245
+ return;
246
+ }
247
+ if (state.current === RippleState.Inactive) {
248
+ startPressAnimation(event_5.currentTarget);
249
+ endPressAnimation();
250
+ }
251
+ };
252
+ $[13] = t14;
253
+ } else t14 = $[13];
254
+ const handleClick = t14;
255
+ let t15;
256
+ if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
257
+ t15 = () => {
258
+ endPressAnimation();
259
+ };
260
+ $[14] = t15;
261
+ } else t15 = $[14];
262
+ const handleContextMenu = t15;
263
+ const { onClick: onClickProp, onContextMenu: onContextMenuProp, onPointerCancel: onPointerCancelProp, onPointerDown: onPointerDownProp, onPointerLeave: onPointerLeaveProp, onPointerUp: onPointerUpProp } = externalHandlers;
264
+ let t16;
265
+ if ($[15] !== onClickProp) {
266
+ t16 = (event_6) => {
267
+ handleClick(event_6);
268
+ onClickProp?.(event_6);
269
+ };
270
+ $[15] = onClickProp;
271
+ $[16] = t16;
272
+ } else t16 = $[16];
273
+ const onClick = t16;
274
+ let t17;
275
+ if ($[17] !== onContextMenuProp) {
276
+ t17 = (event_7) => {
277
+ handleContextMenu();
278
+ onContextMenuProp?.(event_7);
279
+ };
280
+ $[17] = onContextMenuProp;
281
+ $[18] = t17;
282
+ } else t17 = $[18];
283
+ const onContextMenu = t17;
284
+ let t18;
285
+ if ($[19] !== onPointerCancelProp) {
286
+ t18 = (event_8) => {
287
+ handlePointerCancel(event_8);
288
+ onPointerCancelProp?.(event_8);
289
+ };
290
+ $[19] = onPointerCancelProp;
291
+ $[20] = t18;
292
+ } else t18 = $[20];
293
+ const onPointerCancel = t18;
294
+ let t19;
295
+ if ($[21] !== onPointerDownProp) {
296
+ t19 = (event_9) => {
297
+ handlePointerDown(event_9);
298
+ onPointerDownProp?.(event_9);
299
+ };
300
+ $[21] = onPointerDownProp;
301
+ $[22] = t19;
302
+ } else t19 = $[22];
303
+ const onPointerDown = t19;
304
+ let t20;
305
+ if ($[23] !== onPointerLeaveProp) {
306
+ t20 = (event_10) => {
307
+ handlePointerLeave(event_10);
308
+ onPointerLeaveProp?.(event_10);
309
+ };
310
+ $[23] = onPointerLeaveProp;
311
+ $[24] = t20;
312
+ } else t20 = $[24];
313
+ const onPointerLeave = t20;
314
+ let t21;
315
+ if ($[25] !== onPointerUpProp) {
316
+ t21 = (event_11) => {
317
+ handlePointerUp(event_11);
318
+ onPointerUpProp?.(event_11);
319
+ };
320
+ $[25] = onPointerUpProp;
321
+ $[26] = t21;
322
+ } else t21 = $[26];
323
+ const onPointerUp = t21;
324
+ let t22;
325
+ if ($[27] !== onClick || $[28] !== onContextMenu || $[29] !== onPointerCancel || $[30] !== onPointerDown || $[31] !== onPointerLeave || $[32] !== onPointerUp) {
326
+ t22 = {
327
+ onClick,
328
+ onContextMenu,
329
+ onPointerCancel,
330
+ onPointerDown,
331
+ onPointerLeave,
332
+ onPointerUp
333
+ };
334
+ $[27] = onClick;
335
+ $[28] = onContextMenu;
336
+ $[29] = onPointerCancel;
337
+ $[30] = onPointerDown;
338
+ $[31] = onPointerLeave;
339
+ $[32] = onPointerUp;
340
+ $[33] = t22;
341
+ } else t22 = $[33];
342
+ const handlers = t22;
343
+ let t23;
344
+ if ($[34] !== pressed) {
345
+ t23 = props(styles.press, pressed && styles.pressed);
346
+ $[34] = pressed;
347
+ $[35] = t23;
348
+ } else t23 = $[35];
349
+ let t24;
350
+ if ($[36] !== t23) {
351
+ t24 = /* @__PURE__ */ jsx("span", {
352
+ "aria-hidden": "true",
353
+ ...surfaceProps,
354
+ children: /* @__PURE__ */ jsx("span", {
355
+ ref: rippleRef,
356
+ ...t23
357
+ })
358
+ });
359
+ $[36] = t23;
360
+ $[37] = t24;
361
+ } else t24 = $[37];
362
+ const surface = t24;
363
+ let t25;
364
+ if ($[38] !== handlers || $[39] !== surface) {
365
+ t25 = {
366
+ handlers,
367
+ surface
368
+ };
369
+ $[38] = handlers;
370
+ $[39] = surface;
371
+ $[40] = t25;
372
+ } else t25 = $[40];
373
+ const enabledResult = t25;
374
+ let t26;
375
+ if ($[41] !== externalHandlers) {
376
+ t26 = {
377
+ handlers: externalHandlers,
378
+ surface: null
379
+ };
380
+ $[41] = externalHandlers;
381
+ $[42] = t26;
382
+ } else t26 = $[42];
383
+ return enabled ? enabledResult : t26;
384
+ }
385
+ function _temp(resolve_0) {
386
+ setTimeout(resolve_0, motionDurationMs.short2);
387
+ }
388
+ //#endregion
389
+ export { useRipple };
390
+
391
+ //# sourceMappingURL=useRipple.js.map