@inkra/react 0.3.0 → 0.4.3

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 (226) hide show
  1. package/README.md +15 -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 +126 -31
  11. package/dist/calendar/index.d.ts +4 -1
  12. package/dist/calendar/index.js +31 -12
  13. package/dist/carousel/index.js +13 -6
  14. package/dist/choice-grid/index.d.ts +6 -1
  15. package/dist/choice-grid/index.js +61 -33
  16. package/dist/color-picker/GradientEditor.d.ts +39 -0
  17. package/dist/color-picker/GradientEditor.js +63 -0
  18. package/dist/color-picker/gradient.d.ts +25 -0
  19. package/dist/color-picker/gradient.js +60 -0
  20. package/dist/color-picker/index.d.ts +27 -7
  21. package/dist/color-picker/index.js +134 -32
  22. package/dist/color-swatch/index.d.ts +10 -0
  23. package/dist/color-swatch/index.js +9 -0
  24. package/dist/command/index.js +27 -4
  25. package/dist/content/index.d.ts +5 -0
  26. package/dist/content/index.js +12 -3
  27. package/dist/context-menu/index.js +1 -1
  28. package/dist/data-table/index.d.ts +7 -1
  29. package/dist/data-table/index.js +64 -16
  30. package/dist/data-table/model.d.ts +2 -0
  31. package/dist/data-table/model.js +7 -0
  32. package/dist/date-picker/index.d.ts +2 -0
  33. package/dist/date-picker/index.js +10 -9
  34. package/dist/day-agenda/index.d.ts +6 -1
  35. package/dist/day-agenda/index.js +46 -21
  36. package/dist/day-agenda/layout.js +65 -9
  37. package/dist/display/ProgressRing.js +7 -3
  38. package/dist/display/index.d.ts +4 -1
  39. package/dist/display/index.js +3 -2
  40. package/dist/dockable-panel/index.js +5 -5
  41. package/dist/drawer/index.js +4 -3
  42. package/dist/editable/index.d.ts +24 -2
  43. package/dist/editable/index.js +142 -37
  44. package/dist/empty/illustrations.d.ts +8 -0
  45. package/dist/empty/illustrations.js +78 -0
  46. package/dist/empty/index.d.ts +6 -1
  47. package/dist/empty/index.js +11 -3
  48. package/dist/flip/index.js +28 -8
  49. package/dist/form/Field.js +11 -10
  50. package/dist/form/Textarea.d.ts +3 -1
  51. package/dist/form/Textarea.js +6 -4
  52. package/dist/hotkey/index.d.ts +1 -0
  53. package/dist/hotkey/index.js +6 -4
  54. package/dist/hover-card/index.js +1 -1
  55. package/dist/image-cropper/index.js +4 -2
  56. package/dist/image-viewer/VideoResource.d.ts +21 -0
  57. package/dist/image-viewer/VideoResource.js +194 -0
  58. package/dist/image-viewer/index.d.ts +14 -0
  59. package/dist/image-viewer/index.js +118 -65
  60. package/dist/image-viewer/lucideGeometry.d.ts +3 -0
  61. package/dist/image-viewer/lucideGeometry.js +19 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +2 -0
  64. package/dist/input-number/index.js +9 -4
  65. package/dist/internal/cache.d.ts +4 -0
  66. package/dist/internal/cache.js +18 -1
  67. package/dist/internal/iconGeometry.d.ts +2 -0
  68. package/dist/internal/iconGeometry.js +32 -0
  69. package/dist/internal/renderTokens.d.ts +4 -0
  70. package/dist/internal/renderTokens.js +4 -0
  71. package/dist/internal/stroke.d.ts +7 -0
  72. package/dist/internal/stroke.js +63 -7
  73. package/dist/internal/surfaceBudget.d.ts +20 -0
  74. package/dist/internal/surfaceBudget.js +69 -0
  75. package/dist/internal/surfaceRenderer.js +87 -28
  76. package/dist/internal/surfaceVisibility.d.ts +3 -0
  77. package/dist/internal/surfaceVisibility.js +60 -0
  78. package/dist/internal/textRenderer.d.ts +2 -0
  79. package/dist/internal/textRenderer.js +3 -3
  80. package/dist/internal/usePencilSurface.js +17 -1
  81. package/dist/internal/wash.js +4 -3
  82. package/dist/journey-map/terrain.js +10 -5
  83. package/dist/layout/index.js +1 -1
  84. package/dist/log/index.js +29 -22
  85. package/dist/markdown/CodeBlock.d.ts +19 -0
  86. package/dist/markdown/CodeBlock.js +86 -0
  87. package/dist/markdown/Deletion.d.ts +2 -0
  88. package/dist/markdown/Deletion.js +69 -0
  89. package/dist/markdown/icons.d.ts +14 -0
  90. package/dist/markdown/icons.js +16 -0
  91. package/dist/markdown/index.d.ts +17 -0
  92. package/dist/markdown/index.js +175 -0
  93. package/dist/node-graph/index.d.ts +2 -0
  94. package/dist/node-graph/index.js +49 -25
  95. package/dist/number-ticker/precision.js +9 -2
  96. package/dist/overflow-list/index.js +5 -2
  97. package/dist/overlay/Overlay.js +1 -1
  98. package/dist/overlay/Popover.js +3 -3
  99. package/dist/overlay/themeBridge.js +14 -2
  100. package/dist/pagination/index.d.ts +10 -1
  101. package/dist/pagination/index.js +6 -4
  102. package/dist/pan-zoom/index.d.ts +2 -0
  103. package/dist/pan-zoom/index.js +7 -6
  104. package/dist/pencil.d.ts +1 -0
  105. package/dist/pencil.js +4 -4
  106. package/dist/radar/index.d.ts +2 -0
  107. package/dist/radar/index.js +40 -20
  108. package/dist/rating/index.d.ts +4 -0
  109. package/dist/rating/index.js +128 -24
  110. package/dist/resizable/index.js +1 -1
  111. package/dist/scroll-area/index.d.ts +1 -1
  112. package/dist/scroll-area/index.js +5 -2
  113. package/dist/select/MultipleSelect.js +5 -4
  114. package/dist/select/SearchableSelect.js +61 -6
  115. package/dist/select/Select.d.ts +1 -0
  116. package/dist/select/Select.js +3 -1
  117. package/dist/select/StepperSelect.d.ts +29 -0
  118. package/dist/select/StepperSelect.js +119 -0
  119. package/dist/select/index.d.ts +2 -0
  120. package/dist/select/index.js +1 -0
  121. package/dist/select/stepperModel.d.ts +7 -0
  122. package/dist/select/stepperModel.js +29 -0
  123. package/dist/selection/Checkbox.js +4 -3
  124. package/dist/selection/RadioGroup.js +29 -13
  125. package/dist/selection/Switch.js +4 -3
  126. package/dist/selection/useNativeChecked.d.ts +2 -1
  127. package/dist/selection/useNativeChecked.js +26 -8
  128. package/dist/slider/index.js +50 -6
  129. package/dist/sortable/index.js +6 -2
  130. package/dist/sparkline/index.js +17 -2
  131. package/dist/sparkline/model.js +11 -4
  132. package/dist/styles/accordion.css +228 -0
  133. package/dist/styles/alert-dialog.css +139 -0
  134. package/dist/styles/audio-player.css +22 -0
  135. package/dist/styles/base.css +638 -0
  136. package/dist/styles/breadcrumb.css +7 -0
  137. package/dist/styles/calendar.css +62 -0
  138. package/dist/styles/carousel.css +173 -0
  139. package/dist/styles/choice-grid.css +226 -0
  140. package/dist/styles/color-picker.css +281 -0
  141. package/dist/styles/color-swatch.css +47 -0
  142. package/dist/styles/command.css +52 -0
  143. package/dist/styles/content.css +79 -0
  144. package/dist/styles/context-menu.css +35 -0
  145. package/dist/styles/data-table.css +31 -0
  146. package/dist/styles/date-picker.css +107 -0
  147. package/dist/styles/day-agenda.css +30 -0
  148. package/dist/styles/display.css +304 -0
  149. package/dist/styles/dockable-panel.css +110 -0
  150. package/dist/styles/drawer.css +133 -0
  151. package/dist/styles/dropdown-menu.css +68 -0
  152. package/dist/styles/editable.css +145 -0
  153. package/dist/styles/empty.css +108 -0
  154. package/dist/styles/flip.css +101 -0
  155. package/dist/styles/form.css +634 -0
  156. package/dist/styles/heatmap.css +256 -0
  157. package/dist/styles/hotkey.css +189 -0
  158. package/dist/styles/hover-card.css +27 -0
  159. package/dist/styles/image-cropper.css +205 -0
  160. package/dist/styles/image-viewer.css +422 -0
  161. package/dist/styles/input-number.css +21 -0
  162. package/dist/styles/journey-map.css +19 -0
  163. package/dist/styles/keypad.css +92 -0
  164. package/dist/styles/layout.css +72 -0
  165. package/dist/styles/leaflet.css +661 -0
  166. package/dist/styles/log.css +203 -0
  167. package/dist/styles/markdown.css +379 -0
  168. package/dist/styles/node-graph.css +142 -0
  169. package/dist/styles/number-ticker.css +83 -0
  170. package/dist/styles/overflow-list.css +51 -0
  171. package/dist/styles/overlay.css +284 -0
  172. package/dist/styles/pagination.css +21 -0
  173. package/dist/styles/pan-zoom.css +136 -0
  174. package/dist/styles/radar.css +1 -0
  175. package/dist/styles/rating.css +121 -0
  176. package/dist/styles/resizable.css +108 -0
  177. package/dist/styles/scroll-area.css +122 -0
  178. package/dist/styles/select.css +557 -0
  179. package/dist/styles/selection.css +264 -0
  180. package/dist/styles/slider.css +145 -0
  181. package/dist/styles/slot.css +109 -0
  182. package/dist/styles/sortable.css +159 -0
  183. package/dist/styles/sparkline.css +24 -0
  184. package/dist/styles/steps.css +27 -0
  185. package/dist/styles/tabs.css +79 -0
  186. package/dist/styles/tag-input.css +213 -0
  187. package/dist/styles/time-picker.css +66 -0
  188. package/dist/styles/timeline.css +24 -0
  189. package/dist/styles/toast.css +160 -0
  190. package/dist/styles/toggle-group.css +107 -0
  191. package/dist/styles/tooltip.css +78 -0
  192. package/dist/styles/transfer.css +148 -0
  193. package/dist/styles/tree-select.css +131 -0
  194. package/dist/styles/tree.css +59 -0
  195. package/dist/styles/typewriter.css +62 -0
  196. package/dist/styles/upload.css +60 -0
  197. package/dist/styles/virtual-list.css +112 -0
  198. package/dist/styles.css +2094 -421
  199. package/dist/tabs/index.d.ts +9 -0
  200. package/dist/tabs/index.js +66 -16
  201. package/dist/tabs/useOverflow.d.ts +20 -0
  202. package/dist/tabs/useOverflow.js +145 -0
  203. package/dist/tag-input/index.d.ts +7 -2
  204. package/dist/tag-input/index.js +70 -26
  205. package/dist/time-picker/index.js +38 -20
  206. package/dist/toast/index.d.ts +19 -11
  207. package/dist/toast/index.js +48 -8
  208. package/dist/toast/manager.d.ts +42 -0
  209. package/dist/toast/manager.js +85 -0
  210. package/dist/toast/useToastNavigation.d.ts +3 -0
  211. package/dist/toast/useToastNavigation.js +75 -0
  212. package/dist/tokens.css +4 -0
  213. package/dist/tooltip/Tooltip.js +3 -3
  214. package/dist/transfer/index.d.ts +5 -0
  215. package/dist/transfer/index.js +93 -29
  216. package/dist/transfer/model.d.ts +4 -0
  217. package/dist/transfer/model.js +37 -11
  218. package/dist/tree/index.d.ts +5 -1
  219. package/dist/tree/index.js +5 -5
  220. package/dist/tree-select/index.js +67 -30
  221. package/dist/tree-select/model.d.ts +11 -5
  222. package/dist/tree-select/model.js +111 -83
  223. package/dist/typewriter/index.js +10 -10
  224. package/dist/upload/index.js +30 -16
  225. package/dist/virtual-list/index.js +7 -5
  226. package/package.json +413 -3
@@ -0,0 +1,173 @@
1
+ .inkra-carousel {
2
+ --inkra-carousel-gap: 16px;
3
+ container-type: inline-size;
4
+ display: grid;
5
+ gap: var(--inkra-space-3);
6
+ inline-size: 100%;
7
+ min-inline-size: 0;
8
+ position: relative;
9
+ }
10
+
11
+ .inkra-carousel__focus-ring {
12
+ --inkra-accent-strong: var(--inkra-focus);
13
+ inset: var(--inkra-focus-width);
14
+ opacity: 0;
15
+ pointer-events: none;
16
+ position: absolute !important;
17
+ z-index: 3;
18
+ }
19
+ .inkra-carousel:focus-visible { outline: 0; }
20
+ .inkra-carousel:focus-visible > .inkra-carousel__focus-ring { opacity: 1; }
21
+
22
+ .inkra-carousel__viewport {
23
+ --inkra-carousel-visible: var(--inkra-carousel-visible-base, 1);
24
+ cursor: grab;
25
+ min-inline-size: 0;
26
+ overflow: hidden;
27
+ touch-action: pan-y pinch-zoom;
28
+ }
29
+
30
+ .inkra-carousel__viewport:active { cursor: grabbing; }
31
+ .inkra-carousel[data-disabled] .inkra-carousel__viewport { cursor: default; }
32
+
33
+ .inkra-carousel__container {
34
+ column-gap: var(--inkra-carousel-gap);
35
+ display: flex;
36
+ min-inline-size: 0;
37
+ }
38
+
39
+ .inkra-carousel__slide {
40
+ box-sizing: border-box;
41
+ flex: 0 0 calc((100% - (var(--inkra-carousel-visible) - 1) * var(--inkra-carousel-gap)) / var(--inkra-carousel-visible));
42
+ min-inline-size: 0;
43
+ position: relative;
44
+ }
45
+
46
+ .inkra-carousel__slide > * { max-inline-size: 100%; }
47
+
48
+ .inkra-carousel__toolbar {
49
+ align-items: center;
50
+ display: flex;
51
+ gap: var(--inkra-space-2);
52
+ justify-content: space-between;
53
+ min-block-size: var(--inkra-touch-target);
54
+ min-inline-size: 0;
55
+ }
56
+
57
+ .inkra-carousel__navigation {
58
+ display: flex;
59
+ flex: none;
60
+ gap: var(--inkra-space-2);
61
+ }
62
+
63
+ .inkra-carousel__pagination {
64
+ align-items: center;
65
+ display: flex;
66
+ flex: 1 1 auto;
67
+ gap: var(--inkra-space-1);
68
+ justify-content: center;
69
+ min-inline-size: 0;
70
+ overflow-x: auto;
71
+ overscroll-behavior-inline: contain;
72
+ scrollbar-width: thin;
73
+ }
74
+
75
+ .inkra-carousel__page {
76
+ align-items: center;
77
+ appearance: none;
78
+ background: transparent;
79
+ border: 0;
80
+ color: var(--inkra-ink-muted);
81
+ cursor: pointer;
82
+ display: inline-flex;
83
+ flex: 0 0 var(--inkra-touch-target);
84
+ block-size: var(--inkra-touch-target);
85
+ justify-content: center;
86
+ padding: 0;
87
+ position: relative;
88
+ }
89
+
90
+ .inkra-carousel__page:disabled { cursor: not-allowed; opacity: 0.55; }
91
+ .inkra-carousel__page:focus-visible { outline: 0; }
92
+
93
+ .inkra-carousel__page-mark {
94
+ block-size: 10px;
95
+ display: block !important;
96
+ inline-size: 10px;
97
+ pointer-events: none;
98
+ }
99
+
100
+ .inkra-carousel__page-focus {
101
+ --inkra-accent-strong: var(--inkra-focus);
102
+ block-size: calc(var(--inkra-touch-target) - 4px);
103
+ inline-size: calc(var(--inkra-touch-target) - 4px);
104
+ opacity: 0;
105
+ pointer-events: none;
106
+ position: absolute !important;
107
+ }
108
+
109
+ .inkra-carousel__page[aria-current="true"] .inkra-carousel__page-mark {
110
+ block-size: 14px;
111
+ inline-size: 14px;
112
+ }
113
+
114
+ .inkra-carousel__page:focus-visible .inkra-carousel__page-focus { opacity: 1; }
115
+
116
+ .inkra-carousel__empty {
117
+ align-items: center;
118
+ color: var(--inkra-ink-muted);
119
+ display: flex;
120
+ justify-content: center;
121
+ min-block-size: 8rem;
122
+ min-inline-size: 0;
123
+ text-align: center;
124
+ }
125
+
126
+ .inkra-carousel__status {
127
+ block-size: 1px;
128
+ clip: rect(0 0 0 0);
129
+ clip-path: inset(50%);
130
+ inline-size: 1px;
131
+ margin: -1px;
132
+ overflow: hidden;
133
+ padding: 0;
134
+ position: absolute;
135
+ white-space: nowrap;
136
+ }
137
+
138
+ @container (min-width: 30rem) {
139
+ .inkra-carousel__viewport { --inkra-carousel-visible: var(--inkra-carousel-visible-sm, var(--inkra-carousel-visible-base, 1)); }
140
+ }
141
+
142
+ @container (min-width: 48rem) {
143
+ .inkra-carousel__viewport { --inkra-carousel-visible: var(--inkra-carousel-visible-md, var(--inkra-carousel-visible-sm, var(--inkra-carousel-visible-base, 1))); }
144
+ }
145
+
146
+ @container (min-width: 64rem) {
147
+ .inkra-carousel__viewport { --inkra-carousel-visible: var(--inkra-carousel-visible-lg, var(--inkra-carousel-visible-md, var(--inkra-carousel-visible-sm, var(--inkra-carousel-visible-base, 1)))); }
148
+ }
149
+
150
+ @container (max-width: 390px) {
151
+ .inkra-carousel__toolbar { align-items: flex-start; flex-wrap: wrap; }
152
+ .inkra-carousel__pagination { order: 3; flex-basis: 100%; }
153
+ }
154
+
155
+ @media (prefers-reduced-motion: reduce) {
156
+ .inkra-carousel__container { scroll-behavior: auto; }
157
+ }
158
+
159
+ @media (forced-colors: active) {
160
+ .inkra-pencil-surface.inkra-carousel__focus-ring,
161
+ .inkra-pencil-surface.inkra-carousel__page-focus { display: none !important; }
162
+ .inkra-carousel:focus-visible { outline: var(--inkra-focus-width) solid Highlight; outline-offset: calc(-1 * var(--inkra-focus-width)); }
163
+ .inkra-carousel__page-mark { background: Canvas; border: 1px solid ButtonText; }
164
+ .inkra-carousel__page[aria-current="true"] .inkra-carousel__page-mark { background: Highlight; border-color: Highlight; forced-color-adjust: none; }
165
+ .inkra-carousel__page:focus-visible { outline: var(--inkra-focus-width) solid Highlight; outline-offset: calc(-1 * var(--inkra-focus-width)); }
166
+ }
167
+
168
+ @media print {
169
+ .inkra-carousel__toolbar { display: none; }
170
+ .inkra-carousel__viewport { overflow: visible; }
171
+ .inkra-carousel__container { flex-wrap: wrap; gap: var(--inkra-carousel-gap); }
172
+ .inkra-carousel__slide { flex-basis: auto; }
173
+ }
@@ -0,0 +1,226 @@
1
+ .inkra-choice-grid {
2
+ border: 0;
3
+ color: var(--inkra-ink);
4
+ container-type: inline-size;
5
+ margin: 0;
6
+ max-inline-size: 100%;
7
+ min-inline-size: 0;
8
+ padding: 0;
9
+ }
10
+
11
+ div.inkra-choice-grid > .inkra-radio-group {
12
+ min-inline-size: 0;
13
+ }
14
+
15
+ .inkra-choice-grid .inkra-radio-group__label,
16
+ .inkra-choice-grid__legend {
17
+ font-size: var(--inkra-text-md);
18
+ line-height: var(--inkra-line-ui);
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+
23
+ .inkra-choice-grid .inkra-radio-group__items,
24
+ .inkra-choice-grid__items {
25
+ display: grid;
26
+ gap: var(--inkra-space-3);
27
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--inkra-choice-grid-min-item, 13rem)), 1fr));
28
+ margin-block-start: var(--inkra-space-2);
29
+ min-inline-size: 0;
30
+ }
31
+
32
+ .inkra-choice-grid[data-columns] .inkra-radio-group__items,
33
+ .inkra-choice-grid[data-columns] .inkra-choice-grid__items {
34
+ grid-template-columns: repeat(var(--inkra-choice-grid-columns), minmax(0, 1fr));
35
+ }
36
+
37
+ .inkra-choice-grid__option {
38
+ box-sizing: border-box;
39
+ min-block-size: 144px;
40
+ min-inline-size: 0;
41
+ position: relative;
42
+ }
43
+
44
+ .inkra-choice-grid__selection,
45
+ .inkra-choice-grid__focus,
46
+ .inkra-choice-grid__outline {
47
+ inset: 0;
48
+ pointer-events: none;
49
+ position: absolute;
50
+ }
51
+
52
+ .inkra-choice-grid__selection {
53
+ opacity: 0;
54
+ z-index: 0;
55
+ }
56
+
57
+ .inkra-choice-grid__focus {
58
+ --inkra-accent-strong: var(--inkra-focus);
59
+ inset: calc(-1 * var(--inkra-focus-offset));
60
+ opacity: 0;
61
+ z-index: 3;
62
+ }
63
+
64
+ .inkra-choice-grid__outline { z-index: 2; }
65
+
66
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:checked) .inkra-choice-grid__selection {
67
+ opacity: 1;
68
+ }
69
+
70
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:checked) .inkra-choice-grid__control {
71
+ color: var(--inkra-selection-foreground);
72
+ }
73
+
74
+ .inkra-choice-grid__control {
75
+ align-content: start;
76
+ block-size: 100%;
77
+ box-sizing: border-box;
78
+ gap: var(--inkra-space-2);
79
+ grid-template-columns: minmax(0, 1fr) auto;
80
+ padding: var(--inkra-space-3);
81
+ position: relative;
82
+ z-index: 1;
83
+ }
84
+
85
+ .inkra-choice-grid__control > .inkra-selection-control__mark {
86
+ grid-column: 2;
87
+ grid-row: 1;
88
+ justify-self: end;
89
+ z-index: 1;
90
+ }
91
+
92
+ .inkra-choice-grid__control > .inkra-selection-control__copy {
93
+ block-size: 100%;
94
+ grid-column: 1 / -1;
95
+ grid-row: 1;
96
+ padding: 0;
97
+ }
98
+
99
+ .inkra-choice-grid__control .inkra-selection-control__label {
100
+ display: grid;
101
+ gap: var(--inkra-space-2);
102
+ min-inline-size: 0;
103
+ padding-inline-end: 32px;
104
+ }
105
+
106
+ .inkra-choice-grid__media {
107
+ align-items: center;
108
+ aspect-ratio: 16 / 7;
109
+ box-sizing: border-box;
110
+ display: flex;
111
+ inline-size: 100%;
112
+ justify-content: center;
113
+ min-block-size: 56px;
114
+ overflow: hidden;
115
+ }
116
+
117
+ .inkra-choice-grid__media[data-kind="icon"] {
118
+ color: var(--inkra-accent-strong);
119
+ }
120
+
121
+ .inkra-choice-grid__media[data-kind="icon"] > :where(svg, canvas) {
122
+ block-size: 40px;
123
+ inline-size: 40px;
124
+ max-block-size: 100%;
125
+ max-inline-size: 100%;
126
+ }
127
+
128
+ .inkra-choice-grid__media[data-kind="image"] {
129
+ border-radius: var(--inkra-radius-md);
130
+ }
131
+
132
+ .inkra-choice-grid__media > img {
133
+ block-size: 100%;
134
+ inline-size: 100%;
135
+ object-fit: cover;
136
+ }
137
+
138
+ .inkra-choice-grid__option-label {
139
+ font-size: var(--inkra-text-md);
140
+ line-height: var(--inkra-line-ui);
141
+ min-inline-size: 0;
142
+ overflow-wrap: anywhere;
143
+ }
144
+
145
+ .inkra-choice-grid__control .inkra-selection-control__description {
146
+ margin-block-start: auto;
147
+ overflow-wrap: anywhere;
148
+ }
149
+
150
+ .inkra-choice-grid__control .inkra-selection-control__focus-ring {
151
+ display: none !important;
152
+ }
153
+
154
+ .inkra-choice-grid__messages {
155
+ display: grid;
156
+ gap: var(--inkra-space-1);
157
+ margin-block-start: var(--inkra-space-2);
158
+ }
159
+
160
+ .inkra-choice-grid__description,
161
+ .inkra-choice-grid__error {
162
+ font-size: var(--inkra-text-sm);
163
+ line-height: var(--inkra-line-ui);
164
+ }
165
+
166
+ .inkra-choice-grid__description { color: var(--inkra-ink-muted); }
167
+ .inkra-choice-grid__error { color: var(--inkra-danger); }
168
+
169
+ .inkra-choice-grid[data-disabled="true"] .inkra-choice-grid__option,
170
+ .inkra-choice-grid__option[data-disabled="true"] {
171
+ cursor: not-allowed;
172
+ }
173
+
174
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:focus-visible) {
175
+ outline: none;
176
+ }
177
+
178
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:focus-visible) .inkra-choice-grid__focus {
179
+ opacity: 1;
180
+ }
181
+
182
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:focus-visible) .inkra-selection-control__mark {
183
+ outline: 0;
184
+ }
185
+
186
+ @media (max-width: 640px) {
187
+ .inkra-choice-grid[data-columns] .inkra-radio-group__items,
188
+ .inkra-choice-grid[data-columns] .inkra-choice-grid__items {
189
+ grid-template-columns: minmax(0, 1fr);
190
+ }
191
+ }
192
+
193
+ @container (max-width: 640px) {
194
+ .inkra-choice-grid[data-columns] .inkra-radio-group__items,
195
+ .inkra-choice-grid[data-columns] .inkra-choice-grid__items {
196
+ grid-template-columns: minmax(0, 1fr);
197
+ }
198
+ }
199
+
200
+ @media (forced-colors: active) {
201
+ .inkra-choice-grid__option {
202
+ border: 1px solid CanvasText;
203
+ }
204
+
205
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:checked) {
206
+ border-color: Highlight;
207
+ outline: 2px solid Highlight;
208
+ outline-offset: -3px;
209
+ }
210
+
211
+ .inkra-choice-grid__option:has(.inkra-selection-control__input:focus-visible) {
212
+ outline: var(--inkra-focus-width) solid Highlight;
213
+ outline-offset: var(--inkra-focus-offset);
214
+ }
215
+
216
+ .inkra-choice-grid__option > .inkra-choice-grid__selection,
217
+ .inkra-choice-grid__option > .inkra-choice-grid__focus,
218
+ .inkra-choice-grid__option > .inkra-choice-grid__outline {
219
+ display: none;
220
+ }
221
+
222
+ .inkra-choice-grid__control > .inkra-selection-control__input:focus-visible {
223
+ outline: none;
224
+ }
225
+ }
226
+
@@ -0,0 +1,281 @@
1
+ .inkra-color-picker {
2
+ box-sizing: border-box;
3
+ display: grid;
4
+ gap: var(--inkra-space-4);
5
+ min-inline-size: 0;
6
+ inline-size: min(100%, 28rem);
7
+ margin: 0;
8
+ padding: 0;
9
+ border: 0;
10
+ color: var(--inkra-ink);
11
+ font-family: var(--inkra-font-body);
12
+ font-size: var(--inkra-text-md);
13
+ }
14
+
15
+ .inkra-color-picker:disabled {
16
+ opacity: 0.55;
17
+ }
18
+
19
+ .inkra-color-picker__legend {
20
+ padding: 0 0 var(--inkra-space-2);
21
+ color: var(--inkra-ink);
22
+ font-size: var(--inkra-text-md);
23
+ }
24
+
25
+ .inkra-color-picker__editor {
26
+ display: grid;
27
+ gap: var(--inkra-space-3);
28
+ min-inline-size: 0;
29
+ }
30
+
31
+ .inkra-color-picker__gradient {
32
+ display: grid;
33
+ gap: var(--inkra-space-3);
34
+ min-inline-size: 0;
35
+ inline-size: 100%;
36
+ }
37
+ .inkra-color-picker__types { max-inline-size: 100%; }
38
+ .inkra-color-picker__gradient-preview {
39
+ position: relative;
40
+ isolation: isolate;
41
+ block-size: 88px;
42
+ inline-size: 100%;
43
+ forced-color-adjust: none;
44
+ }
45
+ .inkra-color-picker__stop-toolbar,
46
+ .inkra-color-picker__stops,
47
+ .inkra-color-picker__stop-actions,
48
+ .inkra-color-picker__radial-options {
49
+ display: flex;
50
+ flex-wrap: wrap;
51
+ align-items: center;
52
+ gap: var(--inkra-space-2);
53
+ min-inline-size: 0;
54
+ }
55
+ .inkra-color-picker__stop-toolbar { justify-content: space-between; }
56
+ .inkra-color-picker__stop-actions { gap: 0; }
57
+ .inkra-color-picker__stop { display: grid; justify-items: center; font-size: var(--inkra-text-sm); }
58
+ .inkra-color-picker__stop-position {
59
+ display: grid;
60
+ grid-template-columns: minmax(0, 6rem) minmax(0, 1fr);
61
+ align-items: end;
62
+ gap: var(--inkra-space-3);
63
+ }
64
+ .inkra-color-picker__geometry {
65
+ display: grid;
66
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 6rem), 1fr));
67
+ gap: var(--inkra-space-3);
68
+ }
69
+ .inkra-color-picker__gradient .inkra-input-root { inline-size: 100%; }
70
+ .inkra-color-picker__radial-options > * { max-inline-size: 100%; }
71
+
72
+ .inkra-color-picker__main {
73
+ display: grid;
74
+ grid-template-columns: var(--inkra-control-lg) minmax(0, 1fr);
75
+ gap: var(--inkra-space-3);
76
+ align-items: center;
77
+ min-width: 0;
78
+ }
79
+
80
+ .inkra-color-picker__palette {
81
+ position: relative;
82
+ isolation: isolate;
83
+ display: block;
84
+ overflow: visible;
85
+ box-sizing: border-box;
86
+ flex: none;
87
+ padding: 0;
88
+ border: 0;
89
+ border-radius: var(--inkra-radius-md);
90
+ background: transparent;
91
+ color: var(--inkra-ink);
92
+ }
93
+
94
+ .inkra-color-picker__palette {
95
+ width: var(--inkra-control-lg);
96
+ height: var(--inkra-control-lg);
97
+ cursor: pointer;
98
+ }
99
+
100
+ .inkra-color-picker__checker {
101
+ position: absolute;
102
+ z-index: -2;
103
+ inset: 3px;
104
+ background-color: var(--inkra-surface);
105
+ background-image:
106
+ linear-gradient(45deg, var(--inkra-border) 25%, transparent 25%),
107
+ linear-gradient(-45deg, var(--inkra-border) 25%, transparent 25%),
108
+ linear-gradient(45deg, transparent 75%, var(--inkra-border) 75%),
109
+ linear-gradient(-45deg, transparent 75%, var(--inkra-border) 75%);
110
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
111
+ background-size: 12px 12px;
112
+ }
113
+
114
+ .inkra-color-picker__current {
115
+ position: absolute;
116
+ z-index: -1;
117
+ inset: 3px;
118
+ }
119
+
120
+ .inkra-color-picker__palette-outline,
121
+ .inkra-color-picker__focus {
122
+ position: absolute !important;
123
+ inset: 0;
124
+ pointer-events: none;
125
+ }
126
+
127
+ .inkra-color-picker__focus {
128
+ --inkra-accent-strong: var(--inkra-focus);
129
+ inset: calc(-1 * var(--inkra-focus-offset));
130
+ opacity: 0;
131
+ z-index: 2;
132
+ }
133
+
134
+ .inkra-color-picker__native {
135
+ position: absolute;
136
+ z-index: 1;
137
+ inset: 0;
138
+ width: 100%;
139
+ height: 100%;
140
+ padding: 0;
141
+ border: 0;
142
+ cursor: pointer;
143
+ opacity: 0;
144
+ }
145
+
146
+ .inkra-color-picker__palette:focus-within .inkra-color-picker__focus {
147
+ opacity: 1;
148
+ }
149
+
150
+ .inkra-color-picker__value-field {
151
+ display: grid;
152
+ gap: var(--inkra-space-1);
153
+ min-width: 0;
154
+ }
155
+
156
+ .inkra-color-picker__label,
157
+ .inkra-color-picker__alpha-heading {
158
+ color: var(--inkra-ink-muted);
159
+ font-size: var(--inkra-text-sm);
160
+ }
161
+
162
+ .inkra-color-picker__value-field .inkra-input-root {
163
+ inline-size: 100%;
164
+ }
165
+
166
+ .inkra-color-picker__input {
167
+ font-family: var(--inkra-font-mono);
168
+ }
169
+
170
+ .inkra-color-picker__error {
171
+ min-height: calc(var(--inkra-text-sm) * var(--inkra-line-ui));
172
+ color: var(--inkra-danger-foreground, var(--inkra-danger));
173
+ font-size: var(--inkra-text-sm);
174
+ overflow-wrap: anywhere;
175
+ }
176
+
177
+ .inkra-color-picker__alpha {
178
+ display: grid;
179
+ gap: var(--inkra-space-1);
180
+ min-width: 0;
181
+ }
182
+
183
+ .inkra-color-picker__alpha-heading {
184
+ display: flex;
185
+ align-items: baseline;
186
+ justify-content: space-between;
187
+ gap: var(--inkra-space-2);
188
+ }
189
+
190
+ .inkra-color-picker__alpha output {
191
+ color: var(--inkra-ink);
192
+ font-family: var(--inkra-font-mono);
193
+ }
194
+
195
+ .inkra-color-picker__divider {
196
+ color: var(--inkra-border-strong);
197
+ }
198
+
199
+ .inkra-color-picker__presets {
200
+ display: flex;
201
+ flex-wrap: wrap;
202
+ gap: var(--inkra-space-2);
203
+ min-width: 0;
204
+ }
205
+
206
+ .inkra-color-picker__preset {
207
+ min-width: var(--inkra-touch-target);
208
+ }
209
+
210
+ .inkra-color-picker__preset:disabled,
211
+ .inkra-color-picker__native:disabled {
212
+ cursor: not-allowed;
213
+ }
214
+
215
+ .inkra-color-picker__trigger-content {
216
+ display: flex;
217
+ align-items: center;
218
+ gap: var(--inkra-space-2);
219
+ }
220
+
221
+ .inkra-color-picker__preview {
222
+ position: relative;
223
+ isolation: isolate;
224
+ flex: none;
225
+ inline-size: 28px;
226
+ block-size: 28px;
227
+ }
228
+
229
+ .inkra-color-picker__trigger {
230
+ justify-self: start;
231
+ max-inline-size: 100%;
232
+ }
233
+
234
+ .inkra-color-picker__popover {
235
+ inline-size: min(22rem, calc(100vw - 24px));
236
+ max-inline-size: var(--radix-popover-content-available-width);
237
+ }
238
+
239
+ .inkra-color-picker__editor[data-presentation="compact"] {
240
+ display: flex;
241
+ flex-wrap: wrap;
242
+ align-items: center;
243
+ column-gap: var(--inkra-space-4);
244
+ }
245
+
246
+ .inkra-color-picker__editor[data-presentation="compact"] .inkra-color-picker__main {
247
+ flex: 1 1 12rem;
248
+ }
249
+
250
+ .inkra-color-picker__editor[data-presentation="compact"] .inkra-color-picker__alpha {
251
+ flex: 1 1 8rem;
252
+ }
253
+
254
+ .inkra-color-picker__editor[data-presentation="compact"] .inkra-color-picker__presets {
255
+ flex-basis: 100%;
256
+ }
257
+
258
+ .inkra-color-picker__editor[data-presentation="compact"] .inkra-color-picker__divider {
259
+ display: none;
260
+ }
261
+
262
+ @media (forced-colors: active) {
263
+ .inkra-color-picker__palette {
264
+ border: 1px solid ButtonText;
265
+ forced-color-adjust: none;
266
+ }
267
+
268
+ .inkra-color-picker__palette:focus-within {
269
+ outline: var(--inkra-focus-width) solid Highlight;
270
+ outline-offset: var(--inkra-focus-offset);
271
+ outline-color: Highlight;
272
+ }
273
+
274
+ .inkra-color-picker__focus {
275
+ display: none !important;
276
+ }
277
+
278
+ .inkra-color-picker__preview {
279
+ forced-color-adjust: none;
280
+ }
281
+ }
@@ -0,0 +1,47 @@
1
+ .inkra-color-swatch {
2
+ flex: none;
3
+ }
4
+
5
+ .inkra-color-swatch__background {
6
+ display: block;
7
+ inline-size: 100%;
8
+ block-size: 100%;
9
+ border-radius: 3px;
10
+ forced-color-adjust: none;
11
+ }
12
+
13
+ .inkra-color-swatch__pigment,
14
+ .inkra-color-swatch__wash {
15
+ display: block;
16
+ inline-size: 28px;
17
+ block-size: 28px;
18
+ pointer-events: none;
19
+ }
20
+
21
+ .inkra-color-swatch[data-swatch-size="sm"] .inkra-color-swatch__pigment,
22
+ .inkra-color-swatch[data-swatch-size="sm"] .inkra-color-swatch__wash {
23
+ inline-size: 20px;
24
+ block-size: 20px;
25
+ }
26
+
27
+ .inkra-color-swatch[data-swatch-size="lg"] .inkra-color-swatch__pigment,
28
+ .inkra-color-swatch[data-swatch-size="lg"] .inkra-color-swatch__wash {
29
+ inline-size: 32px;
30
+ block-size: 32px;
31
+ }
32
+
33
+ .inkra-color-swatch__wash[data-pencil-fallback="true"] {
34
+ background: currentColor;
35
+ border: 0;
36
+ }
37
+
38
+ @media (forced-colors: active) {
39
+ .inkra-color-swatch__pigment {
40
+ background: currentColor;
41
+ forced-color-adjust: none;
42
+ }
43
+ .inkra-color-swatch[aria-pressed="true"] {
44
+ outline: 2px solid Highlight;
45
+ outline-offset: -3px;
46
+ }
47
+ }