@box-kite/react 2.2.5 → 2.2.7

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 (105) hide show
  1. package/.claude/rules/box-kite-rules.md +5 -1
  2. package/.claude/skills/box-kite/SKILL.md +5 -1
  3. package/.claude/skills/box-kite/references/components.md +34 -0
  4. package/.claude/skills/box-kite/references/extending.md +10 -0
  5. package/.claude/skills/box-kite/references/styling.md +3 -2
  6. package/.cursor/rules/box-kite.mdc +5 -1
  7. package/AGENTS.md +5 -1
  8. package/BOX_AI_CONTEXT.md +147 -7
  9. package/BOX_KITE_AI_CONTEXT.md +147 -7
  10. package/box.cjs +1 -1
  11. package/box.d.ts +5 -0
  12. package/box.mjs +7 -7
  13. package/catalog.cjs +1 -1
  14. package/catalog.mjs +521 -0
  15. package/client.cjs +1 -1
  16. package/client.mjs +136 -117
  17. package/components/calendar.cjs +1 -0
  18. package/components/calendar.d.ts +77 -0
  19. package/components/calendar.mjs +483 -0
  20. package/components/dataGrid/components/dataGridBooleanValue.d.ts +11 -0
  21. package/components/dataGrid/components/dataGridDateParts.d.ts +40 -0
  22. package/components/dataGrid/components/dataGridDateValue.d.ts +14 -0
  23. package/components/dataGrid/contracts/dataGridContract.d.ts +38 -11
  24. package/components/dataGrid/models/columnModel.d.ts +3 -1
  25. package/components/dataGrid/models/editModel.d.ts +3 -1
  26. package/components/dataGrid/models/headerCellModel.d.ts +1 -0
  27. package/components/dataGrid/models/localeText.d.ts +4 -0
  28. package/components/dataGrid/useDateParts.d.ts +17 -0
  29. package/components/dataGrid.cjs +3 -3
  30. package/components/dataGrid.mjs +824 -690
  31. package/components/dateField.cjs +1 -0
  32. package/components/dateField.d.ts +78 -0
  33. package/components/dateField.mjs +313 -0
  34. package/components/datePicker.cjs +1 -0
  35. package/components/datePicker.d.ts +120 -0
  36. package/components/datePicker.mjs +529 -0
  37. package/components/dateTime.cjs +1 -0
  38. package/components/dateTime.d.ts +23 -0
  39. package/components/dateTime.mjs +34 -0
  40. package/components/dialog.cjs +1 -1
  41. package/components/dialog.mjs +87 -75
  42. package/components/overlay.cjs +1 -1
  43. package/components/overlay.mjs +1 -1
  44. package/components/semantics.d.ts +29 -29
  45. package/components/timeZoneSelect.cjs +1 -0
  46. package/components/timeZoneSelect.d.ts +52 -0
  47. package/components/timeZoneSelect.mjs +74 -0
  48. package/components/toaster.cjs +1 -1
  49. package/components/toaster.mjs +1 -1
  50. package/create/src/index.d.ts +1 -0
  51. package/create/src/options.d.ts +27 -0
  52. package/create/src/options.test.d.ts +1 -0
  53. package/create/src/packageManager.d.ts +5 -0
  54. package/create/src/project.d.ts +25 -0
  55. package/create/src/project.test.d.ts +1 -0
  56. package/create/templates/ts/designs/azure.d.ts +5 -0
  57. package/create/templates/ts/designs/ember.d.ts +5 -0
  58. package/create/templates/ts/designs/mono.d.ts +5 -0
  59. package/create/templates/ts/src/App.d.ts +2 -0
  60. package/create/templates/ts/src/design.d.ts +5 -0
  61. package/create/templates/ts/src/main.d.ts +0 -0
  62. package/dataGridDateParts.cjs +1 -0
  63. package/dataGridDateParts.mjs +223 -0
  64. package/dataGridList.cjs +1 -1
  65. package/dataGridList.mjs +335 -372
  66. package/dataGridListLayout.cjs +1 -0
  67. package/dataGridListLayout.mjs +49 -0
  68. package/date-environment.cjs +1 -0
  69. package/date-environment.mjs +29 -0
  70. package/date-input.cjs +1 -0
  71. package/date-input.mjs +346 -0
  72. package/date-math.cjs +1 -0
  73. package/date-math.mjs +317 -0
  74. package/date.cjs +1 -0
  75. package/date.d.ts +40 -0
  76. package/date.mjs +4 -0
  77. package/dates.cjs +1 -0
  78. package/dates.mjs +689 -0
  79. package/docs/components.md +6 -1
  80. package/docs/props.md +19 -19
  81. package/package.json +124 -27
  82. package/react/boxComponent.d.ts +1 -1
  83. package/react/date/dateChange.d.ts +18 -0
  84. package/react/date/dateEnvironment.d.ts +34 -0
  85. package/react/theme/theme.d.ts +9 -0
  86. package/react/theme/themeContext.d.ts +2 -0
  87. package/react-shared.cjs +1 -1
  88. package/react-shared.mjs +1 -1
  89. package/rsc.cjs +1 -1
  90. package/rsc.d.ts +3 -0
  91. package/rsc.mjs +1 -1
  92. package/ssg.cjs +1 -1
  93. package/ssg.mjs +1 -1
  94. package/utils/date/calendar.d.ts +44 -0
  95. package/utils/date/calendarModel.d.ts +46 -0
  96. package/utils/date/dateTime.d.ts +144 -0
  97. package/utils/date/fieldModel.d.ts +74 -0
  98. package/utils/date/format.d.ts +39 -0
  99. package/utils/date/iso.d.ts +40 -0
  100. package/utils/date/locale.d.ts +17 -0
  101. package/utils/date/parse.d.ts +20 -0
  102. package/utils/date/settings.d.ts +26 -0
  103. package/utils/date/value.d.ts +43 -0
  104. package/utils/date/zoneOptions.d.ts +19 -0
  105. package/utils/date/zones.d.ts +32 -0
package/docs/props.md CHANGED
@@ -13,7 +13,7 @@ A prop that is not here does not exist: reach for `css={{ … }}` for a one-off,
13
13
  The accent-color CSS property tints the parts of a native control the page does not draw: a checkbox's tick, a radio's dot, a range track, a progress bar. The one way to brand them without `appearance="none"` and a rebuild, and it inherits — set it once on a form.
14
14
 
15
15
  - Writes: `accent-color`
