@inkra/react 0.3.0 → 0.5.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 (245) hide show
  1. package/README.md +113 -3
  2. package/dist/Button.js +3 -2
  3. package/dist/PencilIcon.d.ts +10 -0
  4. package/dist/PencilIcon.js +83 -39
  5. package/dist/PencilLine.js +9 -1
  6. package/dist/PencilText.js +15 -9
  7. package/dist/accordion/Accordion.js +65 -5
  8. package/dist/alert-dialog/index.js +14 -4
  9. package/dist/audio-player/index.d.ts +2 -0
  10. package/dist/audio-player/index.js +131 -34
  11. package/dist/breadcrumb/index.js +4 -1
  12. package/dist/calendar/index.d.ts +4 -1
  13. package/dist/calendar/index.js +37 -12
  14. package/dist/calendar/locales.d.ts +7 -0
  15. package/dist/calendar/locales.js +2 -0
  16. package/dist/carousel/index.js +20 -10
  17. package/dist/choice-grid/index.d.ts +6 -1
  18. package/dist/choice-grid/index.js +63 -33
  19. package/dist/color-picker/GradientEditor.d.ts +40 -0
  20. package/dist/color-picker/GradientEditor.js +64 -0
  21. package/dist/color-picker/gradient.d.ts +25 -0
  22. package/dist/color-picker/gradient.js +60 -0
  23. package/dist/color-picker/index.d.ts +27 -7
  24. package/dist/color-picker/index.js +144 -40
  25. package/dist/color-swatch/index.d.ts +10 -0
  26. package/dist/color-swatch/index.js +9 -0
  27. package/dist/command/index.js +27 -4
  28. package/dist/content/index.d.ts +5 -0
  29. package/dist/content/index.js +15 -3
  30. package/dist/context-menu/index.js +1 -1
  31. package/dist/data-table/index.d.ts +7 -1
  32. package/dist/data-table/index.js +67 -16
  33. package/dist/data-table/model.d.ts +2 -0
  34. package/dist/data-table/model.js +7 -0
  35. package/dist/date-picker/index.d.ts +2 -0
  36. package/dist/date-picker/index.js +20 -21
  37. package/dist/day-agenda/index.d.ts +6 -1
  38. package/dist/day-agenda/index.js +49 -21
  39. package/dist/day-agenda/layout.js +65 -9
  40. package/dist/display/ProgressRing.js +7 -3
  41. package/dist/display/index.d.ts +4 -1
  42. package/dist/display/index.js +3 -2
  43. package/dist/dockable-panel/index.js +15 -13
  44. package/dist/drawer/index.js +11 -5
  45. package/dist/editable/index.d.ts +24 -2
  46. package/dist/editable/index.js +148 -40
  47. package/dist/empty/illustrations.d.ts +8 -0
  48. package/dist/empty/illustrations.js +78 -0
  49. package/dist/empty/index.d.ts +6 -1
  50. package/dist/empty/index.js +11 -3
  51. package/dist/flip/index.js +28 -8
  52. package/dist/form/Field.js +11 -10
  53. package/dist/form/Input.js +4 -1
  54. package/dist/form/Textarea.d.ts +3 -1
  55. package/dist/form/Textarea.js +9 -5
  56. package/dist/heatmap/index.js +4 -1
  57. package/dist/hotkey/index.d.ts +1 -0
  58. package/dist/hotkey/index.js +9 -4
  59. package/dist/hover-card/index.js +1 -1
  60. package/dist/i18n/catalog.d.ts +5 -0
  61. package/dist/i18n/catalog.js +289 -0
  62. package/dist/i18n/index.d.ts +23 -0
  63. package/dist/i18n/index.js +50 -0
  64. package/dist/image-cropper/index.js +21 -17
  65. package/dist/image-viewer/VideoResource.d.ts +21 -0
  66. package/dist/image-viewer/VideoResource.js +196 -0
  67. package/dist/image-viewer/index.d.ts +14 -0
  68. package/dist/image-viewer/index.js +141 -86
  69. package/dist/image-viewer/lucideGeometry.d.ts +3 -0
  70. package/dist/image-viewer/lucideGeometry.js +19 -0
  71. package/dist/index.d.ts +4 -0
  72. package/dist/index.js +4 -0
  73. package/dist/input-number/index.js +13 -5
  74. package/dist/internal/cache.d.ts +4 -0
  75. package/dist/internal/cache.js +18 -1
  76. package/dist/internal/iconGeometry.d.ts +2 -0
  77. package/dist/internal/iconGeometry.js +32 -0
  78. package/dist/internal/renderTokens.d.ts +4 -0
  79. package/dist/internal/renderTokens.js +4 -0
  80. package/dist/internal/stroke.d.ts +7 -0
  81. package/dist/internal/stroke.js +63 -7
  82. package/dist/internal/surfaceBudget.d.ts +20 -0
  83. package/dist/internal/surfaceBudget.js +69 -0
  84. package/dist/internal/surfaceRenderer.js +87 -28
  85. package/dist/internal/surfaceVisibility.d.ts +3 -0
  86. package/dist/internal/surfaceVisibility.js +60 -0
  87. package/dist/internal/textRenderer.d.ts +3 -0
  88. package/dist/internal/textRenderer.js +13 -5
  89. package/dist/internal/usePencilSurface.js +17 -1
  90. package/dist/internal/wash.js +4 -3
  91. package/dist/journey-map/index.d.ts +1 -1
  92. package/dist/journey-map/index.js +6 -3
  93. package/dist/journey-map/terrain.js +10 -5
  94. package/dist/keypad/index.js +4 -1
  95. package/dist/layout/index.js +1 -1
  96. package/dist/log/index.js +42 -33
  97. package/dist/markdown/CodeBlock.d.ts +19 -0
  98. package/dist/markdown/CodeBlock.js +86 -0
  99. package/dist/markdown/Deletion.d.ts +2 -0
  100. package/dist/markdown/Deletion.js +69 -0
  101. package/dist/markdown/icons.d.ts +14 -0
  102. package/dist/markdown/icons.js +16 -0
  103. package/dist/markdown/index.d.ts +17 -0
  104. package/dist/markdown/index.js +177 -0
  105. package/dist/node-graph/index.d.ts +3 -1
  106. package/dist/node-graph/index.js +63 -28
  107. package/dist/number-ticker/index.js +4 -1
  108. package/dist/number-ticker/precision.js +9 -2
  109. package/dist/overflow-list/index.js +9 -6
  110. package/dist/overlay/Overlay.js +8 -3
  111. package/dist/overlay/Popover.js +3 -3
  112. package/dist/overlay/themeBridge.js +14 -2
  113. package/dist/pagination/index.d.ts +10 -1
  114. package/dist/pagination/index.js +13 -9
  115. package/dist/pan-zoom/index.d.ts +2 -0
  116. package/dist/pan-zoom/index.js +12 -8
  117. package/dist/pencil.d.ts +1 -0
  118. package/dist/pencil.js +4 -4
  119. package/dist/radar/index.d.ts +2 -0
  120. package/dist/radar/index.js +44 -21
  121. package/dist/range-slider/index.js +4 -3
  122. package/dist/rating/index.d.ts +4 -0
  123. package/dist/rating/index.js +131 -24
  124. package/dist/resizable/index.d.ts +1 -1
  125. package/dist/resizable/index.js +5 -2
  126. package/dist/scroll-area/index.d.ts +1 -1
  127. package/dist/scroll-area/index.js +5 -2
  128. package/dist/select/MultipleSelect.js +5 -4
  129. package/dist/select/SearchableSelect.js +64 -7
  130. package/dist/select/Select.d.ts +1 -0
  131. package/dist/select/Select.js +6 -2
  132. package/dist/select/StepperSelect.d.ts +29 -0
  133. package/dist/select/StepperSelect.js +122 -0
  134. package/dist/select/index.d.ts +2 -0
  135. package/dist/select/index.js +1 -0
  136. package/dist/select/stepperModel.d.ts +7 -0
  137. package/dist/select/stepperModel.js +29 -0
  138. package/dist/selection/Checkbox.js +4 -3
  139. package/dist/selection/RadioGroup.js +29 -13
  140. package/dist/selection/Switch.js +4 -3
  141. package/dist/selection/useNativeChecked.d.ts +2 -1
  142. package/dist/selection/useNativeChecked.js +26 -8
  143. package/dist/slider/index.js +50 -6
  144. package/dist/sortable/index.js +17 -11
  145. package/dist/sparkline/index.js +21 -6
  146. package/dist/sparkline/model.js +11 -4
  147. package/dist/steps/index.js +4 -1
  148. package/dist/styles/accordion.css +228 -0
  149. package/dist/styles/alert-dialog.css +139 -0
  150. package/dist/styles/audio-player.css +22 -0
  151. package/dist/styles/base.css +638 -0
  152. package/dist/styles/breadcrumb.css +7 -0
  153. package/dist/styles/calendar.css +62 -0
  154. package/dist/styles/carousel.css +173 -0
  155. package/dist/styles/choice-grid.css +226 -0
  156. package/dist/styles/color-picker.css +281 -0
  157. package/dist/styles/color-swatch.css +47 -0
  158. package/dist/styles/command.css +52 -0
  159. package/dist/styles/content.css +79 -0
  160. package/dist/styles/context-menu.css +35 -0
  161. package/dist/styles/data-table.css +31 -0
  162. package/dist/styles/date-picker.css +107 -0
  163. package/dist/styles/day-agenda.css +30 -0
  164. package/dist/styles/display.css +304 -0
  165. package/dist/styles/dockable-panel.css +110 -0
  166. package/dist/styles/drawer.css +133 -0
  167. package/dist/styles/dropdown-menu.css +68 -0
  168. package/dist/styles/editable.css +145 -0
  169. package/dist/styles/empty.css +108 -0
  170. package/dist/styles/flip.css +101 -0
  171. package/dist/styles/form.css +634 -0
  172. package/dist/styles/heatmap.css +256 -0
  173. package/dist/styles/hotkey.css +189 -0
  174. package/dist/styles/hover-card.css +27 -0
  175. package/dist/styles/image-cropper.css +205 -0
  176. package/dist/styles/image-viewer.css +422 -0
  177. package/dist/styles/input-number.css +21 -0
  178. package/dist/styles/journey-map.css +19 -0
  179. package/dist/styles/keypad.css +92 -0
  180. package/dist/styles/layout.css +72 -0
  181. package/dist/styles/leaflet.css +661 -0
  182. package/dist/styles/log.css +203 -0
  183. package/dist/styles/markdown.css +379 -0
  184. package/dist/styles/node-graph.css +142 -0
  185. package/dist/styles/number-ticker.css +83 -0
  186. package/dist/styles/overflow-list.css +51 -0
  187. package/dist/styles/overlay.css +284 -0
  188. package/dist/styles/pagination.css +21 -0
  189. package/dist/styles/pan-zoom.css +136 -0
  190. package/dist/styles/radar.css +1 -0
  191. package/dist/styles/rating.css +121 -0
  192. package/dist/styles/resizable.css +108 -0
  193. package/dist/styles/scroll-area.css +122 -0
  194. package/dist/styles/select.css +554 -0
  195. package/dist/styles/selection.css +264 -0
  196. package/dist/styles/slider.css +145 -0
  197. package/dist/styles/slot.css +109 -0
  198. package/dist/styles/sortable.css +159 -0
  199. package/dist/styles/sparkline.css +24 -0
  200. package/dist/styles/steps.css +27 -0
  201. package/dist/styles/tabs.css +79 -0
  202. package/dist/styles/tag-input.css +213 -0
  203. package/dist/styles/time-picker.css +66 -0
  204. package/dist/styles/timeline.css +24 -0
  205. package/dist/styles/toast.css +160 -0
  206. package/dist/styles/toggle-group.css +107 -0
  207. package/dist/styles/tooltip.css +78 -0
  208. package/dist/styles/transfer.css +148 -0
  209. package/dist/styles/tree-select.css +131 -0
  210. package/dist/styles/tree.css +59 -0
  211. package/dist/styles/typewriter.css +62 -0
  212. package/dist/styles/upload.css +60 -0
  213. package/dist/styles/virtual-list.css +112 -0
  214. package/dist/styles.css +2091 -421
  215. package/dist/tabs/index.d.ts +9 -0
  216. package/dist/tabs/index.js +69 -16
  217. package/dist/tabs/useOverflow.d.ts +20 -0
  218. package/dist/tabs/useOverflow.js +145 -0
  219. package/dist/tag-input/index.d.ts +7 -2
  220. package/dist/tag-input/index.js +81 -42
  221. package/dist/theme/index.d.ts +11 -0
  222. package/dist/theme/index.js +23 -0
  223. package/dist/time-picker/index.js +45 -27
  224. package/dist/timeline/index.js +4 -1
  225. package/dist/toast/index.d.ts +19 -11
  226. package/dist/toast/index.js +51 -8
  227. package/dist/toast/manager.d.ts +42 -0
  228. package/dist/toast/manager.js +85 -0
  229. package/dist/toast/useToastNavigation.d.ts +3 -0
  230. package/dist/toast/useToastNavigation.js +75 -0
  231. package/dist/tokens.css +4 -0
  232. package/dist/tooltip/Tooltip.js +3 -3
  233. package/dist/transfer/index.d.ts +5 -0
  234. package/dist/transfer/index.js +120 -53
  235. package/dist/transfer/model.d.ts +4 -0
  236. package/dist/transfer/model.js +37 -11
  237. package/dist/tree/index.d.ts +5 -1
  238. package/dist/tree/index.js +11 -6
  239. package/dist/tree-select/index.js +70 -31
  240. package/dist/tree-select/model.d.ts +11 -5
  241. package/dist/tree-select/model.js +111 -83
  242. package/dist/typewriter/index.js +10 -10
  243. package/dist/upload/index.js +50 -33
  244. package/dist/virtual-list/index.js +11 -6
  245. package/package.json +423 -3
