@object-ui/fields 17.3.0 → 17.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 (156) hide show
  1. package/CHANGELOG.md +941 -0
  2. package/README.md +1 -12
  3. package/dist/FieldEditWidget.d.ts +7 -1
  4. package/dist/currency.d.ts +46 -0
  5. package/dist/field-type-alias.d.ts +19 -1
  6. package/dist/index.cjs +4 -4
  7. package/dist/index.css +633 -0
  8. package/dist/index.d.ts +48 -12
  9. package/dist/index.js +5026 -4933
  10. package/dist/widgets/AddressField.d.ts +3 -11
  11. package/dist/widgets/FullscreenFieldEditor.d.ts +42 -152
  12. package/dist/widgets/GridField.d.ts +12 -2
  13. package/dist/widgets/OptionsEmptyState.d.ts +15 -1
  14. package/dist/widgets/RecordPickerDialog.d.ts +32 -6
  15. package/dist/widgets/SelectField.d.ts +25 -5
  16. package/dist/widgets/address-format.d.ts +68 -0
  17. package/dist/widgets/file-size-guard.d.ts +41 -0
  18. package/dist/widgets/nativeDateValue.d.ts +37 -0
  19. package/dist/widgets/toDomProps.d.ts +30 -10
  20. package/dist/widgets/toHostGroupProps.d.ts +91 -0
  21. package/dist/widgets/useRecordQuery.d.ts +7 -1
  22. package/package.json +17 -13
  23. package/src/FieldEditWidget.tsx +17 -1
  24. package/src/__tests__/AddressCellRenderer.test.tsx +166 -0
  25. package/src/__tests__/CurrencyField.minorUnits.test.tsx +191 -0
  26. package/src/__tests__/CurrencyField.symbol.test.tsx +198 -0
  27. package/src/__tests__/DateCellRenderer.test.tsx +9 -0
  28. package/src/__tests__/NumberCellRenderer.grouping.test.tsx +146 -0
  29. package/src/__tests__/PercentCellRenderer.locale.test.tsx +152 -0
  30. package/src/__tests__/PercentCellRenderer.test.tsx +115 -0
  31. package/src/__tests__/boolean-label-association-e2e.test.tsx +298 -0
  32. package/src/__tests__/capability-multiselect-retired.test.ts +109 -0
  33. package/src/__tests__/composite-group-label-e2e.test.tsx +436 -0
  34. package/src/__tests__/composite-group-label-readonly-e2e.test.tsx +403 -0
  35. package/src/__tests__/date-formatter-residue-4272.test.ts +120 -0
  36. package/src/__tests__/date-locale-channel.test.tsx +305 -0
  37. package/src/__tests__/formatCurrency.centsDigit.test.tsx +158 -0
  38. package/src/__tests__/formatCurrency.minorUnits.test.tsx +221 -0
  39. package/src/__tests__/group-labelling-declaration.test.ts +148 -0
  40. package/src/__tests__/lookupCellRecordLink.test.tsx +171 -0
  41. package/src/__tests__/percent-cell-vs-measure-4576.test.ts +115 -0
  42. package/src/__tests__/percent-formatter-locale-4553.test.ts +147 -0
  43. package/src/__tests__/percent-tie-halfup-4590.test.ts +224 -0
  44. package/src/__tests__/select-label-association-e2e.test.tsx +199 -0
  45. package/src/__tests__/widget-dom-leak-e2e.test.tsx +29 -270
  46. package/src/complex-widgets.test.tsx +22 -6
  47. package/src/currency.ts +130 -0
  48. package/src/datetime-widgets.test.tsx +94 -2
  49. package/src/field-type-alias.multiple.test.ts +81 -0
  50. package/src/field-type-alias.ts +58 -2
  51. package/src/index.css +44 -0
  52. package/src/index.tsx +489 -247
  53. package/src/standard-widgets.test.tsx +8 -1
  54. package/src/widgets/AddressField.postalCode.test.tsx +257 -0
  55. package/src/widgets/AddressField.tsx +79 -29
  56. package/src/widgets/AddressField.uniqueIds.test.tsx +2 -1
  57. package/src/widgets/BooleanField.tsx +41 -7
  58. package/src/widgets/CapabilityMultiSelectField.tsx +17 -5
  59. package/src/widgets/CheckboxesField.tsx +35 -2
  60. package/src/widgets/CurrencyField.tsx +55 -15
  61. package/src/widgets/DateField.tsx +11 -2
  62. package/src/widgets/DateTimeField.tsx +12 -3
  63. package/src/widgets/FileField.tsx +27 -9
  64. package/src/widgets/FormulaField.tsx +6 -1
  65. package/src/widgets/FullscreenFieldEditor.tsx +47 -258
  66. package/src/widgets/GeolocationField.tsx +29 -3
  67. package/src/widgets/GridField.test.tsx +226 -0
  68. package/src/widgets/GridField.tsx +114 -10
  69. package/src/widgets/ImageField.maxSize.test.tsx +154 -0
  70. package/src/widgets/ImageField.tsx +54 -4
  71. package/src/widgets/LookupField.hydration.test.tsx +1 -1
  72. package/src/widgets/LookupField.tsx +8 -4
  73. package/src/widgets/MultiSelectField.tsx +56 -2
  74. package/src/widgets/OptionsEmptyState.tsx +16 -0
  75. package/src/widgets/RadioField.tsx +35 -3
  76. package/src/widgets/RatingField.tsx +15 -2
  77. package/src/widgets/RecordPickerDialog.baseFilterShapes.test.tsx +191 -0
  78. package/src/widgets/RecordPickerDialog.dateLocale.test.tsx +124 -0
  79. package/src/widgets/RecordPickerDialog.tsx +64 -15
  80. package/src/widgets/RichTextField.tsx +1 -1
  81. package/src/widgets/SelectField.tsx +36 -5
  82. package/src/widgets/UserField.tsx +3 -2
  83. package/src/widgets/__tests__/FilterConditionField.operators.test.ts +25 -1
  84. package/src/widgets/address-format.ts +120 -0
  85. package/src/widgets/file-size-guard.ts +55 -0
  86. package/src/widgets/nativeDateValue.test.ts +115 -0
  87. package/src/widgets/nativeDateValue.ts +112 -0
  88. package/src/widgets/optionWidgets.gatedOptions.test.tsx +267 -0
  89. package/src/widgets/optionWidgets.unconfiguredOptions.test.tsx +150 -0
  90. package/src/widgets/toDomProps.ts +48 -19
  91. package/src/widgets/toHostGroupProps.ts +102 -0
  92. package/src/widgets/useFieldTranslation.ts +15 -33
  93. package/src/widgets/useRecordQuery.ts +30 -3
  94. package/dist/FieldEditWidget.test.d.ts +0 -8
  95. package/dist/__tests__/DateCellRenderer.test.d.ts +0 -0
  96. package/dist/__tests__/NumberCellRenderer.test.d.ts +0 -0
  97. package/dist/__tests__/cell-truncation.test.d.ts +0 -0
  98. package/dist/__tests__/field-carrier-sdui.test.d.ts +0 -0
  99. package/dist/__tests__/lookupCellDisplayField.test.d.ts +0 -0
  100. package/dist/__tests__/lookupCellDisplayName.test.d.ts +0 -0
  101. package/dist/__tests__/lookupCellReferenceKey.test.d.ts +0 -0
  102. package/dist/__tests__/registry-collision.test.d.ts +0 -0
  103. package/dist/__tests__/resolveFieldCurrency.test.d.ts +0 -1
  104. package/dist/__tests__/spec-symbol-batch7.test.d.ts +0 -8
  105. package/dist/__tests__/validation-feedback.test.d.ts +0 -0
  106. package/dist/__tests__/widget-aria-invalid-e2e.test.d.ts +0 -0
  107. package/dist/__tests__/widget-aria-invalid-registry-e2e.test.d.ts +0 -0
  108. package/dist/__tests__/widget-dom-leak-e2e.test.d.ts +0 -0
  109. package/dist/__tests__/widget-props-contract.test.d.ts +0 -8
  110. package/dist/coerce-safe-value.test.d.ts +0 -1
  111. package/dist/complex-widgets.test.d.ts +0 -1
  112. package/dist/datetime-widgets.test.d.ts +0 -1
  113. package/dist/field-type-coverage.test.d.ts +0 -1
  114. package/dist/standard-widgets.test.d.ts +0 -0
  115. package/dist/widgets/AddressField.uniqueIds.test.d.ts +0 -0
  116. package/dist/widgets/CapabilityMultiSelectField.test.d.ts +0 -0
  117. package/dist/widgets/CheckboxesField.cascade.test.d.ts +0 -0
  118. package/dist/widgets/GeolocationField.uniqueIds.test.d.ts +0 -0
  119. package/dist/widgets/GridField.test.d.ts +0 -1
  120. package/dist/widgets/ImageLightbox.test.d.ts +0 -1
  121. package/dist/widgets/LookupField.dependsOn.test.d.ts +0 -8
  122. package/dist/widgets/LookupField.gateHintLabel.test.d.ts +0 -8
  123. package/dist/widgets/LookupField.hydration.test.d.ts +0 -1
  124. package/dist/widgets/LookupField.idField.test.d.ts +0 -1
  125. package/dist/widgets/MultiSelectField.cascade.test.d.ts +0 -0
  126. package/dist/widgets/OptionsEmptyState.no-provider.test.d.ts +0 -0
  127. package/dist/widgets/OptionsEmptyState.test.d.ts +0 -0
  128. package/dist/widgets/PeoplePicker.test.d.ts +0 -8
  129. package/dist/widgets/PeoplePickerComponents.test.d.ts +0 -8
  130. package/dist/widgets/RadioField.cascade.test.d.ts +0 -0
  131. package/dist/widgets/RecipientPickerField.test.d.ts +0 -0
  132. package/dist/widgets/RecordPickerDialog.filterOptions.test.d.ts +0 -8
  133. package/dist/widgets/RecordPickerDialog.selectLabel.test.d.ts +0 -8
  134. package/dist/widgets/SelectField.cascade.test.d.ts +0 -0
  135. package/dist/widgets/TagsField.placeholder.no-provider.test.d.ts +0 -0
  136. package/dist/widgets/TagsField.placeholder.test.d.ts +0 -0
  137. package/dist/widgets/UserFieldPicker.test.d.ts +0 -8
  138. package/dist/widgets/__tests__/FilterConditionField.matchAll.test.d.ts +0 -8
  139. package/dist/widgets/__tests__/FilterConditionField.operators.test.d.ts +0 -8
  140. package/dist/widgets/__tests__/FullscreenFieldEditor.i18n.test.d.ts +0 -0
  141. package/dist/widgets/__tests__/FullscreenFieldEditor.no-provider.test.d.ts +0 -0
  142. package/dist/widgets/__tests__/RichTextField.fullscreenDisabled.test.d.ts +0 -0
  143. package/dist/widgets/__tests__/RichTextField.mobileFullscreen.test.d.ts +0 -0
  144. package/dist/widgets/__tests__/TextAreaField.characterCount.announcements.test.d.ts +0 -0
  145. package/dist/widgets/__tests__/TextAreaField.characterCount.i18n.test.d.ts +0 -0
  146. package/dist/widgets/__tests__/TextAreaField.characterCount.no-provider.test.d.ts +0 -0
  147. package/dist/widgets/__tests__/TextAreaField.fullscreenCharacterCount.i18n.test.d.ts +0 -0
  148. package/dist/widgets/__tests__/TextAreaField.fullscreenCharacterCount.test.d.ts +0 -0
  149. package/dist/widgets/__tests__/TextAreaField.fullscreenDisabled.test.d.ts +0 -0
  150. package/dist/widgets/__tests__/TextAreaField.mobileFullscreen.test.d.ts +0 -0
  151. package/dist/widgets/deriveLookupColumns.test.d.ts +0 -1
  152. package/dist/widgets/file-value.test.d.ts +0 -1
  153. package/dist/widgets/personDisplay.test.d.ts +0 -8
  154. package/dist/widgets/recentLookups.test.d.ts +0 -1
  155. package/dist/widgets/useRecordQuery.test.d.ts +0 -8
  156. package/dist/widgets/useUploadingSignal.test.d.ts +0 -1