16
- - Values: 304 named values, anything else the types allow
16
+ - Values: 326 named values, anything else the types allow
17
17
  - Example: `accentColor="sky-500"` → `accent-color: var(--sky-500,oklch(68.5% .169 237.3))`
18
18
 
19
19
  ### `ai`
@@ -285,15 +285,15 @@ Which box the background is painted inside — and `text`, which clips it to the
285
285
  The background-color CSS property sets the background color of an element.
286
286
 
287
287
  - Writes: `background-color`
288
- - Values: 304 named values, anything else the types allow
288
+ - Values: 326 named values, anything else the types allow
289
289
  - Example: `bgColor="sky-500"` → `background-color: var(--sky-500,oklch(68.5% .169 237.3))`
290
290
 
291
291
  ### `bgGradient`
292
292
 
293
- A gradient written as a value: the key names the kind and carries its geometry (`linear` a direction or an angle, `radial` a shape, `conic` an angle to start from), `colors` are the stops in order — a palette token, one with an opacity modifier, or a `[colour, position]` pair. `interpolate="oklch"` is what keeps a two-stop gradient out of the grey middle sRGB runs it through. Writes `background-image`, so it and `bgImage` are the same property: use one.
293
+ A gradient written as a value: the key names the kind and carries its geometry (`linear` a direction or an angle, `radial` a shape, `conic` an angle to start from), `colors` are the stops in order — a palette token, one with an opacity modifier, or a `[colour, position]` pair. `interpolate="oklch"` is what keeps a two-stop gradient out of the grey middle sRGB runs it through. Writes `background-image`, so it and `bgImage` are the same property: use one. `'none'` clears it — the only way a variant or a design can take a gradient back off, since `bgGradient` is declared after `bgImage` and wins the property.
294
294
 
295
295
  - Writes: `background-image`
296
- - Values: whatever the types allow
296
+ - Values: `none`, anything else the types allow
297
297
  - Example: `bgGradient={{ linear: 'r', colors: ['blue-500', 'pink-500'] }}` → `background-image: linear-gradient(to right,var(--blue-500,oklch(62.3% .214 259.8)),var(--pink-500,oklch(65.6% .241 354.3)))`
298
298
 
299
299
  ### `bgImage`
@@ -333,7 +333,7 @@ Whether a table's cell borders are shared or every cell keeps its own. `collapse
333
333
  The border-color shorthand CSS property sets the color of an element's border.
334
334
 
335
335
  - Writes: `border-color`
336
- - Values: 304 named values, anything else the types allow
336
+ - Values: 326 named values, anything else the types allow
337
337
  - Example: `borderColor="sky-500"` → `border-color: var(--sky-500,oklch(68.5% .169 237.3))`
338
338
 
339
339
  ### `borderRadius`
@@ -541,7 +541,7 @@ The border-width shorthand CSS property sets the width of an element's top and b
541
541
  The caret-color CSS property sets the colour of the insertion caret in a text field or any editable element.
542
542
 
543
543
  - Writes: `caret-color`
544
- - Values: 304 named values, anything else the types allow
544
+ - Values: 326 named values, anything else the types allow
545
545
  - Example: `caretColor="sky-500"` → `caret-color: var(--sky-500,oklch(68.5% .169 237.3))`
546
546
 
547
547
  ### `clipPath`
@@ -557,7 +557,7 @@ The clip-path CSS property creates a clipping region that sets what part of an e
557
557
  The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.
558
558
 
559
559
  - Writes: `color`
560
- - Values: 304 named values, anything else the types allow
560
+ - Values: 326 named values, anything else the types allow
561
561
  - Example: `color="sky-500"` → `color: var(--sky-500,oklch(68.5% .169 237.3))`
562
562
 
563
563
  ### `colorScheme`
@@ -693,7 +693,7 @@ A shadow cast by the element's *shape* rather than its box — the one that foll
693
693
  What colour `dropShadow` draws in. Shows nothing on its own.
694
694
 
695
695
  - Writes: `--boxDropShadowColor`
696
- - Values: 304 named values, anything else the types allow
696
+ - Values: 326 named values, anything else the types allow
697
697
  - Example: `dropShadowColor="sky-500"` → `--boxDropShadowColor: var(--sky-500,oklch(68.5% .169 237.3))`
698
698
 
699
699
  ### `fieldSizing`
@@ -709,7 +709,7 @@ The field-sizing CSS property lets a form control size itself to its content: `f
709
709
  The fill CSS property defines how SVG text content and the interior canvas of SVG shapes are filled or painted. If present, it overrides the element's fill attribute. Takes a colour token, a paint server the document defines (`fill="url(#sky)"` — a `<LinearGradient>` or a pattern) or a variable somebody else declared (`fill="var(--chart-1)"`).
710
710
 
711
711
  - Writes: `fill`
712
- - Values: 304 named values, anything else the types allow
712
+ - Values: 326 named values, anything else the types allow
713
713
  - Example: `fill="sky-500"` → `fill: var(--sky-500,oklch(68.5% .169 237.3))`
714
714
 
715
715
  ### `fillOpacity`
@@ -925,7 +925,7 @@ The same ring, drawn inside the border box: an inner hairline that needs no seco
925
925
  What colour `insetRing` draws in. `currentColor` otherwise.
926
926
 
927
927
  - Writes: `--boxInsetRingColor`
928
- - Values: 304 named values, anything else the types allow
928
+ - Values: 326 named values, anything else the types allow
929
929
  - Example: `insetRingColor="sky-500"` → `--boxInsetRingColor: var(--sky-500,oklch(68.5% .169 237.3))`
930
930
 
931
931
  ### `insetShadow`
@@ -941,7 +941,7 @@ A shadow drawn inside the border box: `xxs`, `xs` or `sm`. Its own layer, so it
941
941
  What colour `insetShadow` draws in. Shows nothing on its own.
942
942
 
943
943
  - Writes: `--boxInsetShadowColor`
944
- - Values: 304 named values, anything else the types allow
944
+ - Values: 326 named values, anything else the types allow
945
945
  - Example: `insetShadowColor="sky-500"` → `--boxInsetShadowColor: var(--sky-500,oklch(68.5% .169 237.3))`
946
946
 
947
947
  ### `insetStart`
@@ -1018,10 +1018,10 @@ The left CSS property participates in specifying the horizontal position of a po
1018
1018
 
1019
1019
  ### `letterSpacing`
1020
1020
 
1021
- The letter-spacing CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of letter-spacing causes characters to spread farther apart, while negative values of letter-spacing bring characters closer together.
1021
+ The letter-spacing CSS property sets the horizontal spacing behavior between text characters. This value is added to the natural spacing between characters while rendering the text. Positive values of letter-spacing causes characters to spread farther apart, while negative values of letter-spacing bring characters closer together. A number is pixels; Tailwind's tracking names (`tighter` … `widest`) are in `em`, so they scale with the text — what a display heading wants.
1022
1022
 
1023
1023
  - Writes: `letter-spacing`
1024
- - Values: a number
1024
+ - Values: `tighter` · `tight` · `normal` · `wide` · `wider` · `widest`, a number
1025
1025
  - Example: `letterSpacing={4}` → `letter-spacing: 4px`
1026
1026
 
1027
1027
  ### `lineHeight`
@@ -1189,7 +1189,7 @@ The CSS outline-width property sets the thickness of an element's outline. An ou
1189
1189
  The outline-color CSS property sets the color of an element's outline.
1190
1190
 
1191
1191
  - Writes: `outline-color`
1192
- - Values: 304 named values, anything else the types allow
1192
+ - Values: 326 named values, anything else the types allow
1193
1193
  - Example: `outlineColor="sky-500"` → `outline-color: var(--sky-500,oklch(68.5% .169 237.3))`
1194
1194
 
1195
1195
  ### `outlineOffset`
@@ -1421,7 +1421,7 @@ A hard-edged shadow outside the border box, in px — `ring={2}`. Unlike `outlin
1421
1421
  What colour `ring` draws in. `currentColor` otherwise.
1422
1422
 
1423
1423
  - Writes: `--boxRingColor`
1424
- - Values: 304 named values, anything else the types allow
1424
+ - Values: 326 named values, anything else the types allow
1425
1425
  - Example: `ringColor="sky-500"` → `--boxRingColor: var(--sky-500,oklch(68.5% .169 237.3))`
1426
1426
 
1427
1427
  ### `rotate`
@@ -1477,7 +1477,7 @@ The scale CSS property lets you specify scale transforms individually and indepe
1477
1477
  The scrollbar-color CSS property sets the color of the scrollbar thumb and track. The value pair is [thumbColor, trackColor].
1478
1478
 
1479
1479
  - Writes: `scrollbar-color`
1480
- - Values: `currentColor,transparent,green,red,blue,gray,black,white,vi,slate-50,slate-100,slate-200,slate-300,slate-400,slate-500,slate-600,slate-700,slate-800,slate-900,slate-950,gray-50,gray-100,gray-200,gray-300,gray-400,gray-500,gray-600,gray-700,gray-800,gray-900,gray-950,zinc-50,zinc-100,zinc-200,zinc-300,zinc-400,zinc-500,zinc-600,zinc-700,zinc-800,zinc-900,zinc-950,neutral-50,neutral-100,neutral-200,neutral-300,neutral-400,neutral-500,neutral-600,neutral-700,neutral-800,neutral-900,neutral-950,stone-50,stone-100,stone-200,stone-300,stone-400,stone-500,stone-600,stone-700,stone-800,stone-900,stone-950,mauve-50,mauve-100,mauve-200,mauve-300,mauve-400,mauve-500,mauve-600,mauve-700,mauve-800,mauve-900,mauve-950,mist-50,mist-100,mist-200,mist-300,mist-400,mist-500,mist-600,mist-700,mist-800,mist-900,mist-950,olive-50,olive-100,olive-200,olive-300,olive-400,olive-500,olive-600,olive-700,olive-800,olive-900,olive-950,taupe-50,taupe-100,taupe-200,taupe-300,taupe-400,taupe-500,taupe-600,taupe-700,taupe-800,taupe-900,taupe-950,red-50,red-100,red-200,red-300,red-400,red-500,red-600,red-700,red-800,red-900,red-950,orange-50,orange-100,orange-200,orange-300,orange-400,orange-500,orange-600,orange-700,orange-800,orange-900,orange-950,amber-50,amber-100,amber-200,amber-300,amber-400,amber-500,amber-600,amber-700,amber-800,amber-900,amber-950,yellow-50,yellow-100,yellow-200,yellow-300,yellow-400,yellow-500,yellow-600,yellow-700,yellow-800,yellow-900,yellow-950,lime-50,lime-100,lime-200,lime-300,lime-400,lime-500,lime-600,lime-700,lime-800,lime-900,lime-950,green-50,green-100,green-200,green-300,green-400,green-500,green-600,green-700,green-800,green-900,green-950,emerald-50,emerald-100,emerald-200,emerald-300,emerald-400,emerald-500,emerald-600,emerald-700,emerald-800,emerald-900,emerald-950,teal-50,teal-100,teal-200,teal-300,teal-400,teal-500,teal-600,teal-700,teal-800,teal-900,teal-950,cyan-50,cyan-100,cyan-200,cyan-300,cyan-400,cyan-500,cyan-600,cyan-700,cyan-800,cyan-900,cyan-950,sky-50,sky-100,sky-200,sky-300,sky-400,sky-500,sky-600,sky-700,sky-800,sky-900,sky-950,blue-50,blue-100,blue-200,blue-300,blue-400,blue-500,blue-600,blue-700,blue-800,blue-900,blue-950,indigo-50,indigo-100,indigo-200,indigo-300,indigo-400,indigo-500,indigo-600,indigo-700,indigo-800,indigo-900,indigo-950,violet-50,violet-100,violet-200,violet-300,violet-400,violet-500,violet-600,violet-700,violet-800,violet-900,violet-950,purple-50,purple-100,purple-200,purple-300,purple-400,purple-500,purple-600,purple-700,purple-800,purple-900,purple-950,fuchsia-50,fuchsia-100,fuchsia-200,fuchsia-300,fuchsia-400,fuchsia-500,fuchsia-600,fuchsia-700,fuchsia-800,fuchsia-900,fuchsia-950,pink-50,pink-100,pink-200,pink-300,pink-400,pink-500,pink-600,pink-700,pink-800,pink-900,pink-950,rose-50,rose-100,rose-200,rose-300,rose-400,rose-500,rose-600,rose-700,rose-800,rose-900,rose-950,none`
1480
+ - Values: `currentColor,transparent,green,red,blue,gray,black,white,vi,slate-50,slate-100,slate-200,slate-300,slate-400,slate-500,slate-600,slate-700,slate-800,slate-900,slate-950,gray-50,gray-100,gray-200,gray-300,gray-400,gray-500,gray-600,gray-700,gray-800,gray-900,gray-950,zinc-50,zinc-100,zinc-200,zinc-300,zinc-400,zinc-500,zinc-600,zinc-700,zinc-800,zinc-900,zinc-950,neutral-50,neutral-100,neutral-200,neutral-300,neutral-400,neutral-500,neutral-600,neutral-700,neutral-800,neutral-900,neutral-950,stone-50,stone-100,stone-200,stone-300,stone-400,stone-500,stone-600,stone-700,stone-800,stone-900,stone-950,mauve-50,mauve-100,mauve-200,mauve-300,mauve-400,mauve-500,mauve-600,mauve-700,mauve-800,mauve-900,mauve-950,mist-50,mist-100,mist-200,mist-300,mist-400,mist-500,mist-600,mist-700,mist-800,mist-900,mist-950,olive-50,olive-100,olive-200,olive-300,olive-400,olive-500,olive-600,olive-700,olive-800,olive-900,olive-950,taupe-50,taupe-100,taupe-200,taupe-300,taupe-400,taupe-500,taupe-600,taupe-700,taupe-800,taupe-900,taupe-950,red-50,red-100,red-200,red-300,red-400,red-500,red-600,red-700,red-800,red-900,red-950,orange-50,orange-100,orange-200,orange-300,orange-400,orange-500,orange-600,orange-700,orange-800,orange-900,orange-950,amber-50,amber-100,amber-200,amber-300,amber-400,amber-500,amber-600,amber-700,amber-800,amber-900,amber-950,yellow-50,yellow-100,yellow-200,yellow-300,yellow-400,yellow-500,yellow-600,yellow-700,yellow-800,yellow-900,yellow-950,lime-50,lime-100,lime-200,lime-300,lime-400,lime-500,lime-600,lime-700,lime-800,lime-900,lime-950,green-50,green-100,green-200,green-300,green-400,green-500,green-600,green-700,green-800,green-900,green-950,emerald-50,emerald-100,emerald-200,emerald-300,emerald-400,emerald-500,emerald-600,emerald-700,emerald-800,emerald-900,emerald-950,teal-50,teal-100,teal-200,teal-300,teal-400,teal-500,teal-600,teal-700,teal-800,teal-900,teal-950,cyan-50,cyan-100,cyan-200,cyan-300,cyan-400,cyan-500,cyan-600,cyan-700,cyan-800,cyan-900,cyan-950,sky-50,sky-100,sky-200,sky-300,sky-400,sky-500,sky-600,sky-700,sky-800,sky-900,sky-950,blue-50,blue-100,blue-200,blue-300,blue-400,blue-500,blue-600,blue-700,blue-800,blue-900,blue-950,indigo-50,indigo-100,indigo-200,indigo-300,indigo-400,indigo-500,indigo-600,indigo-700,indigo-800,indigo-900,indigo-950,violet-50,violet-100,violet-200,violet-300,violet-400,violet-500,violet-600,violet-700,violet-800,violet-900,violet-950,purple-50,purple-100,purple-200,purple-300,purple-400,purple-500,purple-600,purple-700,purple-800,purple-900,purple-950,fuchsia-50,fuchsia-100,fuchsia-200,fuchsia-300,fuchsia-400,fuchsia-500,fuchsia-600,fuchsia-700,fuchsia-800,fuchsia-900,fuchsia-950,pink-50,pink-100,pink-200,pink-300,pink-400,pink-500,pink-600,pink-700,pink-800,pink-900,pink-950,rose-50,rose-100,rose-200,rose-300,rose-400,rose-500,rose-600,rose-700,rose-800,rose-900,rose-950,accent-50,accent-100,accent-200,accent-300,accent-400,accent-500,accent-600,accent-700,accent-800,accent-900,accent-950,base-50,base-100,base-200,base-300,base-400,base-500,base-600,base-700,base-800,base-900,base-950,none`
1481
1481
  - Example: `scrollbarColor={['gray-400', 'gray-100']}` → `scrollbar-color: var(--gray-400,oklch(70.7% .022 261.3)) var(--gray-100,oklch(96.7% .003 264.5))`
