@tinybigui/react 0.12.0 → 0.14.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.
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ export { argbFromHex, hexFromArgb } from '@material/material-color-utilities';
5
5
  import React, { forwardRef, useRef, createContext, useState, useCallback, useId, useMemo, useEffect, useContext, useLayoutEffect, Children, isValidElement, cloneElement } from 'react';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
7
  import { cva } from 'class-variance-authority';
8
- import { useButton, useHover, useFocusRing, mergeProps as mergeProps$1, useTextField, useCheckbox, VisuallyHidden, useSwitch, useRadioGroup, useRadio, useTabList, useTab, useTabPanel, FocusScope, usePreventScroll, useDialog, useOverlay, useLink, useSeparator, useProgressBar, useToggleButton, useListBox, useOption, useSearchField, useSlider, useDatePicker, useLocale, useDateField, useSliderThumb, useRangeCalendar, useCalendar, usePopover, DismissButton, useDateSegment, useCalendarGrid, useCalendarCell, useTooltipTrigger, useTooltip, useOverlayPosition } from 'react-aria';
8
+ import { useButton, useHover, useFocusRing, mergeProps as mergeProps$1, useTextField, useCheckbox, VisuallyHidden, useSwitch, useRadioGroup, useRadio, useTabList, useTab, useTabPanel, FocusScope, usePreventScroll, useDialog, useOverlay, useLink, useSeparator, useProgressBar, useToggleButton, useListBox, useOption, useSearchField, useSlider, useDatePicker, useLocale, useDateField, useSliderThumb, useRangeCalendar, useCalendar, usePopover, DismissButton, usePress, useDateSegment, useCalendarGrid, useCalendarCell, useTooltipTrigger, useTooltip, useOverlayPosition } from 'react-aria';
9
9
  import { mergeProps, filterDOMProps } from '@react-aria/utils';
10
10
  import { useToggleState, useRadioGroupState, useTabListState, Item, useOverlayTriggerState, useListState, useSearchFieldState, useMenuTriggerState, useSliderState, useDatePickerState, useDateFieldState, useRangeCalendarState, useCalendarState, useTooltipTriggerState } from 'react-stately';
11
11
  import { MenuItem as MenuItem$1, Menu as Menu$1, MenuTrigger as MenuTrigger$1, Popover, MenuSection as MenuSection$1, Separator, Header, useSlottedContext, ButtonContext } from 'react-aria-components';
@@ -2113,277 +2113,332 @@ var FAB = forwardRef(
2113
2113
  }
2114
2114
  );
2115
2115
  FAB.displayName = "FAB";