@@ -0,0 +1,634 @@
1
+ .inkra-field {
2
+ display: grid;
3
+ gap: var(--inkra-space-2);
4
+ min-width: 0;
5
+ color: var(--inkra-ink);
6
+ font-family: var(--inkra-font-body);
7
+ font-size: var(--inkra-text-md);
8
+ line-height: var(--inkra-line-ui);
9
+ }
10
+
11
+ .inkra-field__label {
12
+ display: inline-flex;
13
+ width: fit-content;
14
+ align-items: baseline;
15
+ gap: var(--inkra-space-1);
16
+ color: var(--inkra-ink);
17
+ cursor: pointer;
18
+ }
19
+
20
+ .inkra-field__required,
21
+ .inkra-field__error {
22
+ color: var(--inkra-danger-foreground, var(--inkra-danger));
23
+ }
24
+
25
+ .inkra-field__control {
26
+ min-width: 0;
27
+ }
28
+
29
+ .inkra-field__description,
30
+ .inkra-field__error {
31
+ font-size: var(--inkra-text-sm);
32
+ line-height: var(--inkra-line-ui);
33
+ }
34
+
35
+ .inkra-field__description {
36
+ color: var(--inkra-ink-muted);
37
+ }
38
+
39
+ .inkra-field[data-disabled="true"] .inkra-field__label {
40
+ cursor: not-allowed;
41
+ }
42
+
43
+ .inkra-field-control-hit {
44
+ --inkra-field-control-height: var(--inkra-control-md);
45
+ --inkra-field-control-font-size: var(--inkra-text-md);
46
+ --inkra-field-control-icon-size: var(--inkra-icon-md);
47
+ --inkra-field-control-padding: var(--inkra-space-3);
48
+
49
+ display: flex;
50
+ min-width: 0;
51
+ min-height: var(--inkra-touch-target);
52
+ align-items: center;
53
+ }
54
+
55
+ .inkra-field-control-hit[data-size="sm"] {
56
+ --inkra-field-control-height: var(--inkra-control-sm);
57
+ --inkra-field-control-font-size: var(--inkra-text-sm);
58
+ --inkra-field-control-icon-size: var(--inkra-icon-sm);
59
+ --inkra-field-control-padding: var(--inkra-space-2);
60
+ }
61
+
62
+ .inkra-field-control-hit[data-size="lg"] {
63
+ --inkra-field-control-height: var(--inkra-control-lg);
64
+ --inkra-field-control-font-size: var(--inkra-text-lg);
65
+ --inkra-field-control-icon-size: var(--inkra-icon-lg);
66
+ --inkra-field-control-padding: var(--inkra-space-4);
67
+ }
68
+
69
+ .inkra-field-control {
70
+ position: relative;
71
+ isolation: isolate;
72
+ display: flex !important;
73
+ width: 100%;
74
+ min-width: 0;
75
+ height: var(--inkra-field-control-height);
76
+ align-items: center;
77
+ color: var(--inkra-ink);
78
+ }
79
+
80
+ .inkra-field-control-hit:focus-within .inkra-field-control > .inkra-pencil-surface__ink,
81
+ .inkra-field-control-hit:focus-within .inkra-field-control > .inkra-pencil-surface__border {
82
+ filter: contrast(1.28) saturate(1.08);
83
+ }
84
+
85
+ .inkra-field-control__icon {
86
+ position: relative;
87
+ z-index: 1;
88
+ display: inline-flex;
89
+ width: var(--inkra-field-control-icon-size);
90
+ height: var(--inkra-field-control-icon-size);
91
+ flex: 0 0 var(--inkra-field-control-icon-size);
92
+ align-items: center;
93
+ justify-content: center;
94
+ color: var(--inkra-ink-muted);
95
+ pointer-events: none;
96
+ }
97
+
98
+ .inkra-field-control__icon--start {
99
+ margin-inline-start: var(--inkra-field-control-padding);
100
+ }
101
+
102
+ .inkra-field-control__icon--end {
103
+ margin-inline-end: var(--inkra-field-control-padding);
104
+ }
105
+
106
+ .inkra-field-control__icon > :is(svg, canvas) {
107
+ width: 100%;
108
+ height: 100%;
109
+ }
110
+
111
+ .inkra-input,
112
+ .inkra-textarea {
113
+ --inkra-editable-text-color: var(--inkra-ink);
114
+ --inkra-editable-placeholder-color: var(--inkra-ink-subtle);
115
+
116
+ position: relative;
117
+ z-index: 2;
118
+ box-sizing: border-box;
119
+ width: 100%;
120
+ min-width: 0;
121
+ border: 0;
122
+ outline: 0;
123
+ background: transparent;
124
+ color: var(--inkra-ink);
125
+ font-family: var(--inkra-font-body);
126
+ font-size: var(--inkra-field-control-font-size);
127
+ font-weight: var(--inkra-weight-regular);
128
+ letter-spacing: var(--inkra-letter-spacing);
129
+ line-height: var(--inkra-line-ui);
130
+ caret-color: var(--inkra-ink);
131
+ }
132
+
133
+ .inkra-input:focus-visible,
134
+ .inkra-textarea:focus-visible {
135
+ outline: 0;
136
+ }
137
+
138
+ .inkra-input {
139
+ height: 100%;
140
+ padding-block: 0;
141
+ padding-inline: var(--inkra-field-control-padding);
142
+ }
143
+
144
+ .inkra-field-control__icon--start + .inkra-input {
145
+ padding-inline-start: var(--inkra-space-2);
146
+ }
147
+
148
+ .inkra-input:has(+ .inkra-field-control__icon--end) {
149
+ padding-inline-end: var(--inkra-space-2);
150
+ }
151
+
152
+ .inkra-input::placeholder,
153
+ .inkra-textarea::placeholder {
154
+ color: var(--inkra-ink-subtle);
155
+ opacity: 1;
156
+ }
157
+
158
+ .inkra-editable-text {
159
+ position: absolute;
160
+ /* Native selection stays below the ink; pointer events still reach the editor. */
161
+ z-index: 3;
162
+ left: 0;
163
+ top: 0;
164
+ /* Inactive canvases may retain geometry from a previous size or direction. */
165
+ display: none;
166
+ width: 100%;
167
+ height: 100%;
168
+ opacity: 0;
169
+ pointer-events: none;
170
+ }
171
+
172
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] .inkra-editable-text {
173
+ display: block;
174
+ opacity: 1;
175
+ }
176
+
177
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea) {
178
+ color: transparent !important;
179
+ }
180
+
181
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea)::placeholder {
182
+ color: transparent !important;
183
+ }
184
+
185
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea)::selection {
186
+ background: var(--inkra-selection);
187
+ color: transparent;
188
+ }
189
+
190
+ .inkra-field-control-hit[data-disabled="true"] {
191
+ cursor: not-allowed;
192
+ opacity: 0.55;
193
+ }
194
+
195
+ .inkra-field-control-hit[data-readonly="true"] .inkra-input,
196
+ .inkra-field-control-hit[data-readonly="true"] .inkra-textarea {
197
+ --inkra-editable-text-color: var(--inkra-ink-muted);
198
+ color: var(--inkra-ink-muted);
199
+ }
200
+
201
+ .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea) {
202
+ color: transparent !important;
203
+ }
204
+
205
+ .inkra-field-control-hit--textarea {
206
+ min-height: 0;
207
+ align-items: stretch;
208
+ }
209
+
210
+ .inkra-field-control--textarea {
211
+ min-height: 96px;
212
+ height: auto;
213
+ align-items: stretch;
214
+ flex-direction: column;
215
+ }
216
+
217
+ .inkra-field-control-hit--textarea[data-size="sm"] .inkra-field-control--textarea {
218
+ min-height: 80px;
219
+ }
220
+
221
+ .inkra-field-control-hit--textarea[data-size="lg"] .inkra-field-control--textarea {
222
+ min-height: 112px;
223
+ }
224
+
225
+ .inkra-textarea {
226
+ min-height: inherit;
227
+ padding: var(--inkra-field-control-padding);
228
+ resize: none;
229
+ }
230
+
231
+ .inkra-textarea__footer {
232
+ display: flex;
233
+ align-items: center;
234
+ justify-content: flex-end;
235
+ gap: var(--inkra-space-2);
236
+ min-height: 44px;
237
+ padding-inline: var(--inkra-field-control-padding);
238
+ position: relative;
239
+ z-index: 3;
240
+ }
241
+
242
+ .inkra-field-control-hit--textarea[data-end-action="true"] .inkra-field-control--textarea {
243
+ display: grid !important;
244
+ grid-template-columns: minmax(0, 1fr) auto;
245
+ }
246
+
247
+ .inkra-textarea__end-action {
248
+ position: relative;
249
+ z-index: 3;
250
+ display: flex;
251
+ align-self: start;
252
+ align-items: center;
253
+ min-block-size: var(--inkra-touch-target);
254
+ }
255
+
256
+ .inkra-field-control-hit--textarea[data-end-action="true"] .inkra-textarea__footer {
257
+ grid-column: 1 / -1;
258
+ }
259
+
260
+ .inkra-textarea__underline {
261
+ position: absolute !important;
262
+ inset-inline: 0;
263
+ inset-block-end: -4px;
264
+ inline-size: 100%;
265
+ pointer-events: none;
266
+ }
267
+
268
+ .inkra-field-control-hit--textarea[data-invalid="true"] .inkra-textarea__underline {
269
+ color: var(--inkra-danger);
270
+ }
271
+
272
+ .inkra-field-control-hit--textarea[data-variant="underline"] .inkra-input__action-wash {
273
+ inset: 4px;
274
+ border-radius: 3px;
275
+ }
276
+
277
+ .inkra-field-control-hit--textarea[data-variant="underline"] .inkra-input__action-divider {
278
+ inset-block-start: 8px;
279
+ block-size: calc(100% - 16px);
280
+ }
281
+
282
+ .inkra-textarea__count {
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: flex-end;
286
+ flex-wrap: wrap;
287
+ gap: var(--inkra-space-2);
288
+ min-width: 0;
289
+ font-size: var(--inkra-text-sm);
290
+ color: var(--inkra-ink-muted);
291
+ }
292
+
293
+ .inkra-textarea__count[data-visible="false"] { visibility: hidden; }
294
+ .inkra-textarea__count[data-limit="reached"] { color: var(--inkra-danger); }
295
+ .inkra-textarea__count .inkra-progress { width: 72px; max-width: 100%; }
296
+ .inkra-textarea__resize { flex: none; touch-action: none; cursor: ns-resize; }
297
+
298
+ .inkra-input-root {
299
+ --inkra-field-control-icon-size: calc(var(--inkra-icon-md) + 2px);
300
+
301
+ display: inline-flex;
302
+ inline-size: 20rem;
303
+ max-inline-size: 100%;
304
+ vertical-align: middle;
305
+ }
306
+
307
+ .inkra-input-root[data-size="sm"] {
308
+ --inkra-field-control-icon-size: calc(var(--inkra-icon-sm) + 2px);
309
+ }
310
+
311
+ .inkra-input-root[data-size="lg"] {
312
+ --inkra-field-control-icon-size: calc(var(--inkra-icon-lg) + 2px);
313
+ }
314
+
315
+ .inkra-input-root[data-full-width="true"] {
316
+ display: flex;
317
+ inline-size: 100%;
318
+ }
319
+
320
+ .inkra-input-root .inkra-field-control--input {
321
+ box-sizing: border-box;
322
+ min-block-size: var(--inkra-field-control-height);
323
+ block-size: auto;
324
+ flex-wrap: wrap;
325
+ gap: var(--inkra-space-2);
326
+ padding-inline: var(--inkra-field-control-padding);
327
+ }
328
+
329
+ .inkra-input-root .inkra-field-control--input > .inkra-pencil-surface__content {
330
+ min-block-size: var(--inkra-field-control-height);
331
+ block-size: auto;
332
+ flex-wrap: inherit;
333
+ gap: inherit;
334
+ clip-path: none;
335
+ }
336
+
337
+ .inkra-input-root .inkra-field-control__icon {
338
+ margin-inline: 0;
339
+ }
340
+
341
+ .inkra-input-root .inkra-field-control__icon > :is(svg, canvas) {
342
+ inline-size: 100% !important;
343
+ block-size: 100% !important;
344
+ }
345
+
346
+ .inkra-input-root .inkra-input {
347
+ flex: 1 1 4rem;
348
+ inline-size: 0;
349
+ min-inline-size: min(4rem, 100%);
350
+ block-size: var(--inkra-field-control-height);
351
+ padding-inline: 0;
352
+ }
353
+
354
+ .inkra-input-root .inkra-input__underline {
355
+ position: absolute;
356
+ z-index: 4;
357
+ inset-inline-start: calc(-1 * var(--inkra-field-control-padding));
358
+ inset-block-end: -2px;
359
+ inline-size: calc(100% + 2 * var(--inkra-field-control-padding));
360
+ block-size: 8px;
361
+ color: var(--inkra-border-strong);
362
+ pointer-events: none;
363
+ }
364
+
365
+ .inkra-input-root[data-invalid="true"] .inkra-input__underline {
366
+ color: var(--inkra-danger-foreground, var(--inkra-danger));
367
+ }
368
+
369
+ .inkra-field-control--input[data-pencil-fallback="true"] .inkra-input__underline {
370
+ inset-block-end: 0;
371
+ block-size: 1px;
372
+ background: currentColor;
373
+ }
374
+
375
+ .inkra-input__affix {
376
+ position: relative;
377
+ z-index: 1;
378
+ min-inline-size: 0;
379
+ max-inline-size: 25%;
380
+ overflow: hidden;
381
+ flex: 0 1 auto;
382
+ color: var(--inkra-ink-muted);
383
+ font-family: var(--inkra-font-body);
384
+ font-size: var(--inkra-field-control-font-size);
385
+ line-height: var(--inkra-line-ui);
386
+ white-space: nowrap;
387
+ text-overflow: ellipsis;
388
+ }
389
+
390
+ .inkra-input__actions,
391
+ .inkra-input__end-action {
392
+ position: relative;
393
+ z-index: 2;
394
+ display: inline-flex;
395
+ flex: 0 0 auto;
396
+ align-items: center;
397
+ gap: 0;
398
+ }
399
+
400
+ .inkra-input__actions {
401
+ block-size: var(--inkra-field-control-height);
402
+ align-self: center;
403
+ margin-inline-end: calc(-1 * var(--inkra-field-control-padding));
404
+ }
405
+
406
+ .inkra-input__end-action {
407
+ block-size: var(--inkra-field-control-height);
408
+ min-block-size: 0;
409
+ align-self: center;
410
+ padding: 0;
411
+ isolation: isolate;
412
+ color: var(--inkra-selection-foreground);
413
+ }
414
+
415
+ .inkra-input__action-wash {
416
+ position: absolute;
417
+ z-index: 0;
418
+ inset: 0;
419
+ overflow: hidden;
420
+ border-start-start-radius: 0;
421
+ border-end-start-radius: 0;
422
+ border-start-end-radius: var(--inkra-radius-lg);
423
+ border-end-end-radius: var(--inkra-radius-lg);
424
+ opacity: 0;
425
+ pointer-events: none;
426
+ }
427
+
428
+ .inkra-input-root:is([data-variant="underline"], [data-variant="ghost"]) .inkra-input__action-wash {
429
+ inset: 4px;
430
+ border-radius: 3px;
431
+ }
432
+
433
+ .inkra-input__end-action[data-active="true"] > .inkra-input__action-wash {
434
+ opacity: 1;
435
+ }
436
+
437
+ .inkra-input__action-wash[data-pencil-fallback="true"] {
438
+ background: color-mix(in srgb, var(--inkra-selection-pigment) 15%, transparent);
439
+ }
440
+
441
+ .inkra-input__end-action .inkra-button {
442
+ z-index: 1;
443
+ color: inherit;
444
+ }
445
+
446
+ .inkra-input__action-divider {
447
+ position: absolute;
448
+ z-index: 3;
449
+ inset-inline-start: -4px;
450
+ inset-block-start: 0;
451
+ inline-size: 8px;
452
+ block-size: 100%;
453
+ color: var(--inkra-border-strong);
454
+ pointer-events: none;
455
+ }
456
+
457
+ .inkra-input-root[data-variant="underline"] .inkra-input__action-divider {
458
+ inset-block-start: 8px;
459
+ block-size: calc(100% - 16px);
460
+ }
461
+
462
+ .inkra-input__end-action > .inkra-button:focus-visible {
463
+ outline-offset: calc(-1 * var(--inkra-focus-width));
464
+ }
465
+
466
+ .inkra-input__end-action .inkra-button__surface {
467
+ overflow: hidden;
468
+ border: 0 !important;
469
+ background: transparent !important;
470
+ border-start-start-radius: 0;
471
+ border-end-start-radius: 0;
472
+ border-start-end-radius: 7px;
473
+ border-end-end-radius: 7px;
474
+ transform: none !important;
475
+ }
476
+
477
+ .inkra-input__end-action .inkra-button__surface > .inkra-pencil-surface__border {
478
+ display: none;
479
+ }
480
+
481
+ .inkra-input__start-action {
482
+ margin-inline-start: calc(-1 * var(--inkra-field-control-padding));
483
+ }
484
+
485
+ .inkra-input__start-action .inkra-input__action-divider {
486
+ inset-inline-start: auto;
487
+ inset-inline-end: -4px;
488
+ }
489
+
490
+ .inkra-input__start-action .inkra-input__action-wash,
491
+ .inkra-input__start-action .inkra-button__surface {
492
+ border-start-start-radius: var(--inkra-radius-lg);
493
+ border-end-start-radius: var(--inkra-radius-lg);
494
+ border-start-end-radius: 0;
495
+ border-end-end-radius: 0;
496
+ }
497
+
498
+ .inkra-input__clear {
499
+ display: inline-flex;
500
+ box-sizing: border-box;
501
+ flex: 0 0 var(--inkra-touch-target);
502
+ inline-size: var(--inkra-touch-target);
503
+ block-size: var(--inkra-touch-target);
504
+ align-items: center;
505
+ justify-content: center;
506
+ padding: 0;
507
+ border: 0;
508
+ border-radius: var(--inkra-radius-md);
509
+ background: transparent;
510
+ color: var(--inkra-ink-muted);
511
+ cursor: pointer;
512
+ }
513
+
514
+ .inkra-input__clear:hover {
515
+ color: var(--inkra-ink);
516
+ }
517
+
518
+ .inkra-input__clear:focus-visible {
519
+ outline: var(--inkra-focus-width) solid var(--inkra-focus);
520
+ outline-offset: calc(-1 * var(--inkra-focus-width));
521
+ }
522
+
523
+ .inkra-input__clear[data-visible="false"] {
524
+ visibility: hidden;
525
+ pointer-events: none;
526
+ }
527
+
528
+ .inkra-input__loading {
529
+ position: relative;
530
+ z-index: 1;
531
+ display: inline-flex;
532
+ inline-size: 30px;
533
+ block-size: 30px;
534
+ flex: 0 0 30px;
535
+ align-items: center;
536
+ justify-content: center;
537
+ color: var(--inkra-ink-muted);
538
+ pointer-events: none;
539
+ }
540
+
541
+ .inkra-input__loading[data-active="false"] {
542
+ visibility: hidden;
543
+ }
544
+
545
+ .inkra-input__loading[data-active="true"] .inkra-input__spinner {
546
+ animation: inkra-input-loading 900ms linear infinite;
547
+ }
548
+
549
+ .inkra-input-root[data-clearable="true"] .inkra-input::-webkit-search-cancel-button {
550
+ display: none;
551
+ -webkit-appearance: none;
552
+ }
553
+
554
+ @keyframes inkra-input-loading {
555
+ to { transform: rotate(360deg); }
556
+ }
557
+
558
+ @media (prefers-reduced-motion: reduce) {
559
+ .inkra-input__loading[data-active="true"] .inkra-input__spinner {
560
+ animation: none;
561
+ }
562
+ }
563
+
564
+ @media (forced-colors: active) {
565
+ .inkra-field-control {
566
+ border: 1px solid CanvasText;
567
+ }
568
+
569
+ .inkra-field-control-hit[data-invalid="true"] .inkra-field-control {
570
+ border-color: Mark;
571
+ }
572
+
573
+ .inkra-editable-text {
574
+ display: none !important;
575
+ }
576
+
577
+ :is(.inkra-field-control-hit, .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"]) :is(.inkra-input, .inkra-textarea) {
578
+ color: FieldText !important;
579
+ caret-color: FieldText;
580
+ }
581
+
582
+ :is(.inkra-field-control-hit, .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"]) :is(.inkra-input, .inkra-textarea)::placeholder {
583
+ color: GrayText !important;
584
+ opacity: 1;
585
+ }
586
+
587
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea)::selection {
588
+ background: Highlight;
589
+ color: HighlightText;
590
+ }
591
+
592
+ :is(.inkra-field-control-hit, .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"]) :is(.inkra-input, .inkra-textarea):focus-visible {
593
+ outline: 2px solid Highlight;
594
+ outline-offset: 2px;
595
+ }
596
+
597
+ .inkra-input__clear {
598
+ color: ButtonText;
599
+ }
600
+
601
+ .inkra-input-root[data-variant="underline"] .inkra-field-control,
602
+ .inkra-field-control-hit--textarea[data-variant="underline"] .inkra-field-control {
603
+ border: 0;
604
+ }
605
+
606
+ .inkra-input__action-wash {
607
+ display: none;
608
+ }
609
+
610
+ .inkra-input__clear canvas,
611
+ .inkra-input__spinner {
612
+ forced-color-adjust: none;
613
+ }
614
+ }
615
+
616
+ @media print {
617
+ .inkra-editable-text {
618
+ display: none !important;
619
+ }
620
+
621
+ :is(.inkra-field-control-hit, .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"]) :is(.inkra-input, .inkra-textarea) {
622
+ color: var(--inkra-ink) !important;
623
+ }
624
+
625
+ :is(.inkra-field-control-hit, .inkra-field-control-hit[data-readonly="true"][data-pencil-editable-ready="true"]) :is(.inkra-input, .inkra-textarea)::placeholder {
626
+ color: var(--inkra-ink-subtle) !important;
627
+ opacity: 1;
628
+ }
629
+
630
+ .inkra-field-control-hit[data-pencil-editable-ready="true"] :is(.inkra-input, .inkra-textarea)::selection {
631
+ background: var(--inkra-selection);
632
+ color: var(--inkra-ink);
633
+ }
634
+ }