1482
1482
 
1483
1483
  ### `scrollbarGutter`
@@ -1541,7 +1541,7 @@ The elevation of the box: `xxs` through `xxl` on the elevation scale, or one of
1541
1541
  What colour `shadow` draws in — the scale's own translucent black otherwise. Shows nothing on its own.
1542
1542
 
1543
1543
  - Writes: `--boxShadowColor`
1544
- - Values: 304 named values, anything else the types allow
1544
+ - Values: 326 named values, anything else the types allow
1545
1545
  - Example: `shadowColor="sky-500"` → `--boxShadowColor: var(--sky-500,oklch(68.5% .169 237.3))`
1546
1546
 
1547
1547
  ### `shapeRendering`
@@ -1557,7 +1557,7 @@ The shape-rendering CSS property tells the renderer what to trade away when draw
1557
1557
  The stroke CSS property defines the color or SVG paint server used to draw an element's stroke. Takes a colour token, `stroke="url(#sky)"` for a paint server the document defines, or `stroke="var(--chart-1)"` for a variable somebody else declared.
1558
1558
 
1559
1559
  - Writes: `stroke`
1560
- - Values: 304 named values, anything else the types allow
1560
+ - Values: 326 named values, anything else the types allow
1561
1561
  - Example: `stroke="sky-500"` → `stroke: var(--sky-500,oklch(68.5% .169 237.3))`
1562
1562
 
1563
1563
  ### `strokeDasharray`
@@ -1669,7 +1669,7 @@ A shadow behind the text rather than the box: `xxs` through `lg`, recoloured by
1669
1669
  What colour `textShadow` draws in. Shows nothing on its own.
1670
1670
 
1671
1671
  - Writes: `--boxTextShadowColor`
1672
- - Values: 304 named values, anything else the types allow
1672
+ - Values: 326 named values, anything else the types allow
1673
1673
  - Example: `textShadowColor="sky-500"` → `--boxTextShadowColor: var(--sky-500,oklch(68.5% .169 237.3))`
1674
1674
 
1675
1675
  ### `textTransform`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box-kite/react",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "pages/**"
@@ -44,6 +44,11 @@
44
44
  "import": "./interop.mjs",
45
45
  "require": "./interop.cjs"
46
46
  },
