@mainframework/dropzone 1.0.23 → 1.0.25

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.
package/README.md CHANGED
@@ -66,11 +66,11 @@ The hook returns the following:
66
66
 
67
67
  | Export | Description |
68
68
  | -------------- | ------------------------------------------------------------------------------------------------------------------------------ |
69
- | `FileSelector` | A pre-wired dropzone component. Renders a clickable area and hidden file input, with drag-and-drop handlers bound to the hook. |
69
+ | `FileSelector` | A pre-wired dropzone component returned **only** from `useFileSelector()` (not a separate import from `@mainframework/dropzone`). Renders a clickable area and hidden file input, with file and drag-and-drop handlers bound to that hook instance. |
70
70
 
71
- ### FileSelector Props
71
+ ### FileSelector props (`FileSelectorViewProps`)
72
72
 
73
- When rendering `FileSelector`, you can pass:
73
+ The `FileSelector` from the hook accepts **view-only** props (styling, copy, accessibility, `acceptTypes`). Do not pass `onChange` or drag handlers; the hook supplies those. When rendering it, you can pass:
74
74
 
75
75
  | Prop | Type | Default | Description |
76
76
  | --------------------------- | -------- | --------------------------------------------------------- | -------------------------------------------- |
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ChangeEvent, DragEvent } from 'react';
3
2
 