2116
- var textFieldContainerVariants = cva(
2116
+ var textFieldRootVariants = cva(["relative inline-flex flex-col"], {
2117
+ variants: {
2118
+ fullWidth: {
2119
+ true: "w-full",
2120
+ false: "w-auto"
2121
+ }
2122
+ },
2123
+ defaultVariants: {
2124
+ fullWidth: false
2125
+ }
2126
+ });
2127
+ var textFieldFieldVariants = cva(
2117
2128
  [
2118
- // Base container styles
2119
- "relative inline-flex flex-col"
2129
+ "relative flex items-center w-full min-h-14",
2130
+ // Cursor — disabled via group-data
2131
+ "group-data-[disabled]/text-field:cursor-not-allowed",
2132
+ "group-data-[disabled]/text-field:pointer-events-none"
2120
2133
  ],
2121
2134
  {
2122
2135
  variants: {
2123
- fullWidth: {
2124
- true: "w-full",
2125
- false: "w-auto"
2136
+ variant: {
2137
+ filled: [
2138
+ "rounded-t-xs bg-surface-container-highest",
2139
+ // Disabled: background fades to on-surface/4
2140
+ "group-data-[disabled]/text-field:bg-on-surface/4"
2141
+ ],
2142
+ outlined: ["rounded-xs bg-transparent"]
2126
2143
  }
2127
2144
  },
2128
2145
  defaultVariants: {
2129
- fullWidth: false
2146
+ variant: "filled"
2130
2147
  }
2131
2148
  }
2132
2149
  );
2133
- var textFieldWrapperVariants = cva(
2150
+ var textFieldStateLayerVariants = cva([
2151
+ "absolute inset-0 rounded-t-xs pointer-events-none opacity-0",
2152
+ "bg-on-surface",
2153
+ // Effects transition — no spatial overshoot on opacity
2154
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
2155
+ // Hover: 8%
2156
+ "group-data-[hovered]/text-field:opacity-8",
2157
+ // Focus: 10% (focus wins over hover via cascade order — placed after)
2158
+ "group-data-[focused]/text-field:opacity-10",
2159
+ // No state layer when disabled
2160
+ "group-data-[disabled]/text-field:hidden"
2161
+ ]);
2162
+ var textFieldActiveIndicatorVariants = cva([
2163
+ "absolute bottom-0 left-0 right-0 pointer-events-none",
2164
+ // Spatial transition: height is a spatial property
2165
+ "transition-[height,background-color]",
2166
+ "duration-spring-standard-fast-spatial ease-spring-standard-fast-spatial",
2167
+ // Base
2168
+ "h-px bg-on-surface-variant",
2169
+ // Hover
2170
+ "group-data-[hovered]/text-field:bg-on-surface",
2171
+ // Focused — 2px + primary color (focused placed after hovered to win cascade)
2172
+ "group-data-[focused]/text-field:h-0.5 group-data-[focused]/text-field:bg-primary",
2173
+ // Invalid
2174
+ "group-data-[invalid]/text-field:bg-error",
2175
+ // Invalid + focused
2176
+ "group-data-[invalid]/text-field:group-data-[focused]/text-field:bg-error",
2177
+ // Disabled: hidden
2178
+ "group-data-[disabled]/text-field:hidden"
2179
+ ]);
2180
+ var textFieldOutlineVariants = cva([
2181
+ "absolute inset-0 rounded-xs m-0 px-2 pointer-events-none",
2182
+ "border border-outline",
2183
+ // Effects transition for color; spatial for border-width
2184
+ "transition-[border-color,border-width]",
2185
+ "duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
2186
+ // Hover
2187
+ "group-data-[hovered]/text-field:border-on-surface",
2188
+ // Focused — 2px + primary color
2189
+ "group-data-[focused]/text-field:border-2 group-data-[focused]/text-field:border-primary",
2190
+ // Invalid
2191
+ "group-data-[invalid]/text-field:border-error",
2192
+ // Invalid + focused
2193
+ "group-data-[invalid]/text-field:group-data-[focused]/text-field:border-2",
2194
+ "group-data-[invalid]/text-field:group-data-[focused]/text-field:border-error",
2195
+ // Disabled
2196
+ "group-data-[disabled]/text-field:border-on-surface/12"
2197
+ ]);
2198
+ var textFieldNotchVariants = cva([
2199
+ "invisible whitespace-nowrap text-body-small px-1",
2200
+ // 0 width when not floating (no gap)
2201
+ "max-w-0 overflow-hidden",
2202
+ // Full width when floating (gap opens)
2203
+ "group-data-[float]/text-field:max-w-full",
2204
+ // Spatial transition for max-width change
2205
+ "transition-[max-width] duration-spring-standard-fast-spatial ease-spring-standard-fast-spatial"
2206
+ ]);
2207
+ var textFieldLabelVariants = cva(
2134
2208
  [
2135
- // Base wrapper styles
2136
- "relative inline-flex items-center w-full",
2137
- "transition-all duration-200",
2138
- "rounded-t"
2209
+ "absolute pointer-events-none origin-top-left select-none",
2210
+ "text-body-large text-on-surface-variant",
2211
+ // Spatial + effects both use standard fast — no overshoot on font/color
2212
+ "transition-[transform,font-size,color,line-height]",
2213
+ "duration-spring-standard-fast-spatial ease-spring-standard-fast-spatial",
2214
+ // Disabled
2215
+ "group-data-[disabled]/text-field:text-on-surface/38",
2216
+ // Invalid (placed after default, before focused so focused invalid wins)
2217
+ "group-data-[invalid]/text-field:text-error",
2218
+ // Focused (singly-chained wins by cascade order)
2219
+ "group-data-[focused]/text-field:text-primary",
2220
+ // Invalid + focused — doubly-chained, wins over single-chained focused
2221
+ "group-data-[invalid]/text-field:group-data-[focused]/text-field:text-error"
2139
2222
  ],
2140
2223
  {
2141
2224
  variants: {
2142
2225
  variant: {
2143
- filled: ["bg-surface-container-highest", "border-b-2 border-on-surface-variant"],
2144
- outlined: ["bg-transparent", "border border-outline", "rounded-b"]
2145
- },
2146
- size: {
2147
- small: "min-h-10",
2148
- medium: "min-h-12",
2149
- large: "min-h-14"
2150
- },
2151
- disabled: {
2152
- true: ["cursor-not-allowed", "opacity-38"],
2153
- false: ""
2154
- },
2155
- error: {
2156
- true: "",
2157
- false: ""
2158
- },
2159
- focused: {
2160
- true: "",
2161
- false: ""
2226
+ /**
2227
+ * Filled: label rests at center (top-1/2 -translate-y-1/2).
2228
+ * When floating: moves up to top-2 (8dp) with body-small size.
2229
+ */
2230
+ filled: [
2231
+ "top-1/2 -translate-y-1/2 left-4",
2232
+ // Floated position — sits in the top 8dp zone
2233
+ "group-data-[float]/text-field:top-2 group-data-[float]/text-field:-translate-y-0",
2234
+ "group-data-[float]/text-field:text-body-small",
2235
+ // Leading-icon offset
2236
+ "group-data-[with-leading-icon]/text-field:left-[52px]"
2237
+ ],
2238
+ /**
2239
+ * Outlined: label rests at center (top-1/2 -translate-y-1/2).
2240
+ * When floating: moves up to sit on the top border (-translate-y-1/2 from top-0).
2241
+ */
2242
+ outlined: [
2243
+ "top-1/2 -translate-y-1/2 left-3",
2244
+ // bg-surface ensures label text punches through the border
2245
+ "bg-surface px-1",
2246
+ // Floated: sits on the top border
2247
+ "group-data-[float]/text-field:top-0 group-data-[float]/text-field:-translate-y-1/2",
2248
+ "group-data-[float]/text-field:text-body-small",
2249
+ // Leading-icon offset
2250
+ "group-data-[with-leading-icon]/text-field:left-[52px]"
2251
+ ]
2162
2252
  }
2163
2253
  },
2164
- compoundVariants: [
2165
- // FILLED VARIANT - Focused state
2166
- {
2167
- variant: "filled",
2168
- focused: true,
2169
- error: false,
2170
- className: "border-primary"
2171
- },
2172
- // FILLED VARIANT - Error state
2173
- {
2174
- variant: "filled",
2175
- error: true,
2176
- className: "border-error"
2177
- },
2178
- // FILLED VARIANT - Hover state (handled via group-hover in parent)
2179
- {
2180
- variant: "filled",
2181
- disabled: false,
2182
- className: "hover:bg-on-surface/[0.08]"
2183
- },
2184
- // OUTLINED VARIANT - Focused state
2185
- {
2186
- variant: "outlined",
2187
- focused: true,
2188
- error: false,
2189
- className: "border-2 border-primary"
2190
- },
2191
- // OUTLINED VARIANT - Error state
2192
- {
2193
- variant: "outlined",
2194
- error: true,
2195
- className: "border-2 border-error"
2196
- },
2197
- // OUTLINED VARIANT - Hover state
2198
- {
2199
- variant: "outlined",
2200
- disabled: false,
2201
- className: "hover:border-on-surface"
2202
- }
2203
- ],
2204
2254
  defaultVariants: {
2205
- variant: "filled",
2206
- size: "medium",
2207
- disabled: false,
2208
- error: false,
2209
- focused: false
2255
+ variant: "filled"
2210
2256
  }
2211
2257
  }
2212
2258
  );
2213
2259
  var textFieldInputVariants = cva(
2214
2260
  [
2215
- // Base input styles
2216
- "w-full bg-transparent outline-none",
2217
- "text-on-surface text-base",
2218
- "placeholder:text-on-surface-variant placeholder:opacity-60",
2219
- "transition-colors duration-200"
2261
+ "relative z-10 w-full bg-transparent outline-none border-none",
2262
+ "text-body-large text-on-surface",
2263
+ "placeholder:text-on-surface-variant",
2264
+ // Placeholder hidden unless field is floating (avoids overlap with label)
2265
+ "placeholder:opacity-0",
2266
+ "group-data-[float]/text-field:placeholder:opacity-100",
2267
+ // Disabled
2268
+ "group-data-[disabled]/text-field:text-on-surface/38",
2269
+ "group-data-[disabled]/text-field:cursor-not-allowed",
2270
+ // Readonly
2271
+ "group-data-[readonly]/text-field:cursor-default",
2272
+ // Effects transition for color
2273
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects"
2220
2274
  ],
2221
2275
  {
2222
2276
  variants: {
2223
2277
  variant: {
2224
- filled: "px-4",
2225
- outlined: "px-4"
2226
- },
2227
- size: {
2228
- small: "h-10 py-2 text-sm",
2229
- medium: "h-12 py-3 text-base",
2230
- large: "h-14 py-4 text-lg"
2231
- },
2232
- disabled: {
2233
- true: "cursor-not-allowed",
2234
- false: ""
2235
- },
2236
- hasLeadingIcon: {
2237
- true: "pl-12",
2238
- false: ""
2239
- },
2240
- hasTrailingIcon: {
2241
- true: "pr-12",
2242
- false: ""
2278
+ /**
2279
+ * Filled: top padding creates room for floating label (label rests at 8dp).
2280
+ * Horizontal padding: 16dp left / 16dp right — but yielded to prefix/suffix
2281
+ * when they are present so the affix handles the edge spacing instead.
2282
+ */
2283
+ filled: [
2284
+ "pt-6 pb-2 px-4",
2285
+ // No label present: vertically center
2286
+ "group-data-[no-label]/text-field:py-4",
2287
+ // Leading icon horizontal offset
2288
+ "group-data-[with-leading-icon]/text-field:pl-[52px]",
2289
+ // Trailing icon horizontal offset
2290
+ "group-data-[with-trailing-icon]/text-field:pr-[52px]",
2291
+ // Prefix present: prefix handles left edge — remove input's left padding
2292
+ "group-data-[with-prefix]/text-field:pl-0",
2293
+ // Leading icon + prefix together: compound wins over both singles
2294
+ "group-data-[with-leading-icon]/text-field:group-data-[with-prefix]/text-field:pl-0",
2295
+ // Suffix present: suffix handles right edge — remove input's right padding
2296
+ "group-data-[with-suffix]/text-field:pr-0",
2297
+ // Trailing icon + suffix together: compound wins over both singles
2298
+ "group-data-[with-trailing-icon]/text-field:group-data-[with-suffix]/text-field:pr-0"
2299
+ ],
2300
+ /**
2301
+ * Outlined: label sits on the border, no extra top padding needed.
2302
+ * Horizontal padding: 16dp — yielded to prefix/suffix when present.
2303
+ */
2304
+ outlined: [
2305
+ "py-4 px-4",
2306
+ // Leading icon horizontal offset
2307
+ "group-data-[with-leading-icon]/text-field:pl-[52px]",
2308
+ // Trailing icon horizontal offset
2309
+ "group-data-[with-trailing-icon]/text-field:pr-[52px]",
2310
+ // Prefix present: prefix handles left edge
2311
+ "group-data-[with-prefix]/text-field:pl-0",
2312
+ "group-data-[with-leading-icon]/text-field:group-data-[with-prefix]/text-field:pl-0",
2313
+ // Suffix present: suffix handles right edge
2314
+ "group-data-[with-suffix]/text-field:pr-0",
2315
+ "group-data-[with-trailing-icon]/text-field:group-data-[with-suffix]/text-field:pr-0"
2316
+ ]
2243
2317
  },
2244
2318
  multiline: {
2245
- true: "resize-y",
2246
- false: ""
2319
+ true: "resize-y min-h-[1.5rem]",
2320
+ false: "h-full"
2247
2321
  }
2248
2322
  },
2249
2323
  defaultVariants: {
2250
2324
  variant: "filled",
2251
- size: "medium",
2252
- disabled: false,
2253
- hasLeadingIcon: false,
2254
- hasTrailingIcon: false,
2255
2325
  multiline: false
2256
2326
  }
2257
2327
  }
2258
2328
  );
2259
- var textFieldLabelVariants = cva(
2329
+ var textFieldIconVariants = cva(
2260
2330
  [
2261
- // Base label styles
2262
- "absolute left-4 transition-all duration-200 pointer-events-none",
2263
- "text-on-surface-variant origin-top-left"
2331
+ "absolute z-10 flex items-center justify-center size-6 pointer-events-none",
2332
+ "text-on-surface-variant",
2333
+ // Effects transition
2334
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
2335
+ // Disabled
2336
+ "group-data-[disabled]/text-field:text-on-surface/38"
2264
2337
  ],
2265
2338
  {
2266
2339
  variants: {
2267
- variant: {
2268
- filled: "top-2.5",
2269
- outlined: "top-2.5 bg-surface px-1"
2270
- },
2271
- size: {
2272
- small: "text-sm",
2273
- medium: "text-base",
2274
- large: "text-lg"
2275
- },
2276
- floating: {
2277
- true: "-translate-y-5 scale-75",
2278
- false: "scale-100"
2279
- },
2280
- focused: {
2281
- true: "text-primary",
2282
- false: ""
2283
- },
2284
- error: {
2285
- true: "text-error",
2286
- false: ""
2287
- },
2288
- disabled: {
2289
- true: "text-on-surface/38",
2290
- false: ""
2291
- },
2292
- hasLeadingIcon: {
2293
- true: "left-12",
2294
- false: ""
2340
+ position: {
2341
+ leading: "left-3",
2342
+ trailing: [
2343
+ "right-3",
2344
+ // Trailing → error color when invalid
2345
+ "group-data-[invalid]/text-field:text-error"
2346
+ ]
2295
2347
  }
2296
2348
  },
2297
- compoundVariants: [
2298
- // Outlined variant floating label positioning
2299
- {
2300
- variant: "outlined",
2301
- floating: true,
2302
- className: "top-2.5"
2303
- }
2304
- ],
2305
2349
  defaultVariants: {
2306
- variant: "filled",
2307
- size: "medium",
2308
- floating: false,
2309
- focused: false,
2310
- error: false,
2311
- disabled: false,
2312
- hasLeadingIcon: false
2350
+ position: "leading"
2313
2351
  }
2314
2352
  }
2315
2353
  );
2316
- var textFieldIconVariants = cva(
2354
+ var textFieldAffixVariants = cva(
2317
2355
  [
2318
- // Base icon styles
2319
- "absolute flex items-center justify-center",
2320
- "text-on-surface-variant transition-colors duration-200",
2321
- "pointer-events-none"
2356
+ "relative z-10 text-body-large text-on-surface-variant select-none shrink-0",
2357
+ "opacity-0 pointer-events-none",
2358
+ // Visible once label is floated
2359
+ "group-data-[float]/text-field:opacity-100 group-data-[float]/text-field:pointer-events-auto",
2360
+ // Effects transition
2361
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
2362
+ // Disabled
2363
+ "group-data-[disabled]/text-field:text-on-surface/38"
2322
2364
  ],
2323
2365
  {
2324
2366
  variants: {
2325
- position: {
2326
- leading: "left-3",
2327
- trailing: "right-3"
2328
- },
2329
- size: {
2330
- small: "w-5 h-5",
2331
- medium: "w-6 h-6",
2332
- large: "w-7 h-7"
2367
+ variant: {
2368
+ /**
2369
+ * Filled: mirror the input's pt-6 pb-2 so the text sits in the same
2370
+ * vertical zone. When no label is present, the input uses py-4 — match
2371
+ * that too so the affix stays centred with the input text.
2372
+ */
2373
+ filled: [
2374
+ "pt-6 pb-2",
2375
+ "group-data-[no-label]/text-field:pt-4 group-data-[no-label]/text-field:pb-4"
2376
+ ],
2377
+ /**
2378
+ * Outlined: input uses py-4 and h-full; items-center on the content
2379
+ * column already centres the naturally-sized affix at the same 28px
2380
+ * midpoint as the input text. No extra vertical padding needed.
2381
+ */
2382
+ outlined: []
2333
2383
  },
2334
- disabled: {
2335
- true: "opacity-38",
2336
- false: ""
2384
+ position: {
2385
+ /**
2386
+ * Prefix: sits before the input in the flex row.
2387
+ * pl-4 aligns the left text edge to the 16dp field margin.
2388
+ * With a leading icon that shifts to 52dp to clear the icon.
2389
+ * pr-0.5 is a small gap between prefix text and the input cursor.
2390
+ */
2391
+ prefix: ["pl-4", "group-data-[with-leading-icon]/text-field:pl-[52px]", "pr-0.5"],
2392
+ /**
2393
+ * Suffix: sits after the input in the flex row.
2394
+ * pl-0.5 is a small gap between the input text and the suffix.
2395
+ * pr-4 keeps 16dp from the right field edge.
2396
+ * With a trailing icon that shifts to 52dp to avoid overlap.
2397
+ */
2398
+ suffix: ["pl-0.5", "pr-4", "group-data-[with-trailing-icon]/text-field:pr-[52px]"]
2337
2399
  }
2338
2400
  },
2339
2401
  defaultVariants: {
2340
- position: "leading",
2341
- size: "medium",
2342
- disabled: false
2402
+ variant: "filled",
2403
+ position: "prefix"
2343
2404
  }
2344
2405
  }
2345
2406
  );
2346
- var textFieldHelperTextVariants = cva(
2407
+ var textFieldSupportingRowVariants = cva([
2408
+ "flex items-start justify-between w-full gap-4 px-4 pt-1"
2409
+ ]);
2410
+ var textFieldSupportingTextVariants = cva(
2347
2411
  [
2348
- // Base helper text styles
2349
- "text-xs mt-1 px-4 transition-colors duration-200"
2412
+ "text-body-small",
2413
+ // Effects transition for color
2414
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects"
2350
2415
  ],
2351
2416
  {
2352
2417
  variants: {
2353
2418
  type: {
2354
2419
  description: "text-on-surface-variant",
2355
2420
  error: "text-error"
2356
- },
2357
- disabled: {
2358
- true: "opacity-38",
2359
- false: ""
2360
2421
  }
2361
2422
  },
2362
2423
  defaultVariants: {
2363
- type: "description",
2364
- disabled: false
2424
+ type: "description"
2365
2425
  }
2366
2426
  }
2367
2427
  );
2368
- var textFieldCharacterCountVariants = cva(
2428
+ var textFieldCounterVariants = cva(
2369
2429
  [
2370
- // Base character counter styles
2371
- "text-xs mt-1 px-4 text-right text-on-surface-variant transition-colors duration-200"
2430
+ "text-body-small shrink-0 text-right",
2431
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects"
2372
2432
  ],
2373
2433
  {
2374
2434
  variants: {
2375
2435
  exceeded: {
2376
2436
  true: "text-error",
2377
- false: ""
2378
- },
2379
- disabled: {
2380
- true: "opacity-38",
2381
- false: ""
2437
+ false: "text-on-surface-variant"
2382
2438
  }
2383
2439
  },
2384
2440
  defaultVariants: {
2385
- exceeded: false,
2386
- disabled: false
2441
+ exceeded: false
2387
2442
  }
2388
2443
  }
2389
2444
  );
@@ -2495,12 +2550,13 @@ TextFieldHeadless.displayName = "TextFieldHeadless";
2495
2550
  var TextField = forwardRef(
2496
2551
  ({
2497
2552
  variant = "filled",
2498
- size = "medium",
2499
2553
  label,
2500
2554
  description,
2501
2555
  errorMessage,
2502
2556
  leadingIcon,
2503
2557
  trailingIcon,
2558
+ prefix,
2559
+ suffix,
2504
2560
  characterCount = false,
2505
2561
  maxLength,
2506
2562
  fullWidth = false,
@@ -2520,6 +2576,7 @@ var TextField = forwardRef(
2520
2576
  ...props
2521
2577
  }, ref) => {
2522
2578
  const spellCheckProp = spellCheck === void 0 ? void 0 : typeof spellCheck === "string" ? spellCheck === "true" : spellCheck;
2579
+ const { isHovered, hoverProps } = useHover({ isDisabled });
2523
2580
  const headlessProps = {
2524
2581
  ...label !== void 0 ? { label } : {},
2525
2582
  ...description !== void 0 ? { description } : {},
@@ -2546,149 +2603,131 @@ var TextField = forwardRef(
2546
2603
  errorMessageProps,
2547
2604
  isInvalid: fieldIsInvalid,
2548
2605
  isFocused,
2606
+ isFocusVisible,
2549
2607
  currentValue,
2550
2608
  inputRef
2551
2609
  }) => {
2552
2610
  const hasValue = currentValue.length > 0;
2553
- const shouldFloatLabel = isFocused || hasValue;
2611
+ const hasPlaceholder = !!props.placeholder;
2612
+ const hasPrefix = !!prefix;
2613
+ const hasSuffix = !!suffix;
2614
+ const shouldFloat = isFocused || hasValue || hasPlaceholder || hasPrefix;
2554
2615
  const characterLength = currentValue.length;
2555
2616
  const isCharacterLimitExceeded = maxLength ? characterLength > maxLength : false;
2556
- return /* @__PURE__ */ jsxs("div", { className: cn(textFieldContainerVariants({ fullWidth }), className), children: [
2557
- /* @__PURE__ */ jsxs(
2558
- "div",
2559
- {
2560
- className: cn(
2561
- textFieldWrapperVariants({
2562
- variant,
2563
- size,
2564
- disabled: isDisabled,
2565
- error: fieldIsInvalid,
2566
- focused: isFocused
2567
- })
2568
- ),
2569
- children: [
2617
+ const hasLeadingIcon = !!leadingIcon;
2618
+ const hasTrailingIcon = !!trailingIcon;
2619
+ const hasLabel = !!label;
2620
+ const showDescription = !!description && !fieldIsInvalid;
2621
+ const showError = fieldIsInvalid && !!errorMessage;
2622
+ const showCounter = characterCount && maxLength !== void 0;
2623
+ const showSupportingRow = showDescription || showError || showCounter;
2624
+ return /* @__PURE__ */ jsxs(
2625
+ "div",
2626
+ {
2627
+ className: cn(textFieldRootVariants({ fullWidth }), "group/text-field", className),
2628
+ ...getInteractionDataAttributes({
2629
+ isHovered,
2630
+ isFocusVisible,
2631
+ isDisabled,
2632
+ isReadOnly,
2633
+ isInvalid: fieldIsInvalid
2634
+ }),
2635
+ "data-focused": isFocused ? "" : void 0,
2636
+ "data-float": shouldFloat ? "" : void 0,
2637
+ "data-with-leading-icon": hasLeadingIcon ? "" : void 0,
2638
+ "data-with-trailing-icon": hasTrailingIcon ? "" : void 0,
2639
+ "data-with-prefix": hasPrefix ? "" : void 0,
2640
+ "data-with-suffix": hasSuffix ? "" : void 0,
2641
+ "data-no-label": !hasLabel ? "" : void 0,
2642
+ "data-multiline": multiline ? "" : void 0,
2643
+ children: [
2644
+ /* @__PURE__ */ jsxs("div", { ...hoverProps, className: cn(textFieldFieldVariants({ variant })), children: [
2645
+ variant === "filled" && /* @__PURE__ */ jsx("span", { className: cn(textFieldStateLayerVariants()), "aria-hidden": "true" }),
2570
2646
  leadingIcon && /* @__PURE__ */ jsx(
2571
2647
  "span",
2572
2648
  {
2573
- className: textFieldIconVariants({
2574
- position: "leading",
2575
- size,
2576
- disabled: isDisabled
2577
- }),
2649
+ className: cn(textFieldIconVariants({ position: "leading" })),
2650
+ "aria-hidden": "true",
2578
2651
  children: leadingIcon
2579
2652
  }
2580
2653
  ),
2581
- label && /* @__PURE__ */ jsxs(
2582
- "label",
2654
+ /* @__PURE__ */ jsxs("div", { className: "relative flex h-full min-w-0 flex-1 items-center", children: [
2655
+ label && /* @__PURE__ */ jsxs("label", { ...labelProps, className: cn(textFieldLabelVariants({ variant })), children: [
2656
+ label,
2657
+ isRequired && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\u2009*" })
2658
+ ] }),
2659
+ prefix && /* @__PURE__ */ jsx("span", { className: cn(textFieldAffixVariants({ variant, position: "prefix" })), children: prefix }),
2660
+ multiline ? /* @__PURE__ */ jsx(
2661
+ "textarea",
2662
+ {
2663
+ ...inputProps,
2664
+ ref: inputRef,
2665
+ className: cn(textFieldInputVariants({ variant, multiline: true })),
2666
+ rows,
2667
+ spellCheck: spellCheckProp
2668
+ }
2669
+ ) : /* @__PURE__ */ jsx(
2670
+ "input",
2671
+ {
2672
+ ...inputProps,
2673
+ ref: inputRef,
2674
+ className: cn(textFieldInputVariants({ variant, multiline: false })),
2675
+ spellCheck: spellCheckProp
2676
+ }
2677
+ ),
2678
+ suffix && /* @__PURE__ */ jsx("span", { className: cn(textFieldAffixVariants({ variant, position: "suffix" })), children: suffix })
2679
+ ] }),
2680
+ trailingIcon && /* @__PURE__ */ jsx(
2681
+ "span",
2583
2682
  {
2584
- ...labelProps,
2585
- className: cn(
2586
- textFieldLabelVariants({
2587
- variant,
2588
- size,
2589
- floating: shouldFloatLabel,
2590
- focused: isFocused,
2591
- error: fieldIsInvalid,
2592
- disabled: isDisabled,
2593
- hasLeadingIcon: !!leadingIcon
2594
- })
2595
- ),
2596
- children: [
2597
- label,
2598
- isRequired && " *"
2599
- ]
2683
+ className: cn(textFieldIconVariants({ position: "trailing" })),
2684
+ "aria-hidden": "true",
2685
+ children: trailingIcon
2600
2686
  }
2601
2687
  ),
2602
- multiline ? /* @__PURE__ */ jsx(
2603
- "textarea",
2604
- {
2605
- ...inputProps,
2606
- ref: inputRef,
2607
- className: cn(
2608
- textFieldInputVariants({
2609
- variant,
2610
- size,
2611
- disabled: isDisabled,
2612
- hasLeadingIcon: !!leadingIcon,
2613
- hasTrailingIcon: !!trailingIcon,
2614
- multiline: true
2615
- }),
2616
- label && "placeholder:opacity-0"
2617
- ),
2618
- rows,
2619
- spellCheck: spellCheckProp
2620
- }
2621
- ) : /* @__PURE__ */ jsx(
2622
- "input",
2688
+ variant === "filled" && /* @__PURE__ */ jsx("span", { className: cn(textFieldActiveIndicatorVariants()), "aria-hidden": "true" }),
2689
+ variant === "outlined" && /* @__PURE__ */ jsx("fieldset", { "aria-hidden": "true", className: cn(textFieldOutlineVariants()), children: /* @__PURE__ */ jsx("legend", { className: cn(textFieldNotchVariants()), children: label && /* @__PURE__ */ jsxs("span", { children: [
2690
+ label,
2691
+ isRequired && "\u2009*"
2692
+ ] }) }) })
2693
+ ] }),
2694
+ showSupportingRow && /* @__PURE__ */ jsxs("div", { className: cn(textFieldSupportingRowVariants()), children: [
2695
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
2696
+ showDescription && /* @__PURE__ */ jsx(
2697
+ "p",
2698
+ {
2699
+ ...descriptionProps,
2700
+ className: cn(textFieldSupportingTextVariants({ type: "description" })),
2701
+ children: description
2702
+ }
2703
+ ),
2704
+ showError && /* @__PURE__ */ jsx(
2705
+ "p",
2706
+ {
2707
+ ...errorMessageProps,
2708
+ className: cn(textFieldSupportingTextVariants({ type: "error" })),
2709
+ children: errorMessage
2710
+ }
2711
+ )
2712
+ ] }),
2713
+ showCounter && /* @__PURE__ */ jsxs(
2714
+ "span",
2623
2715
  {
2624
- ...inputProps,
2625
- ref: inputRef,
2626
2716
  className: cn(
2627
- textFieldInputVariants({
2628
- variant,
2629
- size,
2630
- disabled: isDisabled,
2631
- hasLeadingIcon: !!leadingIcon,
2632
- hasTrailingIcon: !!trailingIcon,
2633
- multiline: false
2634
- }),
2635
- label && "placeholder:opacity-0"
2636
- // Hide placeholder when there's a value to prevent overlap with floating label
2717
+ textFieldCounterVariants({ exceeded: isCharacterLimitExceeded })
2637
2718
  ),
2638
- spellCheck: spellCheckProp
2639
- }
2640
- ),
2641
- trailingIcon && /* @__PURE__ */ jsx(
2642
- "span",
2643
- {
2644
- className: textFieldIconVariants({
2645
- position: "trailing",
2646
- size,
2647
- disabled: isDisabled
2648
- }),
2649
- children: trailingIcon
2719
+ "aria-live": "polite",
2720
+ children: [
2721
+ characterLength,
2722
+ "\u2009/\u2009",
2723
+ maxLength
2724
+ ]
2650
2725
  }
2651
2726
  )
2652
- ]
2653
- }
2654
- ),
2655
- description && !fieldIsInvalid && /* @__PURE__ */ jsx(
2656
- "div",
2657
- {
2658
- ...descriptionProps,
2659
- className: textFieldHelperTextVariants({
2660
- type: "description",
2661
- disabled: isDisabled
2662
- }),
2663
- children: description
2664
- }
2665
- ),
2666
- fieldIsInvalid && errorMessage && /* @__PURE__ */ jsx(
2667
- "div",
2668
- {
2669
- ...errorMessageProps,
2670
- className: textFieldHelperTextVariants({
2671
- type: "error",
2672
- disabled: isDisabled
2673
- }),
2674
- children: errorMessage
2675
- }
2676
- ),
2677
- characterCount && maxLength && /* @__PURE__ */ jsxs(
2678
- "div",
2679
- {
2680
- className: textFieldCharacterCountVariants({
2681
- exceeded: isCharacterLimitExceeded,
2682
- disabled: isDisabled
2683
- }),
2684
- children: [
2685
- characterLength,
2686
- " / ",
2687
- maxLength
2688
- ]
2689
- }
2690
- )
2691
- ] });
2727
+ ] })
2728
+ ]
2729
+ }
2730
+ );
2692
2731
  } });
2693
2732
  }
2694
2733
  );
@@ -13199,10 +13238,17 @@ function mapToInputProps(props) {
13199
13238
  const { orientation: _orientation, minuteStep: _minuteStep, ...inputProps } = props;
13200
13239
  return inputProps;
13201
13240
  }
13202
- function CalendarCell({ date, state }) {
13241
+ function CalendarCell({
13242
+ date,
13243
+ state,
13244
+ className,
13245
+ children
13246
+ }) {
13203
13247
  const ref = useRef(null);
13204
13248
  const { cellProps, buttonProps, isSelected, isDisabled, isUnavailable, formattedDate } = useCalendarCell({ date }, state, ref);
13205
- const { focusProps, isFocusVisible, isFocused } = useFocusRing();
13249
+ const { focusProps, isFocusVisible } = useFocusRing();
13250
+ const { hoverProps, isHovered } = useHover({ isDisabled: isDisabled || isUnavailable });
13251
+ const { pressProps, isPressed } = usePress({ isDisabled: isDisabled || isUnavailable });
13206
13252
  const isCurrentDay = isSameDay(date, today(getLocalTimeZone()));
13207
13253
  const isOutsideMonth = date.month !== state.visibleRange.start.month || date.year !== state.visibleRange.start.year;
13208
13254
  let isRangeStart = false;
@@ -13214,28 +13260,38 @@ function CalendarCell({ date, state }) {
13214
13260
  isRangeEnd = isSameDay(date, range.end);
13215
13261
  isRangeMiddle = date.compare(range.start) > 0 && date.compare(range.end) < 0;
13216
13262
  }
13217
- return /* @__PURE__ */ jsx("td", { ...cellProps, children: /* @__PURE__ */ jsx(
13263
+ return /* @__PURE__ */ jsx("td", { ...cellProps, children: /* @__PURE__ */ jsxs(
13218
13264
  "div",
13219
13265
  {
13220
- ...mergeProps$1(buttonProps, focusProps),
13266
+ ...mergeProps$1(buttonProps, focusProps, hoverProps, pressProps),
13221
13267
  ref,
13268
+ className,
13222
13269
  "aria-current": isCurrentDay ? "date" : void 0,
13223
- "data-selected": isSelected || void 0,
13224
- "data-today": isCurrentDay || void 0,
13225
- "data-outside-month": isOutsideMonth || void 0,
13226
- "data-range-start": isRangeStart || void 0,
13227
- "data-range-end": isRangeEnd || void 0,
13228
- "data-range-middle": isRangeMiddle || void 0,
13229
- "data-disabled": isDisabled || void 0,
13230
- "data-unavailable": isUnavailable || void 0,
13231
- "data-focused": isFocused || void 0,
13232
- "data-focus-visible": isFocusVisible || void 0,
13233
- children: formattedDate
13270
+ "data-selected": isSelected ? "" : void 0,
13271
+ "data-today": isCurrentDay ? "" : void 0,
13272
+ "data-outside-month": isOutsideMonth ? "" : void 0,
13273
+ "data-range-start": isRangeStart ? "" : void 0,
13274
+ "data-range-end": isRangeEnd ? "" : void 0,
13275
+ "data-range-middle": isRangeMiddle ? "" : void 0,
13276
+ "data-disabled": isDisabled ? "" : void 0,
13277
+ "data-unavailable": isUnavailable ? "" : void 0,
13278
+ "data-focus-visible": isFocusVisible ? "" : void 0,
13279
+ "data-hovered": isHovered ? "" : void 0,
13280
+ "data-pressed": isPressed ? "" : void 0,
13281
+ children: [
13282
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10", children: formattedDate }),
13283
+ children
13284
+ ]
13234
13285
  }
13235
13286
  ) });
13236
13287
  }
13237
13288
  CalendarCell.displayName = "CalendarCell";
13238
- function CalendarGrid({ state, firstDayOfWeek }) {
13289
+ function CalendarGrid({
13290
+ state,
13291
+ firstDayOfWeek,
13292
+ CellComponent = CalendarCell,
13293
+ WeekdayComponent
13294
+ }) {
13239
13295
  const { locale } = useLocale();
13240
13296
  const gridOptions = firstDayOfWeek ? { firstDayOfWeek } : {};
13241
13297
  const { gridProps, headerProps, weekDays } = useCalendarGrid(gridOptions, state);
@@ -13245,9 +13301,11 @@ function CalendarGrid({ state, firstDayOfWeek }) {
13245
13301
  firstDayOfWeek ?? void 0
13246
13302
  );
13247
13303
  return /* @__PURE__ */ jsxs("table", { ...gridProps, children: [
13248
- /* @__PURE__ */ jsx("thead", { ...headerProps, "aria-hidden": void 0, children: /* @__PURE__ */ jsx("tr", { children: weekDays.map((day, index) => /* @__PURE__ */ jsx("th", { role: "columnheader", children: day }, index)) }) }),
13304
+ /* @__PURE__ */ jsx("thead", { ...headerProps, "aria-hidden": void 0, children: /* @__PURE__ */ jsx("tr", { children: weekDays.map(
13305
+ (day, index) => WeekdayComponent ? /* @__PURE__ */ jsx("th", { role: "columnheader", children: /* @__PURE__ */ jsx(WeekdayComponent, { label: day }) }, index) : /* @__PURE__ */ jsx("th", { role: "columnheader", children: day }, index)
13306
+ ) }) }),
13249
13307
  /* @__PURE__ */ jsx("tbody", { children: [...new Array(weeksInMonth).keys()].map((weekIndex) => /* @__PURE__ */ jsx("tr", { children: state.getDatesInWeek(weekIndex).map(
13250
- (date, i) => date ? /* @__PURE__ */ jsx(CalendarCell, { state, date }, i) : /* @__PURE__ */ jsx("td", {}, i)
13308
+ (date, i) => date ? /* @__PURE__ */ jsx(CellComponent, { state, date }, i) : /* @__PURE__ */ jsx("td", {}, i)
13251
13309
  ) }, weekIndex)) })
13252
13310
  ] });
13253
13311
  }
@@ -13278,12 +13336,32 @@ function ChevronRightIcon() {
13278
13336
  function DropdownArrowIcon() {
13279
13337
  return /* @__PURE__ */ jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M7 10l5 5 5-5z" }) });
13280
13338
  }
13281
- function CalendarHeader({
13282
- title,
13283
- prevButtonProps,
13284
- nextButtonProps,
13339
+ function DefaultTitle({ title, onClick, showDropdownIndicator }) {
13340
+ if (onClick) {
13341
+ return /* @__PURE__ */ jsxs(
13342
+ "button",
13343
+ {
13344
+ type: "button",
13345
+ onClick,
13346
+ "data-calendar-title": true,
13347
+ "aria-label": `${title}, click to select year`,
13348
+ children: [
13349
+ /* @__PURE__ */ jsx("h2", { "aria-live": "polite", children: title }),
13350
+ showDropdownIndicator && /* @__PURE__ */ jsx(DropdownArrowIcon, {})
13351
+ ]
13352
+ }
13353
+ );
13354
+ }
13355
+ return /* @__PURE__ */ jsx("div", { "data-calendar-title": true, children: /* @__PURE__ */ jsx("h2", { "aria-live": "polite", children: title }) });
13356
+ }
13357
+ function CalendarHeader({
13358
+ title,
13359
+ prevButtonProps,
13360
+ nextButtonProps,
13285
13361
  onTitleClick,
13286
- showDropdownIndicator = false
13362
+ showDropdownIndicator = false,
13363
+ NavButtonComponent = NavigationButton,
13364
+ TitleComponent = DefaultTitle
13287
13365
  }) {
13288
13366
  const enhancedPrevProps = {
13289
13367
  ...prevButtonProps,
@@ -13294,22 +13372,17 @@ function CalendarHeader({
13294
13372
  "aria-label": "Next month"
13295
13373
  };
13296
13374
  return /* @__PURE__ */ jsxs("div", { "data-calendar-header": true, children: [
13297
- onTitleClick ? /* @__PURE__ */ jsxs(
13298
- "button",
13375
+ /* @__PURE__ */ jsx(
13376
+ TitleComponent,
13299
13377
  {
13300
- type: "button",
13378
+ title,
13301
13379
  onClick: onTitleClick,
13302
- "data-calendar-title": true,
13303
- "aria-label": `${title}, click to select year`,
13304
- children: [
13305
- /* @__PURE__ */ jsx("h2", { "aria-live": "polite", children: title }),
13306
- showDropdownIndicator && /* @__PURE__ */ jsx(DropdownArrowIcon, {})
13307
- ]
13380
+ showDropdownIndicator
13308
13381
  }
13309
- ) : /* @__PURE__ */ jsx("div", { "data-calendar-title": true, children: /* @__PURE__ */ jsx("h2", { "aria-live": "polite", children: title }) }),
13382
+ ),
13310
13383
  /* @__PURE__ */ jsxs("div", { "data-calendar-nav": true, children: [
13311
- /* @__PURE__ */ jsx(NavigationButton, { ...enhancedPrevProps, children: /* @__PURE__ */ jsx(ChevronLeftIcon, {}) }),
13312
- /* @__PURE__ */ jsx(NavigationButton, { ...enhancedNextProps, children: /* @__PURE__ */ jsx(ChevronRightIcon, {}) })
13384
+ /* @__PURE__ */ jsx(NavButtonComponent, { ...enhancedPrevProps, children: /* @__PURE__ */ jsx(ChevronLeftIcon, {}) }),
13385
+ /* @__PURE__ */ jsx(NavButtonComponent, { ...enhancedNextProps, children: /* @__PURE__ */ jsx(ChevronRightIcon, {}) })
13313
13386
  ] })
13314
13387
  ] });
13315
13388
  }
@@ -13328,7 +13401,8 @@ function YearGrid({
13328
13401
  selectedYear,
13329
13402
  onYearSelect,
13330
13403
  minYear,
13331
- maxYear
13404
+ maxYear,
13405
+ YearItemComponent
13332
13406
  }) {
13333
13407
  const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
13334
13408
  const startYear = minYear ?? currentYear - YEAR_RANGE_OFFSET;
@@ -13354,6 +13428,17 @@ function YearGrid({
13354
13428
  },
13355
13429
  children: years.map((year) => {
13356
13430
  const isSelected = year === selectedYear;
13431
+ if (YearItemComponent) {
13432
+ return /* @__PURE__ */ jsx(
13433
+ YearItemComponent,
13434
+ {
13435
+ year,
13436
+ isSelected,
13437
+ onSelect: onYearSelect
13438
+ },
13439
+ year
13440
+ );
13441
+ }
13357
13442
  return /* @__PURE__ */ jsx(
13358
13443
  "button",
13359
13444
  {
@@ -13361,7 +13446,7 @@ function YearGrid({
13361
13446
  role: "gridcell",
13362
13447
  "aria-selected": isSelected,
13363
13448
  "data-year-item": true,
13364
- "data-selected": isSelected || void 0,
13449
+ "data-selected": isSelected ? "" : void 0,
13365
13450
  ref: isSelected ? selectedRef : void 0,
13366
13451
  onClick: () => onYearSelect(year),
13367
13452
  children: year
@@ -13417,6 +13502,7 @@ function SingleCalendarInner({ calendarRef, ...props }) {
13417
13502
  setCurrentView("day");
13418
13503
  props.onViewChange?.("day");
13419
13504
  };
13505
+ const slots = props.slots ?? {};
13420
13506
  return /* @__PURE__ */ jsxs("div", { ...calendarProps, ref: calendarRef, className: props.className, "data-view": currentView, children: [
13421
13507
  /* @__PURE__ */ jsx(
13422
13508
  CalendarHeader,
@@ -13425,14 +13511,25 @@ function SingleCalendarInner({ calendarRef, ...props }) {
13425
13511
  prevButtonProps: currentView === "day" ? prevButtonProps : { isDisabled: true },
13426
13512
  nextButtonProps: currentView === "day" ? nextButtonProps : { isDisabled: true },
13427
13513
  onTitleClick: handleTitleClick,
13428
- showDropdownIndicator: true
13514
+ showDropdownIndicator: true,
13515
+ ...slots.NavButtonComponent ? { NavButtonComponent: slots.NavButtonComponent } : {},
13516
+ ...slots.TitleComponent ? { TitleComponent: slots.TitleComponent } : {}
13429
13517
  }
13430
13518
  ),
13431
- currentView === "day" ? /* @__PURE__ */ jsx(CalendarGrid, { state, firstDayOfWeek: firstDay }) : /* @__PURE__ */ jsx(
13519
+ currentView === "day" ? /* @__PURE__ */ jsx(
13520
+ CalendarGrid,
13521
+ {
13522
+ state,
13523
+ firstDayOfWeek: firstDay,
13524
+ ...slots.CellComponent ? { CellComponent: slots.CellComponent } : {},
13525
+ ...slots.WeekdayComponent ? { WeekdayComponent: slots.WeekdayComponent } : {}
13526
+ }
13527
+ ) : /* @__PURE__ */ jsx(
13432
13528
  YearGrid,
13433
13529
  {
13434
13530
  selectedYear: state.focusedDate.year,
13435
13531
  onYearSelect: handleYearSelect,
13532
+ ...slots.YearItemComponent ? { YearItemComponent: slots.YearItemComponent } : {},
13436
13533
  ...props.minValue ? { minYear: props.minValue.year } : {},
13437
13534
  ...props.maxValue ? { maxYear: props.maxValue.year } : {}
13438
13535
  }
@@ -13492,6 +13589,7 @@ function RangeCalendarInner({ calendarRef, ...props }) {
13492
13589
  setCurrentView("day");
13493
13590
  props.onViewChange?.("day");
13494
13591
  };
13592
+ const slots = props.slots ?? {};
13495
13593
  return /* @__PURE__ */ jsxs("div", { ...calendarProps, ref: calendarRef, className: props.className, "data-view": currentView, children: [
13496
13594
  /* @__PURE__ */ jsx(
13497
13595
  CalendarHeader,
@@ -13500,14 +13598,25 @@ function RangeCalendarInner({ calendarRef, ...props }) {
13500
13598
  prevButtonProps: currentView === "day" ? prevButtonProps : { isDisabled: true },
13501
13599
  nextButtonProps: currentView === "day" ? nextButtonProps : { isDisabled: true },
13502
13600
  onTitleClick: handleTitleClick,
13503
- showDropdownIndicator: true
13601
+ showDropdownIndicator: true,
13602
+ ...slots.NavButtonComponent ? { NavButtonComponent: slots.NavButtonComponent } : {},
13603
+ ...slots.TitleComponent ? { TitleComponent: slots.TitleComponent } : {}
13504
13604
  }
13505
13605
  ),
13506
- currentView === "day" ? /* @__PURE__ */ jsx(CalendarGrid, { state, firstDayOfWeek: firstDay }) : /* @__PURE__ */ jsx(
13606
+ currentView === "day" ? /* @__PURE__ */ jsx(
13607
+ CalendarGrid,
13608
+ {
13609
+ state,
13610
+ firstDayOfWeek: firstDay,
13611
+ ...slots.CellComponent ? { CellComponent: slots.CellComponent } : {},
13612
+ ...slots.WeekdayComponent ? { WeekdayComponent: slots.WeekdayComponent } : {}
13613
+ }
13614
+ ) : /* @__PURE__ */ jsx(
13507
13615
  YearGrid,
13508
13616
  {
13509
13617
  selectedYear: state.focusedDate.year,
13510
13618
  onYearSelect: handleYearSelect,
13619
+ ...slots.YearItemComponent ? { YearItemComponent: slots.YearItemComponent } : {},
13511
13620
  ...props.minValue ? { minYear: props.minValue.year } : {},
13512
13621
  ...props.maxValue ? { maxYear: props.maxValue.year } : {}
13513
13622
  }
@@ -13525,6 +13634,24 @@ var CalendarCore = forwardRef((props, forwardedRef) => {
13525
13634
  return /* @__PURE__ */ jsx(SingleCalendarInner, { ...rest, calendarRef: ref }, "single");
13526
13635
  });
13527
13636
  CalendarCore.displayName = "CalendarCore";
13637
+ function HeadlessActionButton({
13638
+ label,
13639
+ "aria-label": ariaLabel,
13640
+ onPress,
13641
+ isDisabled,
13642
+ "data-action": dataAction
13643
+ }) {
13644
+ const ref = useRef(null);
13645
+ const { buttonProps } = useButton(
13646
+ {
13647
+ "aria-label": ariaLabel ?? label,
13648
+ isDisabled: isDisabled ?? false,
13649
+ ...onPress ? { onPress } : {}
13650
+ },
13651
+ ref
13652
+ );
13653
+ return /* @__PURE__ */ jsx("button", { ...buttonProps, ref, type: "button", "data-action": dataAction, children: label });
13654
+ }
13528
13655
  function DatePickerActions({
13529
13656
  cancelLabel = "Cancel",
13530
13657
  confirmLabel = "OK",
@@ -13534,37 +13661,38 @@ function DatePickerActions({
13534
13661
  onCancel,
13535
13662
  onConfirm,
13536
13663
  onClear,
13537
- className
13664
+ className,
13665
+ ButtonComponent = HeadlessActionButton
13538
13666
  }) {
13539
- const clearRef = useRef(null);
13540
- const cancelRef = useRef(null);
13541
- const confirmRef = useRef(null);
13542
- const { buttonProps: clearButtonProps } = useButton(
13543
- {
13544
- "aria-label": clearLabel,
13545
- ...onClear ? { onPress: onClear } : {}
13546
- },
13547
- clearRef
13548
- );
13549
- const { buttonProps: cancelButtonProps } = useButton(
13550
- {
13551
- "aria-label": cancelLabel,
13552
- ...onCancel ? { onPress: onCancel } : {}
13553
- },
13554
- cancelRef
13555
- );
13556
- const { buttonProps: confirmButtonProps } = useButton(
13557
- {
13558
- "aria-label": confirmLabel,
13559
- isDisabled: isConfirmDisabled,
13560
- ...onConfirm ? { onPress: onConfirm } : {}
13561
- },
13562
- confirmRef
13563
- );
13564
13667
  return /* @__PURE__ */ jsxs("div", { className, "data-actions": true, children: [
13565
- showClear && /* @__PURE__ */ jsx("button", { ...clearButtonProps, ref: clearRef, type: "button", "data-action": "clear", children: clearLabel }),
13566
- /* @__PURE__ */ jsx("button", { ...cancelButtonProps, ref: cancelRef, type: "button", "data-action": "cancel", children: cancelLabel }),
13567
- /* @__PURE__ */ jsx("button", { ...confirmButtonProps, ref: confirmRef, type: "button", "data-action": "confirm", children: confirmLabel })
13668
+ showClear && /* @__PURE__ */ jsx(
13669
+ ButtonComponent,
13670
+ {
13671
+ label: clearLabel,
13672
+ "aria-label": clearLabel,
13673
+ onPress: onClear,
13674
+ "data-action": "clear"
13675
+ }
13676
+ ),
13677
+ /* @__PURE__ */ jsx(
13678
+ ButtonComponent,
13679
+ {
13680
+ label: cancelLabel,
13681
+ "aria-label": cancelLabel,
13682
+ onPress: onCancel,
13683
+ "data-action": "cancel"
13684
+ }
13685
+ ),
13686
+ /* @__PURE__ */ jsx(
13687
+ ButtonComponent,
13688
+ {
13689
+ label: confirmLabel,
13690
+ "aria-label": confirmLabel,
13691
+ onPress: onConfirm,
13692
+ isDisabled: isConfirmDisabled,
13693
+ "data-action": "confirm"
13694
+ }
13695
+ )
13568
13696
  ] });
13569
13697
  }
13570
13698
  DatePickerActions.displayName = "DatePickerActions";
@@ -13603,21 +13731,26 @@ function CalendarTriggerIcon() {
13603
13731
  }
13604
13732
  function PopoverContent({
13605
13733
  popoverRef,
13606
- triggerRef,
13734
+ anchorRef,
13607
13735
  state,
13608
13736
  dialogProps,
13609
13737
  calendarProps,
13610
13738
  cancelLabel,
13611
13739
  confirmLabel,
13612
13740
  onCancel,
13613
- onConfirm
13741
+ onConfirm,
13742
+ slots,
13743
+ ActionButtonComponent,
13744
+ popoverClassName
13614
13745
  }) {
13615
13746
  const { popoverProps } = usePopover(
13616
13747
  {
13617
13748
  popoverRef,
13618
- triggerRef,
13749
+ triggerRef: anchorRef,
13619
13750
  placement: "bottom start",
13620
- offset: 4
13751
+ offset: 4,
13752
+ shouldFlip: true,
13753
+ containerPadding: 12
13621
13754
  },
13622
13755
  state
13623
13756
  );
@@ -13631,7 +13764,10 @@ function PopoverContent({
13631
13764
  document.addEventListener("keydown", handleKeyDown);
13632
13765
  return () => document.removeEventListener("keydown", handleKeyDown);
13633
13766
  }, [state]);
13634
- return /* @__PURE__ */ jsxs("div", { ...popoverProps, ref: popoverRef, "data-popover": true, children: [
13767
+ if (typeof document === "undefined") {
13768
+ return null;
13769
+ }
13770
+ const content = /* @__PURE__ */ jsxs("div", { ...popoverProps, ref: popoverRef, "data-popover": true, className: cn(popoverClassName), children: [
13635
13771
  /* @__PURE__ */ jsx(DismissButton, { onDismiss: () => state.close() }),
13636
13772
  /* @__PURE__ */ jsxs("div", { ...dialogProps, role: "dialog", children: [
13637
13773
  /* @__PURE__ */ jsx(
@@ -13646,7 +13782,8 @@ function PopoverContent({
13646
13782
  ...calendarProps.isReadOnly ? { isReadOnly: calendarProps.isReadOnly } : {},
13647
13783
  ...calendarProps.isDateUnavailable ? { isDateUnavailable: calendarProps.isDateUnavailable } : {}
13648
13784
  },
13649
- "aria-label": calendarProps["aria-label"] ?? "Calendar"
13785
+ "aria-label": calendarProps["aria-label"] ?? "Calendar",
13786
+ ...slots ? { slots } : {}
13650
13787
  }
13651
13788
  ),
13652
13789
  /* @__PURE__ */ jsx(
@@ -13655,12 +13792,14 @@ function PopoverContent({
13655
13792
  cancelLabel,
13656
13793
  confirmLabel,
13657
13794
  onCancel,
13658
- onConfirm
13795
+ onConfirm,
13796
+ ...ActionButtonComponent !== void 0 ? { ButtonComponent: ActionButtonComponent } : {}
13659
13797
  }
13660
13798
  )
13661
13799
  ] }),
13662
13800
  /* @__PURE__ */ jsx(DismissButton, { onDismiss: () => state.close() })
13663
13801
  ] });
13802
+ return createPortal(content, document.body);
13664
13803
  }
13665
13804
  var DatePickerDocked = forwardRef(
13666
13805
  (props, forwardedRef) => {
@@ -13670,11 +13809,15 @@ var DatePickerDocked = forwardRef(
13670
13809
  onCancel,
13671
13810
  onConfirm,
13672
13811
  className,
13812
+ popoverClassName,
13813
+ slots,
13814
+ ActionButtonComponent,
13673
13815
  ...datePickerProps
13674
13816
  } = props;
13675
13817
  const internalRef = useRef(null);
13676
13818
  const ref = forwardedRef ?? internalRef;
13677
13819
  const triggerRef = useRef(null);
13820
+ const groupRef = useRef(null);
13678
13821
  const popoverRef = useRef(null);
13679
13822
  const stateProps = {
13680
13823
  ...datePickerProps.value !== void 0 ? { value: datePickerProps.value } : {},
@@ -13705,7 +13848,14 @@ var DatePickerDocked = forwardRef(
13705
13848
  dialogProps,
13706
13849
  calendarProps
13707
13850
  } = useDatePicker(stateProps, state, ref);
13708
- const { buttonProps: iconButtonProps } = useButton(triggerButtonAriaProps, triggerRef);
13851
+ const { buttonProps: iconButtonProps, isPressed: isTriggerPressed } = useButton(
13852
+ triggerButtonAriaProps,
13853
+ triggerRef
13854
+ );
13855
+ const { isFocusVisible: isTriggerFocusVisible, focusProps: triggerFocusProps } = useFocusRing();
13856
+ const { isHovered: isTriggerHovered, hoverProps: triggerHoverProps } = useHover({
13857
+ isDisabled: datePickerProps.isDisabled ?? false
13858
+ });
13709
13859
  const valueBeforeOpenRef = useRef(null);
13710
13860
  useEffect(() => {
13711
13861
  if (state.isOpen) {
@@ -13734,26 +13884,44 @@ var DatePickerDocked = forwardRef(
13734
13884
  ref,
13735
13885
  className,
13736
13886
  "data-variant": "docked",
13737
- "data-open": state.isOpen ?? void 0,
13738
- "data-disabled": datePickerProps.isDisabled ?? void 0,
13887
+ "data-open": state.isOpen ? "" : void 0,
13888
+ "data-disabled": datePickerProps.isDisabled ? "" : void 0,
13739
13889
  children: [
13740
13890
  datePickerProps.label && /* @__PURE__ */ jsx("label", { ...labelProps, "data-label": true, children: datePickerProps.label }),
13741
- /* @__PURE__ */ jsxs("div", { ...groupProps, "data-field-group": true, children: [
13891
+ /* @__PURE__ */ jsxs("div", { ...groupProps, ref: groupRef, "data-field-group": true, children: [
13742
13892
  /* @__PURE__ */ jsx(PickerDateField, { fieldProps }),
13743
- /* @__PURE__ */ jsx("button", { ...iconButtonProps, ref: triggerRef, type: "button", "data-trigger": true, children: /* @__PURE__ */ jsx(CalendarTriggerIcon, {}) })
13893
+ /* @__PURE__ */ jsx(
13894
+ "button",
13895
+ {
13896
+ ...mergeProps$1(iconButtonProps, triggerFocusProps, triggerHoverProps),
13897
+ ref: triggerRef,
13898
+ type: "button",
13899
+ "data-trigger": true,
13900
+ ...getInteractionDataAttributes({
13901
+ isHovered: isTriggerHovered,
13902
+ isFocusVisible: isTriggerFocusVisible,
13903
+ isPressed: isTriggerPressed,
13904
+ isDisabled: datePickerProps.isDisabled ?? false
13905
+ }),
13906
+ children: /* @__PURE__ */ jsx(CalendarTriggerIcon, {})
13907
+ }
13908
+ )
13744
13909
  ] }),
13745
13910
  state.isOpen && /* @__PURE__ */ jsx(
13746
13911
  PopoverContent,
13747
13912
  {
13748
13913
  popoverRef,
13749
- triggerRef,
13914
+ anchorRef: groupRef,
13750
13915
  state,
13751
13916
  dialogProps,
13752
13917
  calendarProps,
13753
13918
  cancelLabel,
13754
13919
  confirmLabel,
13755
13920
  onCancel: handleCancel,
13756
- onConfirm: handleConfirm
13921
+ onConfirm: handleConfirm,
13922
+ ...slots !== void 0 ? { slots } : {},
13923
+ ...ActionButtonComponent !== void 0 ? { ActionButtonComponent } : {},
13924
+ ...popoverClassName !== void 0 ? { popoverClassName } : {}
13757
13925
  }
13758
13926
  )
13759
13927
  ]
@@ -13762,298 +13930,570 @@ var DatePickerDocked = forwardRef(
13762
13930
  }
13763
13931
  );
13764
13932
  DatePickerDocked.displayName = "DatePickerDocked";
13765
- var datePickerContainerVariants = cva(
13933
+ var datePickerContainerVariants = cva("", {
13934
+ variants: {
13935
+ variant: {
13936
+ docked: "w-[360px]",
13937
+ // NOTE: measurement-derived (360dp fixed width); permitted exception
13938
+ modal: [
13939
+ "bg-surface-container-high",
13940
+ "rounded-3xl",
13941
+ "overflow-hidden",
13942
+ "w-[360px]"
13943
+ // NOTE: measurement-derived (360dp fixed width); permitted exception
13944
+ ],
13945
+ "modal-input": [
13946
+ "bg-surface-container-high",
13947
+ "rounded-3xl",
13948
+ "overflow-hidden",
13949
+ "w-[328px]"
13950
+ // NOTE: measurement-derived (328dp); permitted exception
13951
+ ]
13952
+ }
13953
+ },
13954
+ defaultVariants: {
13955
+ variant: "docked"
13956
+ }
13957
+ });
13958
+ var calendarCellVariants = cva([
13959
+ // Layout — 48dp circle touch target
13960
+ "relative flex items-center justify-center",
13961
+ "w-[48px] h-[48px]",
13962
+ // NOTE: measurement-derived (48dp touch target); permitted exception
13963
+ "rounded-full",
13964
+ "select-none cursor-pointer",
13965
+ "overflow-hidden",
13966
+ // clips state layer to circle
13967
+ // Typography
13968
+ "text-body-large",
13969
+ // Base text color
13970
+ "text-on-surface",
13971
+ // Effects transition for color changes (not spatial — no overshoot)
13972
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
13973
+ // Remove default focus outline — handled via calendarCellFocusRingVariants
13974
+ "focus-visible:outline-none",
13975
+ // Carries group scope for child slots
13976
+ "group/calendar-cell",
13977
+ // ── Today (unselected) ────────────────────────────────────────────────────
13978
+ "data-[today]:not([data-selected]):text-primary",
13979
+ "data-[today]:not([data-selected]):border data-[today]:not([data-selected]):border-primary",
13980
+ // ── Selected ──────────────────────────────────────────────────────────────
13981
+ "data-[selected]:bg-primary data-[selected]:text-on-primary",
13982
+ // ── Range start/end: half-pill shape (right-flat for start, left-flat for end) ──
13983
+ "data-[range-start]:rounded-r-none",
13984
+ "data-[range-end]:rounded-l-none",
13985
+ // ── Range middle ──────────────────────────────────────────────────────────
13986
+ "data-[range-middle]:bg-secondary-container",
13987
+ "data-[range-middle]:text-on-secondary-container",
13988
+ "data-[range-middle]:rounded-none",
13989
+ // ── Outside month ─────────────────────────────────────────────────────────
13990
+ "data-[outside-month]:not([data-selected]):text-on-surface-variant",
13991
+ // ── Disabled ──────────────────────────────────────────────────────────────
13992
+ "data-[disabled]:text-on-surface/38 data-[disabled]:cursor-not-allowed",
13993
+ // ── Unavailable ───────────────────────────────────────────────────────────
13994
+ "data-[unavailable]:text-on-surface/38 data-[unavailable]:line-through"
13995
+ ]);
13996
+ var calendarCellStateLayerVariants = cva([
13997
+ "pointer-events-none absolute inset-0 rounded-[inherit] opacity-0",
13998
+ // Base state-layer color (unselected)
13999
+ "bg-on-surface",
14000
+ // Effects transition — spring standard fast (no spatial overshoot)
14001
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14002
+ // Selected → state layer color switches to on-primary
14003
+ "group-data-[selected]/calendar-cell:bg-on-primary",
14004
+ // Range middle → state layer color switches to on-secondary-container
14005
+ "group-data-[range-middle]/calendar-cell:bg-on-secondary-container",
14006
+ // Interaction opacities (MD3: hover 8%, focus/pressed 10%)
14007
+ "group-data-[hovered]/calendar-cell:opacity-8",
14008
+ "group-data-[focus-visible]/calendar-cell:opacity-10",
14009
+ "group-data-[pressed]/calendar-cell:opacity-10",
14010
+ // No state layer for disabled/unavailable
14011
+ "group-data-[disabled]/calendar-cell:hidden",
14012
+ "group-data-[unavailable]/calendar-cell:hidden"
14013
+ ]);
14014
+ var calendarCellFocusRingVariants = cva([
14015
+ "pointer-events-none absolute inset-0 rounded-full",
14016
+ "outline outline-2 outline-offset-0 outline-secondary",
14017
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14018
+ "opacity-0",
14019
+ "group-data-[focus-visible]/calendar-cell:opacity-100"
14020
+ ]);
14021
+ var calendarHeaderVariants = cva([
14022
+ "flex items-center justify-between",
14023
+ "px-3 py-2"
14024
+ // NOTE: measurement-derived padding; permitted exception
14025
+ ]);
14026
+ var navButtonVariants = cva([
14027
+ // Layout
14028
+ "relative flex items-center justify-center",
14029
+ "w-10 h-10 rounded-full",
14030
+ // NOTE: 40dp; permitted exception
14031
+ // Typography
14032
+ "text-on-surface-variant",
14033
+ // Reset
14034
+ "bg-transparent border-none cursor-pointer",
14035
+ "overflow-hidden",
14036
+ // Focus outline removed — ring handled by navButtonFocusRingVariants
14037
+ "focus-visible:outline-none",
14038
+ // Effects transition
14039
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14040
+ // Disabled — self-targeting
14041
+ "data-[disabled]:text-on-surface/38 data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none",
14042
+ // Carries group scope
14043
+ "group/nav-button"
14044
+ ]);
14045
+ var navButtonStateLayerVariants = cva([
14046
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14047
+ "bg-on-surface-variant",
14048
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14049
+ "group-data-[hovered]/nav-button:opacity-8",
14050
+ "group-data-[focus-visible]/nav-button:opacity-10",
14051
+ "group-data-[pressed]/nav-button:opacity-10",
14052
+ "group-data-[disabled]/nav-button:hidden"
14053
+ ]);
14054
+ var navButtonFocusRingVariants = cva([
14055
+ "pointer-events-none absolute inset-0 rounded-full",
14056
+ "outline outline-2 outline-offset-0 outline-secondary",
14057
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14058
+ "opacity-0",
14059
+ "group-data-[focus-visible]/nav-button:opacity-100"
14060
+ ]);
14061
+ var calendarTitleVariants = cva([
14062
+ "relative flex items-center gap-0.5",
14063
+ "bg-transparent border-none cursor-pointer",
14064
+ "rounded-full px-2 py-1",
14065
+ "overflow-hidden",
14066
+ "focus-visible:outline-none",
14067
+ // Effects transition
14068
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14069
+ // Group scope
14070
+ "group/calendar-title"
14071
+ ]);
14072
+ var calendarTitleTextVariants = cva([
14073
+ "text-label-large text-on-surface-variant m-0 pointer-events-none"
14074
+ ]);
14075
+ var calendarTitleIconVariants = cva(["text-on-surface-variant pointer-events-none"]);
14076
+ var calendarTitleStateLayerVariants = cva([
14077
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14078
+ "bg-on-surface-variant",
14079
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14080
+ "group-data-[hovered]/calendar-title:opacity-8",
14081
+ "group-data-[focus-visible]/calendar-title:opacity-10",
14082
+ "group-data-[pressed]/calendar-title:opacity-10"
14083
+ ]);
14084
+ var yearGridVariants = cva([
14085
+ "grid grid-cols-3 gap-2",
14086
+ "px-3 py-2",
14087
+ "max-h-[280px] overflow-y-auto",
14088
+ // NOTE: measurement-derived max height; permitted exception
14089
+ "place-items-center"
14090
+ ]);
14091
+ var yearItemVariants = cva([
14092
+ // Layout
14093
+ "relative flex items-center justify-center",
14094
+ "w-[88px] h-[52px]",
14095
+ // NOTE: measurement-derived (88dp×52dp); permitted exception
14096
+ "rounded-full",
14097
+ "cursor-pointer select-none",
14098
+ "overflow-hidden",
14099
+ // Typography
14100
+ "text-body-large",
14101
+ // Reset
14102
+ "bg-transparent border-none",
14103
+ // Focus outline removed — ring handled by yearItemFocusRingVariants
14104
+ "focus-visible:outline-none",
14105
+ // Effects transition
14106
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14107
+ // Group scope
14108
+ "group/year-item",
14109
+ // ── Unselected (base) ─────────────────────────────────────────────────────
14110
+ "text-on-surface-variant",
14111
+ // ── Selected ──────────────────────────────────────────────────────────────
14112
+ "data-[selected]:bg-primary data-[selected]:text-on-primary",
14113
+ // ── Disabled ──────────────────────────────────────────────────────────────
14114
+ "data-[disabled]:text-on-surface/38 data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none"
14115
+ ]);
14116
+ var yearItemStateLayerVariants = cva([
14117
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14118
+ "bg-on-surface-variant",
14119
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14120
+ // Selected → state layer switches color
14121
+ "group-data-[selected]/year-item:bg-on-primary",
14122
+ // Interaction opacities
14123
+ "group-data-[hovered]/year-item:opacity-8",
14124
+ "group-data-[focus-visible]/year-item:opacity-10",
14125
+ "group-data-[pressed]/year-item:opacity-10",
14126
+ "group-data-[disabled]/year-item:hidden"
14127
+ ]);
14128
+ var yearItemFocusRingVariants = cva([
14129
+ "pointer-events-none absolute inset-0 rounded-full",
14130
+ "outline outline-2 outline-offset-0 outline-secondary",
14131
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14132
+ "opacity-0",
14133
+ "group-data-[focus-visible]/year-item:opacity-100"
14134
+ ]);
14135
+ var weekdayVariants = cva([
14136
+ "text-body-small text-on-surface-variant font-normal",
14137
+ "w-[48px] h-[48px]",
14138
+ // NOTE: measurement-derived; permitted exception
14139
+ "flex items-center justify-center",
14140
+ "select-none"
14141
+ ]);
14142
+ var calendarDividerVariants = cva(["border-t border-outline-variant w-full"]);
14143
+ var actionRowVariants = cva([
14144
+ "flex items-center justify-end gap-2",
14145
+ "px-3 py-2",
14146
+ "h-12"
14147
+ // NOTE: measurement-derived (48dp action row height); permitted exception
14148
+ ]);
14149
+ var actionButtonVariants = cva([
14150
+ // Layout
14151
+ "relative flex items-center justify-center",
14152
+ "rounded-full px-3 py-2 min-h-[48px]",
14153
+ // NOTE: 48dp min touch; permitted exception
14154
+ // Typography + color
14155
+ "text-label-large text-primary",
14156
+ // Reset
14157
+ "bg-transparent border-none cursor-pointer",
14158
+ "overflow-hidden",
14159
+ "focus-visible:outline-none",
14160
+ // Effects transition
14161
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14162
+ // Group scope
14163
+ "group/action-button",
14164
+ // Disabled
14165
+ "data-[disabled]:text-on-surface/38 data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none"
14166
+ ]);
14167
+ var actionButtonStateLayerVariants = cva([
14168
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14169
+ "bg-primary",
14170
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14171
+ "group-data-[hovered]/action-button:opacity-8",
14172
+ "group-data-[focus-visible]/action-button:opacity-10",
14173
+ "group-data-[pressed]/action-button:opacity-10",
14174
+ "group-data-[disabled]/action-button:hidden"
14175
+ ]);
14176
+ var actionButtonFocusRingVariants = cva([
14177
+ "pointer-events-none absolute inset-0 rounded-full",
14178
+ "outline outline-2 outline-offset-0 outline-primary",
14179
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14180
+ "opacity-0",
14181
+ "group-data-[focus-visible]/action-button:opacity-100"
14182
+ ]);
14183
+ var modalDialogVariants = cva(
13766
14184
  [
13767
- "bg-surface-container-high",
13768
- "rounded-3xl",
13769
- // NOTE: shape.extra-large = 28dp; mapped via @theme token
13770
- "overflow-hidden"
14185
+ "bg-surface-container-high rounded-3xl overflow-hidden",
14186
+ "fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
14187
+ "z-50",
14188
+ "max-h-[90vh] overflow-y-auto"
13771
14189
  ],
13772
14190
  {
13773
14191
  variants: {
13774
14192
  variant: {
13775
- docked: "w-[360px]",
13776
- // NOTE: measurement-derived value from MD3 spec (360dp fixed width); permitted exception
13777
14193
  modal: "w-[360px]",
13778
- // NOTE: measurement-derived value from MD3 spec (360dp fixed width); permitted exception
14194
+ // NOTE: measurement-derived; permitted exception
13779
14195
  "modal-input": "w-[328px]"
13780
- // NOTE: measurement-derived value from MD3 spec (328dp); permitted exception
13781
- }
13782
- },
13783
- defaultVariants: {
13784
- variant: "docked"
13785
- }
13786
- }
13787
- );
13788
- var calendarCellVariants = cva(
13789
- [
13790
- "w-[48px]",
13791
- // NOTE: measurement-derived (48dp touch target); permitted exception
13792
- "h-[48px]",
13793
- // NOTE: measurement-derived (48dp); permitted exception
13794
- "rounded-full",
13795
- // shape.full = circle
13796
- "flex",
13797
- "items-center",
13798
- "justify-center",
13799
- "text-body-large",
13800
- "relative",
13801
- "cursor-pointer",
13802
- "select-none",
13803
- "transition-colors",
13804
- "duration-spring-standard-fast-effects",
13805
- "ease-spring-standard-fast-effects"
13806
- ],
13807
- {
13808
- variants: {
13809
- cellType: {
13810
- default: "text-on-surface",
13811
- today: "text-primary border border-primary",
13812
- selected: "bg-primary text-on-primary",
13813
- "selected-range-middle": "bg-secondary-container text-on-secondary-container rounded-none",
13814
- "outside-month": "text-on-surface-variant",
13815
- disabled: "text-on-surface/38 cursor-not-allowed"
13816
- },
13817
- state: {
13818
- enabled: "",
13819
- hovered: "",
13820
- focused: "",
13821
- pressed: ""
14196
+ // NOTE: measurement-derived; permitted exception
13822
14197
  }
13823
14198
  },
13824
- compoundVariants: [
13825
- // Default cell states
13826
- {
13827
- cellType: "default",
13828
- state: "hovered",
13829
- className: "bg-on-surface/8"
13830
- },
13831
- {
13832
- cellType: "default",
13833
- state: "focused",
13834
- className: "bg-on-surface/10 ring-2 ring-on-surface"
13835
- },
13836
- {
13837
- cellType: "default",
13838
- state: "pressed",
13839
- className: "bg-on-surface/10"
13840
- },
13841
- // Today cell states
13842
- {
13843
- cellType: "today",
13844
- state: "hovered",
13845
- className: "bg-primary/8"
13846
- },
13847
- {
13848
- cellType: "today",
13849
- state: "focused",
13850
- className: "bg-primary/10"
13851
- },
13852
- {
13853
- cellType: "today",
13854
- state: "pressed",
13855
- className: "bg-primary/10"
13856
- },
13857
- // Selected cell states
13858
- {
13859
- cellType: "selected",
13860
- state: "hovered",
13861
- className: "bg-primary shadow-sm"
13862
- },
13863
- {
13864
- cellType: "selected",
13865
- state: "focused",
13866
- className: "bg-primary shadow-sm"
13867
- },
13868
- {
13869
- cellType: "selected",
13870
- state: "pressed",
13871
- className: "bg-primary shadow-sm"
13872
- },
13873
- // Range middle states
13874
- {
13875
- cellType: "selected-range-middle",
13876
- state: "hovered",
13877
- className: "bg-secondary-container/80"
13878
- },
13879
- {
13880
- cellType: "selected-range-middle",
13881
- state: "focused",
13882
- className: "bg-secondary-container/80"
13883
- }
13884
- ],
13885
14199
  defaultVariants: {
13886
- cellType: "default",
13887
- state: "enabled"
14200
+ variant: "modal"
13888
14201
  }
13889
14202
  }
13890
14203
  );
13891
- var datePickerHeaderVariants = cva(
13892
- ["px-6", "pt-4", "pb-3"],
14204
+ var modalHeaderVariants = cva([
14205
+ "flex items-start justify-between",
14206
+ "px-6 pt-4 pb-3"
13893
14207
  // NOTE: measurement-derived padding; permitted exception
13894
- {
13895
- variants: {
13896
- variant: {
13897
- docked: "h-[56px] px-3 flex items-center",
13898
- // NOTE: measurement-derived (56dp header); permitted exception
13899
- modal: "h-auto",
13900
- "modal-input": "h-auto"
13901
- }
13902
- },
13903
- defaultVariants: {
13904
- variant: "docked"
13905
- }
13906
- }
13907
- );
13908
- var datePickerNavVariants = cva(
13909
- ["text-on-surface-variant", "flex", "items-center", "gap-1"],
13910
- {
13911
- variants: {
13912
- state: {
13913
- enabled: "",
13914
- hovered: "bg-on-surface-variant/8",
13915
- focused: "bg-on-surface-variant/10",
13916
- pressed: "bg-on-surface-variant/10",
13917
- disabled: "text-on-surface/38 cursor-not-allowed"
13918
- }
14208
+ ]);
14209
+ var headlineVariants = cva(["text-label-large text-on-surface-variant m-0"]);
14210
+ var supportingTextVariants = cva([
14211
+ "text-headline-large text-on-surface mt-9 m-0"
14212
+ // NOTE: measurement-derived mt; permitted exception
14213
+ ]);
14214
+ var modeToggleVariants = cva([
14215
+ "relative flex items-center justify-center",
14216
+ "w-12 h-12 rounded-full",
14217
+ // NOTE: 48dp; permitted exception
14218
+ "text-on-surface-variant",
14219
+ "bg-transparent border-none cursor-pointer self-end",
14220
+ "overflow-hidden",
14221
+ "focus-visible:outline-none",
14222
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14223
+ "group/mode-toggle"
14224
+ ]);
14225
+ var modeToggleStateLayerVariants = cva([
14226
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14227
+ "bg-on-surface-variant",
14228
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14229
+ "group-data-[hovered]/mode-toggle:opacity-8",
14230
+ "group-data-[focus-visible]/mode-toggle:opacity-10",
14231
+ "group-data-[pressed]/mode-toggle:opacity-10"
14232
+ ]);
14233
+ var scrimVariants2 = cva([
14234
+ "fixed inset-0 z-40",
14235
+ "bg-scrim opacity-32",
14236
+ "transition-opacity duration-medium2 ease-standard"
14237
+ ]);
14238
+ var dateInputFieldVariants = cva(["px-6 py-2"]);
14239
+ var dateInputFieldGroupVariants = cva([
14240
+ "flex items-center",
14241
+ "border border-outline rounded-sm",
14242
+ "px-4 py-3",
14243
+ // NOTE: measurement-derived; permitted exception
14244
+ "text-body-large text-on-surface",
14245
+ // Focus state (data-focused on parent wrapper)
14246
+ "peer-data-[focused]:border-2 peer-data-[focused]:border-primary",
14247
+ // Invalid state
14248
+ "peer-data-[invalid]:border-error peer-data-[invalid]:border-2"
14249
+ ]);
14250
+ var dateInputLabelVariants = cva(["text-body-small text-on-surface-variant block mb-1"]);
14251
+ var dateInputErrorVariants = cva(["text-body-small text-error mt-1"]);
14252
+ var dockedFieldGroupVariants = cva([
14253
+ "flex items-center",
14254
+ "border border-outline rounded",
14255
+ "h-14",
14256
+ // NOTE: measurement-derived (56dp); permitted exception
14257
+ "px-3 gap-2",
14258
+ "bg-transparent",
14259
+ // Focus-within: promote to primary 2dp border
14260
+ "focus-within:border-primary focus-within:border-2"
14261
+ ]);
14262
+ var dockedTriggerVariants = cva([
14263
+ "relative flex items-center justify-center",
14264
+ "w-10 h-10 rounded-full",
14265
+ // NOTE: 40dp; permitted exception
14266
+ "text-on-surface-variant",
14267
+ "bg-transparent border-none cursor-pointer",
14268
+ "overflow-hidden",
14269
+ "focus-visible:outline-none",
14270
+ "transition-colors duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14271
+ "group/docked-trigger"
14272
+ ]);
14273
+ var dockedTriggerStateLayerVariants = cva([
14274
+ "pointer-events-none absolute inset-0 rounded-full opacity-0",
14275
+ "bg-on-surface-variant",
14276
+ "transition-opacity duration-spring-standard-fast-effects ease-spring-standard-fast-effects",
14277
+ "group-data-[hovered]/docked-trigger:opacity-8",
14278
+ "group-data-[focus-visible]/docked-trigger:opacity-10",
14279
+ "group-data-[pressed]/docked-trigger:opacity-10"
14280
+ ]);
14281
+ var popoverVariants = cva([
14282
+ "bg-surface-container-high rounded-3xl",
14283
+ "shadow-elevation-2 overflow-hidden",
14284
+ "z-50 w-[360px]"
14285
+ ]);
14286
+ var dockedLabelVariants = cva(["text-body-small text-on-surface-variant block mb-1"]);
14287
+ var dateFieldVariants = cva([
14288
+ "flex items-center flex-1",
14289
+ "text-body-large text-on-surface"
14290
+ ]);
14291
+ var dateSegmentPlaceholderVariants = cva(["text-on-surface-variant"]);
14292
+ function StyledCalendarCell({ date, state }) {
14293
+ return /* @__PURE__ */ jsxs(CalendarCell, { date, state, className: cn(calendarCellVariants()), children: [
14294
+ /* @__PURE__ */ jsx("span", { className: cn(calendarCellStateLayerVariants()), "aria-hidden": "true" }),
14295
+ /* @__PURE__ */ jsx("span", { className: cn(calendarCellFocusRingVariants()), "aria-hidden": "true" })
14296
+ ] });
14297
+ }
14298
+ StyledCalendarCell.displayName = "StyledCalendarCell";
14299
+ function StyledNavButton({
14300
+ children,
14301
+ isDisabled,
14302
+ onPress,
14303
+ "aria-label": ariaLabel
14304
+ }) {
14305
+ const ref = useRef(null);
14306
+ const { buttonProps, isPressed } = useButton(
14307
+ {
14308
+ isDisabled: isDisabled ?? false,
14309
+ ...onPress ? { onPress } : {},
14310
+ ...ariaLabel ? { "aria-label": ariaLabel } : {}
13919
14311
  },
13920
- defaultVariants: {
13921
- state: "enabled"
14312
+ ref
14313
+ );
14314
+ const { isFocusVisible, focusProps } = useFocusRing();
14315
+ const { isHovered, hoverProps } = useHover({ isDisabled: isDisabled ?? false });
14316
+ return /* @__PURE__ */ jsxs(
14317
+ "button",
14318
+ {
14319
+ ...mergeProps$1(buttonProps, focusProps, hoverProps),
14320
+ ref,
14321
+ type: "button",
14322
+ className: cn(navButtonVariants()),
14323
+ ...getInteractionDataAttributes({
14324
+ isHovered,
14325
+ isFocusVisible,
14326
+ isPressed,
14327
+ isDisabled: isDisabled ?? false
14328
+ }),
14329
+ children: [
14330
+ /* @__PURE__ */ jsx("span", { className: cn(navButtonStateLayerVariants()), "aria-hidden": "true" }),
14331
+ /* @__PURE__ */ jsx("span", { className: cn(navButtonFocusRingVariants()), "aria-hidden": "true" }),
14332
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10 flex items-center justify-center", children })
14333
+ ]
13922
14334
  }
13923
- }
13924
- );
13925
- var yearItemVariants = cva(
13926
- [
13927
- "w-[88px]",
13928
- // NOTE: measurement-derived (88dp); permitted exception
13929
- "h-[52px]",
13930
- // NOTE: measurement-derived (52dp); permitted exception
13931
- "rounded-full",
13932
- // pill shape
13933
- "flex",
13934
- "items-center",
13935
- "justify-center",
13936
- "text-body-large",
13937
- "cursor-pointer",
13938
- "transition-colors",
13939
- "duration-spring-standard-fast-effects",
13940
- "ease-spring-standard-fast-effects"
13941
- ],
13942
- {
13943
- variants: {
13944
- selected: {
13945
- true: "bg-primary text-on-primary",
13946
- false: "text-on-surface-variant"
13947
- },
13948
- state: {
13949
- enabled: "",
13950
- hovered: "",
13951
- focused: "",
13952
- pressed: "",
13953
- disabled: "text-on-surface/38 cursor-not-allowed"
13954
- }
13955
- },
13956
- compoundVariants: [
13957
- {
13958
- selected: false,
13959
- state: "hovered",
13960
- className: "bg-on-surface-variant/8"
13961
- },
13962
- {
13963
- selected: false,
13964
- state: "focused",
13965
- className: "bg-on-surface-variant/10"
13966
- },
13967
- {
13968
- selected: true,
13969
- state: "hovered",
13970
- className: "bg-primary/90"
13971
- },
14335
+ );
14336
+ }
14337
+ StyledNavButton.displayName = "StyledNavButton";
14338
+ function StyledCalendarTitle({
14339
+ title,
14340
+ onClick,
14341
+ showDropdownIndicator
14342
+ }) {
14343
+ const ref = useRef(null);
14344
+ const { isFocusVisible, focusProps } = useFocusRing();
14345
+ const { isHovered, hoverProps } = useHover({});
14346
+ const { pressProps, isPressed } = usePress({});
14347
+ if (onClick) {
14348
+ return /* @__PURE__ */ jsxs(
14349
+ "button",
13972
14350
  {
13973
- selected: true,
13974
- state: "focused",
13975
- className: "bg-primary/90"
14351
+ ...mergeProps$1(focusProps, hoverProps, pressProps),
14352
+ ref,
14353
+ type: "button",
14354
+ className: cn(calendarTitleVariants()),
14355
+ "aria-label": `${title}, click to select year`,
14356
+ onClick,
14357
+ ...getInteractionDataAttributes({ isHovered, isFocusVisible, isPressed }),
14358
+ children: [
14359
+ /* @__PURE__ */ jsx("span", { className: cn(calendarTitleStateLayerVariants()), "aria-hidden": "true" }),
14360
+ /* @__PURE__ */ jsx("h2", { "aria-live": "polite", className: cn(calendarTitleTextVariants()), children: title }),
14361
+ showDropdownIndicator && /* @__PURE__ */ jsx("span", { className: cn(calendarTitleIconVariants()), children: /* @__PURE__ */ jsx(DropdownArrowIcon, {}) })
14362
+ ]
13976
14363
  }
13977
- ],
13978
- defaultVariants: {
13979
- selected: false,
13980
- state: "enabled"
13981
- }
14364
+ );
13982
14365
  }
13983
- );
13984
- var datePickerDividerVariants = cva(["border-outline-variant", "border-t", "w-full"]);
13985
- var datePickerActionVariants = cva([
13986
- "flex",
13987
- "items-center",
13988
- "justify-end",
13989
- "gap-2",
13990
- "px-3",
13991
- "py-2",
13992
- "h-12"
13993
- // NOTE: measurement-derived (48dp action row height); permitted exception
13994
- ]);
13995
- var datePickerActionButtonVariants = cva([
13996
- "text-primary",
13997
- "text-label-large",
13998
- "rounded-full",
13999
- "px-3",
14000
- "py-2",
14001
- "transition-colors",
14002
- "duration-spring-standard-fast-effects",
14003
- "ease-spring-standard-fast-effects",
14004
- "hover:bg-primary/8",
14005
- "focus-visible:bg-primary/10",
14006
- "active:bg-primary/10"
14007
- ]);
14008
- var datePickerWeekdayVariants = cva([
14009
- "text-body-small",
14010
- "text-on-surface",
14011
- "font-normal",
14012
- "w-[48px]",
14013
- // NOTE: measurement-derived (48dp column width); permitted exception
14014
- "h-[48px]",
14015
- // NOTE: measurement-derived (48dp row height); permitted exception
14016
- "text-center"
14017
- ]);
14018
- var datePickerRangeIndicatorVariants = cva([
14019
- "bg-secondary-container",
14020
- "h-[48px]",
14021
- // NOTE: measurement-derived (48dp range indicator height); permitted exception
14022
- "rounded-none"
14023
- ]);
14024
- var datePickerHeadlineVariants = cva([], {
14025
- variants: {
14026
- variant: {
14027
- docked: "",
14028
- modal: ["text-headline-small", "text-on-surface"],
14029
- "modal-input": ["text-headline-small", "text-on-surface"]
14366
+ return /* @__PURE__ */ jsx("div", { className: cn(calendarTitleVariants(), "cursor-default"), children: /* @__PURE__ */ jsx("h2", { "aria-live": "polite", className: cn(calendarTitleTextVariants()), children: title }) });
14367
+ }
14368
+ StyledCalendarTitle.displayName = "StyledCalendarTitle";
14369
+ calendarHeaderVariants();
14370
+ function StyledYearItem({
14371
+ year,
14372
+ isSelected,
14373
+ onSelect
14374
+ }) {
14375
+ const ref = useRef(null);
14376
+ const { isFocusVisible, focusProps } = useFocusRing();
14377
+ const { isHovered, hoverProps } = useHover({});
14378
+ const { pressProps, isPressed } = usePress({});
14379
+ return /* @__PURE__ */ jsxs(
14380
+ "button",
14381
+ {
14382
+ ...mergeProps$1(focusProps, hoverProps, pressProps),
14383
+ ref,
14384
+ type: "button",
14385
+ role: "gridcell",
14386
+ "aria-selected": isSelected,
14387
+ className: cn(yearItemVariants()),
14388
+ onClick: () => onSelect(year),
14389
+ ...getInteractionDataAttributes({
14390
+ isHovered,
14391
+ isFocusVisible,
14392
+ isPressed,
14393
+ isSelected
14394
+ }),
14395
+ children: [
14396
+ /* @__PURE__ */ jsx("span", { className: cn(yearItemStateLayerVariants()), "aria-hidden": "true" }),
14397
+ /* @__PURE__ */ jsx("span", { className: cn(yearItemFocusRingVariants()), "aria-hidden": "true" }),
14398
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10", children: year })
14399
+ ]
14400
+ }
14401
+ );
14402
+ }
14403
+ StyledYearItem.displayName = "StyledYearItem";
14404
+ function StyledWeekday({ label }) {
14405
+ return /* @__PURE__ */ jsx("span", { className: cn(weekdayVariants()), children: label });
14406
+ }
14407
+ StyledWeekday.displayName = "StyledWeekday";
14408
+ function StyledActionButton({
14409
+ label,
14410
+ "aria-label": ariaLabel,
14411
+ onPress,
14412
+ isDisabled,
14413
+ "data-action": dataAction
14414
+ }) {
14415
+ const ref = useRef(null);
14416
+ const { buttonProps, isPressed } = useButton(
14417
+ {
14418
+ "aria-label": ariaLabel ?? label,
14419
+ isDisabled: isDisabled ?? false,
14420
+ ...onPress ? { onPress } : {}
14421
+ },
14422
+ ref
14423
+ );
14424
+ const { isFocusVisible, focusProps } = useFocusRing();
14425
+ const { isHovered, hoverProps } = useHover({ isDisabled: isDisabled ?? false });
14426
+ return /* @__PURE__ */ jsxs(
14427
+ "button",
14428
+ {
14429
+ ...mergeProps$1(buttonProps, focusProps, hoverProps),
14430
+ ref,
14431
+ type: "button",
14432
+ "data-action": dataAction,
14433
+ className: cn(actionButtonVariants()),
14434
+ ...getInteractionDataAttributes({
14435
+ isHovered,
14436
+ isFocusVisible,
14437
+ isPressed,
14438
+ isDisabled: isDisabled ?? false
14439
+ }),
14440
+ children: [
14441
+ /* @__PURE__ */ jsx("span", { className: cn(actionButtonStateLayerVariants()), "aria-hidden": "true" }),
14442
+ /* @__PURE__ */ jsx("span", { className: cn(actionButtonFocusRingVariants()), "aria-hidden": "true" }),
14443
+ /* @__PURE__ */ jsx("span", { className: "pointer-events-none relative z-10", children: label })
14444
+ ]
14030
14445
  }
14031
- },
14032
- defaultVariants: {
14033
- variant: "modal"
14034
- }
14035
- });
14036
- var datePickerSupportingTextVariants = cva([
14037
- "text-label-large",
14038
- "text-on-surface-variant"
14039
- ]);
14040
- var datePickerScrimVariants = cva([
14041
- "fixed",
14042
- "inset-0",
14043
- "z-40",
14044
- "bg-scrim",
14045
- "opacity-32",
14046
- "transition-opacity",
14047
- "duration-medium2",
14048
- "ease-standard"
14049
- ]);
14050
- var CALENDAR_STYLES = [
14051
- // ── Label ─────────────────────────────────────────────────────────────────
14446
+ );
14447
+ }
14448
+ StyledActionButton.displayName = "StyledActionButton";
14449
+
14450
+ // src/components/DatePicker/datePickerStructuralStyles.ts
14451
+ var CALENDAR_HEADER_STRUCTURAL = [
14452
+ "[&_[data-calendar-header]]:flex",
14453
+ "[&_[data-calendar-header]]:items-center",
14454
+ "[&_[data-calendar-header]]:justify-between",
14455
+ "[&_[data-calendar-header]]:px-3",
14456
+ "[&_[data-calendar-header]]:py-2",
14457
+ // Nav group
14458
+ "[&_[data-calendar-nav]]:flex",
14459
+ "[&_[data-calendar-nav]]:items-center",
14460
+ "[&_[data-calendar-nav]]:gap-1"
14461
+ ];
14462
+ var CALENDAR_GRID_STRUCTURAL = [
14463
+ // Table resets
14464
+ "[&_table]:border-collapse",
14465
+ // Center the fixed-width table so 7×48px = 336px is equally inset within 360px
14466
+ "[&_table]:mx-auto",
14467
+ "[&_th]:p-0",
14468
+ "[&_td]:p-0"
14469
+ ];
14470
+ var YEAR_GRID_STRUCTURAL = [
14471
+ "[&_[data-year-grid]]:grid",
14472
+ "[&_[data-year-grid]]:grid-cols-3",
14473
+ "[&_[data-year-grid]]:gap-2",
14474
+ "[&_[data-year-grid]]:px-3",
14475
+ "[&_[data-year-grid]]:py-2",
14476
+ "[&_[data-year-grid]]:max-h-[280px]",
14477
+ "[&_[data-year-grid]]:overflow-y-auto",
14478
+ "[&_[data-year-grid]]:place-items-center"
14479
+ ];
14480
+ var DIVIDER_STRUCTURAL = ["[&_hr[data-divider]]:border-outline-variant"];
14481
+ var ACTION_ROW_STRUCTURAL = [
14482
+ "[&_[data-actions]]:flex",
14483
+ "[&_[data-actions]]:items-center",
14484
+ "[&_[data-actions]]:justify-end",
14485
+ "[&_[data-actions]]:gap-2",
14486
+ "[&_[data-actions]]:px-3",
14487
+ "[&_[data-actions]]:py-2",
14488
+ "[&_[data-actions]]:h-12"
14489
+ ];
14490
+ var DOCKED_LABEL_STRUCTURAL = [
14052
14491
  "[&_[data-label]]:text-body-small",
14053
14492
  "[&_[data-label]]:text-on-surface-variant",
14054
14493
  "[&_[data-label]]:mb-1",
14055
- "[&_[data-label]]:block",
14056
- // ── Field group (outlined text field container) ───────────────────────────
14494
+ "[&_[data-label]]:block"
14495
+ ];
14496
+ var DOCKED_FIELD_STRUCTURAL = [
14057
14497
  "[&_[data-field-group]]:flex",
14058
14498
  "[&_[data-field-group]]:items-center",
14059
14499
  "[&_[data-field-group]]:border",
@@ -14065,15 +14505,16 @@ var CALENDAR_STYLES = [
14065
14505
  "[&_[data-field-group]]:bg-transparent",
14066
14506
  "[&_[data-field-group]:focus-within]:border-primary",
14067
14507
  "[&_[data-field-group]:focus-within]:border-2",
14068
- // ── Date field segments (inline rendering) ────────────────────────────────
14069
14508
  "[&_[data-field]]:flex",
14070
14509
  "[&_[data-field]]:items-center",
14071
14510
  "[&_[data-field]]:flex-1",
14072
14511
  "[&_[data-field]]:text-body-large",
14073
14512
  "[&_[data-field]]:text-on-surface",
14074
14513
  "[&_[data-segment]]:outline-none",
14075
- "[&_[data-segment][data-placeholder]]:text-on-surface-variant",
14076
- // ── Trigger button (calendar icon) ────────────────────────────────────────
14514
+ "[&_[data-segment][data-placeholder]]:text-on-surface-variant"
14515
+ ];
14516
+ var DOCKED_TRIGGER_STRUCTURAL = [
14517
+ "[&_[data-trigger]]:relative",
14077
14518
  "[&_[data-trigger]]:flex",
14078
14519
  "[&_[data-trigger]]:items-center",
14079
14520
  "[&_[data-trigger]]:justify-center",
@@ -14081,178 +14522,109 @@ var CALENDAR_STYLES = [
14081
14522
  "[&_[data-trigger]]:h-10",
14082
14523
  "[&_[data-trigger]]:rounded-full",
14083
14524
  "[&_[data-trigger]]:text-on-surface-variant",
14525
+ "[&_[data-trigger]]:bg-transparent",
14526
+ "[&_[data-trigger]]:border-none",
14527
+ "[&_[data-trigger]]:cursor-pointer",
14084
14528
  "[&_[data-trigger]]:transition-colors",
14085
14529
  "[&_[data-trigger]]:duration-spring-standard-fast-effects",
14086
14530
  "[&_[data-trigger]]:ease-spring-standard-fast-effects",
14087
- "[&_[data-trigger]:hover]:bg-on-surface/8",
14088
- // ── Popover ───────────────────────────────────────────────────────────────
14089
- "[&_[data-popover]]:bg-surface-container-high",
14090
- "[&_[data-popover]]:rounded-3xl",
14091
- "[&_[data-popover]]:mt-1",
14092
- "[&_[data-popover]]:shadow-elevation-2",
14093
- "[&_[data-popover]]:overflow-hidden",
14094
- "[&_[data-popover]]:z-50",
14095
- // ── Calendar header ───────────────────────────────────────────────────────
14096
- "[&_[data-calendar-header]]:flex",
14097
- "[&_[data-calendar-header]]:items-center",
14098
- "[&_[data-calendar-header]]:justify-between",
14099
- "[&_[data-calendar-header]]:px-3",
14100
- "[&_[data-calendar-header]]:py-2",
14101
- // ── Calendar title (month/year label) ─────────────────────────────────────
14102
- "[&_[data-calendar-title]]:flex",
14103
- "[&_[data-calendar-title]]:items-center",
14104
- "[&_[data-calendar-title]]:gap-0.5",
14105
- "[&_[data-calendar-title]]:bg-transparent",
14106
- "[&_[data-calendar-title]]:border-none",
14107
- "[&_[data-calendar-title]]:cursor-pointer",
14108
- "[&_[data-calendar-title]]:rounded-full",
14109
- "[&_[data-calendar-title]]:px-2",
14110
- "[&_[data-calendar-title]]:py-1",
14111
- "[&_[data-calendar-title]]:transition-colors",
14112
- "[&_[data-calendar-title]]:duration-spring-standard-fast-effects",
14113
- "[&_[data-calendar-title]]:ease-spring-standard-fast-effects",
14114
- "[&_[data-calendar-title]:hover]:bg-on-surface/8",
14115
- "[&_[data-calendar-title]_h2]:text-label-large",
14116
- "[&_[data-calendar-title]_h2]:text-on-surface-variant",
14117
- "[&_[data-calendar-title]_h2]:m-0",
14118
- "[&_[data-calendar-title]_svg]:text-on-surface-variant",
14119
- // ── Calendar navigation buttons ───────────────────────────────────────────
14120
- "[&_[data-calendar-nav]]:flex",
14121
- "[&_[data-calendar-nav]]:items-center",
14122
- "[&_[data-calendar-nav]]:gap-1",
14123
- "[&_[data-nav-button]]:w-10",
14124
- "[&_[data-nav-button]]:h-10",
14125
- "[&_[data-nav-button]]:rounded-full",
14126
- "[&_[data-nav-button]]:flex",
14127
- "[&_[data-nav-button]]:items-center",
14128
- "[&_[data-nav-button]]:justify-center",
14129
- "[&_[data-nav-button]]:text-on-surface-variant",
14130
- "[&_[data-nav-button]]:bg-transparent",
14131
- "[&_[data-nav-button]]:border-none",
14132
- "[&_[data-nav-button]]:transition-colors",
14133
- "[&_[data-nav-button]]:duration-spring-standard-fast-effects",
14134
- "[&_[data-nav-button]]:ease-spring-standard-fast-effects",
14135
- "[&_[data-nav-button]:hover]:bg-on-surface/8",
14136
- "[&_[data-nav-button]:focus-visible]:bg-on-surface/10",
14137
- "[&_[data-nav-button]:disabled]:text-on-surface/38",
14138
- "[&_[data-nav-button]:disabled]:cursor-not-allowed",
14139
- // ── Cell base ─────────────────────────────────────────────────────────────
14140
- "[&_td>div]:w-[48px]",
14141
- "[&_td>div]:h-[48px]",
14142
- "[&_td>div]:rounded-full",
14143
- "[&_td>div]:flex",
14144
- "[&_td>div]:items-center",
14145
- "[&_td>div]:justify-center",
14146
- "[&_td>div]:text-body-large",
14147
- "[&_td>div]:text-on-surface",
14148
- "[&_td>div]:relative",
14149
- "[&_td>div]:cursor-pointer",
14150
- "[&_td>div]:select-none",
14151
- "[&_td>div]:transition-colors",
14152
- "[&_td>div]:duration-spring-standard-fast-effects",
14153
- "[&_td>div]:ease-spring-standard-fast-effects",
14154
- // ── Today (not selected) ──────────────────────────────────────────────────
14155
- "[&_td>div[data-today]:not([data-selected])]:text-primary",
14156
- "[&_td>div[data-today]:not([data-selected])]:border",
14157
- "[&_td>div[data-today]:not([data-selected])]:border-primary",
14158
- // ── Selected ──────────────────────────────────────────────────────────────
14159
- "[&_td>div[data-selected]]:bg-primary",
14160
- "[&_td>div[data-selected]]:text-on-primary",
14161
- // ── Range middle ──────────────────────────────────────────────────────────
14162
- "[&_td>div[data-range-middle]]:bg-secondary-container",
14163
- "[&_td>div[data-range-middle]]:text-on-secondary-container",
14164
- "[&_td>div[data-range-middle]]:rounded-none",
14165
- // ── Outside month ─────────────────────────────────────────────────────────
14166
- "[&_td>div[data-outside-month]:not([data-selected])]:text-on-surface-variant",
14167
- // ── Disabled ──────────────────────────────────────────────────────────────
14168
- "[&_td>div[data-disabled]]:text-on-surface/38",
14169
- "[&_td>div[data-disabled]]:cursor-not-allowed",
14170
- // ── Cell hover states ─────────────────────────────────────────────────────
14171
- "[&_td>div:not([data-selected]):not([data-today]):not([data-disabled]):hover]:bg-on-surface/8",
14172
- "[&_td>div[data-today]:not([data-selected]):hover]:bg-primary/8",
14173
- "[&_td>div[data-selected]:hover]:shadow-sm",
14174
- // ── Cell focus-visible states ─────────────────────────────────────────────
14175
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:ring-2",
14176
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:ring-on-surface",
14177
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:bg-on-surface/10",
14178
- "[&_td>div[data-today][data-focus-visible]:not([data-selected])]:bg-primary/10",
14179
- // ── Weekday labels ────────────────────────────────────────────────────────
14180
- "[&_th]:text-body-small",
14181
- "[&_th]:text-on-surface",
14182
- "[&_th]:font-normal",
14183
- "[&_th]:w-[48px]",
14184
- "[&_th]:h-[48px]",
14185
- // ── Year grid ─────────────────────────────────────────────────────────────
14186
- "[&_[data-year-grid]]:grid",
14187
- "[&_[data-year-grid]]:grid-cols-3",
14188
- "[&_[data-year-grid]]:gap-2",
14189
- "[&_[data-year-grid]]:px-3",
14190
- "[&_[data-year-grid]]:py-2",
14191
- "[&_[data-year-grid]]:max-h-[280px]",
14192
- "[&_[data-year-grid]]:overflow-y-auto",
14193
- "[&_[data-year-grid]]:place-items-center",
14194
- "[&_[data-year-item]]:w-[88px]",
14195
- "[&_[data-year-item]]:h-[52px]",
14196
- "[&_[data-year-item]]:rounded-full",
14197
- "[&_[data-year-item]]:flex",
14198
- "[&_[data-year-item]]:items-center",
14199
- "[&_[data-year-item]]:justify-center",
14200
- "[&_[data-year-item]]:text-body-large",
14201
- "[&_[data-year-item]]:text-on-surface-variant",
14202
- "[&_[data-year-item]]:bg-transparent",
14203
- "[&_[data-year-item]]:border-none",
14204
- "[&_[data-year-item]]:cursor-pointer",
14205
- "[&_[data-year-item]]:transition-colors",
14206
- "[&_[data-year-item]]:duration-spring-standard-fast-effects",
14207
- "[&_[data-year-item]]:ease-spring-standard-fast-effects",
14208
- "[&_[data-year-item]:hover]:bg-on-surface/8",
14209
- "[&_[data-year-item][data-selected]]:bg-primary",
14210
- "[&_[data-year-item][data-selected]]:text-on-primary",
14211
- // ── Divider ───────────────────────────────────────────────────────────────
14212
- "[&_hr[data-divider]]:border-outline-variant",
14213
- // ── Action buttons ────────────────────────────────────────────────────────
14214
- "[&_[data-actions]]:flex",
14215
- "[&_[data-actions]]:items-center",
14216
- "[&_[data-actions]]:justify-end",
14217
- "[&_[data-actions]]:gap-2",
14218
- "[&_[data-actions]]:px-3",
14219
- "[&_[data-actions]]:py-2",
14220
- "[&_[data-action]]:text-primary",
14221
- "[&_[data-action]]:text-label-large",
14222
- "[&_[data-action]]:rounded-full",
14223
- "[&_[data-action]]:px-3",
14224
- "[&_[data-action]]:py-2",
14225
- "[&_[data-action]]:min-h-12",
14226
- "[&_[data-action]]:bg-transparent",
14227
- "[&_[data-action]]:border-none",
14228
- "[&_[data-action]]:transition-colors",
14229
- "[&_[data-action]]:duration-spring-standard-fast-effects",
14230
- "[&_[data-action]]:ease-spring-standard-fast-effects",
14231
- "[&_[data-action]:hover]:bg-primary/8",
14232
- "[&_[data-action]:focus-visible]:ring-2",
14233
- "[&_[data-action]:focus-visible]:ring-primary",
14234
- "[&_[data-action]:focus-visible]:bg-primary/10"
14531
+ // Hover: 8% overlay via bg tint (acceptable for structural trigger)
14532
+ "[&_[data-trigger][data-hovered]]:bg-on-surface-variant/8",
14533
+ "[&_[data-trigger][data-focus-visible]]:bg-on-surface-variant/10",
14534
+ "[&_[data-trigger][data-focus-visible]]:outline",
14535
+ "[&_[data-trigger][data-focus-visible]]:outline-2",
14536
+ "[&_[data-trigger][data-focus-visible]]:outline-secondary",
14537
+ "[&_[data-trigger][data-disabled]]:text-on-surface/38",
14538
+ "[&_[data-trigger][data-disabled]]:cursor-not-allowed"
14539
+ ];
14540
+ var MODAL_HEADER_STRUCTURAL = [
14541
+ "[&_[data-modal-header]]:px-6",
14542
+ "[&_[data-modal-header]]:pt-4",
14543
+ "[&_[data-modal-header]]:pb-3",
14544
+ "[&_[data-modal-header]]:flex",
14545
+ "[&_[data-modal-header]]:items-start",
14546
+ "[&_[data-modal-header]]:justify-between",
14547
+ "[&_[data-headline]]:text-label-large",
14548
+ "[&_[data-headline]]:text-on-surface-variant",
14549
+ "[&_[data-headline]]:m-0",
14550
+ "[&_[data-supporting-text]]:text-headline-large",
14551
+ "[&_[data-supporting-text]]:text-on-surface",
14552
+ "[&_[data-supporting-text]]:mt-9",
14553
+ "[&_[data-supporting-text]]:m-0"
14554
+ ];
14555
+ var MODAL_INPUT_SUPPORTING_TEXT_STRUCTURAL = [
14556
+ "[&_[data-supporting-text]]:text-headline-large",
14557
+ "[&_[data-supporting-text]]:text-on-surface",
14558
+ "[&_[data-supporting-text]]:mt-4",
14559
+ "[&_[data-supporting-text]]:m-0"
14560
+ ];
14561
+ var MODAL_INPUT_FIELD_STRUCTURAL = [
14562
+ "[&_[data-date-input-field]]:px-6",
14563
+ "[&_[data-date-input-field]]:py-2",
14564
+ "[&_[data-date-input-field]_[data-field]]:flex",
14565
+ "[&_[data-date-input-field]_[data-field]]:items-center",
14566
+ "[&_[data-date-input-field]_[data-field]]:border",
14567
+ "[&_[data-date-input-field]_[data-field]]:border-outline",
14568
+ "[&_[data-date-input-field]_[data-field]]:rounded-sm",
14569
+ "[&_[data-date-input-field]_[data-field]]:px-4",
14570
+ "[&_[data-date-input-field]_[data-field]]:py-3",
14571
+ "[&_[data-date-input-field]_[data-field]]:text-body-large",
14572
+ "[&_[data-date-input-field]_[data-field]]:text-on-surface",
14573
+ "[&_[data-date-input-field]_[data-segment]]:outline-none",
14574
+ "[&_[data-date-input-field]_[data-segment][data-placeholder]]:text-on-surface-variant",
14575
+ "[&_[data-date-input-field][data-focused]_[data-field]]:border-primary",
14576
+ "[&_[data-date-input-field][data-focused]_[data-field]]:border-2",
14577
+ "[&_[data-date-input-field][data-invalid]_[data-field]]:border-error",
14578
+ "[&_[data-date-input-field][data-invalid]_[data-field]]:border-2",
14579
+ "[&_[data-date-input-field]_[data-label]]:text-body-small",
14580
+ "[&_[data-date-input-field]_[data-label]]:text-on-surface-variant",
14581
+ "[&_[data-date-input-field]_[data-label]]:block",
14582
+ "[&_[data-date-input-field]_[data-label]]:mb-1",
14583
+ "[&_[data-date-input-field]_[data-error-message]]:text-body-small",
14584
+ "[&_[data-date-input-field]_[data-error-message]]:text-error",
14585
+ "[&_[data-date-input-field]_[data-error-message]]:mt-1"
14586
+ ];
14587
+ var SHARED_CALENDAR_STRUCTURAL = [
14588
+ ...CALENDAR_HEADER_STRUCTURAL,
14589
+ ...CALENDAR_GRID_STRUCTURAL,
14590
+ ...YEAR_GRID_STRUCTURAL,
14591
+ ...DIVIDER_STRUCTURAL,
14592
+ ...ACTION_ROW_STRUCTURAL
14593
+ ].join(" ");
14594
+ var MODAL_CONTENT_STRUCTURAL = [
14595
+ ...MODAL_HEADER_STRUCTURAL,
14596
+ ...CALENDAR_HEADER_STRUCTURAL,
14597
+ ...CALENDAR_GRID_STRUCTURAL,
14598
+ ...YEAR_GRID_STRUCTURAL,
14599
+ ...DIVIDER_STRUCTURAL,
14600
+ ...ACTION_ROW_STRUCTURAL
14235
14601
  ].join(" ");
14236
- var DOCKED_MOTION_STYLES = [
14237
- // ── Popover container enter ────────────────────────────────────────────────
14238
- "[&_[data-popover]]:transition-[transform,opacity]",
14239
- "[&_[data-popover]]:duration-short3",
14240
- "[&_[data-popover]]:ease-standard-decelerate",
14241
- // ── Popover container exit ─────────────────────────────────────────────────
14242
- "[&_[data-popover][data-exiting]]:duration-short2",
14243
- "[&_[data-popover][data-exiting]]:ease-standard-accelerate",
14244
- // ── Calendar month slide ───────────────────────────────────────────────────
14245
- "[&_table]:transition-transform",
14246
- "[&_table]:duration-medium1",
14247
- "[&_table]:ease-emphasized-decelerate",
14248
- // ── Cell selection animation (scale + background) ──────────────────────────
14249
- "[&_td>div[data-selected]]:transition-[background-color,transform]",
14250
- "[&_td>div[data-selected]]:duration-short2",
14251
- "[&_td>div[data-selected]]:ease-standard",
14252
- // ── State layer opacity ────────────────────────────────────────────────────
14253
- "[&_td>div::after]:transition-opacity",
14254
- "[&_td>div::after]:duration-short1",
14255
- "[&_td>div::after]:ease-standard"
14602
+ var MODAL_INPUT_CONTENT_STRUCTURAL = [
14603
+ ...MODAL_HEADER_STRUCTURAL,
14604
+ ...MODAL_INPUT_SUPPORTING_TEXT_STRUCTURAL,
14605
+ ...MODAL_INPUT_FIELD_STRUCTURAL,
14606
+ ...DIVIDER_STRUCTURAL,
14607
+ ...ACTION_ROW_STRUCTURAL
14608
+ ].join(" ");
14609
+ var DOCKED_ROOT_STRUCTURAL = [
14610
+ ...DOCKED_LABEL_STRUCTURAL,
14611
+ ...DOCKED_FIELD_STRUCTURAL,
14612
+ ...DOCKED_TRIGGER_STRUCTURAL
14613
+ ].join(" ");
14614
+ var DOCKED_POPOVER_PANEL_STRUCTURAL = SHARED_CALENDAR_STRUCTURAL;
14615
+ var DOCKED_POPOVER_MOTION = [
14616
+ "transition-[transform,opacity]",
14617
+ "duration-short3",
14618
+ "ease-standard-decelerate",
14619
+ "data-[exiting]:duration-short2",
14620
+ "data-[exiting]:ease-standard-accelerate"
14621
+ ].join(" ");
14622
+ var MODAL_DIALOG_MOTION = [
14623
+ "transition-[transform,opacity]",
14624
+ "duration-medium2",
14625
+ "ease-standard-decelerate",
14626
+ "data-[exiting]:duration-medium1",
14627
+ "data-[exiting]:ease-standard-accelerate"
14256
14628
  ].join(" ");
14257
14629
  var DatePickerDockedStyled = forwardRef(
14258
14630
  (props, ref) => {
@@ -14265,10 +14637,22 @@ var DatePickerDockedStyled = forwardRef(
14265
14637
  ...rest,
14266
14638
  className: cn(
14267
14639
  datePickerContainerVariants({ variant: "docked" }),
14268
- CALENDAR_STYLES,
14269
- !reducedMotion && DOCKED_MOTION_STYLES,
14640
+ DOCKED_ROOT_STRUCTURAL,
14270
14641
  className
14271
- )
14642
+ ),
14643
+ popoverClassName: cn(
14644
+ popoverVariants(),
14645
+ DOCKED_POPOVER_PANEL_STRUCTURAL,
14646
+ !reducedMotion && DOCKED_POPOVER_MOTION
14647
+ ),
14648
+ slots: {
14649
+ CellComponent: StyledCalendarCell,
14650
+ NavButtonComponent: StyledNavButton,
14651
+ TitleComponent: StyledCalendarTitle,
14652
+ YearItemComponent: StyledYearItem,
14653
+ WeekdayComponent: StyledWeekday
14654
+ },
14655
+ ActionButtonComponent: StyledActionButton
14272
14656
  }
14273
14657
  );
14274
14658
  }
@@ -14341,7 +14725,10 @@ var DatePickerModal = forwardRef(
14341
14725
  onCancel,
14342
14726
  onConfirm,
14343
14727
  onClear,
14344
- className
14728
+ className,
14729
+ scrimClassName,
14730
+ slots,
14731
+ ActionButtonComponent
14345
14732
  } = props;
14346
14733
  const internalRef = useRef(null);
14347
14734
  const ref = forwardedRef ?? internalRef;
@@ -14465,6 +14852,7 @@ var DatePickerModal = forwardRef(
14465
14852
  headlineId,
14466
14853
  onClose: handleClose,
14467
14854
  ...className ? { className } : {},
14855
+ ...scrimClassName ? { scrimClassName } : {},
14468
14856
  isOpen: state.isOpen,
14469
14857
  children: [
14470
14858
  /* @__PURE__ */ jsx(
@@ -14486,7 +14874,8 @@ var DatePickerModal = forwardRef(
14486
14874
  onChange: handleSingleChange,
14487
14875
  ...minValue ? { minValue } : {},
14488
14876
  ...maxValue ? { maxValue } : {},
14489
- ...isDateUnavailable ? { isDateUnavailable } : {}
14877
+ ...isDateUnavailable ? { isDateUnavailable } : {},
14878
+ ...slots ? { slots } : {}
14490
14879
  }
14491
14880
  ) : /* @__PURE__ */ jsx(
14492
14881
  CalendarCore,
@@ -14498,7 +14887,8 @@ var DatePickerModal = forwardRef(
14498
14887
  onRangeChange: handleRangeChange,
14499
14888
  ...minValue ? { minValue } : {},
14500
14889
  ...maxValue ? { maxValue } : {},
14501
- ...isDateUnavailable ? { isDateUnavailable } : {}
14890
+ ...isDateUnavailable ? { isDateUnavailable } : {},
14891
+ ...slots ? { slots } : {}
14502
14892
  }
14503
14893
  ),
14504
14894
  /* @__PURE__ */ jsx(
@@ -14510,7 +14900,8 @@ var DatePickerModal = forwardRef(
14510
14900
  showClear,
14511
14901
  onCancel: handleCancel,
14512
14902
  onConfirm: handleConfirm,
14513
- onClear: handleClear
14903
+ onClear: handleClear,
14904
+ ...ActionButtonComponent ? { ButtonComponent: ActionButtonComponent } : {}
14514
14905
  }
14515
14906
  )
14516
14907
  ]
@@ -14528,6 +14919,7 @@ function ModalOverlay({
14528
14919
  headlineId,
14529
14920
  onClose,
14530
14921
  className,
14922
+ scrimClassName,
14531
14923
  isOpen,
14532
14924
  children
14533
14925
  }) {
@@ -14548,7 +14940,7 @@ function ModalOverlay({
14548
14940
  dialogRef
14549
14941
  );
14550
14942
  return /* @__PURE__ */ jsxs(Fragment, { children: [
14551
- /* @__PURE__ */ jsx("div", { "data-scrim": true, "aria-hidden": "true", onClick: onClose }),
14943
+ /* @__PURE__ */ jsx("div", { "data-scrim": true, "aria-hidden": "true", onClick: onClose, className: scrimClassName }),
14552
14944
  /* @__PURE__ */ jsx(
14553
14945
  "div",
14554
14946
  {
@@ -14566,210 +14958,6 @@ function ModalOverlay({
14566
14958
  ] });
14567
14959
  }
14568
14960
  ModalOverlay.displayName = "ModalOverlay";
14569
- var MODAL_STYLES = [
14570
- // ── Container structure ───────────────────────────────────────────────────
14571
- "[&_[data-modal-dialog]]:bg-surface-container-high",
14572
- "[&_[data-modal-dialog]]:rounded-3xl",
14573
- "[&_[data-modal-dialog]]:overflow-hidden",
14574
- "[&_[data-modal-dialog]]:fixed",
14575
- "[&_[data-modal-dialog]]:top-1/2",
14576
- "[&_[data-modal-dialog]]:left-1/2",
14577
- "[&_[data-modal-dialog]]:-translate-x-1/2",
14578
- "[&_[data-modal-dialog]]:-translate-y-1/2",
14579
- "[&_[data-modal-dialog]]:z-50",
14580
- "[&_[data-modal-dialog]]:w-[360px]",
14581
- "[&_[data-modal-dialog]]:max-h-[90vh]",
14582
- "[&_[data-modal-dialog]]:overflow-y-auto",
14583
- // ── Header ────────────────────────────────────────────────────────────────
14584
- "[&_[data-modal-header]]:px-6",
14585
- "[&_[data-modal-header]]:pt-4",
14586
- "[&_[data-modal-header]]:pb-3",
14587
- "[&_[data-modal-header]]:flex",
14588
- "[&_[data-modal-header]]:items-start",
14589
- "[&_[data-modal-header]]:justify-between",
14590
- "[&_[data-headline]]:text-label-large",
14591
- "[&_[data-headline]]:text-on-surface-variant",
14592
- "[&_[data-headline]]:m-0",
14593
- "[&_[data-supporting-text]]:text-headline-large",
14594
- "[&_[data-supporting-text]]:text-on-surface",
14595
- "[&_[data-supporting-text]]:mt-9",
14596
- "[&_[data-supporting-text]]:m-0",
14597
- "[&_[data-mode-toggle]]:w-12",
14598
- "[&_[data-mode-toggle]]:h-12",
14599
- "[&_[data-mode-toggle]]:rounded-full",
14600
- "[&_[data-mode-toggle]]:flex",
14601
- "[&_[data-mode-toggle]]:items-center",
14602
- "[&_[data-mode-toggle]]:justify-center",
14603
- "[&_[data-mode-toggle]]:text-on-surface-variant",
14604
- "[&_[data-mode-toggle]]:bg-transparent",
14605
- "[&_[data-mode-toggle]]:border-none",
14606
- "[&_[data-mode-toggle]]:self-end",
14607
- "[&_[data-mode-toggle]]:transition-colors",
14608
- "[&_[data-mode-toggle]]:duration-spring-standard-fast-effects",
14609
- "[&_[data-mode-toggle]]:ease-spring-standard-fast-effects",
14610
- "[&_[data-mode-toggle]:hover]:bg-on-surface-variant/8",
14611
- // ── Divider ───────────────────────────────────────────────────────────────
14612
- "[&_hr[data-divider]]:border-outline-variant",
14613
- // ── Calendar header ───────────────────────────────────────────────────────
14614
- "[&_[data-calendar-header]]:flex",
14615
- "[&_[data-calendar-header]]:items-center",
14616
- "[&_[data-calendar-header]]:justify-between",
14617
- "[&_[data-calendar-header]]:px-3",
14618
- "[&_[data-calendar-header]]:py-2",
14619
- "[&_[data-calendar-title]]:flex",
14620
- "[&_[data-calendar-title]]:items-center",
14621
- "[&_[data-calendar-title]]:gap-0.5",
14622
- "[&_[data-calendar-title]]:bg-transparent",
14623
- "[&_[data-calendar-title]]:border-none",
14624
- "[&_[data-calendar-title]]:cursor-pointer",
14625
- "[&_[data-calendar-title]]:rounded-full",
14626
- "[&_[data-calendar-title]]:px-2",
14627
- "[&_[data-calendar-title]]:py-1",
14628
- "[&_[data-calendar-title]]:transition-colors",
14629
- "[&_[data-calendar-title]]:duration-spring-standard-fast-effects",
14630
- "[&_[data-calendar-title]]:ease-spring-standard-fast-effects",
14631
- "[&_[data-calendar-title]:hover]:bg-on-surface/8",
14632
- "[&_[data-calendar-title]_h2]:text-label-large",
14633
- "[&_[data-calendar-title]_h2]:text-on-surface-variant",
14634
- "[&_[data-calendar-title]_h2]:m-0",
14635
- "[&_[data-calendar-title]_svg]:text-on-surface-variant",
14636
- "[&_[data-calendar-nav]]:flex",
14637
- "[&_[data-calendar-nav]]:items-center",
14638
- "[&_[data-calendar-nav]]:gap-1",
14639
- "[&_[data-nav-button]]:w-10",
14640
- "[&_[data-nav-button]]:h-10",
14641
- "[&_[data-nav-button]]:rounded-full",
14642
- "[&_[data-nav-button]]:flex",
14643
- "[&_[data-nav-button]]:items-center",
14644
- "[&_[data-nav-button]]:justify-center",
14645
- "[&_[data-nav-button]]:text-on-surface-variant",
14646
- "[&_[data-nav-button]]:bg-transparent",
14647
- "[&_[data-nav-button]]:border-none",
14648
- "[&_[data-nav-button]]:transition-colors",
14649
- "[&_[data-nav-button]]:duration-spring-standard-fast-effects",
14650
- "[&_[data-nav-button]]:ease-spring-standard-fast-effects",
14651
- "[&_[data-nav-button]:hover]:bg-on-surface/8",
14652
- "[&_[data-nav-button]:focus-visible]:bg-on-surface/10",
14653
- "[&_[data-nav-button]:disabled]:text-on-surface/38",
14654
- "[&_[data-nav-button]:disabled]:cursor-not-allowed",
14655
- // ── Calendar cells ────────────────────────────────────────────────────────
14656
- "[&_td>div]:w-[48px]",
14657
- "[&_td>div]:h-[48px]",
14658
- "[&_td>div]:rounded-full",
14659
- "[&_td>div]:flex",
14660
- "[&_td>div]:items-center",
14661
- "[&_td>div]:justify-center",
14662
- "[&_td>div]:text-body-large",
14663
- "[&_td>div]:text-on-surface",
14664
- "[&_td>div]:relative",
14665
- "[&_td>div]:cursor-pointer",
14666
- "[&_td>div]:select-none",
14667
- "[&_td>div]:transition-colors",
14668
- "[&_td>div]:duration-spring-standard-fast-effects",
14669
- "[&_td>div]:ease-spring-standard-fast-effects",
14670
- "[&_td>div[data-today]:not([data-selected])]:text-primary",
14671
- "[&_td>div[data-today]:not([data-selected])]:border",
14672
- "[&_td>div[data-today]:not([data-selected])]:border-primary",
14673
- "[&_td>div[data-selected]]:bg-primary",
14674
- "[&_td>div[data-selected]]:text-on-primary",
14675
- "[&_td>div[data-range-middle]]:bg-secondary-container",
14676
- "[&_td>div[data-range-middle]]:text-on-secondary-container",
14677
- "[&_td>div[data-range-middle]]:rounded-none",
14678
- "[&_td>div[data-outside-month]:not([data-selected])]:text-on-surface-variant",
14679
- "[&_td>div[data-disabled]]:text-on-surface/38",
14680
- "[&_td>div[data-disabled]]:cursor-not-allowed",
14681
- "[&_td>div:not([data-selected]):not([data-today]):not([data-disabled]):hover]:bg-on-surface/8",
14682
- "[&_td>div[data-today]:not([data-selected]):hover]:bg-primary/8",
14683
- "[&_td>div[data-selected]:hover]:shadow-sm",
14684
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:ring-2",
14685
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:ring-on-surface",
14686
- "[&_td>div[data-focus-visible]:not([data-selected]):not([data-today])]:bg-on-surface/10",
14687
- "[&_td>div[data-today][data-focus-visible]:not([data-selected])]:bg-primary/10",
14688
- // ── Weekday labels ────────────────────────────────────────────────────────
14689
- "[&_th]:text-body-small",
14690
- "[&_th]:text-on-surface",
14691
- "[&_th]:font-normal",
14692
- "[&_th]:w-[48px]",
14693
- "[&_th]:h-[48px]",
14694
- // ── Year grid ─────────────────────────────────────────────────────────────
14695
- "[&_[data-year-grid]]:grid",
14696
- "[&_[data-year-grid]]:grid-cols-3",
14697
- "[&_[data-year-grid]]:gap-2",
14698
- "[&_[data-year-grid]]:px-3",
14699
- "[&_[data-year-grid]]:py-2",
14700
- "[&_[data-year-grid]]:max-h-[280px]",
14701
- "[&_[data-year-grid]]:overflow-y-auto",
14702
- "[&_[data-year-grid]]:place-items-center",
14703
- "[&_[data-year-item]]:w-[88px]",
14704
- "[&_[data-year-item]]:h-[52px]",
14705
- "[&_[data-year-item]]:rounded-full",
14706
- "[&_[data-year-item]]:flex",
14707
- "[&_[data-year-item]]:items-center",
14708
- "[&_[data-year-item]]:justify-center",
14709
- "[&_[data-year-item]]:text-body-large",
14710
- "[&_[data-year-item]]:text-on-surface-variant",
14711
- "[&_[data-year-item]]:bg-transparent",
14712
- "[&_[data-year-item]]:border-none",
14713
- "[&_[data-year-item]]:cursor-pointer",
14714
- "[&_[data-year-item]]:transition-colors",
14715
- "[&_[data-year-item]]:duration-spring-standard-fast-effects",
14716
- "[&_[data-year-item]]:ease-spring-standard-fast-effects",
14717
- "[&_[data-year-item]:hover]:bg-on-surface/8",
14718
- "[&_[data-year-item][data-selected]]:bg-primary",
14719
- "[&_[data-year-item][data-selected]]:text-on-primary",
14720
- // ── Scrim ─────────────────────────────────────────────────────────────────
14721
- "[&_[data-scrim]]:fixed",
14722
- "[&_[data-scrim]]:inset-0",
14723
- "[&_[data-scrim]]:z-40",
14724
- "[&_[data-scrim]]:bg-scrim",
14725
- "[&_[data-scrim]]:opacity-32",
14726
- "[&_[data-scrim]]:transition-opacity",
14727
- "[&_[data-scrim]]:duration-medium2",
14728
- "[&_[data-scrim]]:ease-standard",
14729
- // ── Action buttons ────────────────────────────────────────────────────────
14730
- "[&_[data-actions]]:flex",
14731
- "[&_[data-actions]]:items-center",
14732
- "[&_[data-actions]]:justify-end",
14733
- "[&_[data-actions]]:gap-2",
14734
- "[&_[data-actions]]:px-3",
14735
- "[&_[data-actions]]:py-2",
14736
- "[&_[data-action]]:text-primary",
14737
- "[&_[data-action]]:text-label-large",
14738
- "[&_[data-action]]:rounded-full",
14739
- "[&_[data-action]]:px-3",
14740
- "[&_[data-action]]:py-2",
14741
- "[&_[data-action]]:min-h-12",
14742
- "[&_[data-action]]:bg-transparent",
14743
- "[&_[data-action]]:border-none",
14744
- "[&_[data-action]]:transition-colors",
14745
- "[&_[data-action]]:duration-spring-standard-fast-effects",
14746
- "[&_[data-action]]:ease-spring-standard-fast-effects",
14747
- "[&_[data-action]:hover]:bg-primary/8",
14748
- "[&_[data-action]:focus-visible]:ring-2",
14749
- "[&_[data-action]:focus-visible]:ring-primary",
14750
- "[&_[data-action]:focus-visible]:bg-primary/10"
14751
- ].join(" ");
14752
- var MODAL_MOTION_STYLES = [
14753
- // ── Modal container enter ──────────────────────────────────────────────────
14754
- "[&_[data-modal-dialog]]:transition-[transform,opacity]",
14755
- "[&_[data-modal-dialog]]:duration-medium2",
14756
- "[&_[data-modal-dialog]]:ease-standard-decelerate",
14757
- // ── Modal container exit ───────────────────────────────────────────────────
14758
- "[&_[data-modal-dialog][data-exiting]]:duration-medium1",
14759
- "[&_[data-modal-dialog][data-exiting]]:ease-standard-accelerate",
14760
- // ── Calendar month slide ───────────────────────────────────────────────────
14761
- "[&_table]:transition-transform",
14762
- "[&_table]:duration-medium1",
14763
- "[&_table]:ease-emphasized-decelerate",
14764
- // ── Cell selection animation (scale + background) ──────────────────────────
14765
- "[&_td>div[data-selected]]:transition-[background-color,transform]",
14766
- "[&_td>div[data-selected]]:duration-short2",
14767
- "[&_td>div[data-selected]]:ease-standard",
14768
- // ── State layer opacity ────────────────────────────────────────────────────
14769
- "[&_td>div::after]:transition-opacity",
14770
- "[&_td>div::after]:duration-short1",
14771
- "[&_td>div::after]:ease-standard"
14772
- ].join(" ");
14773
14961
  var DatePickerModalStyled = forwardRef(
14774
14962
  (props, ref) => {
14775
14963
  const { className, ...rest } = props;
@@ -14780,11 +14968,20 @@ var DatePickerModalStyled = forwardRef(
14780
14968
  ref,
14781
14969
  ...rest,
14782
14970
  className: cn(
14783
- datePickerContainerVariants({ variant: "modal" }),
14784
- MODAL_STYLES,
14785
- !reducedMotion && MODAL_MOTION_STYLES,
14971
+ modalDialogVariants({ variant: "modal" }),
14972
+ MODAL_CONTENT_STRUCTURAL,
14973
+ !reducedMotion && MODAL_DIALOG_MOTION,
14786
14974
  className
14787
- )
14975
+ ),
14976
+ scrimClassName: cn(scrimVariants2()),
14977
+ slots: {
14978
+ CellComponent: StyledCalendarCell,
14979
+ NavButtonComponent: StyledNavButton,
14980
+ TitleComponent: StyledCalendarTitle,
14981
+ YearItemComponent: StyledYearItem,
14982
+ WeekdayComponent: StyledWeekday
14983
+ },
14984
+ ActionButtonComponent: StyledActionButton
14788
14985
  }
14789
14986
  );
14790
14987
  }
@@ -14931,7 +15128,9 @@ var DatePickerModalInput = forwardRef(
14931
15128
  onCancel,
14932
15129
  onConfirm,
14933
15130
  onModeToggle,
14934
- className
15131
+ className,
15132
+ scrimClassName,
15133
+ ActionButtonComponent
14935
15134
  } = props;
14936
15135
  const internalRef = useRef(null);
14937
15136
  const ref = forwardedRef ?? internalRef;
@@ -15090,6 +15289,7 @@ var DatePickerModalInput = forwardRef(
15090
15289
  headlineId,
15091
15290
  onClose: handleClose,
15092
15291
  ...className ? { className } : {},
15292
+ ...scrimClassName ? { scrimClassName } : {},
15093
15293
  isOpen: state.isOpen,
15094
15294
  children: [
15095
15295
  /* @__PURE__ */ jsx(
@@ -15152,7 +15352,8 @@ var DatePickerModalInput = forwardRef(
15152
15352
  confirmLabel,
15153
15353
  onCancel: handleCancel,
15154
15354
  onConfirm: handleConfirm,
15155
- isConfirmDisabled: !isFormValid
15355
+ isConfirmDisabled: !isFormValid,
15356
+ ...ActionButtonComponent ? { ButtonComponent: ActionButtonComponent } : {}
15156
15357
  }
15157
15358
  )
15158
15359
  ]
@@ -15170,6 +15371,7 @@ function ModalInputOverlay({
15170
15371
  headlineId,
15171
15372
  onClose,
15172
15373
  className,
15374
+ scrimClassName,
15173
15375
  isOpen,
15174
15376
  children
15175
15377
  }) {
@@ -15190,7 +15392,7 @@ function ModalInputOverlay({
15190
15392
  dialogRef
15191
15393
  );
15192
15394
  return /* @__PURE__ */ jsxs(Fragment, { children: [
15193
- /* @__PURE__ */ jsx("div", { "data-scrim": true, "aria-hidden": "true", onClick: onClose }),
15395
+ /* @__PURE__ */ jsx("div", { "data-scrim": true, "aria-hidden": "true", onClick: onClose, className: scrimClassName }),
15194
15396
  /* @__PURE__ */ jsx(
15195
15397
  "div",
15196
15398
  {
@@ -15208,98 +15410,6 @@ function ModalInputOverlay({
15208
15410
  ] });
15209
15411
  }
15210
15412
  ModalInputOverlay.displayName = "ModalInputOverlay";
15211
- var MODAL_INPUT_STYLES = [
15212
- // ── Container structure ───────────────────────────────────────────────────
15213
- "[&_[data-modal-dialog]]:bg-surface-container-high",
15214
- "[&_[data-modal-dialog]]:rounded-3xl",
15215
- "[&_[data-modal-dialog]]:overflow-hidden",
15216
- "[&_[data-modal-dialog]]:fixed",
15217
- "[&_[data-modal-dialog]]:top-1/2",
15218
- "[&_[data-modal-dialog]]:left-1/2",
15219
- "[&_[data-modal-dialog]]:-translate-x-1/2",
15220
- "[&_[data-modal-dialog]]:-translate-y-1/2",
15221
- "[&_[data-modal-dialog]]:z-50",
15222
- "[&_[data-modal-dialog]]:w-[328px]",
15223
- // ── Header ────────────────────────────────────────────────────────────────
15224
- "[&_[data-modal-header]]:px-6",
15225
- "[&_[data-modal-header]]:pt-4",
15226
- "[&_[data-modal-header]]:pb-3",
15227
- "[&_[data-modal-header]]:flex",
15228
- "[&_[data-modal-header]]:items-start",
15229
- "[&_[data-modal-header]]:justify-between",
15230
- "[&_[data-headline]]:text-label-large",
15231
- "[&_[data-headline]]:text-on-surface-variant",
15232
- "[&_[data-headline]]:m-0",
15233
- "[&_[data-supporting-text]]:text-headline-large",
15234
- "[&_[data-supporting-text]]:text-on-surface",
15235
- "[&_[data-supporting-text]]:mt-4",
15236
- "[&_[data-supporting-text]]:m-0",
15237
- "[&_[data-mode-toggle]]:w-12",
15238
- "[&_[data-mode-toggle]]:h-12",
15239
- "[&_[data-mode-toggle]]:rounded-full",
15240
- "[&_[data-mode-toggle]]:flex",
15241
- "[&_[data-mode-toggle]]:items-center",
15242
- "[&_[data-mode-toggle]]:justify-center",
15243
- "[&_[data-mode-toggle]]:text-on-surface-variant",
15244
- "[&_[data-mode-toggle]]:bg-transparent",
15245
- "[&_[data-mode-toggle]]:border-none",
15246
- "[&_[data-mode-toggle]]:self-end",
15247
- "[&_[data-mode-toggle]]:transition-colors",
15248
- "[&_[data-mode-toggle]]:duration-spring-standard-fast-effects",
15249
- "[&_[data-mode-toggle]]:ease-spring-standard-fast-effects",
15250
- "[&_[data-mode-toggle]:hover]:bg-on-surface-variant/8",
15251
- // ── Divider ───────────────────────────────────────────────────────────────
15252
- "[&_hr[data-divider]]:border-outline-variant",
15253
- // ── Date input fields ─────────────────────────────────────────────────────
15254
- "[&_[data-date-input-field]]:px-6",
15255
- "[&_[data-date-input-field]]:py-2",
15256
- "[&_[data-date-input-field]_[data-field]]:flex",
15257
- "[&_[data-date-input-field]_[data-field]]:items-center",
15258
- "[&_[data-date-input-field]_[data-field]]:border",
15259
- "[&_[data-date-input-field]_[data-field]]:border-outline",
15260
- "[&_[data-date-input-field]_[data-field]]:rounded-sm",
15261
- "[&_[data-date-input-field]_[data-field]]:px-4",
15262
- "[&_[data-date-input-field]_[data-field]]:py-3",
15263
- "[&_[data-date-input-field]_[data-field]]:text-body-large",
15264
- "[&_[data-date-input-field]_[data-field]]:text-on-surface",
15265
- "[&_[data-date-input-field]_[data-segment]]:outline-none",
15266
- "[&_[data-date-input-field]_[data-segment][data-placeholder]]:text-on-surface-variant",
15267
- "[&_[data-date-input-field][data-focused]_[data-field]]:border-primary",
15268
- "[&_[data-date-input-field][data-focused]_[data-field]]:border-2",
15269
- "[&_[data-date-input-field][data-invalid]_[data-field]]:border-error",
15270
- "[&_[data-date-input-field]_[data-label]]:text-body-small",
15271
- "[&_[data-date-input-field]_[data-label]]:text-on-surface-variant",
15272
- "[&_[data-date-input-field]_[data-error-message]]:text-body-small",
15273
- "[&_[data-date-input-field]_[data-error-message]]:text-error",
15274
- "[&_[data-date-input-field]_[data-error-message]]:mt-1",
15275
- // ── Scrim ─────────────────────────────────────────────────────────────────
15276
- "[&_[data-scrim]]:fixed",
15277
- "[&_[data-scrim]]:inset-0",
15278
- "[&_[data-scrim]]:z-40",
15279
- "[&_[data-scrim]]:bg-scrim",
15280
- "[&_[data-scrim]]:opacity-32",
15281
- "[&_[data-scrim]]:transition-opacity",
15282
- "[&_[data-scrim]]:duration-medium2",
15283
- "[&_[data-scrim]]:ease-standard",
15284
- // ── Action buttons ────────────────────────────────────────────────────────
15285
- "[&_[data-actions]]:flex",
15286
- "[&_[data-actions]]:items-center",
15287
- "[&_[data-actions]]:justify-end",
15288
- "[&_[data-actions]]:gap-2",
15289
- "[&_[data-actions]]:px-3",
15290
- "[&_[data-actions]]:py-2",
15291
- "[&_[data-action]]:text-primary",
15292
- "[&_[data-action]]:text-label-large",
15293
- "[&_[data-action]]:rounded-full",
15294
- "[&_[data-action]]:px-3",
15295
- "[&_[data-action]]:py-2",
15296
- "[&_[data-action]]:bg-transparent",
15297
- "[&_[data-action]]:border-none",
15298
- "[&_[data-action]]:transition-colors",
15299
- "[&_[data-action]]:duration-spring-standard-fast-effects",
15300
- "[&_[data-action]]:ease-spring-standard-fast-effects",
15301
- "[&_[data-action]:hover]:bg-primary/8"
15302
- ].join(" ");
15303
15413
  var DatePickerModalInputStyled = forwardRef(
15304
15414
  (props, ref) => {
15305
15415
  const { className, ...rest } = props;
@@ -15309,10 +15419,12 @@ var DatePickerModalInputStyled = forwardRef(
15309
15419
  ref,
15310
15420
  ...rest,
15311
15421
  className: cn(
15312
- datePickerContainerVariants({ variant: "modal-input" }),
15313
- MODAL_INPUT_STYLES,
15422
+ modalDialogVariants({ variant: "modal-input" }),
15423
+ MODAL_INPUT_CONTENT_STRUCTURAL,
15314
15424
  className
15315
- )
15425
+ ),
15426
+ scrimClassName: cn(scrimVariants2()),
15427
+ ActionButtonComponent: StyledActionButton
15316
15428
  }
15317
15429
  );
15318
15430
  }
@@ -15423,6 +15535,6 @@ var DateField = forwardRef((props, forwardedRef) => {
15423
15535
  });
15424
15536
  DateField.displayName = "DateField";
15425
15537
 
15426
- export { AppBar, AppBarHeadless, Badge, BadgeContent, BadgeHeadless, BottomSheet, BottomSheetContext, BottomSheetHandle, BottomSheetHeadless, Button, ButtonGroup, ButtonGroupContext, ButtonGroupHeadless, CalendarCore, Card, CardActions, CardContent, CardHeader, CardHeadless, CardMedia, Checkbox, Chip, ChipHeadless, ChipSet, DateField, DatePicker, DatePickerDocked, DatePickerModal, DatePickerModalInput, Dialog, DialogActions, DialogContent, DialogContext, DialogHeadless, DialogHeadline, Divider, DividerHeadless, Drawer, DrawerIconOnlyContext, DrawerItem, DrawerSection, FAB, FABHeadless, FABMenu, FABMenuContext, FABMenuHeadless, FABMenuItem, HeadlessDrawer, HeadlessDrawerItem, HeadlessMenu, HeadlessMenuDivider, HeadlessMenuItem, HeadlessMenuSection, HeadlessMenuTrigger, HeadlessNavigationBar, HeadlessNavigationBarItem, HeadlessTab, HeadlessTabList, HeadlessTabPanel, IconButton, IconButtonHeadless, List, ListHeadless, ListItem, ListItemHeadless, ListItemLeading, ListItemText, ListItemTrailing, Menu, MenuContext, MenuDivider, MenuItem, MenuSection, MenuTrigger, NavigationBar, NavigationBarItem, Progress, ProgressHeadless, Radio, RadioGroup, RadioGroupHeadless, RadioHeadless, RichTooltip, STATE_LAYER_OPACITY, Search, SearchBar, SearchBarHeadless, SearchView, SearchViewHeadless, Slider, SliderHeadless, Snackbar, SnackbarContext, SnackbarHeadless, SnackbarProvider, SplitButton, SplitButtonHeadless, Switch, TYPOGRAPHY_ELEMENT_MAP, TYPOGRAPHY_USAGE, Tab, TabList, TabPanel, Tabs, TextField, TimePicker, TimePickerDial, TimePickerInput, Tooltip, TooltipOverlayHeadless, TooltipTrigger, TooltipTriggerHeadless, applyStateLayer, badgeVariants2 as badgeVariants, bottomSheetAnimationVariants, bottomSheetHandlePillVariants, bottomSheetHandleWrapperVariants, bottomSheetScrimVariants, bottomSheetVariants, buttonGroupFocusRingVariants, buttonGroupRootVariants, buttonGroupVariants, calendarCellVariants, cardVariants, chipVariants, clockDialContainerVariants, clockDialNumberVariants, clockHandCenterVariants, clockHandHandleVariants, clockHandTrackVariants, cn, datePickerActionButtonVariants, datePickerActionVariants, datePickerContainerVariants, datePickerDividerVariants, datePickerHeaderVariants, datePickerHeadlineVariants, datePickerNavVariants, datePickerRangeIndicatorVariants, datePickerScrimVariants, datePickerSupportingTextVariants, datePickerWeekdayVariants, dividerVariants, fabMenuItemFocusRingVariants, fabMenuItemIconVariants, fabMenuItemLabelVariants, fabMenuItemStateLayerVariants, fabMenuItemVariants, fabMenuListVariants, fabMenuVariants, generateMD3Theme, getColorValue, getConnectedRadiusClasses, getFontFamily, getMD3Color, getResponsiveTypography, getTypographyClassName, getTypographyForElement, getTypographyStyle, getTypographyToken, hexToRgb, listItemVariants, listVariants, periodSelectorContainerVariants, periodSelectorItemVariants, pxToRem, remToPx, rgbToHex, richTooltipVariants, searchBarVariants, searchViewHeaderVariants, searchViewVariants, sliderActiveTrackVariants, sliderContainerVariants, sliderHandleStateLayerVariants, sliderHandleVariants, sliderInactiveTrackVariants, sliderTrackLayoutVariants, splitButtonContainerVariants, splitButtonDropdownVariants, splitButtonPrimaryVariants, splitButtonVariants, timeInputFieldVariants, timePickerActionButtonVariants, timePickerActionRowVariants, timePickerContainerVariants, timePickerHeadlineVariants, timePickerModeToggleVariants, timeSelectorContainerVariants, timeSeparatorVariants, tooltipVariants, truncateText, useBottomSheetContext, useBottomSheetDrag, useButtonGroup, useDialogContext, useFABMenuContext, useMenuContext, useOptionalButtonGroup, useSnackbar, withOpacity, yearItemVariants };
15538
+ export { AppBar, AppBarHeadless, Badge, BadgeContent, BadgeHeadless, BottomSheet, BottomSheetContext, BottomSheetHandle, BottomSheetHeadless, Button, ButtonGroup, ButtonGroupContext, ButtonGroupHeadless, CalendarCore, Card, CardActions, CardContent, CardHeader, CardHeadless, CardMedia, Checkbox, Chip, ChipHeadless, ChipSet, DateField, DatePicker, DatePickerDocked, DatePickerModal, DatePickerModalInput, Dialog, DialogActions, DialogContent, DialogContext, DialogHeadless, DialogHeadline, Divider, DividerHeadless, Drawer, DrawerIconOnlyContext, DrawerItem, DrawerSection, FAB, FABHeadless, FABMenu, FABMenuContext, FABMenuHeadless, FABMenuItem, HeadlessDrawer, HeadlessDrawerItem, HeadlessMenu, HeadlessMenuDivider, HeadlessMenuItem, HeadlessMenuSection, HeadlessMenuTrigger, HeadlessNavigationBar, HeadlessNavigationBarItem, HeadlessTab, HeadlessTabList, HeadlessTabPanel, IconButton, IconButtonHeadless, List, ListHeadless, ListItem, ListItemHeadless, ListItemLeading, ListItemText, ListItemTrailing, Menu, MenuContext, MenuDivider, MenuItem, MenuSection, MenuTrigger, NavigationBar, NavigationBarItem, Progress, ProgressHeadless, Radio, RadioGroup, RadioGroupHeadless, RadioHeadless, RichTooltip, STATE_LAYER_OPACITY, Search, SearchBar, SearchBarHeadless, SearchView, SearchViewHeadless, Slider, SliderHeadless, Snackbar, SnackbarContext, SnackbarHeadless, SnackbarProvider, SplitButton, SplitButtonHeadless, StyledActionButton, StyledCalendarCell, StyledCalendarTitle, StyledNavButton, StyledWeekday, StyledYearItem, Switch, TYPOGRAPHY_ELEMENT_MAP, TYPOGRAPHY_USAGE, Tab, TabList, TabPanel, Tabs, TextField, TimePicker, TimePickerDial, TimePickerInput, Tooltip, TooltipOverlayHeadless, TooltipTrigger, TooltipTriggerHeadless, actionButtonFocusRingVariants, actionButtonStateLayerVariants, actionButtonVariants, actionRowVariants, applyStateLayer, badgeVariants2 as badgeVariants, bottomSheetAnimationVariants, bottomSheetHandlePillVariants, bottomSheetHandleWrapperVariants, bottomSheetScrimVariants, bottomSheetVariants, buttonGroupFocusRingVariants, buttonGroupRootVariants, buttonGroupVariants, calendarCellFocusRingVariants, calendarCellStateLayerVariants, calendarCellVariants, calendarDividerVariants, calendarHeaderVariants, calendarTitleIconVariants, calendarTitleStateLayerVariants, calendarTitleTextVariants, calendarTitleVariants, cardVariants, chipVariants, clockDialContainerVariants, clockDialNumberVariants, clockHandCenterVariants, clockHandHandleVariants, clockHandTrackVariants, cn, dateFieldVariants, dateInputErrorVariants, dateInputFieldGroupVariants, dateInputFieldVariants, dateInputLabelVariants, datePickerContainerVariants, dateSegmentPlaceholderVariants, dividerVariants, dockedFieldGroupVariants, dockedLabelVariants, dockedTriggerStateLayerVariants, dockedTriggerVariants, fabMenuItemFocusRingVariants, fabMenuItemIconVariants, fabMenuItemLabelVariants, fabMenuItemStateLayerVariants, fabMenuItemVariants, fabMenuListVariants, fabMenuVariants, generateMD3Theme, getColorValue, getConnectedRadiusClasses, getFontFamily, getMD3Color, getResponsiveTypography, getTypographyClassName, getTypographyForElement, getTypographyStyle, getTypographyToken, headlineVariants, hexToRgb, listItemVariants, listVariants, modalDialogVariants, modalHeaderVariants, modeToggleStateLayerVariants, modeToggleVariants, navButtonFocusRingVariants, navButtonStateLayerVariants, navButtonVariants, periodSelectorContainerVariants, periodSelectorItemVariants, popoverVariants, pxToRem, remToPx, rgbToHex, richTooltipVariants, scrimVariants2 as scrimVariants, searchBarVariants, searchViewHeaderVariants, searchViewVariants, sliderActiveTrackVariants, sliderContainerVariants, sliderHandleStateLayerVariants, sliderHandleVariants, sliderInactiveTrackVariants, sliderTrackLayoutVariants, splitButtonContainerVariants, splitButtonDropdownVariants, splitButtonPrimaryVariants, splitButtonVariants, supportingTextVariants, timeInputFieldVariants, timePickerActionButtonVariants, timePickerActionRowVariants, timePickerContainerVariants, timePickerHeadlineVariants, timePickerModeToggleVariants, timeSelectorContainerVariants, timeSeparatorVariants, tooltipVariants, truncateText, useBottomSheetContext, useBottomSheetDrag, useButtonGroup, useDialogContext, useFABMenuContext, useMenuContext, useOptionalButtonGroup, useSnackbar, weekdayVariants, withOpacity, yearGridVariants, yearItemFocusRingVariants, yearItemStateLayerVariants, yearItemVariants };
15427
15539
  //# sourceMappingURL=index.js.map
15428
15540
  //# sourceMappingURL=index.js.map