47
+ "./date": {
48
+ "types": "./date.d.ts",
49
+ "import": "./date.mjs",
50
+ "require": "./date.cjs"
51
+ },
47
52
  "./spec": {
48
53
  "types": "./spec.d.ts",
49
54
  "import": "./spec.mjs",
@@ -76,6 +81,7 @@
76
81
  "build": "npm run build:core && vite build",
77
82
  "build:core": "vite build --config vite.core.config.ts && node scripts/postbuild-core.mjs",
78
83
  "build:mcp": "vite build --config vite.mcp.config.ts && node scripts/postbuild-mcp.mjs",
84
+ "build:create": "vite build --config vite.create.config.ts && node scripts/postbuild-create.mjs",
79
85
  "postbuild": "node scripts/postbuild.mjs",
80
86
  "build:dev": "npm run build:core && vite build --mode dev",
81
87
  "compile": "tsc --noEmit --skipLibCheck",
@@ -93,10 +99,12 @@
93
99
  "docs:components": "node scripts/check-components-api.mjs --fix",
94
100
  "check:catalog": "node scripts/check-catalog-api.mjs",
95
101
  "docs:catalog": "node scripts/check-catalog-api.mjs --fix",
102
+ "check:create": "node scripts/check-create-templates.mjs",
103
+ "docs:create": "node scripts/check-create-templates.mjs --fix",
96
104
  "check:conventions": "node scripts/check-component-conventions.mjs",
97
105
  "check:agents": "node scripts/check-agent-files.mjs",
98
106
  "docs:agents": "node scripts/check-agent-files.mjs --fix",
99
- "check:package": "publint dist && attw --pack dist --ignore-rules false-esm cjs-resolves-to-esm internal-resolution-error && publint dist-core && attw --pack dist-core --ignore-rules false-esm cjs-resolves-to-esm internal-resolution-error && publint dist-mcp",
107
+ "check:package": "publint dist && attw --pack dist --ignore-rules false-esm cjs-resolves-to-esm internal-resolution-error && publint dist-core && attw --pack dist-core --ignore-rules false-esm cjs-resolves-to-esm internal-resolution-error && publint dist-mcp && publint dist-create",
100
108
  "bench": "node bench/run.mjs",
101
109
  "compare": "node dev/compare/report.mjs",
102
110
  "compare:tailwind": "node dev/compare/report.mjs tailwind",
@@ -117,7 +125,7 @@
117
125
  "./themeReveal-*"
118
126
  ],
119
127
  "gzip": true,
120
- "limit": "39.07 KB"
128
+ "limit": "40.47 kB"
121
129
  },
122
130
  {
123
131
  "name": "Box in a Server Component (react-server entry)",
@@ -129,7 +137,7 @@
129
137
  "./themeReveal-*"
130
138
  ],
131
139
  "gzip": true,
132
- "limit": "37.10 KB"
140
+ "limit": "38.18 kB"
133
141
  },
134
142
  {
135
143
  "name": "Behavior primitives (a11y entry)",
@@ -165,7 +173,7 @@
165
173
  "./themeReveal-*"
166
174
  ],
167
175
  "gzip": true,
168
- "limit": "58.71 KB"
176
+ "limit": "61.80 kB"
169
177
  },
170
178
  {
171
179
  "name": "Spec renderer (spec entry)",
@@ -191,11 +199,23 @@
191
199
  "gzip": true,
192
200
  "limit": "4 KB"
193
201
  },
202
+ {
203
+ "name": "Dates, times and zones (date entry, no React)",
204
+ "path": "dist/date.mjs",
205
+ "ignore": [
206
+ "react",
207
+ "react-dom",
208
+ "./diagnostics-*",
209
+ "./themeReveal-*"
210
+ ],
211
+ "gzip": true,
212
+ "limit": "7.59 KB"
213
+ },
194
214
  {
195
215
  "name": "Core engine (@box-kite/core, no React)",
196
216
  "path": "dist-core/core.mjs",
197
217
  "gzip": true,
198
- "limit": "38.31 KB",
218
+ "limit": "39.43 kB",
199
219
  "ignore": [
200
220
  "./diagnostics-*",
201
221
  "./themeReveal-*"
@@ -211,7 +231,7 @@
211
231
  "./themeReveal-*"
212
232
  ],
213
233
  "gzip": true,
214
- "limit": "41.14 KB"
234
+ "limit": "42.53 kB"
215
235
  },
216
236
  {
217
237
  "name": "Popover",
@@ -223,7 +243,7 @@
223
243
  "./themeReveal-*"
224
244
  ],
225
245
  "gzip": true,
226
- "limit": "42.68 KB"
246
+ "limit": "44.08 kB"
227
247
  },
228
248
  {
229
249
  "name": "Menu",
@@ -235,7 +255,7 @@
235
255
  "./themeReveal-*"
236
256
  ],
237
257
  "gzip": true,
238
- "limit": "44.94 KB"
258
+ "limit": "46.32 kB"
239
259
  },
240
260
  {
241
261
  "name": "Accordion",
@@ -247,7 +267,7 @@
247
267
  "./themeReveal-*"
248
268
  ],
249
269
  "gzip": true,
250
- "limit": "40.41 KB"
270
+ "limit": "41.80 kB"
251
271
  },
252
272
  {
253
273
  "name": "Agent",
@@ -259,7 +279,7 @@
259
279
  "./themeReveal-*"
260
280
  ],
261
281
  "gzip": true,
262
- "limit": "41.19 KB"
282
+ "limit": "42.57 kB"
263
283
  },
264
284
  {
265
285
  "name": "Markdown",
@@ -271,7 +291,7 @@
271
291
  "./themeReveal-*"
272
292
  ],
273
293
  "gzip": true,
274
- "limit": "39.66 KB"
294
+ "limit": "41.04 kB"
275
295
  },
276
296
  {
277
297
  "name": "List",
@@ -283,7 +303,7 @@
283
303
  "./themeReveal-*"
284
304
  ],
285
305
  "gzip": true,
286
- "limit": "40.98 KB"
306
+ "limit": "42.38 kB"
287
307
  },
288
308
  {
289
309
  "name": "SwipeItem",
@@ -295,7 +315,7 @@
295
315
  "./themeReveal-*"
296
316
  ],
297
317
  "gzip": true,
298
- "limit": "44.06 KB"
318
+ "limit": "45.47 kB"
299
319
  },
300
320
  {
301
321
  "name": "SortableList",
@@ -307,7 +327,7 @@
307
327
  "./themeReveal-*"
308
328
  ],
309
329
  "gzip": true,
310
- "limit": "44.33 KB"
330
+ "limit": "45.80 kB"
311
331
  },
312
332
  {
313
333
  "name": "VirtualList",
@@ -319,7 +339,7 @@
319
339
  "./themeReveal-*"
320
340
  ],
321
341
  "gzip": true,
322
- "limit": "43.16 KB"
342
+ "limit": "44.58 kB"
323
343
  },
324
344
  {
325
345
  "name": "Skeleton",
@@ -331,7 +351,7 @@
331
351
  "./themeReveal-*"
332
352
  ],
333
353
  "gzip": true,
334
- "limit": "38.98 KB"
354
+ "limit": "40.38 kB"
335
355
  },
336
356
  {
337
357
  "name": "Tabs",
@@ -343,7 +363,7 @@
343
363
  "./themeReveal-*"
344
364
  ],
345
365
  "gzip": true,
346
- "limit": "41.62 KB"
366
+ "limit": "43.01 kB"
347
367
  },
348
368
  {
349
369
  "name": "Slider",
@@ -355,7 +375,7 @@
355
375
  "./themeReveal-*"
356
376
  ],
357
377
  "gzip": true,
358
- "limit": "40.77 KB"
378
+ "limit": "42.16 kB"
359
379
  },
360
380
  {
361
381
  "name": "Progress",
@@ -367,7 +387,7 @@
367
387
  "./themeReveal-*"
368
388
  ],
369
389
  "gzip": true,
370
- "limit": "38.96 KB"
390
+ "limit": "40.35 kB"
371
391
  },
372
392
  {
373
393
  "name": "Toaster",
@@ -379,7 +399,67 @@
379
399
  "./themeReveal-*"
380
400
  ],
381
401
  "gzip": true,
382
- "limit": "42.40 KB"
402
+ "limit": "43.78 kB"
403
+ },
404
+ {
405
+ "name": "DateField",
406
+ "path": "dist/components/dateField.mjs",
407
+ "ignore": [
408
+ "react",
409
+ "react-dom",
410
+ "./diagnostics-*",
411
+ "./themeReveal-*"
412
+ ],
413
+ "gzip": true,
414
+ "limit": "49.03 kB"
415
+ },
416
+ {
417
+ "name": "Calendar",
418
+ "path": "dist/components/calendar.mjs",
419
+ "ignore": [
420
+ "react",
421
+ "react-dom",
422
+ "./diagnostics-*",
423
+ "./themeReveal-*"
424
+ ],
425
+ "gzip": true,
426
+ "limit": "48.39 kB"
427
+ },
428
+ {
429
+ "name": "DatePicker",
430
+ "path": "dist/components/datePicker.mjs",
431
+ "ignore": [
432
+ "react",
433
+ "react-dom",
434
+ "./diagnostics-*",
435
+ "./themeReveal-*"
436
+ ],
437
+ "gzip": true,
438
+ "limit": "61.10 kB"
439
+ },
440
+ {
441
+ "name": "DateTime",
442
+ "path": "dist/components/dateTime.mjs",
443
+ "ignore": [
444
+ "react",
445
+ "react-dom",
446
+ "./diagnostics-*",
447
+ "./themeReveal-*"
448
+ ],
449
+ "gzip": true,
450
+ "limit": "43.92 kB"
451
+ },
452
+ {
453
+ "name": "TimeZoneSelect",
454
+ "path": "dist/components/timeZoneSelect.mjs",
455
+ "ignore": [
456
+ "react",
457
+ "react-dom",
458
+ "./diagnostics-*",
459
+ "./themeReveal-*"
460
+ ],
461
+ "gzip": true,
462
+ "limit": "51.50 kB"
383
463
  },
384
464
  {
385
465
  "name": "Combobox",
@@ -391,7 +471,7 @@
391
471
  "./themeReveal-*"
392
472
  ],
393
473
  "gzip": true,
394
- "limit": "48.21 KB"
474
+ "limit": "49.59 kB"
395
475
  },
396
476
  {
397
477
  "name": "Dashboard",
@@ -403,7 +483,7 @@
403
483
  "./themeReveal-*"
404
484
  ],
405
485
  "gzip": true,
406
- "limit": "44.62 KB"
486
+ "limit": "46.06 kB"
407
487
  },
408
488
  {
409
489
  "name": "DataGrid",
@@ -413,10 +493,11 @@
413
493
  "react-dom",
414
494
  "./diagnostics-*",
415
495
  "./themeReveal-*",
416
- "../dataGridList.mjs"
496
+ "../dataGridList.mjs",
497
+ "../dataGridDateParts.mjs"
417
498
  ],
418
499
  "gzip": true,
419
- "limit": "93.23 KB"
500
+ "limit": "95.67 kB"
420
501
  },
421
502
  {
422
503
  "name": "DataGrid export, the chunk fetched on the first press",
@@ -444,6 +525,20 @@
444
525
  "gzip": true,
445
526
  "limit": "7.83 KB"
446
527
  },
528
+ {
529
+ "name": "DataGrid dates, the chunk a grid with a date column fetches on top of the grid",
530
+ "path": "dist/dataGridDateParts.mjs",
531
+ "ignore": [
532
+ "react",
533
+ "react-dom",
534
+ "./diagnostics-*",
535
+ "./themeReveal-*",
536
+ "./box.mjs",
537
+ "./components/*"
538
+ ],
539
+ "gzip": true,
540
+ "limit": "7.49 KB"
541
+ },
447
542
  {
448
543
  "name": "Full library (Box + ssg + every component)",
449
544
  "path": "dev/size-full.mjs",
@@ -454,7 +549,7 @@
454
549
  "./themeReveal-*"
455
550
  ],
456
551
  "gzip": true,
457
- "limit": "140.38 KB"
552
+ "limit": "163.09 kB"
458
553
  }
459
554
  ],
460
555
  "repository": {
@@ -494,13 +589,14 @@
494
589
  "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
495
590
  },
496
591
  "dependencies": {
497
- "@box-kite/core": "2.2.5",
592
+ "@box-kite/core": "2.2.7",
498
593
  "csstype": "^3.2.3",
499
594
  "use-sync-external-store": "^1.6.0"
500
595
  },