package/dist/index.css ADDED
@@ -0,0 +1,633 @@
1
+ /*! @object-ui/fields — utilities this package adds on top of @object-ui/components.
2
+ *
3
+ * IMPORT AFTER the components sheet; this is a supplement, not a standalone stylesheet:
4
+ *
5
+ * @import '@object-ui/components/style.css';
6
+ * @import '@object-ui/fields/style.css';
7
+ *
8
+ * Preflight, the theme tokens and every utility the two packages share live in the
9
+ * components sheet and are deliberately not repeated here. Generated by
10
+ * packages/fields/scripts/build-css.mjs — do not edit.
11
+ */
12
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
13
+ @layer utilities {
14
+ .-top-1 {
15
+ top: calc(var(--spacing, 0.25rem) * -1);
16
+ }
17
+ .top-1 {
18
+ top: var(--spacing, 0.25rem);
19
+ }
20
+ .-right-1 {
21
+ right: calc(var(--spacing, 0.25rem) * -1);
22
+ }
23
+ .right-2\.5 {
24
+ right: calc(var(--spacing, 0.25rem) * 2.5);
25
+ }
26
+ .bottom-2 {
27
+ bottom: calc(var(--spacing, 0.25rem) * 2);
28
+ }
29
+ .left-3 {
30
+ left: calc(var(--spacing, 0.25rem) * 3);
31
+ }
32
+ .z-\[5\] {
33
+ z-index: 5;
34
+ }
35
+ .\!inline {
36
+ display: inline !important;
37
+ }
38
+ .size-3 {
39
+ width: calc(var(--spacing, 0.25rem) * 3);
40
+ height: calc(var(--spacing, 0.25rem) * 3);
41
+ }
42
+ .size-9 {
43
+ width: calc(var(--spacing, 0.25rem) * 9);
44
+ height: calc(var(--spacing, 0.25rem) * 9);
45
+ }
46
+ .size-20 {
47
+ width: calc(var(--spacing, 0.25rem) * 20);
48
+ height: calc(var(--spacing, 0.25rem) * 20);
49
+ }
50
+ .h-\[85vh\] {
51
+ height: 85vh;
52
+ }
53
+ .h-\[270px\] {
54
+ height: 270px;
55
+ }
56
+ .max-h-\[85vh\] {
57
+ max-height: 85vh;
58
+ }
59
+ .max-h-\[min\(28rem\,60vh\)\] {
60
+ max-height: min(28rem, 60vh);
61
+ }
62
+ .min-h-8 {
63
+ min-height: calc(var(--spacing, 0.25rem) * 8);
64
+ }
65
+ .min-h-9 {
66
+ min-height: calc(var(--spacing, 0.25rem) * 9);
67
+ }
68
+ .min-h-\[96px\] {
69
+ min-height: 96px;
70
+ }
71
+ .w-1\.5 {
72
+ width: calc(var(--spacing, 0.25rem) * 1.5);
73
+ }
74
+ .w-1\/3 {
75
+ width: calc(1 / 3 * 100%);
76
+ }
77
+ .w-14 {
78
+ width: calc(var(--spacing, 0.25rem) * 14);
79
+ }
80
+ .w-48 {
81
+ width: calc(var(--spacing, 0.25rem) * 48);
82
+ }
83
+ .w-56 {
84
+ width: calc(var(--spacing, 0.25rem) * 56);
85
+ }
86
+ .w-\[95vw\] {
87
+ width: 95vw;
88
+ }
89
+ .max-w-40 {
90
+ max-width: calc(var(--spacing, 0.25rem) * 40);
91
+ }
92
+ .max-w-\[10rem\] {
93
+ max-width: 10rem;
94
+ }
95
+ .max-w-\[92vw\] {
96
+ max-width: 92vw;
97
+ }
98
+ .min-w-72 {
99
+ min-width: calc(var(--spacing, 0.25rem) * 72);
100
+ }
101
+ .min-w-\[7rem\] {
102
+ min-width: 7rem;
103
+ }
104
+ .min-w-\[8ch\] {
105
+ min-width: 8ch;
106
+ }
107
+ .min-w-\[20px\] {
108
+ min-width: 20px;
109
+ }
110
+ .basis-\[9rem\] {
111
+ flex-basis: 9rem;
112
+ }
113
+ .cursor-crosshair {
114
+ cursor: crosshair;
115
+ }
116
+ .cursor-move {
117
+ cursor: move;
118
+ }
119
+ .cursor-zoom-in {
120
+ cursor: zoom-in;
121
+ }
122
+ .gap-x-3 {
123
+ column-gap: calc(var(--spacing, 0.25rem) * 3);
124
+ }
125
+ :where(.-space-x-2 > :not(:last-child)) {
126
+ --tw-space-x-reverse: 0;
127
+ margin-inline-start: calc(calc(var(--spacing, 0.25rem) * -2) * var(--tw-space-x-reverse));
128
+ margin-inline-end: calc(calc(var(--spacing, 0.25rem) * -2) * calc(1 - var(--tw-space-x-reverse)));
129
+ }
130
+ .gap-y-1 {
131
+ row-gap: var(--spacing, 0.25rem);
132
+ }
133
+ .border-background {
134
+ border-color: var(--color-background, hsl(var(--background)));
135
+ }
136
+ .border-black\/10 {
137
+ border-color: color-mix(in srgb, #000 10%, transparent);
138
+ @supports (color: color-mix(in lab, red, red)) {
139
+ border-color: color-mix(in oklab, var(--color-black, #000) 10%, transparent);
140
+ }
141
+ }
142
+ .border-blue-200 {
143
+ border-color: var(--color-blue-200, oklch(88.2% 0.059 254.128));
144
+ }
145
+ .border-border\/40 {
146
+ border-color: color-mix(in srgb, hsl(var(--border)) 40%, transparent);
147
+ @supports (color: color-mix(in lab, red, red)) {
148
+ border-color: color-mix(in oklab, var(--color-border, hsl(var(--border))) 40%, transparent);
149
+ }
150
+ }
151
+ .border-gray-200 {
152
+ border-color: var(--color-gray-200, oklch(92.8% 0.006 264.531));
153
+ }
154
+ .border-green-200 {
155
+ border-color: var(--color-green-200, oklch(92.5% 0.084 155.995));
156
+ }
157
+ .border-indigo-200 {
158
+ border-color: var(--color-indigo-200, oklch(87% 0.065 274.039));
159
+ }
160
+ .border-muted-foreground\/25 {
161
+ border-color: color-mix(in srgb, hsl(var(--muted-foreground)) 25%, transparent);
162
+ @supports (color: color-mix(in lab, red, red)) {
163
+ border-color: color-mix(in oklab, var(--color-muted-foreground, hsl(var(--muted-foreground))) 25%, transparent);
164
+ }
165
+ }
166
+ .border-muted-foreground\/30 {
167
+ border-color: color-mix(in srgb, hsl(var(--muted-foreground)) 30%, transparent);
168
+ @supports (color: color-mix(in lab, red, red)) {
169
+ border-color: color-mix(in oklab, var(--color-muted-foreground, hsl(var(--muted-foreground))) 30%, transparent);
170
+ }
171
+ }
172
+ .border-orange-200 {
173
+ border-color: var(--color-orange-200, oklch(90.1% 0.076 70.697));
174
+ }
175
+ .border-pink-200 {
176
+ border-color: var(--color-pink-200, oklch(89.9% 0.061 343.231));
177
+ }
178
+ .border-purple-200 {
179
+ border-color: var(--color-purple-200, oklch(90.2% 0.063 306.703));
180
+ }
181
+ .border-red-500 {
182
+ border-color: var(--color-red-500, oklch(63.7% 0.237 25.331));
183
+ }
184
+ .border-white {
185
+ border-color: var(--color-white, #fff);
186
+ }
187
+ .border-yellow-200 {
188
+ border-color: var(--color-yellow-200, oklch(94.5% 0.129 101.54));
189
+ }
190
+ .bg-background\/60 {
191
+ background-color: color-mix(in srgb, hsl(var(--background)) 60%, transparent);
192
+ @supports (color: color-mix(in lab, red, red)) {
193
+ background-color: color-mix(in oklab, var(--color-background, hsl(var(--background))) 60%, transparent);
194
+ }
195
+ }
196
+ .bg-black\/0 {
197
+ background-color: color-mix(in srgb, #000 0%, transparent);
198
+ @supports (color: color-mix(in lab, red, red)) {
199
+ background-color: color-mix(in oklab, var(--color-black, #000) 0%, transparent);
200
+ }
201
+ }
202
+ .bg-black\/50 {
203
+ background-color: color-mix(in srgb, #000 50%, transparent);
204
+ @supports (color: color-mix(in lab, red, red)) {
205
+ background-color: color-mix(in oklab, var(--color-black, #000) 50%, transparent);
206
+ }
207
+ }
208
+ .bg-destructive\/5 {
209
+ background-color: color-mix(in srgb, hsl(var(--destructive)) 5%, transparent);
210
+ @supports (color: color-mix(in lab, red, red)) {
211
+ background-color: color-mix(in oklab, var(--color-destructive, hsl(var(--destructive))) 5%, transparent);
212
+ }
213
+ }
214
+ .bg-gray-200 {
215
+ background-color: var(--color-gray-200, oklch(92.8% 0.006 264.531));
216
+ }
217
+ .bg-gray-400 {
218
+ background-color: var(--color-gray-400, oklch(70.7% 0.022 261.325));
219
+ }
220
+ .bg-green-50 {
221
+ background-color: var(--color-green-50, oklch(98.2% 0.018 155.826));
222
+ }
223
+ .bg-indigo-50 {
224
+ background-color: var(--color-indigo-50, oklch(96.2% 0.018 272.314));
225
+ }
226
+ .bg-indigo-500 {
227
+ background-color: var(--color-indigo-500, oklch(58.5% 0.233 277.117));
228
+ }
229
+ .bg-muted\/60 {
230
+ background-color: color-mix(in srgb, hsl(var(--muted)) 60%, transparent);
231
+ @supports (color: color-mix(in lab, red, red)) {
232
+ background-color: color-mix(in oklab, var(--color-muted, hsl(var(--muted))) 60%, transparent);
233
+ }
234
+ }
235
+ .bg-orange-50 {
236
+ background-color: var(--color-orange-50, oklch(98% 0.016 73.684));
237
+ }
238
+ .bg-orange-500 {
239
+ background-color: var(--color-orange-500, oklch(70.5% 0.213 47.604));
240
+ }
241
+ .bg-pink-50 {
242
+ background-color: var(--color-pink-50, oklch(97.1% 0.014 343.198));
243
+ }
244
+ .bg-pink-500 {
245
+ background-color: var(--color-pink-500, oklch(65.6% 0.241 354.308));
246
+ }
247
+ .bg-primary\/20 {
248
+ background-color: color-mix(in srgb, hsl(var(--primary)) 20%, transparent);
249
+ @supports (color: color-mix(in lab, red, red)) {
250
+ background-color: color-mix(in oklab, var(--color-primary, hsl(var(--primary))) 20%, transparent);
251
+ }
252
+ }
253
+ .bg-purple-50 {
254
+ background-color: var(--color-purple-50, oklch(97.7% 0.014 308.299));
255
+ }
256
+ .bg-purple-500 {
257
+ background-color: var(--color-purple-500, oklch(62.7% 0.265 303.9));
258
+ }
259
+ .bg-red-500 {
260
+ background-color: var(--color-red-500, oklch(63.7% 0.237 25.331));
261
+ }
262
+ .bg-white {
263
+ background-color: var(--color-white, #fff);
264
+ }
265
+ .bg-yellow-50 {
266
+ background-color: var(--color-yellow-50, oklch(98.7% 0.026 102.212));
267
+ }
268
+ .bg-yellow-500 {
269
+ background-color: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
270
+ }
271
+ .p-1\.5 {
272
+ padding: calc(var(--spacing, 0.25rem) * 1.5);
273
+ }
274
+ .px-px {
275
+ padding-inline: 1px;
276
+ }
277
+ .py-8 {
278
+ padding-block: calc(var(--spacing, 0.25rem) * 8);
279
+ }
280
+ .pr-1\.5 {
281
+ padding-right: calc(var(--spacing, 0.25rem) * 1.5);
282
+ }
283
+ .pl-0\.5 {
284
+ padding-left: calc(var(--spacing, 0.25rem) * 0.5);
285
+ }
286
+ .pl-9 {
287
+ padding-left: calc(var(--spacing, 0.25rem) * 9);
288
+ }
289
+ .text-blue-600 {
290
+ color: var(--color-blue-600, oklch(54.6% 0.245 262.881));
291
+ }
292
+ .text-blue-700 {
293
+ color: var(--color-blue-700, oklch(48.8% 0.243 264.376));
294
+ }
295
+ .text-gray-400 {
296
+ color: var(--color-gray-400, oklch(70.7% 0.022 261.325));
297
+ }
298
+ .text-gray-500 {
299
+ color: var(--color-gray-500, oklch(55.1% 0.027 264.364));
300
+ }
301
+ .text-gray-600 {
302
+ color: var(--color-gray-600, oklch(44.6% 0.03 256.802));
303
+ }
304
+ .text-gray-700 {
305
+ color: var(--color-gray-700, oklch(37.3% 0.034 259.733));
306
+ }
307
+ .text-green-700 {
308
+ color: var(--color-green-700, oklch(52.7% 0.154 150.069));
309
+ }
310
+ .text-indigo-700 {
311
+ color: var(--color-indigo-700, oklch(45.7% 0.24 277.023));
312
+ }
313
+ .text-inherit {
314
+ color: inherit;
315
+ }
316
+ .text-orange-700 {
317
+ color: var(--color-orange-700, oklch(55.3% 0.195 38.402));
318
+ }
319
+ .text-pink-700 {
320
+ color: var(--color-pink-700, oklch(52.5% 0.223 3.958));
321
+ }
322
+ .text-purple-700 {
323
+ color: var(--color-purple-700, oklch(49.6% 0.265 301.924));
324
+ }
325
+ .text-red-600 {
326
+ color: var(--color-red-600, oklch(57.7% 0.245 27.325));
327
+ }
328
+ .text-yellow-800 {
329
+ color: var(--color-yellow-800, oklch(47.6% 0.114 61.907));
330
+ }
331
+ .underline-offset-2 {
332
+ text-underline-offset: 2px;
333
+ }
334
+ .opacity-30 {
335
+ opacity: 30%;
336
+ }
337
+ .opacity-40 {
338
+ opacity: 40%;
339
+ }
340
+ .ring-border\/60 {
341
+ --tw-ring-color: color-mix(in srgb, hsl(var(--border)) 60%, transparent);
342
+ @supports (color: color-mix(in lab, red, red)) {
343
+ --tw-ring-color: color-mix(in oklab, var(--color-border, hsl(var(--border))) 60%, transparent);
344
+ }
345
+ }
346
+ .ring-destructive\/50 {
347
+ --tw-ring-color: color-mix(in srgb, hsl(var(--destructive)) 50%, transparent);
348
+ @supports (color: color-mix(in lab, red, red)) {
349
+ --tw-ring-color: color-mix(in oklab, var(--color-destructive, hsl(var(--destructive))) 50%, transparent);
350
+ }
351
+ }
352
+ .duration-150 {
353
+ --tw-duration: 150ms;
354
+ transition-duration: 150ms;
355
+ }
356
+ .duration-150 {
357
+ animation-duration: 150ms;
358
+ }
359
+ @media (hover: hover) {
360
+ .group-hover\:scale-105:is(:where(.group):hover *) {
361
+ --tw-scale-x: 105%;
362
+ --tw-scale-y: 105%;
363
+ --tw-scale-z: 105%;
364
+ scale: var(--tw-scale-x) var(--tw-scale-y);
365
+ }
366
+ .group-hover\:bg-black\/10:is(:where(.group):hover *) {
367
+ background-color: color-mix(in srgb, #000 10%, transparent);
368
+ }
369
+ @supports (color: color-mix(in lab, red, red)) {
370
+ .group-hover\:bg-black\/10:is(:where(.group):hover *) {
371
+ background-color: color-mix(in oklab, var(--color-black, #000) 10%, transparent);
372
+ }
373
+ }
374
+ .group-hover\/email\:opacity-100:is(:where(.group\/email):hover *) {
375
+ opacity: 100%;
376
+ }
377
+ .group-hover\/phone\:opacity-100:is(:where(.group\/phone):hover *) {
378
+ opacity: 100%;
379
+ }
380
+ }
381
+ .last\:border-r-0:last-child {
382
+ border-right-style: var(--tw-border-style);
383
+ border-right-width: 0px;
384
+ }
385
+ @media (hover: hover) {
386
+ .hover\:z-10:hover {
387
+ z-index: 10;
388
+ }
389
+ .hover\:scale-105:hover {
390
+ --tw-scale-x: 105%;
391
+ --tw-scale-y: 105%;
392
+ --tw-scale-z: 105%;
393
+ scale: var(--tw-scale-x) var(--tw-scale-y);
394
+ }
395
+ .hover\:scale-110:hover {
396
+ --tw-scale-x: 110%;
397
+ --tw-scale-y: 110%;
398
+ --tw-scale-z: 110%;
399
+ scale: var(--tw-scale-x) var(--tw-scale-y);
400
+ }
401
+ .hover\:border-primary\/50:hover {
402
+ border-color: color-mix(in srgb, hsl(var(--primary)) 50%, transparent);
403
+ }
404
+ @supports (color: color-mix(in lab, red, red)) {
405
+ .hover\:border-primary\/50:hover {
406
+ border-color: color-mix(in oklab, var(--color-primary, hsl(var(--primary))) 50%, transparent);
407
+ }
408
+ }
409
+ .hover\:bg-accent\/30:hover {
410
+ background-color: color-mix(in srgb, hsl(var(--accent)) 30%, transparent);
411
+ }
412
+ @supports (color: color-mix(in lab, red, red)) {
413
+ .hover\:bg-accent\/30:hover {
414
+ background-color: color-mix(in oklab, var(--color-accent, hsl(var(--accent))) 30%, transparent);
415
+ }
416
+ }
417
+ .hover\:bg-black\/70:hover {
418
+ background-color: color-mix(in srgb, #000 70%, transparent);
419
+ }
420
+ @supports (color: color-mix(in lab, red, red)) {
421
+ .hover\:bg-black\/70:hover {
422
+ background-color: color-mix(in oklab, var(--color-black, #000) 70%, transparent);
423
+ }
424
+ }
425
+ .hover\:bg-muted\/80:hover {
426
+ background-color: color-mix(in srgb, hsl(var(--muted)) 80%, transparent);
427
+ }
428
+ @supports (color: color-mix(in lab, red, red)) {
429
+ .hover\:bg-muted\/80:hover {
430
+ background-color: color-mix(in oklab, var(--color-muted, hsl(var(--muted))) 80%, transparent);
431
+ }
432
+ }
433
+ .hover\:bg-primary\/10:hover {
434
+ background-color: color-mix(in srgb, hsl(var(--primary)) 10%, transparent);
435
+ }
436
+ @supports (color: color-mix(in lab, red, red)) {
437
+ .hover\:bg-primary\/10:hover {
438
+ background-color: color-mix(in oklab, var(--color-primary, hsl(var(--primary))) 10%, transparent);
439
+ }
440
+ }
441
+ .hover\:bg-primary\/50:hover {
442
+ background-color: color-mix(in srgb, hsl(var(--primary)) 50%, transparent);
443
+ }
444
+ @supports (color: color-mix(in lab, red, red)) {
445
+ .hover\:bg-primary\/50:hover {
446
+ background-color: color-mix(in oklab, var(--color-primary, hsl(var(--primary))) 50%, transparent);
447
+ }
448
+ }
449
+ .hover\:fill-yellow-500:hover {
450
+ fill: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
451
+ }
452
+ .hover\:text-blue-800:hover {
453
+ color: var(--color-blue-800, oklch(42.4% 0.199 265.638));
454
+ }
455
+ .hover\:text-yellow-400:hover {
456
+ color: var(--color-yellow-400, oklch(85.2% 0.199 91.936));
457
+ }
458
+ .hover\:text-yellow-500:hover {
459
+ color: var(--color-yellow-500, oklch(79.5% 0.184 86.047));
460
+ }
461
+ }
462
+ .focus\:ring-1:focus {
463
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
464
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
465
+ }
466
+ .focus\:ring-ring\/60:focus {
467
+ --tw-ring-color: color-mix(in srgb, hsl(var(--ring)) 60%, transparent);
468
+ @supports (color: color-mix(in lab, red, red)) {
469
+ --tw-ring-color: color-mix(in oklab, var(--color-ring, hsl(var(--ring))) 60%, transparent);
470
+ }
471
+ }
472
+ .focus-visible\:ring-red-500:focus-visible {
473
+ --tw-ring-color: var(--color-red-500, oklch(63.7% 0.237 25.331));
474
+ }
475
+ .focus-visible\:ring-ring\/60:focus-visible {
476
+ --tw-ring-color: color-mix(in srgb, hsl(var(--ring)) 60%, transparent);
477
+ @supports (color: color-mix(in lab, red, red)) {
478
+ --tw-ring-color: color-mix(in oklab, var(--color-ring, hsl(var(--ring))) 60%, transparent);
479
+ }
480
+ }
481
+ @media (width >= 40rem) {
482
+ .sm\:max-w-4xl {
483
+ max-width: var(--container-4xl, 56rem);
484
+ }
485
+ .sm\:justify-between {
486
+ justify-content: space-between;
487
+ }
488
+ }
489
+ @media (width >= 64rem) {
490
+ .lg\:max-w-5xl {
491
+ max-width: var(--container-5xl, 64rem);
492
+ }
493
+ }
494
+ .dark\:border-blue-900\/60:where(.dark, .dark *) {
495
+ border-color: color-mix(in srgb, oklch(37.9% 0.146 265.522) 60%, transparent);
496
+ @supports (color: color-mix(in lab, red, red)) {
497
+ border-color: color-mix(in oklab, var(--color-blue-900, oklch(37.9% 0.146 265.522)) 60%, transparent);
498
+ }
499
+ }
500
+ .dark\:border-gray-700\/60:where(.dark, .dark *) {
501
+ border-color: color-mix(in srgb, oklch(37.3% 0.034 259.733) 60%, transparent);
502
+ @supports (color: color-mix(in lab, red, red)) {
503
+ border-color: color-mix(in oklab, var(--color-gray-700, oklch(37.3% 0.034 259.733)) 60%, transparent);
504
+ }
505
+ }
506
+ .dark\:border-green-900\/60:where(.dark, .dark *) {
507
+ border-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 60%, transparent);
508
+ @supports (color: color-mix(in lab, red, red)) {
509
+ border-color: color-mix(in oklab, var(--color-green-900, oklch(39.3% 0.095 152.535)) 60%, transparent);
510
+ }
511
+ }
512
+ .dark\:border-indigo-900\/60:where(.dark, .dark *) {
513
+ border-color: color-mix(in srgb, oklch(35.9% 0.144 278.697) 60%, transparent);
514
+ @supports (color: color-mix(in lab, red, red)) {
515
+ border-color: color-mix(in oklab, var(--color-indigo-900, oklch(35.9% 0.144 278.697)) 60%, transparent);
516
+ }
517
+ }
518
+ .dark\:border-orange-900\/60:where(.dark, .dark *) {
519
+ border-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 60%, transparent);
520
+ @supports (color: color-mix(in lab, red, red)) {
521
+ border-color: color-mix(in oklab, var(--color-orange-900, oklch(40.8% 0.123 38.172)) 60%, transparent);
522
+ }
523
+ }
524
+ .dark\:border-pink-900\/60:where(.dark, .dark *) {
525
+ border-color: color-mix(in srgb, oklch(40.8% 0.153 2.432) 60%, transparent);
526
+ @supports (color: color-mix(in lab, red, red)) {
527
+ border-color: color-mix(in oklab, var(--color-pink-900, oklch(40.8% 0.153 2.432)) 60%, transparent);
528
+ }
529
+ }
530
+ .dark\:border-purple-900\/60:where(.dark, .dark *) {
531
+ border-color: color-mix(in srgb, oklch(38.1% 0.176 304.987) 60%, transparent);
532
+ @supports (color: color-mix(in lab, red, red)) {
533
+ border-color: color-mix(in oklab, var(--color-purple-900, oklch(38.1% 0.176 304.987)) 60%, transparent);
534
+ }
535
+ }
536
+ .dark\:border-red-900\/60:where(.dark, .dark *) {
537
+ border-color: color-mix(in srgb, oklch(39.6% 0.141 25.723) 60%, transparent);
538
+ @supports (color: color-mix(in lab, red, red)) {
539
+ border-color: color-mix(in oklab, var(--color-red-900, oklch(39.6% 0.141 25.723)) 60%, transparent);
540
+ }
541
+ }
542
+ .dark\:border-yellow-900\/60:where(.dark, .dark *) {
543
+ border-color: color-mix(in srgb, oklch(42.1% 0.095 57.708) 60%, transparent);
544
+ @supports (color: color-mix(in lab, red, red)) {
545
+ border-color: color-mix(in oklab, var(--color-yellow-900, oklch(42.1% 0.095 57.708)) 60%, transparent);
546
+ }
547
+ }
548
+ .dark\:bg-blue-950\/40:where(.dark, .dark *) {
549
+ background-color: color-mix(in srgb, oklch(28.2% 0.091 267.935) 40%, transparent);
550
+ @supports (color: color-mix(in lab, red, red)) {
551
+ background-color: color-mix(in oklab, var(--color-blue-950, oklch(28.2% 0.091 267.935)) 40%, transparent);
552
+ }
553
+ }
554
+ .dark\:bg-gray-500:where(.dark, .dark *) {
555
+ background-color: var(--color-gray-500, oklch(55.1% 0.027 264.364));
556
+ }
557
+ .dark\:bg-gray-800\/50:where(.dark, .dark *) {
558
+ background-color: color-mix(in srgb, oklch(27.8% 0.033 256.848) 50%, transparent);
559
+ @supports (color: color-mix(in lab, red, red)) {
560
+ background-color: color-mix(in oklab, var(--color-gray-800, oklch(27.8% 0.033 256.848)) 50%, transparent);
561
+ }
562
+ }
563
+ .dark\:bg-green-950\/40:where(.dark, .dark *) {
564
+ background-color: color-mix(in srgb, oklch(26.6% 0.065 152.934) 40%, transparent);
565
+ @supports (color: color-mix(in lab, red, red)) {
566
+ background-color: color-mix(in oklab, var(--color-green-950, oklch(26.6% 0.065 152.934)) 40%, transparent);
567
+ }
568
+ }
569
+ .dark\:bg-indigo-950\/40:where(.dark, .dark *) {
570
+ background-color: color-mix(in srgb, oklch(25.7% 0.09 281.288) 40%, transparent);
571
+ @supports (color: color-mix(in lab, red, red)) {
572
+ background-color: color-mix(in oklab, var(--color-indigo-950, oklch(25.7% 0.09 281.288)) 40%, transparent);
573
+ }
574
+ }
575
+ .dark\:bg-orange-950\/40:where(.dark, .dark *) {
576
+ background-color: color-mix(in srgb, oklch(26.6% 0.079 36.259) 40%, transparent);
577
+ @supports (color: color-mix(in lab, red, red)) {
578
+ background-color: color-mix(in oklab, var(--color-orange-950, oklch(26.6% 0.079 36.259)) 40%, transparent);
579
+ }
580
+ }
581
+ .dark\:bg-pink-950\/40:where(.dark, .dark *) {
582
+ background-color: color-mix(in srgb, oklch(28.4% 0.109 3.907) 40%, transparent);
583
+ @supports (color: color-mix(in lab, red, red)) {
584
+ background-color: color-mix(in oklab, var(--color-pink-950, oklch(28.4% 0.109 3.907)) 40%, transparent);
585
+ }
586
+ }
587
+ .dark\:bg-purple-950\/40:where(.dark, .dark *) {
588
+ background-color: color-mix(in srgb, oklch(29.1% 0.149 302.717) 40%, transparent);
589
+ @supports (color: color-mix(in lab, red, red)) {
590
+ background-color: color-mix(in oklab, var(--color-purple-950, oklch(29.1% 0.149 302.717)) 40%, transparent);
591
+ }
592
+ }
593
+ .dark\:bg-red-950\/40:where(.dark, .dark *) {
594
+ background-color: color-mix(in srgb, oklch(25.8% 0.092 26.042) 40%, transparent);
595
+ @supports (color: color-mix(in lab, red, red)) {
596
+ background-color: color-mix(in oklab, var(--color-red-950, oklch(25.8% 0.092 26.042)) 40%, transparent);
597
+ }
598
+ }
599
+ .dark\:bg-yellow-950\/40:where(.dark, .dark *) {
600
+ background-color: color-mix(in srgb, oklch(28.6% 0.066 53.813) 40%, transparent);
601
+ @supports (color: color-mix(in lab, red, red)) {
602
+ background-color: color-mix(in oklab, var(--color-yellow-950, oklch(28.6% 0.066 53.813)) 40%, transparent);
603
+ }
604
+ }
605
+ .dark\:text-blue-300:where(.dark, .dark *) {
606
+ color: var(--color-blue-300, oklch(80.9% 0.105 251.813));
607
+ }
608
+ .dark\:text-gray-200:where(.dark, .dark *) {
609
+ color: var(--color-gray-200, oklch(92.8% 0.006 264.531));
610
+ }
611
+ .dark\:text-green-300:where(.dark, .dark *) {
612
+ color: var(--color-green-300, oklch(87.1% 0.15 154.449));
613
+ }
614
+ .dark\:text-indigo-300:where(.dark, .dark *) {
615
+ color: var(--color-indigo-300, oklch(78.5% 0.115 274.713));
616
+ }
617
+ .dark\:text-orange-300:where(.dark, .dark *) {
618
+ color: var(--color-orange-300, oklch(83.7% 0.128 66.29));
619
+ }
620
+ .dark\:text-pink-300:where(.dark, .dark *) {
621
+ color: var(--color-pink-300, oklch(82.3% 0.12 346.018));
622
+ }
623
+ .dark\:text-purple-300:where(.dark, .dark *) {
624
+ color: var(--color-purple-300, oklch(82.7% 0.119 306.383));
625
+ }
626
+ .dark\:text-red-300:where(.dark, .dark *) {
627
+ color: var(--color-red-300, oklch(80.8% 0.114 19.571));
628
+ }
629
+ .dark\:text-yellow-300:where(.dark, .dark *) {
630
+ color: var(--color-yellow-300, oklch(90.5% 0.182 98.111));
631
+ }
632
+ }
633
+