@cratis/components 4.23.0 → 4.24.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 (156) hide show
  1. package/compat-manifest.json +11 -11
  2. package/dist/esm/IconPicker/IconPicker.d.ts +57 -0
  3. package/dist/esm/IconPicker/IconPicker.d.ts.map +1 -0
  4. package/dist/esm/IconPicker/IconPicker.js +59 -0
  5. package/dist/esm/IconPicker/IconPicker.js.map +1 -0
  6. package/dist/esm/IconPicker/IconPickerAllowed.d.ts +8 -0
  7. package/dist/esm/IconPicker/IconPickerAllowed.d.ts.map +1 -0
  8. package/dist/esm/IconPicker/IconPickerAllowed.js +4 -0
  9. package/dist/esm/IconPicker/IconPickerAllowed.js.map +1 -0
  10. package/dist/esm/IconPicker/IconPickerBrowser.d.ts +32 -0
  11. package/dist/esm/IconPicker/IconPickerBrowser.d.ts.map +1 -0
  12. package/dist/esm/IconPicker/IconPickerBrowser.js +4 -0
  13. package/dist/esm/IconPicker/IconPickerBrowser.js.map +1 -0
  14. package/dist/esm/IconPicker/IconPickerBrowserGroup.d.ts +9 -0
  15. package/dist/esm/IconPicker/IconPickerBrowserGroup.d.ts.map +1 -0
  16. package/dist/esm/IconPicker/IconPickerBrowserGroup.js +4 -0
  17. package/dist/esm/IconPicker/IconPickerBrowserGroup.js.map +1 -0
  18. package/dist/esm/IconPicker/IconPickerCatalog.d.ts +19 -0
  19. package/dist/esm/IconPicker/IconPickerCatalog.d.ts.map +1 -0
  20. package/dist/esm/IconPicker/IconPickerCatalog.js +4 -0
  21. package/dist/esm/IconPicker/IconPickerCatalog.js.map +1 -0
  22. package/dist/esm/IconPicker/IconPickerCatalogStatus.d.ts +3 -0
  23. package/dist/esm/IconPicker/IconPickerCatalogStatus.d.ts.map +1 -0
  24. package/dist/esm/IconPicker/IconPickerCatalogStatus.js +4 -0
  25. package/dist/esm/IconPicker/IconPickerCatalogStatus.js.map +1 -0
  26. package/dist/esm/IconPicker/IconPickerCategoryFilter.d.ts +25 -0
  27. package/dist/esm/IconPicker/IconPickerCategoryFilter.d.ts.map +1 -0
  28. package/dist/esm/IconPicker/IconPickerCategoryFilter.js +23 -0
  29. package/dist/esm/IconPicker/IconPickerCategoryFilter.js.map +1 -0
  30. package/dist/esm/IconPicker/IconPickerEntry.d.ts +25 -0
  31. package/dist/esm/IconPicker/IconPickerEntry.d.ts.map +1 -0
  32. package/dist/esm/IconPicker/IconPickerEntry.js +4 -0
  33. package/dist/esm/IconPicker/IconPickerEntry.js.map +1 -0
  34. package/dist/esm/IconPicker/IconPickerGrid.d.ts +29 -0
  35. package/dist/esm/IconPicker/IconPickerGrid.d.ts.map +1 -0
  36. package/dist/esm/IconPicker/IconPickerGrid.js +24 -0
  37. package/dist/esm/IconPicker/IconPickerGrid.js.map +1 -0
  38. package/dist/esm/IconPicker/IconPickerIndexEntry.d.ts +11 -0
  39. package/dist/esm/IconPicker/IconPickerIndexEntry.d.ts.map +1 -0
  40. package/dist/esm/IconPicker/IconPickerIndexEntry.js +4 -0
  41. package/dist/esm/IconPicker/IconPickerIndexEntry.js.map +1 -0
  42. package/dist/esm/IconPicker/IconPickerLabels.d.ts +76 -0
  43. package/dist/esm/IconPicker/IconPickerLabels.d.ts.map +1 -0
  44. package/dist/esm/IconPicker/IconPickerLabels.js +4 -0
  45. package/dist/esm/IconPicker/IconPickerLabels.js.map +1 -0
  46. package/dist/esm/IconPicker/IconPickerLibrary.d.ts +12 -0
  47. package/dist/esm/IconPicker/IconPickerLibrary.d.ts.map +1 -0
  48. package/dist/esm/IconPicker/IconPickerLibrary.js +4 -0
  49. package/dist/esm/IconPicker/IconPickerLibrary.js.map +1 -0
  50. package/dist/esm/IconPicker/IconPickerLibraryFilter.d.ts +20 -0
  51. package/dist/esm/IconPicker/IconPickerLibraryFilter.d.ts.map +1 -0
  52. package/dist/esm/IconPicker/IconPickerLibraryFilter.js +7 -0
  53. package/dist/esm/IconPicker/IconPickerLibraryFilter.js.map +1 -0
  54. package/dist/esm/IconPicker/IconPickerParts.d.ts +65 -0
  55. package/dist/esm/IconPicker/IconPickerParts.d.ts.map +1 -0
  56. package/dist/esm/IconPicker/IconPickerParts.js +4 -0
  57. package/dist/esm/IconPicker/IconPickerParts.js.map +1 -0
  58. package/dist/esm/IconPicker/IconPickerPlacement.d.ts +3 -0
  59. package/dist/esm/IconPicker/IconPickerPlacement.d.ts.map +1 -0
  60. package/dist/esm/IconPicker/IconPickerPlacement.js +4 -0
  61. package/dist/esm/IconPicker/IconPickerPlacement.js.map +1 -0
  62. package/dist/esm/IconPicker/IconPickerPopout.d.ts +32 -0
  63. package/dist/esm/IconPicker/IconPickerPopout.d.ts.map +1 -0
  64. package/dist/esm/IconPicker/IconPickerPopout.js +41 -0
  65. package/dist/esm/IconPicker/IconPickerPopout.js.map +1 -0
  66. package/dist/esm/IconPicker/IconPickerResults.d.ts +31 -0
  67. package/dist/esm/IconPicker/IconPickerResults.d.ts.map +1 -0
  68. package/dist/esm/IconPicker/IconPickerResults.js +21 -0
  69. package/dist/esm/IconPicker/IconPickerResults.js.map +1 -0
  70. package/dist/esm/IconPicker/IconPickerSearch.d.ts +21 -0
  71. package/dist/esm/IconPicker/IconPickerSearch.d.ts.map +1 -0
  72. package/dist/esm/IconPicker/IconPickerSearch.js +21 -0
  73. package/dist/esm/IconPicker/IconPickerSearch.js.map +1 -0
  74. package/dist/esm/IconPicker/IconPickerSummary.d.ts +12 -0
  75. package/dist/esm/IconPicker/IconPickerSummary.d.ts.map +1 -0
  76. package/dist/esm/IconPicker/IconPickerSummary.js +4 -0
  77. package/dist/esm/IconPicker/IconPickerSummary.js.map +1 -0
  78. package/dist/esm/IconPicker/IconPickerTile.d.ts +36 -0
  79. package/dist/esm/IconPicker/IconPickerTile.d.ts.map +1 -0
  80. package/dist/esm/IconPicker/IconPickerTile.js +22 -0
  81. package/dist/esm/IconPicker/IconPickerTile.js.map +1 -0
  82. package/dist/esm/IconPicker/IconPickerTrigger.d.ts +39 -0
  83. package/dist/esm/IconPicker/IconPickerTrigger.d.ts.map +1 -0
  84. package/dist/esm/IconPicker/IconPickerTrigger.js +13 -0
  85. package/dist/esm/IconPicker/IconPickerTrigger.js.map +1 -0
  86. package/dist/esm/IconPicker/IconPickerValue.d.ts +16 -0
  87. package/dist/esm/IconPicker/IconPickerValue.d.ts.map +1 -0
  88. package/dist/esm/IconPicker/IconPickerValue.js +4 -0
  89. package/dist/esm/IconPicker/IconPickerValue.js.map +1 -0
  90. package/dist/esm/IconPicker/createIconPickerIndex.d.ts +10 -0
  91. package/dist/esm/IconPicker/createIconPickerIndex.d.ts.map +1 -0
  92. package/dist/esm/IconPicker/createIconPickerIndex.js +21 -0
  93. package/dist/esm/IconPicker/createIconPickerIndex.js.map +1 -0
  94. package/dist/esm/IconPicker/defaultIconPickerLabels.d.ts +4 -0
  95. package/dist/esm/IconPicker/defaultIconPickerLabels.d.ts.map +1 -0
  96. package/dist/esm/IconPicker/defaultIconPickerLabels.js +35 -0
  97. package/dist/esm/IconPicker/defaultIconPickerLabels.js.map +1 -0
  98. package/dist/esm/IconPicker/formatIconPickerIdentity.d.ts +8 -0
  99. package/dist/esm/IconPicker/formatIconPickerIdentity.d.ts.map +1 -0
  100. package/dist/esm/IconPicker/formatIconPickerIdentity.js +4 -0
  101. package/dist/esm/IconPicker/formatIconPickerIdentity.js.map +1 -0
  102. package/dist/esm/IconPicker/groupIconPickerByCategory.d.ts +10 -0
  103. package/dist/esm/IconPicker/groupIconPickerByCategory.d.ts.map +1 -0
  104. package/dist/esm/IconPicker/groupIconPickerByCategory.js +17 -0
  105. package/dist/esm/IconPicker/groupIconPickerByCategory.js.map +1 -0
  106. package/dist/esm/IconPicker/iconPickerIdentity.d.ts +8 -0
  107. package/dist/esm/IconPicker/iconPickerIdentity.d.ts.map +1 -0
  108. package/dist/esm/IconPicker/iconPickerIdentity.js +4 -0
  109. package/dist/esm/IconPicker/iconPickerIdentity.js.map +1 -0
  110. package/dist/esm/IconPicker/index.d.ts +19 -0
  111. package/dist/esm/IconPicker/index.d.ts.map +1 -0
  112. package/dist/esm/IconPicker/index.js +8 -0
  113. package/dist/esm/IconPicker/index.js.map +1 -0
  114. package/dist/esm/IconPicker/isIconPickerAllowed.d.ts +10 -0
  115. package/dist/esm/IconPicker/isIconPickerAllowed.d.ts.map +1 -0
  116. package/dist/esm/IconPicker/isIconPickerAllowed.js +12 -0
  117. package/dist/esm/IconPicker/isIconPickerAllowed.js.map +1 -0
  118. package/dist/esm/IconPicker/isSameIconPickerValue.d.ts +10 -0
  119. package/dist/esm/IconPicker/isSameIconPickerValue.d.ts.map +1 -0
  120. package/dist/esm/IconPicker/isSameIconPickerValue.js +4 -0
  121. package/dist/esm/IconPicker/isSameIconPickerValue.js.map +1 -0
  122. package/dist/esm/IconPicker/searchIconPickerIndex.d.ts +9 -0
  123. package/dist/esm/IconPicker/searchIconPickerIndex.d.ts.map +1 -0
  124. package/dist/esm/IconPicker/searchIconPickerIndex.js +9 -0
  125. package/dist/esm/IconPicker/searchIconPickerIndex.js.map +1 -0
  126. package/dist/esm/IconPicker/toIconPickerValue.d.ts +9 -0
  127. package/dist/esm/IconPicker/toIconPickerValue.d.ts.map +1 -0
  128. package/dist/esm/IconPicker/toIconPickerValue.js +6 -0
  129. package/dist/esm/IconPicker/toIconPickerValue.js.map +1 -0
  130. package/dist/esm/IconPicker/useGridColumns.d.ts +12 -0
  131. package/dist/esm/IconPicker/useGridColumns.d.ts.map +1 -0
  132. package/dist/esm/IconPicker/useGridColumns.js +26 -0
  133. package/dist/esm/IconPicker/useGridColumns.js.map +1 -0
  134. package/dist/esm/IconPicker/useIconPickerBrowser.d.ts +10 -0
  135. package/dist/esm/IconPicker/useIconPickerBrowser.d.ts.map +1 -0
  136. package/dist/esm/IconPicker/useIconPickerBrowser.js +45 -0
  137. package/dist/esm/IconPicker/useIconPickerBrowser.js.map +1 -0
  138. package/dist/esm/IconPicker/useIsVisible.d.ts +12 -0
  139. package/dist/esm/IconPicker/useIsVisible.d.ts.map +1 -0
  140. package/dist/esm/IconPicker/useIsVisible.js +23 -0
  141. package/dist/esm/IconPicker/useIsVisible.js.map +1 -0
  142. package/dist/esm/IconPicker/useNarrowViewport.d.ts +9 -0
  143. package/dist/esm/IconPicker/useNarrowViewport.d.ts.map +1 -0
  144. package/dist/esm/IconPicker/useNarrowViewport.js +15 -0
  145. package/dist/esm/IconPicker/useNarrowViewport.js.map +1 -0
  146. package/dist/esm/IconPicker/useRovingFocus.d.ts +29 -0
  147. package/dist/esm/IconPicker/useRovingFocus.d.ts.map +1 -0
  148. package/dist/esm/IconPicker/useRovingFocus.js +70 -0
  149. package/dist/esm/IconPicker/useRovingFocus.js.map +1 -0
  150. package/dist/esm/styles.IconPicker.css +459 -0
  151. package/dist/esm/styles.css +456 -0
  152. package/dist/esm/types/parts.d.ts +28 -0
  153. package/dist/esm/types/parts.d.ts.map +1 -1
  154. package/dist/esm/types/parts.js +28 -0
  155. package/dist/esm/types/parts.js.map +1 -1
  156. package/package.json +7 -2
@@ -0,0 +1,459 @@
1
+ @layer cratis-components {
2
+ /* @cratis/components/IconPicker/styles — requires @cratis/components/styles/base. Areas: IconPicker. */
3
+ /* ── ./IconPicker/IconPicker.css ─────────────────────────────────────── */
4
+ /* Copyright (c) Cratis. All rights reserved. */
5
+ /* Licensed under the MIT license. See LICENSE file in the project root for full license information. */
6
+ .cratis-icon-picker {
7
+ display: inline-flex;
8
+ flex-direction: column;
9
+ gap: 0.25rem;
10
+ max-width: 100%;
11
+ color: var(--cratis-text-color);
12
+ }
13
+
14
+ .cratis-icon-picker__trigger {
15
+ display: inline-flex;
16
+ min-height: var(--cratis-control-height);
17
+ max-width: 100%;
18
+ box-sizing: border-box;
19
+ align-items: center;
20
+ gap: 0.625rem;
21
+ padding: 0.375rem 0.75rem;
22
+ border: 1px solid var(--cratis-control-border);
23
+ border-radius: var(--cratis-border-radius);
24
+ background: var(--cratis-control-background);
25
+ color: inherit;
26
+ font: inherit;
27
+ text-align: start;
28
+ cursor: pointer;
29
+ }
30
+
31
+ .cratis-icon-picker__trigger[data-hovered] {
32
+ background: var(--cratis-surface-hover);
33
+ }
34
+
35
+ .cratis-icon-picker__trigger[data-focus-visible],
36
+ .cratis-icon-picker__trigger[data-pressed] {
37
+ outline: none;
38
+ box-shadow: var(--cratis-focus-ring);
39
+ }
40
+
41
+ .cratis-icon-picker__trigger[data-open] {
42
+ border-color: var(--cratis-primary-color);
43
+ }
44
+
45
+ .cratis-icon-picker__trigger[data-invalid] {
46
+ border-color: var(--cratis-red-500);
47
+ border-style: dashed;
48
+ }
49
+
50
+ .cratis-icon-picker__trigger[data-missing] {
51
+ border-color: var(--cratis-orange-500);
52
+ border-style: dashed;
53
+ }
54
+
55
+ .cratis-icon-picker__trigger[data-readonly] {
56
+ cursor: default;
57
+ background: var(--cratis-surface-100);
58
+ }
59
+
60
+ .cratis-icon-picker__trigger[data-disabled] {
61
+ opacity: var(--cratis-disabled-opacity);
62
+ cursor: not-allowed;
63
+ }
64
+
65
+ .cratis-icon-picker__glyph {
66
+ display: inline-flex;
67
+ width: 1.5rem;
68
+ height: 1.5rem;
69
+ flex: none;
70
+ align-items: center;
71
+ justify-content: center;
72
+ font-size: 1.25rem;
73
+ }
74
+
75
+ .cratis-icon-picker__trigger[data-missing] .cratis-icon-picker__glyph {
76
+ color: var(--cratis-orange-500);
77
+ }
78
+
79
+ .cratis-icon-picker__name {
80
+ min-width: 0;
81
+ overflow: hidden;
82
+ text-overflow: ellipsis;
83
+ white-space: nowrap;
84
+ }
85
+
86
+ .cratis-icon-picker__provider {
87
+ min-width: 0;
88
+ overflow: hidden;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ color: var(--cratis-text-color-secondary);
92
+ font-size: 0.75rem;
93
+ }
94
+
95
+ .cratis-icon-picker__chevron {
96
+ margin-inline-start: auto;
97
+ flex: none;
98
+ color: var(--cratis-text-color-secondary);
99
+ font-size: 0.75rem;
100
+ }
101
+
102
+ .cratis-icon-picker__messages {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 0.125rem;
106
+ }
107
+
108
+ .cratis-icon-picker__message {
109
+ margin: 0;
110
+ color: var(--cratis-text-color-secondary);
111
+ font-size: 0.8125rem;
112
+ }
113
+
114
+ .cratis-icon-picker[data-invalid] .cratis-icon-picker__message {
115
+ color: var(--cratis-red-500);
116
+ }
117
+
118
+ .cratis-icon-picker__popover {
119
+ z-index: var(--cratis-z-index-overlay);
120
+ display: flex;
121
+ width: min(34rem, calc(100vw - 1rem));
122
+ height: 30rem;
123
+ flex-direction: column;
124
+ box-sizing: border-box;
125
+ overflow: hidden;
126
+ border: 1px solid var(--cratis-surface-border);
127
+ border-radius: var(--cratis-border-radius);
128
+ background: var(--cratis-surface-overlay);
129
+ color: var(--cratis-text-color);
130
+ box-shadow: var(--cratis-shadow-overlay);
131
+ }
132
+
133
+ .cratis-icon-picker__overlay {
134
+ position: fixed;
135
+ inset: 0;
136
+ z-index: var(--cratis-z-index-overlay);
137
+ display: flex;
138
+ align-items: flex-end;
139
+ background: var(--cratis-maskbg);
140
+ }
141
+
142
+ .cratis-icon-picker__sheet {
143
+ display: flex;
144
+ width: 100%;
145
+ height: min(36rem, 90dvh);
146
+ flex-direction: column;
147
+ box-sizing: border-box;
148
+ overflow: hidden;
149
+ border: 1px solid var(--cratis-surface-border);
150
+ border-radius: calc(var(--cratis-border-radius) * 2) calc(var(--cratis-border-radius) * 2) 0 0;
151
+ background: var(--cratis-surface-overlay);
152
+ color: var(--cratis-text-color);
153
+ box-shadow: var(--cratis-shadow-dialog);
154
+ }
155
+
156
+ .cratis-icon-picker__dialog {
157
+ display: flex;
158
+ min-height: 0;
159
+ flex: 1 1 auto;
160
+ flex-direction: column;
161
+ gap: 0.625rem;
162
+ box-sizing: border-box;
163
+ padding: 0.75rem;
164
+ outline: none;
165
+ }
166
+
167
+ .cratis-icon-picker__header {
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: space-between;
171
+ gap: 0.5rem;
172
+ }
173
+
174
+ .cratis-icon-picker__title {
175
+ margin: 0;
176
+ font-size: 1rem;
177
+ font-weight: 600;
178
+ }
179
+
180
+ .cratis-icon-picker__close,
181
+ .cratis-icon-picker__clear {
182
+ display: inline-flex;
183
+ min-width: 2.25rem;
184
+ min-height: 2.25rem;
185
+ align-items: center;
186
+ justify-content: center;
187
+ border: 1px solid transparent;
188
+ border-radius: var(--cratis-border-radius);
189
+ background: transparent;
190
+ color: var(--cratis-text-color-secondary);
191
+ cursor: pointer;
192
+ }
193
+
194
+ .cratis-icon-picker__close:hover,
195
+ .cratis-icon-picker__clear:hover {
196
+ background: var(--cratis-surface-hover);
197
+ color: var(--cratis-text-color);
198
+ }
199
+
200
+ .cratis-icon-picker__close:focus-visible,
201
+ .cratis-icon-picker__clear:focus-visible,
202
+ .cratis-icon-picker__category:focus-visible,
203
+ .cratis-icon-picker__link:focus-visible,
204
+ .cratis-icon-picker__library:focus-visible {
205
+ outline: none;
206
+ box-shadow: var(--cratis-focus-ring);
207
+ }
208
+
209
+ .cratis-icon-picker__search {
210
+ display: flex;
211
+ flex: none;
212
+ align-items: center;
213
+ gap: 0.25rem;
214
+ padding-inline-start: 0.75rem;
215
+ border: 1px solid var(--cratis-control-border);
216
+ border-radius: var(--cratis-border-radius);
217
+ background: var(--cratis-control-background);
218
+ }
219
+
220
+ .cratis-icon-picker__search:focus-within {
221
+ border-color: var(--cratis-primary-color);
222
+ box-shadow: var(--cratis-focus-ring);
223
+ }
224
+
225
+ .cratis-icon-picker__search-icon {
226
+ flex: none;
227
+ color: var(--cratis-text-color-secondary);
228
+ }
229
+
230
+ .cratis-icon-picker__search-input {
231
+ min-width: 0;
232
+ min-height: 2.25rem;
233
+ flex: 1;
234
+ border: 0;
235
+ background: transparent;
236
+ color: inherit;
237
+ font: inherit;
238
+ outline: none;
239
+ }
240
+
241
+ .cratis-icon-picker__filters {
242
+ display: flex;
243
+ flex: none;
244
+ flex-wrap: wrap;
245
+ align-items: center;
246
+ gap: 0.5rem;
247
+ }
248
+
249
+ .cratis-icon-picker__library {
250
+ min-height: 2.25rem;
251
+ max-width: 100%;
252
+ padding: 0 0.5rem;
253
+ border: 1px solid var(--cratis-control-border);
254
+ border-radius: var(--cratis-border-radius);
255
+ background: var(--cratis-control-background);
256
+ color: inherit;
257
+ font: inherit;
258
+ }
259
+
260
+ .cratis-icon-picker__categories {
261
+ display: flex;
262
+ min-width: 0;
263
+ flex-wrap: wrap;
264
+ gap: 0.375rem;
265
+ }
266
+
267
+ .cratis-icon-picker__category {
268
+ display: inline-flex;
269
+ min-height: 2.25rem;
270
+ align-items: center;
271
+ gap: 0.375rem;
272
+ padding: 0 0.75rem;
273
+ border: 1px solid var(--cratis-surface-border);
274
+ border-radius: 999px;
275
+ background: transparent;
276
+ color: inherit;
277
+ font: inherit;
278
+ cursor: pointer;
279
+ }
280
+
281
+ .cratis-icon-picker__category:hover {
282
+ background: var(--cratis-surface-hover);
283
+ }
284
+
285
+ .cratis-icon-picker__category[data-selected] {
286
+ border: 2px solid var(--cratis-primary-color);
287
+ background: var(--cratis-highlight-bg);
288
+ color: var(--cratis-highlight-text-color);
289
+ font-weight: 600;
290
+ }
291
+
292
+ .cratis-icon-picker__count {
293
+ color: var(--cratis-text-color-secondary);
294
+ font-size: 0.75rem;
295
+ }
296
+
297
+ .cratis-icon-picker__summary {
298
+ flex: none;
299
+ margin: 0;
300
+ color: var(--cratis-text-color-secondary);
301
+ font-size: 0.8125rem;
302
+ }
303
+
304
+ .cratis-icon-picker__body {
305
+ min-height: 0;
306
+ flex: 1 1 auto;
307
+ overflow: auto;
308
+ }
309
+
310
+ .cratis-icon-picker__results {
311
+ display: flex;
312
+ flex-direction: column;
313
+ gap: 1rem;
314
+ padding: 0.25rem;
315
+ }
316
+
317
+ .cratis-icon-picker__status {
318
+ display: flex;
319
+ flex-wrap: wrap;
320
+ align-items: center;
321
+ gap: 0.5rem;
322
+ padding: 0.75rem;
323
+ border: 1px dashed var(--cratis-surface-border);
324
+ border-radius: var(--cratis-border-radius);
325
+ color: var(--cratis-text-color-secondary);
326
+ }
327
+
328
+ .cratis-icon-picker__status[role='alert'] {
329
+ border-color: var(--cratis-red-500);
330
+ color: var(--cratis-red-500);
331
+ }
332
+
333
+ .cratis-icon-picker__group-header {
334
+ display: flex;
335
+ align-items: baseline;
336
+ justify-content: space-between;
337
+ gap: 0.5rem;
338
+ margin-bottom: 0.375rem;
339
+ }
340
+
341
+ .cratis-icon-picker__group-title {
342
+ margin: 0;
343
+ font-size: 0.875rem;
344
+ font-weight: 600;
345
+ }
346
+
347
+ .cratis-icon-picker__link {
348
+ min-height: 2.25rem;
349
+ padding: 0 0.5rem;
350
+ border: 0;
351
+ border-radius: var(--cratis-border-radius);
352
+ background: transparent;
353
+ color: var(--cratis-primary-color);
354
+ font: inherit;
355
+ text-decoration: underline;
356
+ cursor: pointer;
357
+ }
358
+
359
+ .cratis-icon-picker__grid {
360
+ display: grid;
361
+ grid-template-columns: repeat(auto-fill, minmax(6rem, 1fr));
362
+ gap: 0.5rem;
363
+ }
364
+
365
+ .cratis-icon-picker__tile {
366
+ position: relative;
367
+ display: flex;
368
+ min-height: 5.5rem;
369
+ box-sizing: border-box;
370
+ flex-direction: column;
371
+ align-items: center;
372
+ gap: 0.375rem;
373
+ padding: 0.5rem 0.375rem;
374
+ border: 1px solid var(--cratis-control-border);
375
+ border-radius: var(--cratis-border-radius);
376
+ background: var(--cratis-control-background);
377
+ color: inherit;
378
+ text-align: center;
379
+ cursor: pointer;
380
+ content-visibility: auto;
381
+ contain-intrinsic-size: auto 5.5rem;
382
+ }
383
+
384
+ .cratis-icon-picker__tile:hover {
385
+ background: var(--cratis-surface-hover);
386
+ }
387
+
388
+ .cratis-icon-picker__tile:focus-visible {
389
+ outline: 3px solid var(--cratis-primary-color);
390
+ outline-offset: 2px;
391
+ }
392
+
393
+ .cratis-icon-picker__tile[data-selected] {
394
+ border: 3px solid var(--cratis-primary-color);
395
+ padding: calc(0.5rem - 2px) calc(0.375rem - 2px);
396
+ background: var(--cratis-highlight-bg);
397
+ font-weight: 600;
398
+ }
399
+
400
+ .cratis-icon-picker__tile[data-disabled] {
401
+ border-style: dashed;
402
+ opacity: var(--cratis-disabled-opacity);
403
+ cursor: not-allowed;
404
+ }
405
+
406
+ .cratis-icon-picker__tile-icon {
407
+ display: flex;
408
+ width: 2.5rem;
409
+ height: 2.5rem;
410
+ flex: none;
411
+ align-items: center;
412
+ justify-content: center;
413
+ font-size: 1.75rem;
414
+ }
415
+
416
+ .cratis-icon-picker__tile-name {
417
+ max-width: 100%;
418
+ overflow-wrap: anywhere;
419
+ font-size: 0.8125rem;
420
+ line-height: 1.2;
421
+ }
422
+
423
+ .cratis-icon-picker__tile .cratis-icon-picker__provider {
424
+ max-width: 100%;
425
+ white-space: normal;
426
+ overflow-wrap: anywhere;
427
+ font-size: 0.6875rem;
428
+ }
429
+
430
+ .cratis-icon-picker__flag {
431
+ color: var(--cratis-text-color-secondary);
432
+ font-size: 0.6875rem;
433
+ font-weight: 600;
434
+ }
435
+
436
+ .cratis-icon-picker__check {
437
+ position: absolute;
438
+ inset-block-start: 0.25rem;
439
+ inset-inline-end: 0.25rem;
440
+ padding: 0.125rem;
441
+ border-radius: 50%;
442
+ background: var(--cratis-primary-color);
443
+ color: var(--cratis-primary-color-text);
444
+ font-size: 0.75rem;
445
+ }
446
+
447
+ .cratis-icon-picker__credits {
448
+ flex: none;
449
+ border-top: 1px solid var(--cratis-surface-border);
450
+ padding-top: 0.375rem;
451
+ }
452
+
453
+ .cratis-icon-picker__attribution {
454
+ margin: 0;
455
+ color: var(--cratis-text-color-secondary);
456
+ font-size: 0.75rem;
457
+ }
458
+
459
+ }