4
- interface FileSelectorProps {
3
+ /** Props for styling, copy, and accessibility on the dropzone. Used by the `FileSelector` returned from `useFileSelector`. */
4
+ interface FileSelectorViewProps {
5
5
  inputId?: string;
6
6
  acceptTypes?: string;
7
7
  messageParagraph?: string;
@@ -16,11 +16,6 @@ interface FileSelectorProps {
16
16
  /** Accessible label for the file input button when messageParagraph is not sufficient */
17
17
  ariaLabelButton?: string;
18
18
  ariaLabelledBy?: string;
19
- onChange: (e: ChangeEvent<HTMLInputElement>) => void;
20
- onDragOver: (e: DragEvent<HTMLButtonElement>) => void;
21
- onDrop: (e: DragEvent<HTMLButtonElement>) => void;
22
- onDragEnter: (e: DragEvent<HTMLButtonElement>) => void;
23
- onDragLeave: (e: DragEvent<HTMLButtonElement>) => void;
24
19
  }
25
20
  interface IFileUploaderProps {
26
21
  acceptTypes?: string;
@@ -54,7 +49,7 @@ declare const useFileSelector: ({ maximumUploadCount, maximumFileSize, acceptedT
54
49
  setMaximumFileSizeExceeded: (status?: boolean) => void;
55
50
  setMaximumUploadsExceeded: (status?: boolean, fileCount?: number, maximumUploads?: number) => void;
56
51
  FileSelector: {
57
- (props: Omit<FileSelectorProps, "onChange" | "onDragOver" | "onDrop" | "onDragEnter" | "onDragLeave">): react_jsx_runtime.JSX.Element;
52
+ (props: FileSelectorViewProps): react_jsx_runtime.JSX.Element;
58
53
  displayName: string;
59
54
  };
60
55
  };
package/dist/index.js CHANGED
@@ -642,7 +642,7 @@ const fromTheme = key => {
642
642
  };
643
643
  const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
644
644
  const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
645
- const fractionRegex = /^\d+\/\d+$/;
645
+ const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/;
646
646
  const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
647
647
  const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
648
648
  const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
@@ -768,6 +768,8 @@ const getDefaultConfig = () => {
768
768
  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
769
769
  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
770
770
  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
771
+ const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
772
+ const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
771
773
  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
772
774
  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
773
775
  position: [isArbitraryVariable, isArbitraryValue]
@@ -966,40 +968,66 @@ const getDefaultConfig = () => {
966
968
  */
967
969
  position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
968
970
  /**
969
- * Top / Right / Bottom / Left
971
+ * Inset
970
972
  * @see https://tailwindcss.com/docs/top-right-bottom-left
971
973
  */
972
974
  inset: [{
973
975
  inset: scaleInset()
974
976
  }],
975
977
  /**
976
- * Right / Left
978
+ * Inset Inline
977
979
  * @see https://tailwindcss.com/docs/top-right-bottom-left
978
980
  */
979
981
  'inset-x': [{
980
982
  'inset-x': scaleInset()
981
983
  }],
982
984
  /**
983
- * Top / Bottom
985
+ * Inset Block
984
986
  * @see https://tailwindcss.com/docs/top-right-bottom-left
985
987
  */
986
988
  'inset-y': [{
987
989
  'inset-y': scaleInset()
988
990
  }],
989
991
  /**
990
- * Start
992
+ * Inset Inline Start
991
993
  * @see https://tailwindcss.com/docs/top-right-bottom-left
994
+ * @todo class group will be renamed to `inset-s` in next major release
992
995
  */
993
996
  start: [{
997
+ 'inset-s': scaleInset(),
998
+ /**
999
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
1000
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
1001
+ */
994
1002
  start: scaleInset()
995
1003
  }],
996
1004
  /**
997
- * End
1005
+ * Inset Inline End
998
1006
  * @see https://tailwindcss.com/docs/top-right-bottom-left
1007
+ * @todo class group will be renamed to `inset-e` in next major release
999
1008
  */
1000
1009
  end: [{
1010
+ 'inset-e': scaleInset(),
1011
+ /**
1012
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
1013
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
1014
+ */
1001
1015
  end: scaleInset()
1002
1016
  }],
1017
+ /**
1018
+ * Inset Block Start
1019
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1020
+ */
1021
+ 'inset-bs': [{
1022
+ 'inset-bs': scaleInset()
1023
+ }],
1024
+ /**
1025
+ * Inset Block End
1026
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
1027
+ */
1028
+ 'inset-be': [{
1029
+ 'inset-be': scaleInset()
1030
+ }],
1003
1031
  /**
1004
1032
  * Top
1005
1033
  * @see https://tailwindcss.com/docs/top-right-bottom-left
@@ -1266,33 +1294,47 @@ const getDefaultConfig = () => {
1266
1294
  p: scaleUnambiguousSpacing()
1267
1295
  }],
1268
1296
  /**
1269
- * Padding X
1297
+ * Padding Inline
1270
1298
  * @see https://tailwindcss.com/docs/padding
1271
1299
  */
1272
1300
  px: [{
1273
1301
  px: scaleUnambiguousSpacing()
1274
1302
  }],
1275
1303
  /**
1276
- * Padding Y
1304
+ * Padding Block
1277
1305
  * @see https://tailwindcss.com/docs/padding
1278
1306
  */
1279
1307
  py: [{
1280
1308
  py: scaleUnambiguousSpacing()
1281
1309
  }],
1282
1310
  /**
1283
- * Padding Start
1311
+ * Padding Inline Start
1284
1312
  * @see https://tailwindcss.com/docs/padding
1285
1313
  */
1286
1314
  ps: [{
1287
1315
  ps: scaleUnambiguousSpacing()
1288
1316
  }],
1289
1317
  /**
1290
- * Padding End
1318
+ * Padding Inline End
1291
1319
  * @see https://tailwindcss.com/docs/padding
1292
1320
  */
1293
1321
  pe: [{
1294
1322
  pe: scaleUnambiguousSpacing()
1295
1323
  }],
1324
+ /**
1325
+ * Padding Block Start
1326
+ * @see https://tailwindcss.com/docs/padding
1327
+ */
1328
+ pbs: [{
1329
+ pbs: scaleUnambiguousSpacing()
1330
+ }],
1331
+ /**
1332
+ * Padding Block End
1333
+ * @see https://tailwindcss.com/docs/padding
1334
+ */
1335
+ pbe: [{
1336
+ pbe: scaleUnambiguousSpacing()
1337
+ }],
1296
1338
  /**
1297
1339
  * Padding Top
1298
1340
  * @see https://tailwindcss.com/docs/padding
@@ -1329,33 +1371,47 @@ const getDefaultConfig = () => {
1329
1371
  m: scaleMargin()
1330
1372
  }],
1331
1373
  /**
1332
- * Margin X
1374
+ * Margin Inline
1333
1375
  * @see https://tailwindcss.com/docs/margin
1334
1376
  */
1335
1377
  mx: [{
1336
1378
  mx: scaleMargin()
1337
1379
  }],
1338
1380
  /**
1339
- * Margin Y
1381
+ * Margin Block
1340
1382
  * @see https://tailwindcss.com/docs/margin
1341
1383
  */
1342
1384
  my: [{
1343
1385
  my: scaleMargin()
1344
1386
  }],
1345
1387
  /**
1346
- * Margin Start
1388
+ * Margin Inline Start
1347
1389
  * @see https://tailwindcss.com/docs/margin
1348
1390
  */
1349
1391
  ms: [{
1350
1392
  ms: scaleMargin()
1351
1393
  }],
1352
1394
  /**
1353
- * Margin End
1395
+ * Margin Inline End
1354
1396
  * @see https://tailwindcss.com/docs/margin
1355
1397
  */
1356
1398
  me: [{
1357
1399
  me: scaleMargin()
1358
1400
  }],
1401
+ /**
1402
+ * Margin Block Start
1403
+ * @see https://tailwindcss.com/docs/margin
1404
+ */
1405
+ mbs: [{
1406
+ mbs: scaleMargin()
1407
+ }],
1408
+ /**
1409
+ * Margin Block End
1410
+ * @see https://tailwindcss.com/docs/margin
1411
+ */
1412
+ mbe: [{
1413
+ mbe: scaleMargin()
1414
+ }],
1359
1415
  /**
1360
1416
  * Margin Top
1361
1417
  * @see https://tailwindcss.com/docs/margin
@@ -1418,6 +1474,48 @@ const getDefaultConfig = () => {
1418
1474
  size: [{
1419
1475
  size: scaleSizing()
1420
1476
  }],
1477
+ /**
1478
+ * Inline Size
1479
+ * @see https://tailwindcss.com/docs/width
1480
+ */
1481
+ 'inline-size': [{
1482
+ inline: ['auto', ...scaleSizingInline()]
1483
+ }],
1484
+ /**
1485
+ * Min-Inline Size
1486
+ * @see https://tailwindcss.com/docs/min-width
1487
+ */
1488
+ 'min-inline-size': [{
1489
+ 'min-inline': ['auto', ...scaleSizingInline()]
1490
+ }],
1491
+ /**
1492
+ * Max-Inline Size
1493
+ * @see https://tailwindcss.com/docs/max-width
1494
+ */
1495
+ 'max-inline-size': [{
1496
+ 'max-inline': ['none', ...scaleSizingInline()]
1497
+ }],
1498
+ /**
1499
+ * Block Size
1500
+ * @see https://tailwindcss.com/docs/height
1501
+ */
1502
+ 'block-size': [{
1503
+ block: ['auto', ...scaleSizingBlock()]
1504
+ }],
1505
+ /**
1506
+ * Min-Block Size
1507
+ * @see https://tailwindcss.com/docs/min-height
1508
+ */
1509
+ 'min-block-size': [{
1510
+ 'min-block': ['auto', ...scaleSizingBlock()]
1511
+ }],
1512
+ /**
1513
+ * Max-Block Size
1514
+ * @see https://tailwindcss.com/docs/max-height
1515
+ */
1516
+ 'max-block-size': [{
1517
+ 'max-block': ['none', ...scaleSizingBlock()]
1518
+ }],
1421
1519
  /**
1422
1520
  * Width
1423
1521
  * @see https://tailwindcss.com/docs/width
@@ -1506,6 +1604,13 @@ const getDefaultConfig = () => {
1506
1604
  'font-family': [{
1507
1605
  font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]
1508
1606
  }],
1607
+ /**
1608
+ * Font Feature Settings
1609
+ * @see https://tailwindcss.com/docs/font-feature-settings
1610
+ */
1611
+ 'font-features': [{
1612
+ 'font-features': [isArbitraryValue]
1613
+ }],
1509
1614
  /**
1510
1615
  * Font Variant Numeric
1511
1616
  * @see https://tailwindcss.com/docs/font-variant-numeric
@@ -1923,33 +2028,47 @@ const getDefaultConfig = () => {
1923
2028
  border: scaleBorderWidth()
1924
2029
  }],
1925
2030
  /**
1926
- * Border Width X
2031
+ * Border Width Inline
1927
2032
  * @see https://tailwindcss.com/docs/border-width
1928
2033
  */
1929
2034
  'border-w-x': [{
1930
2035
  'border-x': scaleBorderWidth()
1931
2036
  }],
1932
2037
  /**
1933
- * Border Width Y
2038
+ * Border Width Block
1934
2039
  * @see https://tailwindcss.com/docs/border-width
1935
2040
  */
1936
2041
  'border-w-y': [{
1937
2042
  'border-y': scaleBorderWidth()
1938
2043
  }],
1939
2044
  /**
1940
- * Border Width Start
2045
+ * Border Width Inline Start
1941
2046
  * @see https://tailwindcss.com/docs/border-width
1942
2047
  */
1943
2048
  'border-w-s': [{
1944
2049
  'border-s': scaleBorderWidth()
1945
2050
  }],
1946
2051
  /**
1947
- * Border Width End
2052
+ * Border Width Inline End
1948
2053
  * @see https://tailwindcss.com/docs/border-width
1949
2054
  */
1950
2055
  'border-w-e': [{
1951
2056
  'border-e': scaleBorderWidth()
1952
2057
  }],
2058
+ /**
2059
+ * Border Width Block Start
2060
+ * @see https://tailwindcss.com/docs/border-width
2061
+ */
2062
+ 'border-w-bs': [{
2063
+ 'border-bs': scaleBorderWidth()
2064
+ }],
2065
+ /**
2066
+ * Border Width Block End
2067
+ * @see https://tailwindcss.com/docs/border-width
2068
+ */
2069
+ 'border-w-be': [{
2070
+ 'border-be': scaleBorderWidth()
2071
+ }],
1953
2072
  /**
1954
2073
  * Border Width Top
1955
2074
  * @see https://tailwindcss.com/docs/border-width
@@ -2024,33 +2143,47 @@ const getDefaultConfig = () => {
2024
2143
  border: scaleColor()
2025
2144
  }],
2026
2145
  /**
2027
- * Border Color X
2146
+ * Border Color Inline
2028
2147
  * @see https://tailwindcss.com/docs/border-color
2029
2148
  */
2030
2149
  'border-color-x': [{
2031
2150
  'border-x': scaleColor()
2032
2151
  }],
2033
2152
  /**
2034
- * Border Color Y
2153
+ * Border Color Block
2035
2154
  * @see https://tailwindcss.com/docs/border-color
2036
2155
  */
2037
2156
  'border-color-y': [{
2038
2157
  'border-y': scaleColor()
2039
2158
  }],
2040
2159
  /**
2041
- * Border Color S
2160
+ * Border Color Inline Start
2042
2161
  * @see https://tailwindcss.com/docs/border-color
2043
2162
  */
2044
2163
  'border-color-s': [{
2045
2164
  'border-s': scaleColor()
2046
2165
  }],
2047
2166
  /**
2048
- * Border Color E
2167
+ * Border Color Inline End
2049
2168
  * @see https://tailwindcss.com/docs/border-color
2050
2169
  */
2051
2170
  'border-color-e': [{
2052
2171
  'border-e': scaleColor()
2053
2172
  }],
2173
+ /**
2174
+ * Border Color Block Start
2175
+ * @see https://tailwindcss.com/docs/border-color
2176
+ */
2177
+ 'border-color-bs': [{
2178
+ 'border-bs': scaleColor()
2179
+ }],
2180
+ /**
2181
+ * Border Color Block End
2182
+ * @see https://tailwindcss.com/docs/border-color
2183
+ */
2184
+ 'border-color-be': [{
2185
+ 'border-be': scaleColor()
2186
+ }],
2054
2187
  /**
2055
2188
  * Border Color Top
2056
2189
  * @see https://tailwindcss.com/docs/border-color
@@ -2911,33 +3044,47 @@ const getDefaultConfig = () => {
2911
3044
  'scroll-m': scaleUnambiguousSpacing()
2912
3045
  }],
2913
3046
  /**
2914
- * Scroll Margin X
3047
+ * Scroll Margin Inline
2915
3048
  * @see https://tailwindcss.com/docs/scroll-margin
2916
3049
  */
2917
3050
  'scroll-mx': [{
2918
3051
  'scroll-mx': scaleUnambiguousSpacing()
2919
3052
  }],
2920
3053
  /**
2921
- * Scroll Margin Y
3054
+ * Scroll Margin Block
2922
3055
  * @see https://tailwindcss.com/docs/scroll-margin
2923
3056
  */
2924
3057
  'scroll-my': [{
2925
3058
  'scroll-my': scaleUnambiguousSpacing()
2926
3059
  }],
2927
3060
  /**
2928
- * Scroll Margin Start
3061
+ * Scroll Margin Inline Start
2929
3062
  * @see https://tailwindcss.com/docs/scroll-margin
2930
3063
  */
2931
3064
  'scroll-ms': [{
2932
3065
  'scroll-ms': scaleUnambiguousSpacing()
2933
3066
  }],
2934
3067
  /**
2935
- * Scroll Margin End
3068
+ * Scroll Margin Inline End
2936
3069
  * @see https://tailwindcss.com/docs/scroll-margin
2937
3070
  */
2938
3071
  'scroll-me': [{
2939
3072
  'scroll-me': scaleUnambiguousSpacing()
2940
3073
  }],
3074
+ /**
3075
+ * Scroll Margin Block Start
3076
+ * @see https://tailwindcss.com/docs/scroll-margin
3077
+ */
3078
+ 'scroll-mbs': [{
3079
+ 'scroll-mbs': scaleUnambiguousSpacing()
3080
+ }],
3081
+ /**
3082
+ * Scroll Margin Block End
3083
+ * @see https://tailwindcss.com/docs/scroll-margin
3084
+ */
3085
+ 'scroll-mbe': [{
3086
+ 'scroll-mbe': scaleUnambiguousSpacing()
3087
+ }],
2941
3088
  /**
2942
3089
  * Scroll Margin Top
2943
3090
  * @see https://tailwindcss.com/docs/scroll-margin
@@ -2974,33 +3121,47 @@ const getDefaultConfig = () => {
2974
3121
  'scroll-p': scaleUnambiguousSpacing()
2975
3122
  }],
2976
3123
  /**
2977
- * Scroll Padding X
3124
+ * Scroll Padding Inline
2978
3125
  * @see https://tailwindcss.com/docs/scroll-padding
2979
3126
  */
2980
3127
  'scroll-px': [{
2981
3128
  'scroll-px': scaleUnambiguousSpacing()
2982
3129
  }],
2983
3130
  /**
2984
- * Scroll Padding Y
3131
+ * Scroll Padding Block
2985
3132
  * @see https://tailwindcss.com/docs/scroll-padding
2986
3133
  */
2987
3134
  'scroll-py': [{
2988
3135
  'scroll-py': scaleUnambiguousSpacing()
2989
3136
  }],
2990
3137
  /**
2991
- * Scroll Padding Start
3138
+ * Scroll Padding Inline Start
2992
3139
  * @see https://tailwindcss.com/docs/scroll-padding
2993
3140
  */
2994
3141
  'scroll-ps': [{
2995
3142
  'scroll-ps': scaleUnambiguousSpacing()
2996
3143
  }],
2997
3144
  /**
2998
- * Scroll Padding End
3145
+ * Scroll Padding Inline End
2999
3146
  * @see https://tailwindcss.com/docs/scroll-padding
3000
3147
  */
3001
3148
  'scroll-pe': [{
3002
3149
  'scroll-pe': scaleUnambiguousSpacing()
3003
3150
  }],
3151
+ /**
3152
+ * Scroll Padding Block Start
3153
+ * @see https://tailwindcss.com/docs/scroll-padding
3154
+ */
3155
+ 'scroll-pbs': [{
3156
+ 'scroll-pbs': scaleUnambiguousSpacing()
3157
+ }],
3158
+ /**
3159
+ * Scroll Padding Block End
3160
+ * @see https://tailwindcss.com/docs/scroll-padding
3161
+ */
3162
+ 'scroll-pbe': [{
3163
+ 'scroll-pbe': scaleUnambiguousSpacing()
3164
+ }],
3004
3165
  /**
3005
3166
  * Scroll Padding Top
3006
3167
  * @see https://tailwindcss.com/docs/scroll-padding
@@ -3135,15 +3296,15 @@ const getDefaultConfig = () => {
3135
3296
  conflictingClassGroups: {
3136
3297
  overflow: ['overflow-x', 'overflow-y'],
3137
3298
  overscroll: ['overscroll-x', 'overscroll-y'],
3138
- inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
3299
+ inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],
3139
3300
  'inset-x': ['right', 'left'],
3140
3301
  'inset-y': ['top', 'bottom'],
3141
3302
  flex: ['basis', 'grow', 'shrink'],
3142
3303
  gap: ['gap-x', 'gap-y'],
3143
- p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
3304
+ p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],
3144
3305
  px: ['pr', 'pl'],
3145
3306
  py: ['pt', 'pb'],
3146
- m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
3307
+ m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],
3147
3308
  mx: ['mr', 'ml'],
3148
3309
  my: ['mt', 'mb'],
3149
3310
  size: ['w', 'h'],
@@ -3163,18 +3324,18 @@ const getDefaultConfig = () => {
3163
3324
  'rounded-b': ['rounded-br', 'rounded-bl'],
3164
3325
  'rounded-l': ['rounded-tl', 'rounded-bl'],
3165
3326
  'border-spacing': ['border-spacing-x', 'border-spacing-y'],
3166
- 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
3327
+ 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
3167
3328
  'border-w-x': ['border-w-r', 'border-w-l'],
3168
3329
  'border-w-y': ['border-w-t', 'border-w-b'],
3169
- 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
3330
+ 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
3170
3331
  'border-color-x': ['border-color-r', 'border-color-l'],
3171
3332
  'border-color-y': ['border-color-t', 'border-color-b'],
3172
3333
  translate: ['translate-x', 'translate-y', 'translate-none'],
3173
3334
  'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
3174
- 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
3335
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
3175
3336
  'scroll-mx': ['scroll-mr', 'scroll-ml'],
3176
3337
  'scroll-my': ['scroll-mt', 'scroll-mb'],
3177
- 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
3338
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
3178
3339
  'scroll-px': ['scroll-pr', 'scroll-pl'],
3179
3340
  'scroll-py': ['scroll-pt', 'scroll-pb'],
3180
3341
  touch: ['touch-x', 'touch-y', 'touch-pz'],
@@ -3219,7 +3380,7 @@ function styleInject(css, ref) {
3219
3380
  }
3220
3381
  }
3221
3382
 
3222
- var css_248z = "/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-yellow-400:oklch(85.2% .199 91.936);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--spacing:.25rem;--font-weight-bold:700;--radius-md:.375rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:var(--default-font-feature-settings,normal);-webkit-tap-highlight-color:transparent;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:var(--default-mono-font-feature-settings,normal);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{font-feature-settings:inherit;background-color:#0000;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{font-feature-settings:inherit;background-color:#0000;border-radius:0;color:inherit;font:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.flex{display:flex}.hidden{display:none}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\\[120px\\]{min-height:120px}.w-full{width:100%}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-inherit{background-color:inherit}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.text-center{text-align:center}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-gray-600{color:var(--color-gray-600)}.text-inherit{color:inherit}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.hover\\:border-gray-400:hover{border-color:var(--color-gray-400)}}}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hiddenInput{display:none}.glow-border{border:2px dotted #0000;border-image:linear-gradient(45deg,#0ff,#f0f) 1;box-shadow:0 0 10px #00ffffb3}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}";
3383
+ var css_248z = "/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.file-selector-scope *,.file-selector-scope ::backdrop,.file-selector-scope :after,.file-selector-scope :before{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{.file-selector-scope,.file-selector-scope :host{--color-yellow-400:oklch(85.2% .199 91.936);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--spacing:.25rem;--font-weight-bold:700;--radius-md:.375rem}}@layer base,components;@layer utilities{.file-selector-scope .flex{display:flex}.file-selector-scope .h-full{height:100%}.file-selector-scope .min-h-0{min-height:calc(var(--spacing)*0)}.file-selector-scope .min-h-\\[120px\\]{min-height:120px}.file-selector-scope .w-full{width:100%}.file-selector-scope .flex-1{flex:1}.file-selector-scope .cursor-pointer{cursor:pointer}.file-selector-scope .flex-col{flex-direction:column}.file-selector-scope .rounded-md{border-radius:var(--radius-md)}.file-selector-scope .border{border-style:var(--tw-border-style);border-width:1px}.file-selector-scope .border-2{border-style:var(--tw-border-style);border-width:2px}.file-selector-scope .border-dashed{--tw-border-style:dashed;border-style:dashed}.file-selector-scope .border-gray-300{border-color:var(--color-gray-300)}.file-selector-scope .border-gray-500{border-color:var(--color-gray-500)}.file-selector-scope .border-yellow-400{border-color:var(--color-yellow-400)}.file-selector-scope .bg-inherit{background-color:inherit}.file-selector-scope .p-4{padding:calc(var(--spacing)*4)}.file-selector-scope .px-4{padding-inline:calc(var(--spacing)*4)}.file-selector-scope .py-2{padding-block:calc(var(--spacing)*2)}.file-selector-scope .text-center{text-align:center}.file-selector-scope .font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.file-selector-scope .text-gray-600{color:var(--color-gray-600)}.file-selector-scope .text-inherit{color:inherit}.file-selector-scope .shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.file-selector-scope .hover\\:border-gray-400:hover{border-color:var(--color-gray-400)}}}.file-selector-scope .hiddenInput{display:none}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}";
3223
3384
  styleInject(css_248z);
3224
3385
 
3225
3386
  const withDragDefaults = (handler) => {
@@ -3231,6 +3392,7 @@ const withDragDefaults = (handler) => {
3231
3392
  };
3232
3393
 
3233
3394
  const defaultAcceptTypes = ".png, .jpg, .jpeg, .pdf, .svg, image/svg+xml, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document";
3395
+ const SCOPE_CLASS = "file-selector-scope";
3234
3396
  const defaultInputClassName = "hiddenInput";
3235
3397
  const defaultClickableAreaClassName = "dropzone border-dashed border-2 border-gray-500 p-4 rounded-md text-center cursor-pointer bg-inherit hover:border-gray-400 text-inherit font-bold py-2 px-4";
3236
3398
  const defaultDropZoneWrapperClassName = "flex flex-col min-h-[120px] border border-gray-300 rounded-md shadow-md";
@@ -3269,7 +3431,7 @@ onChange, onDragOver, onDrop, onDragEnter, onDragLeave, }) => {
3269
3431
  const resolvedDropZoneWrapperClassName = mergeStyles(dropZoneWrapperClassName ?? defaultDropZoneWrapperClassName);
3270
3432
  const resolvedMessageParagraphClassName = mergeStyles(messageParagraphClassName ?? defaultMessageParagraphClassName);
3271
3433
  const resolvedInputId = inputId ?? messageId;
3272
- return (jsxs("div", { role: "group", "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, className: resolvedDropZoneWrapperClassName, draggable: false, children: [jsx("button", { type: "button", className: resolvedClickableAreaClassName, onClick: internalOnClick, onDragOver: internalOnDragOver, onDrop: internalOnDrop, onDragEnter: internalOnDragEnter, onDragLeave: internalOnDragLeave, draggable: false, "aria-label": ariaLabelButton, "aria-labelledby": ariaLabelledBy ?? messageId, "aria-controls": resolvedInputId, "aria-haspopup": "dialog", children: jsx("p", { id: messageId, className: resolvedMessageParagraphClassName, children: messageParagraph }) }), jsx("input", { ref: fileInputRef, id: resolvedInputId, type: "file", className: inputClasses, onChange: onChange, accept: acceptTypes, multiple: true, "aria-hidden": "true", tabIndex: -1 })] }));
3434
+ return (jsxs("div", { role: "group", "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, className: mergeStyles(SCOPE_CLASS, resolvedDropZoneWrapperClassName), draggable: false, children: [jsx("button", { type: "button", className: resolvedClickableAreaClassName, onClick: internalOnClick, onDragOver: internalOnDragOver, onDrop: internalOnDrop, onDragEnter: internalOnDragEnter, onDragLeave: internalOnDragLeave, draggable: false, "aria-label": ariaLabelButton, "aria-labelledby": ariaLabelledBy ?? messageId, "aria-controls": resolvedInputId, "aria-haspopup": "dialog", children: jsx("p", { id: messageId, className: resolvedMessageParagraphClassName, children: messageParagraph }) }), jsx("input", { ref: fileInputRef, id: resolvedInputId, type: "file", className: inputClasses, onChange: onChange, accept: acceptTypes, multiple: true, "aria-hidden": "true", tabIndex: -1 })] }));
3273
3435
  };
3274
3436
  const FileSelector = memo(FileSelectorComponent);
3275
3437
  FileSelector.displayName = "FileSelector";
@@ -3441,21 +3603,16 @@ const useFileSelector = ({ maximumUploadCount: maximumUploadCount$1 = maximumUpl
3441
3603
  clearTimeout(timeoutId);
3442
3604
  }, 200);
3443
3605
  }, []);
3444
- // const FileSelectorRef = useRef(() => (
3445
- // <FileSelector
3446
- // acceptTypes={acceptTypes}
3447
- // onChange={onInputChange}
3448
- // onDragOver={onDragOver}
3449
- // onDrop={onDrop}
3450
- // onDragEnter={onDragEnter}
3451
- // onDragLeave={onDragLeave}
3452
- // />
3453
- // ));
3454
- // In useFileSelector.ts, create a wrapper component
3455
3606
  const createFileSelectorComponent = (handlers) => {
3456
- // Return a component that accepts only the visual/accessibility props
3457
- const Component = (props) => (jsx(FileSelector, { ...props, onChange: handlers.onInputChange, onDragOver: handlers.onDragOver, onDrop: handlers.onDrop, onDragEnter: handlers.onDragEnter, onDragLeave: handlers.onDragLeave }));
3458
- Component.displayName = "FileSelectorWrapper"; // <-- fix the ESLint warning
3607
+ const handlerProps = {
3608
+ onChange: handlers.onInputChange,
3609
+ onDragOver: handlers.onDragOver,
3610
+ onDrop: handlers.onDrop,
3611
+ onDragEnter: handlers.onDragEnter,
3612
+ onDragLeave: handlers.onDragLeave,
3613
+ };
3614
+ const Component = (props) => jsx(FileSelector, { ...props, ...handlerProps });
3615
+ Component.displayName = "FileSelectorWrapper";
3459
3616
  return Component;
3460
3617
  };
3461
3618
  // Then in the hook's return: