@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,264 @@
1
+ .inkra-selection-control {
2
+ align-items: center;
3
+ color: var(--inkra-ink);
4
+ cursor: pointer;
5
+ display: grid;
6
+ gap: var(--inkra-space-2);
7
+ grid-template-columns: auto minmax(0, 1fr);
8
+ min-height: var(--inkra-touch-target);
9
+ min-width: 0;
10
+ position: relative;
11
+ }
12
+
13
+ .inkra-selection-control__input {
14
+ cursor: inherit;
15
+ height: 100%;
16
+ inset: 0;
17
+ margin: 0;
18
+ opacity: 0;
19
+ position: absolute;
20
+ width: 100%;
21
+ z-index: 2;
22
+ }
23
+
24
+ .inkra-selection-control__mark {
25
+ align-items: center;
26
+ color: var(--inkra-ink);
27
+ display: inline-flex;
28
+ height: 24px;
29
+ justify-content: center;
30
+ width: 24px;
31
+ }
32
+
33
+ .inkra-selection-control__glyph {
34
+ color: var(--inkra-ink);
35
+ display: block;
36
+ }
37
+
38
+ .inkra-selection-control__copy {
39
+ display: grid;
40
+ gap: var(--inkra-space-1);
41
+ min-width: 0;
42
+ padding-block: var(--inkra-space-1);
43
+ }
44
+
45
+ .inkra-selection-control__label {
46
+ font-size: var(--inkra-text-md);
47
+ line-height: var(--inkra-line-ui);
48
+ }
49
+
50
+ .inkra-selection-control__description,
51
+ .inkra-radio-group__description {
52
+ color: var(--inkra-ink-muted);
53
+ font-size: var(--inkra-text-sm);
54
+ line-height: var(--inkra-line-ui);
55
+ }
56
+
57
+ .inkra-selection-control__focus-ring {
58
+ --inkra-accent-strong: var(--inkra-focus);
59
+
60
+ inset: calc(-1 * var(--inkra-focus-offset));
61
+ opacity: 0;
62
+ pointer-events: none;
63
+ position: absolute !important;
64
+ z-index: 3;
65
+ }
66
+
67
+ .inkra-selection-control__focus-ring--inset {
68
+ inset: var(--inkra-focus-width);
69
+ }
70
+
71
+ .inkra-selection-control:has(.inkra-selection-control__input:focus-visible)
72
+ .inkra-selection-control__focus-ring {
73
+ opacity: 1;
74
+ }
75
+
76
+ .inkra-selection-control[data-disabled="true"] {
77
+ cursor: not-allowed;
78
+ opacity: 0.55;
79
+ }
80
+
81
+ .inkra-radio-group {
82
+ border: 0;
83
+ color: var(--inkra-ink);
84
+ margin: 0;
85
+ max-width: 100%;
86
+ min-width: 0;
87
+ padding: 0;
88
+ }
89
+
90
+ .inkra-radio-group__label {
91
+ font-size: var(--inkra-text-md);
92
+ line-height: var(--inkra-line-ui);
93
+ margin: 0;
94
+ padding: 0;
95
+ }
96
+
97
+ .inkra-radio-group__description {
98
+ display: block;
99
+ margin-block-start: var(--inkra-space-1);
100
+ }
101
+
102
+ .inkra-radio-group__items {
103
+ display: grid;
104
+ gap: var(--inkra-space-2);
105
+ margin-block-start: var(--inkra-space-2);
106
+ }
107
+
108
+ .inkra-radio-group__items[data-orientation="horizontal"] {
109
+ align-items: stretch;
110
+ display: flex;
111
+ flex-wrap: nowrap;
112
+ max-width: 100%;
113
+ overflow-x: auto;
114
+ overflow-y: hidden;
115
+ overscroll-behavior-inline: contain;
116
+ scrollbar-width: thin;
117
+ }
118
+
119
+ .inkra-radio-group__mark {
120
+ color: var(--inkra-ink);
121
+ position: relative;
122
+ }
123
+
124
+ .inkra-radio-group__icon {
125
+ align-items: center;
126
+ display: inline-flex;
127
+ flex: 0 0 auto;
128
+ justify-content: center;
129
+ }
130
+
131
+ .inkra-radio-group__item:has(.inkra-radio-group__icon):not(:has(.inkra-radio-group__segment)) {
132
+ grid-template-columns: auto auto minmax(0, 1fr);
133
+ }
134
+
135
+ .inkra-radio-group[data-variant="segmented"] .inkra-radio-group__item {
136
+ display: block;
137
+ flex: 0 0 auto;
138
+ min-height: var(--inkra-touch-target);
139
+ min-width: max-content;
140
+ }
141
+
142
+ .inkra-radio-group__frame {
143
+ box-sizing: border-box;
144
+ margin-block-start: var(--inkra-space-2);
145
+ max-width: 100%;
146
+ padding: var(--inkra-space-1);
147
+ width: fit-content;
148
+ }
149
+
150
+ .inkra-radio-group__frame > .inkra-radio-group__items {
151
+ gap: 0;
152
+ margin: 0;
153
+ }
154
+
155
+ .inkra-radio-group__segment {
156
+ align-items: center;
157
+ color: var(--inkra-ink);
158
+ display: flex;
159
+ justify-content: center;
160
+ min-height: var(--inkra-touch-target);
161
+ min-width: max-content;
162
+ padding: var(--inkra-space-2) var(--inkra-space-3);
163
+ position: relative;
164
+ white-space: nowrap;
165
+ }
166
+
167
+ .inkra-radio-group__item[data-checked="true"] .inkra-radio-group__segment {
168
+ color: var(--inkra-selection-foreground);
169
+ }
170
+
171
+ .inkra-radio-segment__surface {
172
+ inset: 0;
173
+ pointer-events: none;
174
+ position: absolute;
175
+ transition: none;
176
+ }
177
+
178
+ .inkra-radio-segment__surface--selection {
179
+ opacity: 0;
180
+ }
181
+
182
+ .inkra-radio-group__item[data-checked="true"] .inkra-radio-segment__surface--selection {
183
+ opacity: 1;
184
+ transition: none;
185
+ }
186
+
187
+ .inkra-radio-segment__content {
188
+ align-items: center;
189
+ display: flex;
190
+ gap: var(--inkra-space-2);
191
+ min-width: 0;
192
+ position: relative;
193
+ z-index: 1;
194
+ }
195
+
196
+ .inkra-radio-group__segment .inkra-selection-control__copy {
197
+ padding-block: 0;
198
+ }
199
+
200
+ .inkra-pencil-surface.inkra-switch__track {
201
+ align-items: center;
202
+ display: inline-flex;
203
+ height: 32px;
204
+ justify-content: flex-start;
205
+ overflow: visible;
206
+ padding-inline: 4px;
207
+ width: 52px;
208
+ }
209
+
210
+ .inkra-switch__thumb {
211
+ --inkra-switch-thumb-shift: 0px;
212
+
213
+ color: var(--inkra-ink-muted);
214
+ display: block;
215
+ transform: translateX(var(--inkra-switch-thumb-shift));
216
+ transition: transform var(--inkra-motion-fast) var(--inkra-ease);
217
+ }
218
+
219
+ .inkra-switch__track > .inkra-pencil-surface__ink {
220
+ border-radius: inherit;
221
+ overflow: hidden;
222
+ }
223
+
224
+ .inkra-switch[data-checked="true"] .inkra-switch__thumb {
225
+ --inkra-switch-thumb-shift: 20px;
226
+
227
+ color: var(--inkra-on-accent);
228
+ }
229
+
230
+ .inkra-switch:dir(rtl)[data-checked="true"] .inkra-switch__thumb {
231
+ --inkra-switch-thumb-shift: -20px;
232
+ }
233
+
234
+ @media (prefers-reduced-motion: reduce) {
235
+ .inkra-selection-control__focus-ring,
236
+ .inkra-radio-segment__surface,
237
+ .inkra-switch__thumb {
238
+ transition: none;
239
+ }
240
+ }
241
+
242
+ @media (forced-colors: active) {
243
+ .inkra-selection-control__input {
244
+ appearance: auto;
245
+ forced-color-adjust: auto;
246
+ height: 24px;
247
+ opacity: 1;
248
+ position: static;
249
+ width: 24px;
250
+ z-index: auto;
251
+ }
252
+
253
+ .inkra-selection-control .inkra-selection-control__mark,
254
+ .inkra-selection-control .inkra-switch__track,
255
+ .inkra-selection-control .inkra-radio-segment__surface,
256
+ .inkra-selection-control .inkra-selection-control__focus-ring {
257
+ display: none;
258
+ }
259
+
260
+ .inkra-selection-control__input:focus-visible {
261
+ outline: var(--inkra-focus-width) solid Highlight;
262
+ outline-offset: var(--inkra-focus-offset);
263
+ }
264
+ }
@@ -0,0 +1,145 @@
1
+ .inkra-slider {
2
+ --inkra-slider-track-size: 8px;
3
+ --inkra-slider-thumb-size: 24px;
4
+
5
+ align-items: center;
6
+ box-sizing: border-box;
7
+ color: var(--inkra-ink);
8
+ cursor: pointer;
9
+ display: flex;
10
+ min-height: var(--inkra-touch-target);
11
+ min-width: var(--inkra-touch-target);
12
+ position: relative;
13
+ touch-action: none;
14
+ user-select: none;
15
+ width: 100%;
16
+ }
17
+
18
+ .inkra-slider[data-size="sm"] {
19
+ --inkra-slider-track-size: 6px;
20
+ --inkra-slider-thumb-size: 20px;
21
+ }
22
+
23
+ .inkra-slider[data-size="lg"] {
24
+ --inkra-slider-track-size: 12px;
25
+ --inkra-slider-thumb-size: 28px;
26
+ }
27
+
28
+ .inkra-slider[data-variant="inset"] {
29
+ --inkra-slider-track-size: 32px;
30
+ --inkra-slider-thumb-size: 24px;
31
+ }
32
+
33
+ .inkra-slider[data-variant="inset"][data-size="sm"] {
34
+ --inkra-slider-track-size: 24px;
35
+ --inkra-slider-thumb-size: 16px;
36
+ }
37
+
38
+ .inkra-slider[data-variant="inset"][data-size="lg"] {
39
+ --inkra-slider-track-size: 40px;
40
+ --inkra-slider-thumb-size: 32px;
41
+ }
42
+
43
+ .inkra-slider[data-orientation="vertical"] {
44
+ flex-direction: column;
45
+ height: 200px;
46
+ width: var(--inkra-touch-target);
47
+ }
48
+
49
+ .inkra-slider[data-disabled] {
50
+ cursor: not-allowed;
51
+ opacity: 0.55;
52
+ }
53
+
54
+ .inkra-slider__track {
55
+ display: block;
56
+ flex: 1;
57
+ height: var(--inkra-slider-track-size);
58
+ position: relative;
59
+ }
60
+
61
+ .inkra-slider[data-orientation="vertical"] .inkra-slider__track {
62
+ height: auto;
63
+ width: var(--inkra-slider-track-size);
64
+ }
65
+
66
+ .inkra-slider__range {
67
+ inset: 0;
68
+ overflow: hidden;
69
+ pointer-events: none;
70
+ position: absolute;
71
+ }
72
+
73
+ .inkra-slider__track-surface,
74
+ .inkra-slider__range-surface {
75
+ height: 100%;
76
+ inset: 0;
77
+ pointer-events: none;
78
+ position: absolute !important;
79
+ width: 100%;
80
+ }
81
+
82
+ .inkra-slider__thumb {
83
+ align-items: center;
84
+ box-sizing: border-box;
85
+ cursor: inherit;
86
+ display: flex;
87
+ height: var(--inkra-touch-target);
88
+ justify-content: center;
89
+ outline: none;
90
+ width: var(--inkra-touch-target);
91
+ }
92
+
93
+ .inkra-slider__thumb-surface {
94
+ border-radius: 8px;
95
+ display: block !important;
96
+ height: var(--inkra-slider-thumb-size);
97
+ pointer-events: none;
98
+ width: var(--inkra-slider-thumb-size);
99
+ }
100
+
101
+ .inkra-slider__thumb:focus-visible {
102
+ outline: none;
103
+ }
104
+
105
+ .inkra-slider__focus-ring {
106
+ --inkra-ink: var(--inkra-focus);
107
+
108
+ inset: -4px;
109
+ opacity: 0;
110
+ pointer-events: none;
111
+ position: absolute !important;
112
+ transition: opacity var(--inkra-motion-fast) var(--inkra-ease);
113
+ }
114
+
115
+ .inkra-slider__thumb:focus-visible .inkra-slider__focus-ring {
116
+ opacity: 1;
117
+ }
118
+
119
+ @media (prefers-reduced-motion: reduce) {
120
+ .inkra-slider__focus-ring {
121
+ transition: none;
122
+ }
123
+ }
124
+
125
+ @media (forced-colors: active) {
126
+ .inkra-slider__track-surface {
127
+ background: Canvas;
128
+ border: 1px solid CanvasText;
129
+ }
130
+ .inkra-slider__range-surface {
131
+ background: Highlight;
132
+ forced-color-adjust: none;
133
+ }
134
+ .inkra-slider__thumb-surface {
135
+ background: Canvas;
136
+ border: 2px solid ButtonText;
137
+ }
138
+ .inkra-slider__thumb:focus-visible .inkra-slider__thumb-surface {
139
+ outline: var(--inkra-focus-width) solid Highlight;
140
+ outline-offset: var(--inkra-focus-offset);
141
+ }
142
+ .inkra-slider__focus-ring {
143
+ display: none !important;
144
+ }
145
+ }
@@ -0,0 +1,109 @@
1
+ .inkra-slot {
2
+ --inkra-slot-size: 64px;
3
+
4
+ align-items: center;
5
+ appearance: none;
6
+ background: transparent;
7
+ block-size: var(--inkra-slot-size);
8
+ border: 0;
9
+ box-sizing: border-box;
10
+ color: var(--inkra-ink);
11
+ display: inline-grid;
12
+ flex: 0 0 auto;
13
+ inline-size: var(--inkra-slot-size);
14
+ justify-items: center;
15
+ min-block-size: var(--inkra-slot-size);
16
+ min-inline-size: var(--inkra-slot-size);
17
+ padding: var(--inkra-space-2);
18
+ position: relative;
19
+ vertical-align: middle;
20
+ }
21
+
22
+ .inkra-slot[data-size="sm"] { --inkra-slot-size: 48px; }
23
+ .inkra-slot[data-size="lg"] { --inkra-slot-size: 80px; }
24
+
25
+ .inkra-slot[data-interactive="true"] {
26
+ cursor: pointer;
27
+ font: inherit;
28
+ }
29
+
30
+ .inkra-slot[data-interactive="true"]:focus-visible {
31
+ outline: var(--inkra-focus-width) solid var(--inkra-focus);
32
+ outline-offset: var(--inkra-focus-offset);
33
+ }
34
+
35
+ .inkra-slot[data-interactive="true"]:not(:disabled):hover {
36
+ transform: translateY(-0.5px);
37
+ }
38
+
39
+ .inkra-slot[data-disabled="true"] {
40
+ cursor: not-allowed;
41
+ opacity: 0.55;
42
+ }
43
+
44
+ .inkra-slot__content {
45
+ align-items: center;
46
+ block-size: 100%;
47
+ display: flex;
48
+ inline-size: 100%;
49
+ justify-content: center;
50
+ min-block-size: 0;
51
+ min-inline-size: 0;
52
+ overflow: hidden;
53
+ position: relative;
54
+ z-index: 1;
55
+ }
56
+
57
+ .inkra-slot__content > :where(img, svg, canvas) {
58
+ block-size: 100%;
59
+ inline-size: 100%;
60
+ max-block-size: 100%;
61
+ max-inline-size: 100%;
62
+ object-fit: contain;
63
+ }
64
+
65
+ .inkra-slot__empty-mark {
66
+ color: var(--inkra-ink-muted);
67
+ font-family: "Trip Map Hand", "HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", cursive;
68
+ font-size: calc(var(--inkra-slot-size) * 0.4);
69
+ line-height: 1;
70
+ }
71
+
72
+ .inkra-slot__selected-wash,
73
+ .inkra-slot__selected-outline {
74
+ inset: 0;
75
+ pointer-events: none;
76
+ position: absolute;
77
+ }
78
+
79
+ .inkra-slot__selected-wash { z-index: 0; }
80
+ .inkra-slot__selected-outline { z-index: 2; }
81
+
82
+ .inkra-slot__count {
83
+ inset-block-start: -8px;
84
+ inset-inline-end: -8px;
85
+ line-height: 1;
86
+ max-inline-size: calc(var(--inkra-slot-size) * 0.85);
87
+ pointer-events: none;
88
+ position: absolute;
89
+ z-index: 3;
90
+ }
91
+
92
+ .inkra-slot__count > .inkra-badge {
93
+ max-inline-size: 100%;
94
+ min-block-size: 24px;
95
+ min-inline-size: 24px;
96
+ overflow: hidden;
97
+ padding-inline: var(--inkra-space-1);
98
+ text-overflow: ellipsis;
99
+ }
100
+
101
+ @media (prefers-reduced-motion: reduce) {
102
+ .inkra-slot { transition: none; }
103
+ .inkra-slot[data-interactive="true"]:not(:disabled):hover { transform: none; }
104
+ }
105
+
106
+ @media (forced-colors: active) {
107
+ .inkra-slot[data-selected="true"] { outline: 2px solid Highlight; }
108
+ .inkra-slot__empty-mark { color: GrayText; }
109
+ }
@@ -0,0 +1,159 @@
1
+ .inkra-sortable {
2
+ display: flex;
3
+ align-items: flex-start;
4
+ gap: var(--inkra-space-4);
5
+ min-width: 0;
6
+ color: var(--inkra-ink);
7
+ }
8
+
9
+ .inkra-sortable__container {
10
+ position: relative;
11
+ flex: 1 1 240px;
12
+ min-width: min(100%, 220px);
13
+ padding: var(--inkra-space-3);
14
+ border-radius: var(--inkra-radius-md);
15
+ }
16
+
17
+ .inkra-sortable__container-target {
18
+ position: absolute;
19
+ inset: 3px;
20
+ z-index: 0;
21
+ border-radius: var(--inkra-radius-md);
22
+ pointer-events: none;
23
+ }
24
+
25
+ .inkra-sortable__container-header {
26
+ position: relative;
27
+ z-index: 1;
28
+ min-width: 0;
29
+ padding: var(--inkra-space-1) var(--inkra-space-1) var(--inkra-space-2);
30
+ }
31
+
32
+ .inkra-sortable__container-title { min-width: 0; padding-inline: var(--inkra-space-1); }
33
+ .inkra-sortable__container-divider { display: block; width: 100%; height: 8px; margin-top: var(--inkra-space-2); }
34
+
35
+ .inkra-sortable__items {
36
+ position: relative;
37
+ z-index: 1;
38
+ display: grid;
39
+ gap: var(--inkra-space-2);
40
+ min-height: var(--inkra-touch-target);
41
+ }
42
+
43
+ .inkra-sortable__container[data-layout="grid"] .inkra-sortable__items {
44
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 120px), 1fr));
45
+ }
46
+
47
+ .inkra-sortable__item,
48
+ .inkra-sortable__overlay {
49
+ position: relative;
50
+ isolation: isolate;
51
+ display: flex;
52
+ align-items: stretch;
53
+ min-width: 0;
54
+ min-height: var(--inkra-touch-target);
55
+ border-radius: var(--inkra-radius-md);
56
+ color: var(--inkra-ink);
57
+ touch-action: manipulation;
58
+ }
59
+
60
+ .inkra-sortable__item:not([data-disabled]) { cursor: grab; }
61
+ .inkra-sortable__item[data-handle] { cursor: auto; }
62
+ .inkra-sortable__item:not([data-disabled]):not([data-handle]) { touch-action: none; }
63
+ .inkra-sortable__item[data-dragging] { cursor: grabbing; z-index: 1; }
64
+ .inkra-sortable__item:focus { outline: none; }
65
+
66
+ .inkra-sortable__item-surface,
67
+ .inkra-sortable__overlay-surface,
68
+ .inkra-sortable__placeholder,
69
+ .inkra-sortable__focus {
70
+ position: absolute;
71
+ inset: 0;
72
+ z-index: -1;
73
+ border-radius: inherit;
74
+ pointer-events: none;
75
+ }
76
+
77
+ .inkra-sortable__placeholder { z-index: 0; }
78
+ .inkra-sortable__focus { z-index: 2; inset: -2px; opacity: 0; }
79
+ .inkra-sortable__item:focus-visible > .inkra-sortable__focus,
80
+ .inkra-sortable__item:has(.inkra-sortable__handle:focus-visible) > .inkra-sortable__focus { opacity: 1; }
81
+ .inkra-sortable__item[data-dragging] > .inkra-sortable__item-surface,
82
+ .inkra-sortable__item[data-dragging] > .inkra-sortable__item-content,
83
+ .inkra-sortable__item[data-dragging] > .inkra-sortable__handle-slot { opacity: 0; }
84
+
85
+ .inkra-sortable__item-content {
86
+ position: relative;
87
+ z-index: 1;
88
+ flex: 1 1 auto;
89
+ min-width: 0;
90
+ padding: var(--inkra-space-3);
91
+ }
92
+
93
+ .inkra-sortable__handle-slot {
94
+ position: relative;
95
+ z-index: 1;
96
+ flex: 0 0 var(--inkra-touch-target);
97
+ display: grid;
98
+ place-items: center;
99
+ }
100
+
101
+ .inkra-sortable__handle {
102
+ appearance: none;
103
+ display: inline-grid;
104
+ place-items: center;
105
+ width: var(--inkra-touch-target);
106
+ height: var(--inkra-touch-target);
107
+ padding: 0;
108
+ border: 0;
109
+ background: transparent;
110
+ color: var(--inkra-ink-muted);
111
+ cursor: grab;
112
+ touch-action: none;
113
+ }
114
+
115
+ .inkra-sortable__handle:focus { outline: none; }
116
+
117
+ .inkra-sortable__overlay {
118
+ width: var(--inkra-sortable-overlay-width, auto);
119
+ min-width: 180px;
120
+ box-shadow: 0 8px 24px color-mix(in srgb, var(--inkra-ink) 18%, transparent);
121
+ cursor: grabbing;
122
+ }
123
+
124
+ .inkra-sortable__empty {
125
+ min-height: var(--inkra-touch-target);
126
+ }
127
+
128
+ .inkra-sortable__item[data-disabled],
129
+ .inkra-sortable__container[data-disabled] {
130
+ opacity: .55;
131
+ }
132
+
133
+ .inkra-sortable__container[data-disabled] .inkra-sortable__item { cursor: not-allowed; }
134
+
135
+ @media (max-width: 640px) {
136
+ .inkra-sortable { flex-direction: column; }
137
+ .inkra-sortable__container { flex-basis: auto; width: 100%; }
138
+ }
139
+
140
+ @media (prefers-reduced-motion: reduce) {
141
+ .inkra-sortable__item { transition: none !important; }
142
+ }
143
+
144
+ @media (forced-colors: active) {
145
+ .inkra-sortable__container,
146
+ .inkra-sortable__item,
147
+ .inkra-sortable__overlay { border: 1px solid CanvasText; }
148
+ .inkra-sortable__container[data-over] { outline: 2px solid Highlight; outline-offset: -3px; }
149
+ .inkra-sortable__handle:focus-visible,
150
+ .inkra-sortable__item:focus-visible { outline-color: Highlight; }
151
+ .inkra-sortable__item:focus-visible,
152
+ .inkra-sortable__item:has(.inkra-sortable__handle:focus-visible) { outline: 2px solid Highlight; outline-offset: 2px; }
153
+ }
154
+
155
+ @media print {
156
+ .inkra-sortable__container,
157
+ .inkra-sortable__item { border: 1px solid currentColor; }
158
+ .inkra-sortable__handle { display: none; }
159
+ }
@@ -0,0 +1,24 @@
1
+ .inkra-sparkline { position: relative; display: inline-grid; gap: var(--inkra-space-1, 4px); max-inline-size: 100%; color: var(--inkra-ink); font-size: var(--inkra-text-sm); }
2
+ .inkra-sparkline__svg { display: block; inline-size: min(100%, 100%); block-size: auto; overflow: visible; outline: none; position: relative; z-index: 1; }
3
+ .inkra-sparkline__pencil { position: absolute; inset: 0 auto auto 0; inline-size: 100%; block-size: auto; aspect-ratio: 180 / 56; pointer-events: none; z-index: 2; opacity: 0; }
4
+ .inkra-sparkline__pencil--interaction { z-index: 3; }
5
+ .inkra-sparkline__pencil--interaction + .inkra-sparkline__tooltip { z-index: 4; }
6
+ .inkra-sparkline--pencil-ready .inkra-sparkline__pencil { opacity: .9; }
7
+ .inkra-sparkline--pencil-ready .inkra-sparkline__svg { opacity: 1; }
8
+ .inkra-sparkline--pencil-ready .inkra-sparkline__area,
9
+ .inkra-sparkline--pencil-ready .inkra-sparkline__line,
10
+ .inkra-sparkline--pencil-ready .inkra-sparkline__bar { opacity: 0; }
11
+ .inkra-sparkline--interaction-ready .inkra-sparkline__guide { opacity: 0; }
12
+ .inkra-sparkline--interaction-ready[data-show-points] .inkra-sparkline__point { opacity: 0; }
13
+ .inkra-sparkline__svg:focus-visible { outline: 2px solid var(--inkra-focus); outline-offset: 4px; }
14
+ .inkra-sparkline__line { fill: none; stroke: var(--inkra-accent-strong); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
15
+ .inkra-sparkline__area { fill: color-mix(in srgb, var(--inkra-accent) 18%, transparent); }
16
+ .inkra-sparkline__bar { fill: var(--inkra-accent); opacity: .78; }
17
+ .inkra-sparkline__point { fill: var(--inkra-paper); stroke: var(--inkra-accent-strong); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
18
+ .inkra-sparkline__point[data-active] { fill: var(--inkra-selection-pigment); stroke-width: 2; }
19
+ .inkra-sparkline__guide { stroke: var(--inkra-ink-muted); stroke-dasharray: 2 3; stroke-width: 1; opacity: .65; vector-effect: non-scaling-stroke; }
20
+ .inkra-sparkline__tooltip { position: absolute; inset-block-start: 0; inset-inline-end: 0; padding: 2px 6px; color: var(--inkra-ink); background: color-mix(in srgb, var(--inkra-paper) 86%, transparent); pointer-events: none; }
21
+ .inkra-sparkline__summary { margin: 0; color: var(--inkra-ink-muted); line-height: var(--inkra-line-ui, 1.45); }
22
+ .inkra-sparkline__data { position: absolute !important; inline-size: 1px !important; block-size: 1px !important; overflow: hidden !important; clip-path: inset(50%) !important; }
23
+ @media (prefers-reduced-motion: reduce) { .inkra-sparkline * { transition: none !important; animation: none !important; } }
24
+ @media (forced-colors: active), print { .inkra-sparkline__pencil { display: none; } .inkra-sparkline--pencil-ready .inkra-sparkline__svg, .inkra-sparkline--pencil-ready .inkra-sparkline__area, .inkra-sparkline--pencil-ready .inkra-sparkline__line, .inkra-sparkline--pencil-ready .inkra-sparkline__bar, .inkra-sparkline--interaction-ready[data-show-points] .inkra-sparkline__point, .inkra-sparkline--interaction-ready .inkra-sparkline__guide { opacity: 1; } .inkra-sparkline__line, .inkra-sparkline__bar, .inkra-sparkline__point, .inkra-sparkline__guide { stroke: CanvasText; fill: Canvas; opacity: 1; } .inkra-sparkline__line { fill: none; } }