501
596
  "devDependencies": {
502
597
  "@arethetypeswrong/cli": "^0.18.5",
503
598
  "@assistant-ui/core": "^0.3.20",
599
+ "@clack/prompts": "^1.8.1",
504
600
  "@copilotkit/a2ui-renderer": "^1.73.0",
505
601
  "@emotion/react": "^11.14.0",
506
602
  "@emotion/styled": "^11.14.1",
@@ -531,6 +627,7 @@
531
627
  "ag-grid-community": "^36.2.0",
532
628
  "ag-grid-react": "^36.2.0",
533
629
  "axe-core": "^4.13.0",
630
+ "create-vite": "^9.3.0",
534
631
  "eslint": "^10.8.0",
535
632
  "eslint-config-prettier": "^10.1.8",
536
633
  "eslint-plugin-import-x": "^4.17.1",
@@ -4,7 +4,7 @@ type Render = (props: any, ref: any) => React.ReactNode;
4
4
  * A component that is a Box: memoized, which skips a leaf whose props are all primitives, and one fiber on
5
5
  * React 19. React 18 needs a `forwardRef` under the `memo`, which makes it two.
6
6
  */
7
- export default function boxComponent(render: Render, displayName: string): React.MemoExoticComponent<((props: {
7
+ export default function boxComponent(render: Render, displayName: string): React.MemoExoticComponent<(({ ref, ...props }: {
8
8
  ref?: Ref<unknown>;
9
9
  }) => React.ReactNode) | React.ForwardRefExoticComponent<Omit<any, "ref"> & React.RefAttributes<unknown>>>;
10
10
  export {};
@@ -0,0 +1,18 @@
1
+ import { DateReadings } from '../../utils/date/dateTime';
2
+ import { ChangeDetails } from '../a11y/useControllableState';
3
+ /**
4
+ * Why a date value changed: digits or arrows in a field, a paste, a day picked in a calendar or a time in a
5
+ * list, a preset, the clear button, or a form reset.
6
+ */
7
+ export type DateChangeReason = 'keyboard' | 'paste' | 'select' | 'preset' | 'clear' | 'reset';
8
+ /**
9
+ * What a date control hands its `onValueChange` beside the string: the reason, plus every reading of the
10
+ * value an app is likely to want — `utc`, the reader's `local` wall clock, a `Date`, the epoch.
11
+ *
12
+ * ```tsx
13
+ * <DateField type="datetime" onValueChange={(value, { utc, local }) => save(utc)} />
14
+ * ```
15
+ */
16
+ export type DateChangeDetails<TReason extends string = DateChangeReason> = ChangeDetails<TReason> & DateReadings;
17
+ /** A date control's change handler: the canonical string (or `null`) and the readings. */
18
+ export type DateChangeHandler<TValue = string | null, TReason extends string = DateChangeReason> = (value: TValue, details: DateChangeDetails<TReason>) => void;
@@ -0,0 +1,34 @@
1
+ import { ZoneInput } from '../../utils/date/zones';
2
+ /** What a subtree knows about its reader: the language and the zone. */
3
+ export interface DateEnvironmentValue {
4
+ /** A BCP 47 tag. */
5
+ locale?: string;
6
+ /** The reader's zone — what `'local'` means inside. */
7
+ timeZone?: string;
8
+ }
9
+ export interface DateProviderProps extends DateEnvironmentValue {
10
+ children?: React.ReactNode;
11
+ }
12
+ /**
13
+ * Says who the reader is for every date component inside: their language and their zone. On a server that
14
+ * read the zone off a cookie (`readZoneCookie`), this is what makes the first paint already right — the
15
+ * server and the browser render the same text, and nothing changes after hydration.
16
+ */
17
+ export declare function DateProvider({ locale, timeZone, children }: DateProviderProps): import("react").JSX.Element;
18
+ export interface DateEnvironment {
19
+ locale: string;
20
+ /** The zone resolved to a name: `UTC`, an IANA zone or a fixed offset. */
21
+ zone: string;
22
+ /** The reader's own zone, which is what `'local'` resolved to. */
23
+ readerZone: string;
24
+ }
25
+ /**
26
+ * The locale and zone a date component renders in. A prop wins, then a `DateProvider`, then
27
+ * `configureDates()`, then the browser. **A server and a hydrating browser both use the fallback** — `UTC` and
28
+ * `en-US` unless something above configured them — because neither can know the other's runtime, and two
29
+ * renders that disagree are a hydration error. The render after hydration switches to the reader's own.
30
+ */
31
+ export declare function useDateEnvironment(props?: {
32
+ locale?: string;
33
+ zone?: ZoneInput;
34
+ }): DateEnvironment;
@@ -29,6 +29,13 @@ interface ThemeProps {
29
29
  * since one wrapper holding a design in both light and dark is what a themed section usually is.
30
30
  */
31
31
  components?: ComponentsRegistry;
32
+ /**
33
+ * The design this subtree is drawn in — a name given to `Box.components(styles, { design })` — written as
34
+ * `data-design` on `<html>` (`use="global"`) or on the wrapper. `Box.useDesign()` reads and sets it.
35
+ */
36
+ design?: string;
37
+ /** When provided, persists the design `Box.useDesign()` sets to localStorage under this key. */
38
+ designStorageKey?: string;
32
39
  }
33
40
  /**
34
41
  * The React binding for the theme system. Everything that actually touches the platform — reading
@@ -39,5 +46,7 @@ interface ThemeProps {
39
46
  declare function Theme(props: ThemeProps): React.JSX.Element;
40
47
  declare namespace Theme {
41
48
  function useTheme(): [string, (theme: string | null) => void];
49
+ /** The design the nearest provider is drawing, and the setter; null goes back to its `design` prop. */
50
+ function useDesign(): [string | undefined, (design: string | null) => void];
42
51
  }
43
52
  export default Theme;
@@ -2,6 +2,8 @@ import { default as React } from 'react';
2
2
  interface ThemeContextProps {
3
3
  theme: string;
4
4
  setTheme(theme: string | null): void;
5
+ design?: string;
6
+ setDesign(design: string | null): void;
5
7
  }
6
8
  declare const ThemeContext: React.Context<ThemeContextProps>;
7
9
  export default ThemeContext;
package/react-shared.cjs CHANGED
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime.cjs");let t=require("react");t=e.t(t,1);let n=require("@box-kite/core");function r({classNames:e,styleElements:t},r){return{className:(0,n.classNames)(e,r).join(` `),styles:t}}var i=parseInt(t.default.version,10)>=19;function a(e,n){let r=i?t=>e(t,t.ref??null):(0,t.forwardRef)(e),a=(0,t.memo)(r);return r.displayName=n,a.displayName=n,a}var o={selected:`aria-selected`},s;(function(e){function t(e,t,n){e!==void 0&&e!=null&&(n[o[t]??t]=Array.isArray(e)?e[0]:e)}e.assignBooleanProp=t})(s||={});var c=s;function l(e,t){let r=e,{props:i,className:a,disabled:o,required:s,checked:l,selected:u}=r,d={...i,className:(0,n.classNames)(t,a).join(` `)};return c.assignBooleanProp(o,`disabled`,d),c.assignBooleanProp(s,`required`,d),c.assignBooleanProp(l,`checked`,d),c.assignBooleanProp(u,`selected`,d),`style`in r&&(d.style=r.style),`id`in r&&(d.id=r.id),d}var u=parseInt(t.default.version,10)>=19,d=!1,f=new WeakMap,p=new WeakMap;function m(e){let n=f.get(e);if(!n){let{href:r,css:i,precedence:a}=e;n=t.default.createElement(`style`,{key:r,href:r,precedence:a,dangerouslySetInnerHTML:{__html:i}}),f.set(e,n)}return n}function h(e){if(!e?.length)return;!u&&!d&&(d=!0,console.warn(`[box-kite] Box.configure({ sink: 'element' }) needs React 19 to hoist and dedupe its <style> elements; React ${t.default.version} will render them inline. Use the default sink instead.`));let n=p.get(e);return n||(n=e.map(m),p.set(e,n)),n}function g(e,t,r){let{classNames:i,signature:a,styleElements:o}=(0,n.getDefaultEngine)().resolveClassNames(e,t,r);return{classNames:i,signature:a,styleElements:h(o)}}var _=`__boxAttributesInProps`;function v(e){return e[_]=!0,e}function y(e){return typeof e==`function`||typeof e==`object`&&e?e[_]===!0:!1}var b=[`role`,`aria-label`,`aria-labelledby`,`aria-hidden`];function x(e,t){if(e!==void 0)return{role:`img`,"aria-label":e};if(!(t&&b.some(e=>e in t)))return{"aria-hidden":!0}}var S;(function(e){function t(e){return e.charAt(0).toUpperCase()+e.slice(1)}e.capitalize=t})(S||={});var C=S,w;(function(e){function t(e,t,n){let r={...e},i=r.props||{};return t.forEach(e=>{e in r&&(i[e]=r[e],delete r[e])}),n&&Object.entries(n).forEach(([e,t])=>{i[e]=t}),r.props=i,r}e.buildProps=t;function n(e){return!!e&&typeof e==`object`}e.isObject=n;function r(e,t){return e in t}e.isKeyOf=r})(w||={});var T=w,E=[`sky-500`,`emerald-500`,`amber-500`,`violet-500`,`rose-500`,`cyan-500`],D=[`sky-400`,`emerald-400`,`amber-400`,`violet-400`,`rose-400`,`cyan-400`];function O(e){return e.reduce((e,t,n)=>(e[`chart-${n+1}`]=t,e),{})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return h}});
1
+ const e=require("./rolldown-runtime.cjs");let t=require("react");t=e.t(t,1);let n=require("@box-kite/core");function r({classNames:e,styleElements:t},r){return{className:(0,n.classNames)(e,r).join(` `),styles:t}}var i=parseInt(t.default.version,10)>=19;function a(e,n){let r=i?({ref:t,...n})=>e(n,t??null):(0,t.forwardRef)(e),a=(0,t.memo)(r);return r.displayName=n,a.displayName=n,a}var o={selected:`aria-selected`},s;(function(e){function t(e,t,n){e!==void 0&&e!=null&&(n[o[t]??t]=Array.isArray(e)?e[0]:e)}e.assignBooleanProp=t})(s||={});var c=s;function l(e,t){let r=e,{props:i,className:a,disabled:o,required:s,checked:l,selected:u}=r,d={...i,className:(0,n.classNames)(t,a).join(` `)};return c.assignBooleanProp(o,`disabled`,d),c.assignBooleanProp(s,`required`,d),c.assignBooleanProp(l,`checked`,d),c.assignBooleanProp(u,`selected`,d),`style`in r&&(d.style=r.style),`id`in r&&(d.id=r.id),d}var u=parseInt(t.default.version,10)>=19,d=!1,f=new WeakMap,p=new WeakMap;function m(e){let n=f.get(e);if(!n){let{href:r,css:i,precedence:a}=e;n=t.default.createElement(`style`,{key:r,href:r,precedence:a,dangerouslySetInnerHTML:{__html:i}}),f.set(e,n)}return n}function h(e){if(!e?.length)return;!u&&!d&&(d=!0,console.warn(`[box-kite] Box.configure({ sink: 'element' }) needs React 19 to hoist and dedupe its <style> elements; React ${t.default.version} will render them inline. Use the default sink instead.`));let n=p.get(e);return n||(n=e.map(m),p.set(e,n)),n}function g(e,t,r){let{classNames:i,signature:a,styleElements:o}=(0,n.getDefaultEngine)().resolveClassNames(e,t,r);return{classNames:i,signature:a,styleElements:h(o)}}var _=`__boxAttributesInProps`;function v(e){return e[_]=!0,e}function y(e){return typeof e==`function`||typeof e==`object`&&e?e[_]===!0:!1}var b=[`role`,`aria-label`,`aria-labelledby`,`aria-hidden`];function x(e,t){if(e!==void 0)return{role:`img`,"aria-label":e};if(!(t&&b.some(e=>e in t)))return{"aria-hidden":!0}}var S;(function(e){function t(e){return e.charAt(0).toUpperCase()+e.slice(1)}e.capitalize=t})(S||={});var C=S,w;(function(e){function t(e,t,n){let r={...e},i=r.props||{};return t.forEach(e=>{e in r&&(i[e]=r[e],delete r[e])}),n&&Object.entries(n).forEach(([e,t])=>{i[e]=t}),r.props=i,r}e.buildProps=t;function n(e){return!!e&&typeof e==`object`}e.isObject=n;function r(e,t){return e in t}e.isKeyOf=r})(w||={});var T=w,E=[`sky-500`,`emerald-500`,`amber-500`,`violet-500`,`rose-500`,`cyan-500`],D=[`sky-400`,`emerald-400`,`amber-400`,`violet-400`,`rose-400`,`cyan-400`];function O(e){return e.reduce((e,t,n)=>(e[`chart-${n+1}`]=t,e),{})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return h}});
package/react-shared.mjs CHANGED
@@ -11,7 +11,7 @@ function a({ classNames: e, styleElements: t }, n) {
11
11
  //#region src/react/boxComponent.ts
12
12
  var o = parseInt(e.version, 10) >= 19;
13
13
  function s(e, r) {
14
- let i = o ? (t) => e(t, t.ref ?? null) : t(e), a = n(i);
14
+ let i = o ? ({ ref: t, ...n }) => e(n, t ?? null) : t(e), a = n(i);
15
15
  return i.displayName = r, a.displayName = r, a;
16
16
  }
17
17
  //#endregion