reshaped 3.4.0 → 3.4.2
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/CHANGELOG.md +3 -32
 - package/dist/bundle.css +1 -1
 - package/dist/bundle.js +11 -11
 - package/dist/cjs/cli/theming/index.js +0 -1
 - package/dist/cjs/themes/_generator/definitions/figma.d.ts +1 -1
 - package/dist/cjs/themes/_generator/definitions/figma.js +6 -5
 - package/dist/cjs/themes/_generator/utilities/color.js +11 -11
 - package/dist/cjs/themes/_generator/utilities/generateBackgroundColors.js +0 -2
 - package/dist/cjs/themes/_generator/utilities/generateColors.js +1 -1
 - package/dist/cjs/themes/_generator/utilities/generateUnits.js +0 -1
 - package/dist/cjs/themes/_generator/utilities/mergeDeep.js +1 -1
 - package/dist/cjs/themes/_generator/utilities/resolveTokenReference.js +2 -0
 - package/dist/cjs/themes/figma/tailwind.css +1 -1
 - package/dist/cjs/themes/figma/theme.css +1 -1
 - package/dist/cli/theming/index.js +0 -1
 - package/dist/components/Actionable/Actionable.js +2 -0
 - package/dist/components/Autocomplete/Autocomplete.js +1 -0
 - package/dist/components/Calendar/Calendar.module.css +1 -1
 - package/dist/components/Calendar/Calendar.types.d.ts +4 -4
 - package/dist/components/Calendar/CalendarControlled.js +2 -2
 - package/dist/components/Calendar/CalendarDate.js +29 -11
 - package/dist/components/Calendar/CalendarMonth.js +2 -6
 - package/dist/components/Calendar/tests/Calendar.stories.d.ts +19 -4
 - package/dist/components/Calendar/tests/Calendar.stories.js +237 -26
 - package/dist/components/Card/Card.d.ts +1 -1
 - package/dist/components/Card/Card.js +2 -4
 - package/dist/components/Card/tests/Card.stories.d.ts +1 -1
 - package/dist/components/Card/tests/Card.test.stories.d.ts +1 -1
 - package/dist/components/Carousel/Carousel.js +1 -2
 - package/dist/components/Carousel/Carousel.types.d.ts +1 -5
 - package/dist/components/Carousel/Carousel.types.js +1 -5
 - package/dist/components/Carousel/CarouselControl.js +2 -3
 - package/dist/components/FormControl/FormControl.context.d.ts +4 -0
 - package/dist/components/Grid/Grid.js +8 -2
 - package/dist/components/Icon/Icon.js +1 -3
 - package/dist/components/PinField/PinFieldControlled.js +0 -1
 - package/dist/components/Resizable/Resizable.js +1 -0
 - package/dist/components/Slider/SliderControlled.js +9 -3
 - package/dist/components/Stepper/Stepper.js +7 -2
 - package/dist/components/Tabs/TabsList.js +7 -3
 - package/dist/components/Text/Text.js +2 -4
 - package/dist/components/Timeline/Timeline.js +1 -1
 - package/dist/components/Toast/ToastProvider.js +8 -4
 - package/dist/components/View/View.js +10 -5
 - package/dist/components/_private/Flyout/FlyoutContent.js +1 -1
 - package/dist/components/_private/Flyout/FlyoutTrigger.js +1 -1
 - package/dist/components/_private/Flyout/useFlyout.js +3 -1
 - package/dist/components/_private/Portal/Portal.d.ts +1 -1
 - package/dist/config/tailwind.d.ts +1 -1
 - package/dist/hooks/_private/useOnClickOutside.d.ts +1 -1
 - package/dist/hooks/_private/useOnClickOutside.js +26 -10
 - package/dist/hooks/_private/useSingletonHotkeys.js +2 -0
 - package/dist/hooks/useResponsiveClientValue.d.ts +1 -1
 - package/dist/themes/_generator/definitions/figma.d.ts +1 -1
 - package/dist/themes/_generator/definitions/figma.js +6 -5
 - package/dist/themes/_generator/utilities/color.js +11 -11
 - package/dist/themes/_generator/utilities/generateBackgroundColors.js +0 -2
 - package/dist/themes/_generator/utilities/generateColors.js +1 -1
 - package/dist/themes/_generator/utilities/generateUnits.js +0 -1
 - package/dist/themes/_generator/utilities/mergeDeep.js +1 -1
 - package/dist/themes/_generator/utilities/resolveTokenReference.js +2 -0
 - package/dist/themes/figma/tailwind.css +1 -1
 - package/dist/themes/figma/theme.css +1 -1
 - package/dist/types/global.d.ts +2 -2
 - package/dist/utilities/helpers.js +4 -1
 - package/dist/utilities/platform.js +1 -0
 - package/package.json +36 -40
 - package/dist/components/Calendar/tests/Calendar.test.stories.d.ts +0 -26
 - package/dist/components/Calendar/tests/Calendar.test.stories.js +0 -161
 
| 
         @@ -28,7 +28,6 @@ const transformDefinition = (name, definition, options) => { 
     | 
|
| 
       28 
28 
     | 
    
         
             
                if (code.media)
         
     | 
| 
       29 
29 
     | 
    
         
             
                    fs_1.default.writeFileSync(themeMediaPath, code.media);
         
     | 
| 
       30 
30 
     | 
    
         
             
                const logOutput = `Compiled ${chalk_1.default.bold(name)} theme${isFragment ? " fragment" : ""}`;
         
     | 
| 
       31 
     | 
    
         
            -
                // eslint-disable-next-line no-console
         
     | 
| 
       32 
31 
     | 
    
         
             
                console.log(chalk_1.default.green(logOutput));
         
     | 
| 
       33 
32 
     | 
    
         
             
            };
         
     | 
| 
       34 
33 
     | 
    
         
             
            const addThemeFragment = (name, definition, options) => {
         
     | 
| 
         @@ -101,7 +101,6 @@ const theme = { 
     | 
|
| 
       101 
101 
     | 
    
         
             
                    radiusMedium: { px: 4 },
         
     | 
| 
       102 
102 
     | 
    
         
             
                    radiusLarge: { px: 4 },
         
     | 
| 
       103 
103 
     | 
    
         
             
                },
         
     | 
| 
       104 
     | 
    
         
            -
                // @ts-ignore
         
     | 
| 
       105 
104 
     | 
    
         
             
                color: {
         
     | 
| 
       106 
105 
     | 
    
         
             
                    foregroundNeutral: { hex: "#191919", hexDark: "#FFFFFF" },
         
     | 
| 
       107 
106 
     | 
    
         
             
                    foregroundNeutralFaded: { hex: "#474747", hexDark: "#B2B2B2" },
         
     | 
| 
         @@ -109,20 +108,19 @@ const theme = { 
     | 
|
| 
       109 
108 
     | 
    
         
             
                    foregroundPrimary: { hex: "#007BE5", hexDark: "#7CC4F8" },
         
     | 
| 
       110 
109 
     | 
    
         
             
                    foregroundPositive: { hex: "#009951", hexDark: "#79D297" },
         
     | 
| 
       111 
110 
     | 
    
         
             
                    foregroundCritical: { hex: "#DC3412", hexDark: "#FCA397" },
         
     | 
| 
      
 111 
     | 
    
         
            +
                    foregroundWarning: { hex: "#7b6305", hexDark: "#b4920c" },
         
     | 
| 
       112 
112 
     | 
    
         
             
                    backgroundNeutral: { hex: "#DFE2EA", hexDark: "#444444" },
         
     | 
| 
       113 
113 
     | 
    
         
             
                    backgroundNeutralFaded: { hex: "#F5F5F5", hexDark: "#383838" },
         
     | 
| 
       114 
     | 
    
         
            -
                    backgroundNeutralHighlighted: { hex: "#D4D8E3", hexDark: "#525252" },
         
     | 
| 
       115 
114 
     | 
    
         
             
                    backgroundDisabled: { hex: "#e4e4e4", hexDark: "#474747" },
         
     | 
| 
       116 
115 
     | 
    
         
             
                    backgroundDisabledFaded: { hex: "#F5F5F5", hexDark: "#3A3A3A" },
         
     | 
| 
       117 
116 
     | 
    
         
             
                    backgroundPrimary: { hex: "#0D99FF", hexDark: "#0C8CE9" },
         
     | 
| 
       118 
     | 
    
         
            -
                    backgroundPrimaryHighlighted: { hex: "#007BE5", hexDark: "#0A6DC2" },
         
     | 
| 
       119 
117 
     | 
    
         
             
                    backgroundPrimaryFaded: { hex: "#E5F4FF", hexDark: "#394360" },
         
     | 
| 
       120 
118 
     | 
    
         
             
                    backgroundPositive: { hex: "#14AE5C", hexDark: "#198F51" },
         
     | 
| 
       121 
119 
     | 
    
         
             
                    backgroundPositiveFaded: { hex: "#DAECDF", hexDark: "#3d5749" },
         
     | 
| 
       122 
     | 
    
         
            -
                    backgroundPositiveHighlighted: { hex: "#009951", hexDark: "#078348" },
         
     | 
| 
       123 
120 
     | 
    
         
             
                    backgroundCritical: { hex: "#F24822", hexDark: "#E03E1A" },
         
     | 
| 
       124 
121 
     | 
    
         
             
                    backgroundCriticalFaded: { hex: "#FFE2E0", hexDark: "#60332A" },
         
     | 
| 
       125 
     | 
    
         
            -
                     
     | 
| 
      
 122 
     | 
    
         
            +
                    backgroundWarning: { hex: "#facc15", hexDark: "#f1c512" },
         
     | 
| 
      
 123 
     | 
    
         
            +
                    backgroundWarningFaded: { hex: "#fffae9", hexDark: "#2c271f" },
         
     | 
| 
       126 
124 
     | 
    
         
             
                    borderNeutral: { hex: "#E6E6E6", hexDark: "#444444" },
         
     | 
| 
       127 
125 
     | 
    
         
             
                    borderNeutralFaded: { hex: "#E6E6E6", hexDark: "#444444" },
         
     | 
| 
       128 
126 
     | 
    
         
             
                    borderDisabled: { hex: "#E6E6E6", hexDark: "#3E3E3E" },
         
     | 
| 
         @@ -132,12 +130,15 @@ const theme = { 
     | 
|
| 
       132 
130 
     | 
    
         
             
                    borderPositiveFaded: { hex: "#BBDDC6", hexDark: "#086338" },
         
     | 
| 
       133 
131 
     | 
    
         
             
                    borderCritical: { hex: "#DC3412", hexDark: "#FCA397" },
         
     | 
| 
       134 
132 
     | 
    
         
             
                    borderCriticalFaded: { hex: "#FFC7C2", hexDark: "#803226" },
         
     | 
| 
      
 133 
     | 
    
         
            +
                    borderWarning: { hex: "#cfa90f", hexDark: "#b4920a" },
         
     | 
| 
      
 134 
     | 
    
         
            +
                    borderWarningFaded: { hex: "#ece2c4", hexDark: "#453c1e" },
         
     | 
| 
       135 
135 
     | 
    
         
             
                    backgroundPage: { hex: "#FFFFFF", hexDark: "#2C2C2C" },
         
     | 
| 
       136 
136 
     | 
    
         
             
                    backgroundPageFaded: { hex: "#FAFAFA", hexDark: "#1E1E1E" },
         
     | 
| 
       137 
137 
     | 
    
         
             
                    backgroundElevationBase: { hex: "#FFFFFF", hexDark: "#2C2C2C" },
         
     | 
| 
       138 
138 
     | 
    
         
             
                    backgroundElevationRaised: { hex: "#FFFFFF", hexDark: "#2C2C2C" },
         
     | 
| 
       139 
139 
     | 
    
         
             
                    backgroundElevationOverlay: { hex: "#FFFFFF", hexDark: "#2C2C2C" },
         
     | 
| 
       140 
140 
     | 
    
         
             
                    onBackgroundPrimary: { hex: "#FFFFFF" },
         
     | 
| 
      
 141 
     | 
    
         
            +
                    brand: { hex: "#0D99FF" },
         
     | 
| 
       141 
142 
     | 
    
         
             
                    black: { hex: "#000000" },
         
     | 
| 
       142 
143 
     | 
    
         
             
                    white: { hex: "#FFFFFF" },
         
     | 
| 
       143 
144 
     | 
    
         
             
                },
         
     | 
| 
         @@ -338,17 +338,17 @@ const GREEN = 0.7152; 
     | 
|
| 
       338 
338 
     | 
    
         
             
            const BLUE = 0.0722;
         
     | 
| 
       339 
339 
     | 
    
         
             
            const GAMMA = 2.4;
         
     | 
| 
       340 
340 
     | 
    
         
             
            function luminanceWCAG(r, g, b) {
         
     | 
| 
       341 
     | 
    
         
            -
                 
     | 
| 
      
 341 
     | 
    
         
            +
                const a = [r, g, b].map((v) => {
         
     | 
| 
       342 
342 
     | 
    
         
             
                    v /= 255;
         
     | 
| 
       343 
343 
     | 
    
         
             
                    return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, GAMMA);
         
     | 
| 
       344 
344 
     | 
    
         
             
                });
         
     | 
| 
       345 
345 
     | 
    
         
             
                return a[0] * RED + a[1] * GREEN + a[2] * BLUE;
         
     | 
| 
       346 
346 
     | 
    
         
             
            }
         
     | 
| 
       347 
347 
     | 
    
         
             
            function contrastWCAG(rgb1, rgb2) {
         
     | 
| 
       348 
     | 
    
         
            -
                 
     | 
| 
       349 
     | 
    
         
            -
                 
     | 
| 
       350 
     | 
    
         
            -
                 
     | 
| 
       351 
     | 
    
         
            -
                 
     | 
| 
      
 348 
     | 
    
         
            +
                const lum1 = luminanceWCAG(...rgb1);
         
     | 
| 
      
 349 
     | 
    
         
            +
                const lum2 = luminanceWCAG(...rgb2);
         
     | 
| 
      
 350 
     | 
    
         
            +
                const brightest = Math.max(lum1, lum2);
         
     | 
| 
      
 351 
     | 
    
         
            +
                const darkest = Math.min(lum1, lum2);
         
     | 
| 
       352 
352 
     | 
    
         
             
                return (brightest + 0.05) / (darkest + 0.05);
         
     | 
| 
       353 
353 
     | 
    
         
             
            }
         
     | 
| 
       354 
354 
     | 
    
         
             
            const getOnColorWCAG = (args) => {
         
     | 
| 
         @@ -370,7 +370,7 @@ function luminanceAPCA({ r, g, b }) { 
     | 
|
| 
       370 
370 
     | 
    
         
             
            }
         
     | 
| 
       371 
371 
     | 
    
         
             
            function contrastAPCA(backgroundLuminance, textLuminance) {
         
     | 
| 
       372 
372 
     | 
    
         
             
                // Calculate the contrast based on APCA
         
     | 
| 
       373 
     | 
    
         
            -
                 
     | 
| 
      
 373 
     | 
    
         
            +
                const Lc = textLuminance - backgroundLuminance;
         
     | 
| 
       374 
374 
     | 
    
         
             
                return Math.abs(Lc); // Return the absolute value of contrast
         
     | 
| 
       375 
375 
     | 
    
         
             
            }
         
     | 
| 
       376 
376 
     | 
    
         
             
            const getOnColorAPCA = (args) => {
         
     | 
| 
         @@ -385,12 +385,12 @@ const getOnColorAPCA = (args) => { 
     | 
|
| 
       385 
385 
     | 
    
         
             
                    b: (1 - bgAlpha) * baseColor.b + bgAlpha * bgColor.b,
         
     | 
| 
       386 
386 
     | 
    
         
             
                };
         
     | 
| 
       387 
387 
     | 
    
         
             
                // Calculate luminance for background and for white & black
         
     | 
| 
       388 
     | 
    
         
            -
                 
     | 
| 
       389 
     | 
    
         
            -
                 
     | 
| 
       390 
     | 
    
         
            -
                 
     | 
| 
      
 388 
     | 
    
         
            +
                const backgroundLuminance = luminanceAPCA({ r, g, b });
         
     | 
| 
      
 389 
     | 
    
         
            +
                const whiteLuminance = luminanceAPCA({ r: 255, g: 255, b: 255 });
         
     | 
| 
      
 390 
     | 
    
         
            +
                const blackLuminance = luminanceAPCA({ r: 0, g: 0, b: 0 });
         
     | 
| 
       391 
391 
     | 
    
         
             
                // Calculate contrast
         
     | 
| 
       392 
     | 
    
         
            -
                 
     | 
| 
       393 
     | 
    
         
            -
                 
     | 
| 
      
 392 
     | 
    
         
            +
                const contrastWithWhite = contrastAPCA(backgroundLuminance, whiteLuminance);
         
     | 
| 
      
 393 
     | 
    
         
            +
                const contrastWithBlack = contrastAPCA(backgroundLuminance, blackLuminance);
         
     | 
| 
       394 
394 
     | 
    
         
             
                // Choose the color with higher contrast
         
     | 
| 
       395 
395 
     | 
    
         
             
                return contrastWithWhite > contrastWithBlack ? lightHexColor : darkHexColor;
         
     | 
| 
       396 
396 
     | 
    
         
             
            };
         
     | 
| 
         @@ -41,7 +41,6 @@ const generateBackgroundColors = (definition, themeOptions) => { 
     | 
|
| 
       41 
41 
     | 
    
         
             
                            algorithm: themeOptions?.colorContrastAlgorithm,
         
     | 
| 
       42 
42 
     | 
    
         
             
                            ...onColorHexMap,
         
     | 
| 
       43 
43 
     | 
    
         
             
                        });
         
     | 
| 
       44 
     | 
    
         
            -
                        // eslint-disable-next-line no-param-reassign
         
     | 
| 
       45 
44 
     | 
    
         
             
                        definition.color[generatedForegroundName] = {
         
     | 
| 
       46 
45 
     | 
    
         
             
                            hex,
         
     | 
| 
       47 
46 
     | 
    
         
             
                            hexDark: hex !== hexDark ? hexDark : undefined,
         
     | 
| 
         @@ -50,7 +49,6 @@ const generateBackgroundColors = (definition, themeOptions) => { 
     | 
|
| 
       50 
49 
     | 
    
         
             
                    if (needsRGB) {
         
     | 
| 
       51 
50 
     | 
    
         
             
                        const rgb = (0, color_1.hexToRgb)(bgToken.hex);
         
     | 
| 
       52 
51 
     | 
    
         
             
                        const rgbDark = bgToken.hexDark && (0, color_1.hexToRgb)(bgToken.hexDark);
         
     | 
| 
       53 
     | 
    
         
            -
                        // eslint-disable-next-line no-param-reassign
         
     | 
| 
       54 
52 
     | 
    
         
             
                        definition.color[generatedRGBName] = {
         
     | 
| 
       55 
53 
     | 
    
         
             
                            hex: `${rgb.r}, ${rgb.g}, ${rgb.b}`,
         
     | 
| 
       56 
54 
     | 
    
         
             
                            hexDark: rgbDark && `${rgbDark.r}, ${rgbDark.g}, ${rgbDark.b}`,
         
     | 
| 
         @@ -4,7 +4,7 @@ const fn_1 = require("culori/require"); 
     | 
|
| 
       4 
4 
     | 
    
         
             
            const hexToOkHsl = (hex) => {
         
     | 
| 
       5 
5 
     | 
    
         
             
                const rgb = (0, fn_1.parseHex)(hex);
         
     | 
| 
       6 
6 
     | 
    
         
             
                if (!rgb)
         
     | 
| 
       7 
     | 
    
         
            -
                    throw new Error(`[Reshaped] Can 
     | 
| 
      
 7 
     | 
    
         
            +
                    throw new Error(`[Reshaped] Can't generate rgb from ${hex} color`);
         
     | 
| 
       8 
8 
     | 
    
         
             
                const lrgb = (0, fn_1.convertRgbToLrgb)(rgb);
         
     | 
| 
       9 
9 
     | 
    
         
             
                const oklab = (0, fn_1.convertLrgbToOklab)(lrgb);
         
     | 
| 
       10 
10 
     | 
    
         
             
                const okhsl = (0, fn_1.convertOklabToOkhsl)(oklab);
         
     | 
| 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            "use strict";
         
     | 
| 
       2 
2 
     | 
    
         
             
            Object.defineProperty(exports, "__esModule", { value: true });
         
     | 
| 
       3 
3 
     | 
    
         
             
            const isObject = (item) => {
         
     | 
| 
       4 
     | 
    
         
            -
                return item && typeof item === "object" && !Array.isArray(item);
         
     | 
| 
      
 4 
     | 
    
         
            +
                return !!item && typeof item === "object" && !Array.isArray(item);
         
     | 
| 
       5 
5 
     | 
    
         
             
            };
         
     | 
| 
       6 
6 
     | 
    
         
             
            const mergeDeep = (target, ...sources) => {
         
     | 
| 
       7 
7 
     | 
    
         
             
                if (!sources.length)
         
     | 
| 
         @@ -6,6 +6,8 @@ const resolveTokenReference = (theme, tokenType, ref) => { 
     | 
|
| 
       6 
6 
     | 
    
         
             
                Object.keys(tokenGroup).forEach((tokenName) => {
         
     | 
| 
       7 
7 
     | 
    
         
             
                    if (referencedToken)
         
     | 
| 
       8 
8 
     | 
    
         
             
                        return;
         
     | 
| 
      
 9 
     | 
    
         
            +
                    // Relaxed runtime group resolving
         
     | 
| 
      
 10 
     | 
    
         
            +
                    // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       9 
11 
     | 
    
         
             
                    if (tokenName === ref)
         
     | 
| 
       10 
12 
     | 
    
         
             
                        referencedToken = tokenGroup[tokenName];
         
     | 
| 
       11 
13 
     | 
    
         
             
                });
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            @theme{--background-color-primary:var(--rs-color-background-primary);--background-color-primary-faded:var(--rs-color-background-primary-faded);--border-color-primary:var(--rs-color-border-primary);--border-color-primary-faded:var(--rs-color-border-primary-faded);--text-color-primary:var(--rs-color-foreground-primary);--background-color-critical:var(--rs-color-background-critical);--background-color-critical-faded:var(--rs-color-background-critical-faded);--border-color-critical:var(--rs-color-border-critical);--border-color-critical-faded:var(--rs-color-border-critical-faded);--text-color-critical:var(--rs-color-foreground-critical);--background-color-warning:var(--rs-color-background-warning);--background-color-warning-faded:var(--rs-color-background-warning-faded);--border-color-warning:var(--rs-color-border-warning);--border-color-warning-faded:var(--rs-color-border-warning-faded);--text-color-warning:var(--rs-color-foreground-warning);--background-color-positive:var(--rs-color-background-positive);--background-color-positive-faded:var(--rs-color-background-positive-faded);--border-color-positive:var(--rs-color-border-positive);--border-color-positive-faded:var(--rs-color-border-positive-faded);--text-color-positive:var(--rs-color-foreground-positive);--background-color-neutral:var(--rs-color-background-neutral);--background-color-neutral-faded:var(--rs-color-background-neutral-faded);--border-color-neutral:var(--rs-color-border-neutral);--border-color-neutral-faded:var(--rs-color-border-neutral-faded);--text-color-neutral:var(--rs-color-foreground-neutral);--text-color-neutral-faded:var(--rs-color-foreground-neutral-faded);--background-color-disabled:var(--rs-color-background-disabled);--background-color-disabled-faded:var(--rs-color-background-disabled-faded);--border-color-disabled:var(--rs-color-border-disabled);--text-color-disabled:var(--rs-color-foreground-disabled);--background-color-elevation-base:var(--rs-color-background-elevation-base);--background-color-elevation-raised:var(--rs-color-background-elevation-raised);--background-color-elevation-overlay:var(--rs-color-background-elevation-overlay);--background-color-page:var(--rs-color-background-page);--background-color-page-faded:var(--rs-color-background-page-faded);--color-brand:var(--rs-color-brand);--color-white:var(--rs-color-white);--color-black:var(--rs-color-black);-- 
     | 
| 
      
 1 
     | 
    
         
            +
            @theme{--background-color-primary:var(--rs-color-background-primary);--background-color-primary-faded:var(--rs-color-background-primary-faded);--border-color-primary:var(--rs-color-border-primary);--border-color-primary-faded:var(--rs-color-border-primary-faded);--text-color-primary:var(--rs-color-foreground-primary);--background-color-critical:var(--rs-color-background-critical);--background-color-critical-faded:var(--rs-color-background-critical-faded);--border-color-critical:var(--rs-color-border-critical);--border-color-critical-faded:var(--rs-color-border-critical-faded);--text-color-critical:var(--rs-color-foreground-critical);--background-color-warning:var(--rs-color-background-warning);--background-color-warning-faded:var(--rs-color-background-warning-faded);--border-color-warning:var(--rs-color-border-warning);--border-color-warning-faded:var(--rs-color-border-warning-faded);--text-color-warning:var(--rs-color-foreground-warning);--background-color-positive:var(--rs-color-background-positive);--background-color-positive-faded:var(--rs-color-background-positive-faded);--border-color-positive:var(--rs-color-border-positive);--border-color-positive-faded:var(--rs-color-border-positive-faded);--text-color-positive:var(--rs-color-foreground-positive);--background-color-neutral:var(--rs-color-background-neutral);--background-color-neutral-faded:var(--rs-color-background-neutral-faded);--border-color-neutral:var(--rs-color-border-neutral);--border-color-neutral-faded:var(--rs-color-border-neutral-faded);--text-color-neutral:var(--rs-color-foreground-neutral);--text-color-neutral-faded:var(--rs-color-foreground-neutral-faded);--background-color-disabled:var(--rs-color-background-disabled);--background-color-disabled-faded:var(--rs-color-background-disabled-faded);--border-color-disabled:var(--rs-color-border-disabled);--text-color-disabled:var(--rs-color-foreground-disabled);--background-color-elevation-base:var(--rs-color-background-elevation-base);--background-color-elevation-raised:var(--rs-color-background-elevation-raised);--background-color-elevation-overlay:var(--rs-color-background-elevation-overlay);--background-color-page:var(--rs-color-background-page);--background-color-page-faded:var(--rs-color-background-page-faded);--color-brand:var(--rs-color-brand);--color-white:var(--rs-color-white);--color-black:var(--rs-color-black);--text-color-on-primary:var(--rs-color-on-background-primary);--text-color-on-critical:var(--rs-color-on-background-critical);--text-color-on-warning:var(--rs-color-on-background-warning);--text-color-on-positive:var(--rs-color-on-background-positive);--text-color-on-neutral:var(--rs-color-on-background-neutral);--text-color-on-brand:var(--rs-color-on-brand);--radius-small:var(--rs-radius-small);--radius-medium:var(--rs-radius-medium);--radius-large:var(--rs-radius-large);--spacing-0:0px;--spacing-x1:var(--rs-unit-x1);--spacing-x2:var(--rs-unit-x2);--spacing-x3:var(--rs-unit-x3);--spacing-x4:var(--rs-unit-x4);--spacing-x5:var(--rs-unit-x5);--spacing-x6:var(--rs-unit-x6);--spacing-x7:var(--rs-unit-x7);--spacing-x8:var(--rs-unit-x8);--spacing-x9:var(--rs-unit-x9);--spacing-x10:var(--rs-unit-x10);--shadow-raised:var(--rs-shadow-raised);--shadow-overlay:var(--rs-shadow-overlay);--breakpoint-m:660px;--breakpoint-l:900px;--breakpoint-xl:1280px}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            [data-rs-theme=figma]{--rs-font-family-title:Inter,BlinkMacSystemFont,-apple-system,Roboto,Helvetica,Arial,sans-serif;--rs-font-family-body:Inter,BlinkMacSystemFont,-apple-system,Roboto,Helvetica,Arial,sans-serif;--rs-font-weight-regular:400;--rs-font-weight-medium:500;--rs-font-weight-semibold:600;--rs-font-weight-bold:700;--rs-font-weight-extrabold:800;--rs-font-weight-black:900;--rs-font-size-title-1:5rem;--rs-line-height-title-1:5.25rem;--rs-font-family-title-1:var(--rs-font-family-title);--rs-font-weight-title-1:var(--rs-font-weight-semibold);--rs-letter-spacing-title-1:normal;--rs-font-size-title-2:4rem;--rs-line-height-title-2:4.25rem;--rs-font-family-title-2:var(--rs-font-family-title);--rs-font-weight-title-2:var(--rs-font-weight-semibold);--rs-letter-spacing-title-2:normal;--rs-font-size-title-3:3.5rem;--rs-line-height-title-3:3.75rem;--rs-font-family-title-3:var(--rs-font-family-title);--rs-font-weight-title-3:var(--rs-font-weight-semibold);--rs-letter-spacing-title-3:normal;--rs-font-size-title-4:2.5rem;--rs-line-height-title-4:2.75rem;--rs-font-family-title-4:var(--rs-font-family-title);--rs-font-weight-title-4:var(--rs-font-weight-semibold);--rs-letter-spacing-title-4:normal;--rs-font-size-title-5:2.25rem;--rs-line-height-title-5:2.5rem;--rs-font-family-title-5:var(--rs-font-family-title);--rs-font-weight-title-5:var(--rs-font-weight-semibold);--rs-letter-spacing-title-5:normal;--rs-font-size-title-6:1.5rem;--rs-line-height-title-6:1.75rem;--rs-font-family-title-6:var(--rs-font-family-title);--rs-font-weight-title-6:var(--rs-font-weight-semibold);--rs-letter-spacing-title-6:normal;--rs-font-size-featured-1:1.375rem;--rs-line-height-featured-1:1.75rem;--rs-font-family-featured-1:var(--rs-font-family-body);--rs-letter-spacing-featured-1:normal;--rs-font-size-featured-2:1.25rem;--rs-line-height-featured-2:1.75rem;--rs-font-family-featured-2:var(--rs-font-family-body);--rs-letter-spacing-featured-2:normal;--rs-font-size-featured-3:1.125rem;--rs-line-height-featured-3:1.5rem;--rs-font-family-featured-3:var(--rs-font-family-body);--rs-letter-spacing-featured-3:normal;--rs-font-size-body-1:0.875rem;--rs-line-height-body-1:1.25rem;--rs-font-family-body-1:var(--rs-font-family-body);--rs-letter-spacing-body-1:normal;--rs-font-size-body-2:0.8125rem;--rs-line-height-body-2:1.25rem;--rs-font-family-body-2:var(--rs-font-family-body);--rs-letter-spacing-body-2:normal;--rs-font-size-body-3:0.6875rem;--rs-line-height-body-3:1rem;--rs-font-family-body-3:var(--rs-font-family-body);--rs-letter-spacing-body-3:normal;--rs-font-size-caption-1:0.6875rem;--rs-line-height-caption-1:1rem;--rs-font-family-caption-1:var(--rs-font-family-body);--rs-letter-spacing-caption-1:normal;--rs-font-size-caption-2:0.625rem;--rs-line-height-caption-2:0.75rem;--rs-font-family-caption-2:var(--rs-font-family-body);--rs-letter-spacing-caption-2:normal;--rs-unit-base:4px;--rs-unit-radius-small:4px;--rs-unit-radius-medium:4px;--rs-unit-radius-large:4px;--rs-unit-x1:4px;--rs-unit-x2:8px;--rs-unit-x3:12px;--rs-unit-x4:16px;--rs-unit-x5:20px;--rs-unit-x6:24px;--rs-unit-x7:28px;--rs-unit-x8:32px;--rs-unit-x9:36px;--rs-unit-x10:40px;--rs-radius-small:4px;--rs-radius-medium:8px;--rs-radius-large:12px;--rs-color-brand:# 
     | 
| 
      
 1 
     | 
    
         
            +
            [data-rs-theme=figma]{--rs-font-family-title:Inter,BlinkMacSystemFont,-apple-system,Roboto,Helvetica,Arial,sans-serif;--rs-font-family-body:Inter,BlinkMacSystemFont,-apple-system,Roboto,Helvetica,Arial,sans-serif;--rs-font-weight-regular:400;--rs-font-weight-medium:500;--rs-font-weight-semibold:600;--rs-font-weight-bold:700;--rs-font-weight-extrabold:800;--rs-font-weight-black:900;--rs-font-size-title-1:5rem;--rs-line-height-title-1:5.25rem;--rs-font-family-title-1:var(--rs-font-family-title);--rs-font-weight-title-1:var(--rs-font-weight-semibold);--rs-letter-spacing-title-1:normal;--rs-font-size-title-2:4rem;--rs-line-height-title-2:4.25rem;--rs-font-family-title-2:var(--rs-font-family-title);--rs-font-weight-title-2:var(--rs-font-weight-semibold);--rs-letter-spacing-title-2:normal;--rs-font-size-title-3:3.5rem;--rs-line-height-title-3:3.75rem;--rs-font-family-title-3:var(--rs-font-family-title);--rs-font-weight-title-3:var(--rs-font-weight-semibold);--rs-letter-spacing-title-3:normal;--rs-font-size-title-4:2.5rem;--rs-line-height-title-4:2.75rem;--rs-font-family-title-4:var(--rs-font-family-title);--rs-font-weight-title-4:var(--rs-font-weight-semibold);--rs-letter-spacing-title-4:normal;--rs-font-size-title-5:2.25rem;--rs-line-height-title-5:2.5rem;--rs-font-family-title-5:var(--rs-font-family-title);--rs-font-weight-title-5:var(--rs-font-weight-semibold);--rs-letter-spacing-title-5:normal;--rs-font-size-title-6:1.5rem;--rs-line-height-title-6:1.75rem;--rs-font-family-title-6:var(--rs-font-family-title);--rs-font-weight-title-6:var(--rs-font-weight-semibold);--rs-letter-spacing-title-6:normal;--rs-font-size-featured-1:1.375rem;--rs-line-height-featured-1:1.75rem;--rs-font-family-featured-1:var(--rs-font-family-body);--rs-letter-spacing-featured-1:normal;--rs-font-size-featured-2:1.25rem;--rs-line-height-featured-2:1.75rem;--rs-font-family-featured-2:var(--rs-font-family-body);--rs-letter-spacing-featured-2:normal;--rs-font-size-featured-3:1.125rem;--rs-line-height-featured-3:1.5rem;--rs-font-family-featured-3:var(--rs-font-family-body);--rs-letter-spacing-featured-3:normal;--rs-font-size-body-1:0.875rem;--rs-line-height-body-1:1.25rem;--rs-font-family-body-1:var(--rs-font-family-body);--rs-letter-spacing-body-1:normal;--rs-font-size-body-2:0.8125rem;--rs-line-height-body-2:1.25rem;--rs-font-family-body-2:var(--rs-font-family-body);--rs-letter-spacing-body-2:normal;--rs-font-size-body-3:0.6875rem;--rs-line-height-body-3:1rem;--rs-font-family-body-3:var(--rs-font-family-body);--rs-letter-spacing-body-3:normal;--rs-font-size-caption-1:0.6875rem;--rs-line-height-caption-1:1rem;--rs-font-family-caption-1:var(--rs-font-family-body);--rs-letter-spacing-caption-1:normal;--rs-font-size-caption-2:0.625rem;--rs-line-height-caption-2:0.75rem;--rs-font-family-caption-2:var(--rs-font-family-body);--rs-letter-spacing-caption-2:normal;--rs-unit-base:4px;--rs-unit-radius-small:4px;--rs-unit-radius-medium:4px;--rs-unit-radius-large:4px;--rs-unit-x1:4px;--rs-unit-x2:8px;--rs-unit-x3:12px;--rs-unit-x4:16px;--rs-unit-x5:20px;--rs-unit-x6:24px;--rs-unit-x7:28px;--rs-unit-x8:32px;--rs-unit-x9:36px;--rs-unit-x10:40px;--rs-radius-small:4px;--rs-radius-medium:8px;--rs-radius-large:12px;--rs-color-brand:#0d99ff;--rs-color-white:#fff;--rs-color-black:#000;--rs-color-on-background-primary:#fff;--rs-color-on-background-critical:#000;--rs-color-on-background-warning:#000;--rs-color-on-background-positive:#000;--rs-color-on-brand:#000;--rs-color-rgb-white:255,255,255;--rs-color-rgb-black:0,0,0;--rs-duration-rapid:100ms;--rs-duration-fast:200ms;--rs-duration-medium:300ms;--rs-duration-slow:400ms;--rs-easing-standard:cubic-bezier(0.4,0,0.2,1);--rs-easing-accelerate:cubic-bezier(0.4,0,1,1);--rs-easing-decelerate:cubic-bezier(0,0,0.2,1);--rs-shadow-raised:0px 1px 3px 0px rgba(0,0,0,.15);--rs-shadow-overlay:0px 10px 24px 0px rgba(0,0,0,.1),0px 2px 5px 0px rgba(0,0,0,.04);--rs-viewport-m-min:660;--rs-viewport-l-min:900;--rs-viewport-xl-min:1280}[data-rs-theme=figma][data-rs-color-mode=light]{--rs-color-background-primary:#0d99ff;--rs-color-background-primary-faded:#e5f4ff;--rs-color-border-primary:#007be5;--rs-color-border-primary-faded:#bde3ff;--rs-color-foreground-primary:#007be5;--rs-color-background-critical:#f24822;--rs-color-background-critical-faded:#ffe2e0;--rs-color-border-critical:#dc3412;--rs-color-border-critical-faded:#ffc7c2;--rs-color-foreground-critical:#dc3412;--rs-color-background-warning:#facc15;--rs-color-background-warning-faded:#fffae9;--rs-color-border-warning:#cfa90f;--rs-color-border-warning-faded:#ece2c4;--rs-color-foreground-warning:#7b6305;--rs-color-background-positive:#14ae5c;--rs-color-background-positive-faded:#daecdf;--rs-color-border-positive:#009951;--rs-color-border-positive-faded:#bbddc6;--rs-color-foreground-positive:#009951;--rs-color-background-neutral:#dfe2ea;--rs-color-background-neutral-faded:#f5f5f5;--rs-color-border-neutral:#e6e6e6;--rs-color-border-neutral-faded:#e6e6e6;--rs-color-foreground-neutral:#191919;--rs-color-foreground-neutral-faded:#474747;--rs-color-background-disabled:#e4e4e4;--rs-color-background-disabled-faded:#f5f5f5;--rs-color-border-disabled:#e6e6e6;--rs-color-foreground-disabled:#b2b2b2;--rs-color-background-elevation-base:#fff;--rs-color-background-elevation-raised:#fff;--rs-color-background-elevation-overlay:#fff;--rs-color-background-page:#fff;--rs-color-background-page-faded:#fafafa;--rs-color-rgb-background-primary:13,153,255;--rs-color-rgb-background-primary-faded:229,244,255;--rs-color-rgb-background-critical:242,72,34;--rs-color-rgb-background-critical-faded:255,226,224;--rs-color-rgb-background-warning:250,204,21;--rs-color-rgb-background-warning-faded:255,250,233;--rs-color-rgb-background-positive:20,174,92;--rs-color-rgb-background-positive-faded:218,236,223;--rs-color-on-background-neutral:#000;--rs-color-rgb-background-neutral:223,226,234;--rs-color-rgb-background-neutral-faded:245,245,245;--rs-color-rgb-background-disabled:228,228,228;--rs-color-rgb-background-disabled-faded:245,245,245;--rs-color-rgb-background-elevation-base:255,255,255;--rs-color-rgb-background-elevation-raised:255,255,255;--rs-color-rgb-background-elevation-overlay:255,255,255;--rs-color-rgb-background-page:255,255,255;--rs-color-rgb-background-page-faded:250,250,250}[data-rs-theme=figma][data-rs-color-mode=dark]{--rs-color-background-primary:#0c8ce9;--rs-color-background-primary-faded:#394360;--rs-color-border-primary:#7cc4f8;--rs-color-border-primary-faded:#2a4d72;--rs-color-foreground-primary:#7cc4f8;--rs-color-background-critical:#e03e1a;--rs-color-background-critical-faded:#60332a;--rs-color-border-critical:#fca397;--rs-color-border-critical-faded:#803226;--rs-color-foreground-critical:#fca397;--rs-color-background-warning:#f1c512;--rs-color-background-warning-faded:#2c271f;--rs-color-border-warning:#b4920a;--rs-color-border-warning-faded:#453c1e;--rs-color-foreground-warning:#b4920c;--rs-color-background-positive:#198f51;--rs-color-background-positive-faded:#3d5749;--rs-color-border-positive:#79d297;--rs-color-border-positive-faded:#086338;--rs-color-foreground-positive:#79d297;--rs-color-background-neutral:#444;--rs-color-background-neutral-faded:#383838;--rs-color-border-neutral:#444;--rs-color-border-neutral-faded:#444;--rs-color-foreground-neutral:#fff;--rs-color-foreground-neutral-faded:#b2b2b2;--rs-color-background-disabled:#474747;--rs-color-background-disabled-faded:#3a3a3a;--rs-color-border-disabled:#3e3e3e;--rs-color-foreground-disabled:#656565;--rs-color-background-elevation-base:#2c2c2c;--rs-color-background-elevation-raised:#2c2c2c;--rs-color-background-elevation-overlay:#2c2c2c;--rs-color-background-page:#2c2c2c;--rs-color-background-page-faded:#1e1e1e;--rs-color-rgb-background-primary:12,140,233;--rs-color-rgb-background-primary-faded:57,67,96;--rs-color-rgb-background-critical:224,62,26;--rs-color-rgb-background-critical-faded:96,51,42;--rs-color-rgb-background-warning:241,197,18;--rs-color-rgb-background-warning-faded:44,39,31;--rs-color-rgb-background-positive:25,143,81;--rs-color-rgb-background-positive-faded:61,87,73;--rs-color-on-background-neutral:#fff;--rs-color-rgb-background-neutral:68,68,68;--rs-color-rgb-background-neutral-faded:56,56,56;--rs-color-rgb-background-disabled:71,71,71;--rs-color-rgb-background-disabled-faded:58,58,58;--rs-color-rgb-background-elevation-base:44,44,44;--rs-color-rgb-background-elevation-raised:44,44,44;--rs-color-rgb-background-elevation-overlay:44,44,44;--rs-color-rgb-background-page:44,44,44;--rs-color-rgb-background-page-faded:30,30,30}
         
     | 
| 
         @@ -22,7 +22,6 @@ const transformDefinition = (name, definition, options) => { 
     | 
|
| 
       22 
22 
     | 
    
         
             
                if (code.media)
         
     | 
| 
       23 
23 
     | 
    
         
             
                    fs.writeFileSync(themeMediaPath, code.media);
         
     | 
| 
       24 
24 
     | 
    
         
             
                const logOutput = `Compiled ${chalk.bold(name)} theme${isFragment ? " fragment" : ""}`;
         
     | 
| 
       25 
     | 
    
         
            -
                // eslint-disable-next-line no-console
         
     | 
| 
       26 
25 
     | 
    
         
             
                console.log(chalk.green(logOutput));
         
     | 
| 
       27 
26 
     | 
    
         
             
            };
         
     | 
| 
       28 
27 
     | 
    
         
             
            export const addThemeFragment = (name, definition, options) => {
         
     | 
| 
         @@ -15,6 +15,8 @@ const Actionable = forwardRef((props, ref) => { 
     | 
|
| 
       15 
15 
     | 
    
         
             
                // To make sure it doesn't render a span
         
     | 
| 
       16 
16 
     | 
    
         
             
                const isButton = Boolean(hasClickHandler || hasFocusHandler || type || attributes?.ref);
         
     | 
| 
       17 
17 
     | 
    
         
             
                const renderedAsButton = !isLink && isButton && (!as || as === "button");
         
     | 
| 
      
 18 
     | 
    
         
            +
                // Using any here to let TS save on type resolving, otherwise TS throws an error due to the type complexity
         
     | 
| 
      
 19 
     | 
    
         
            +
                // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       18 
20 
     | 
    
         
             
                let TagName;
         
     | 
| 
       19 
21 
     | 
    
         
             
                if (isLink) {
         
     | 
| 
       20 
22 
     | 
    
         
             
                    TagName = "a";
         
     | 
| 
         @@ -70,6 +70,7 @@ const Autocomplete = (props) => { 
     | 
|
| 
       70 
70 
     | 
    
         
             
                return (_jsx(AutocompleteContext.Provider, { value: { onItemClick: handleItemClick }, children: _jsxs(DropdownMenu, { position: "bottom", width: "trigger", triggerType: "focus", trapFocusMode: "selection-menu", active: isDropdownActive, onClose: handleClose, onOpen: handleOpen, containerRef: containerRef, disableHideAnimation: true, instanceRef: instanceRef, children: [_jsx(DropdownMenu.Trigger, { children: ({ ref, ...attributes }) => (_jsx(TextField, { ...textFieldProps, name: name, onChange: handleChange, focused: isDropdownActive, attributes: {
         
     | 
| 
       71 
71 
     | 
    
         
             
                                        ...textFieldProps.attributes,
         
     | 
| 
       72 
72 
     | 
    
         
             
                                        // Ignoring the type check since TS can't infer the correct html element type
         
     | 
| 
      
 73 
     | 
    
         
            +
                                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
         
     | 
| 
       73 
74 
     | 
    
         
             
                                        ref: ref,
         
     | 
| 
       74 
75 
     | 
    
         
             
                                        onClick: attributes.onFocus,
         
     | 
| 
       75 
76 
     | 
    
         
             
                                    }, inputAttributes: {
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            .selection{table-layout:fixed;width:100%}.weekday{color:var(--rs-color-foreground-neutral-faded);font-weight:var(--rs-font-weight-regular);padding-bottom:var(--rs-unit-x2)} 
     | 
| 
      
 1 
     | 
    
         
            +
            .selection{table-layout:fixed;width:100%}.weekday{color:var(--rs-color-foreground-neutral-faded);font-weight:var(--rs-font-weight-regular);padding-bottom:var(--rs-unit-x2)}[dir=rtl] .control{transform:scaleX(-1)}.cell{isolation:isolate;padding:2px}.cell:hover .cell-button{background-color:rgba(var(--rs-color-rgb-background-neutral),32%)}.cell.--active .cell-button{background-color:var(--rs-color-background-primary);color:var(--rs-color-on-background-primary)}.cell.--selection-range .cell-button{background-color:rgba(var(--rs-color-rgb-background-neutral),32%)}.cell.--selection-range:not(:last-child) .cell-button,.cell.--selection-start:not(:last-child) .cell-button{border-end-end-radius:0;border-start-end-radius:0}.cell.--selection-end:not(:first-child) .cell-button,.cell.--selection-range+:hover .cell-button,.cell.--selection-range:not(:first-child) .cell-button,.cell.--selection-start+:hover .cell-button{border-end-start-radius:0;border-start-start-radius:0}.cell.--selection-range+.--selection-end .cell-button:before,.cell.--selection-range+.--selection-range .cell-button:before,.cell.--selection-range+:hover .cell-button:before,.cell.--selection-start+.--selection-range .cell-button:before,.cell.--selection-start+:hover .cell-button:before{background-color:rgba(var(--rs-color-rgb-background-neutral),32%)}.cell-button{border-radius:var(--rs-radius-small);padding:var(--rs-unit-x2);position:relative;text-align:center;transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:color,background-color,border-radius}.cell-button:before{content:"";inset-block:0;inset-inline-start:-4px;position:absolute;transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color;width:4px}.cell-button[disabled]{background-color:transparent!important;color:var(--rs-color-foreground-disabled)!important}
         
     | 
| 
         @@ -4,6 +4,7 @@ export type BaseProps = { 
     | 
|
| 
       4 
4 
     | 
    
         
             
                min?: Date;
         
     | 
| 
       5 
5 
     | 
    
         
             
                max?: Date;
         
     | 
| 
       6 
6 
     | 
    
         
             
                firstWeekDay?: number;
         
     | 
| 
      
 7 
     | 
    
         
            +
                selectedDates?: Date[];
         
     | 
| 
       7 
8 
     | 
    
         
             
                renderWeekDay?: (args: {
         
     | 
| 
       8 
9 
     | 
    
         
             
                    weekDay: number;
         
     | 
| 
       9 
10 
     | 
    
         
             
                    date: Date;
         
     | 
| 
         @@ -74,21 +75,20 @@ export type MonthProps = { 
     | 
|
| 
       74 
75 
     | 
    
         
             
                hoveredDate: Date | null;
         
     | 
| 
       75 
76 
     | 
    
         
             
                onDateHover: (date: Date) => void;
         
     | 
| 
       76 
77 
     | 
    
         
             
                onDateHoverEnd: (date: Date) => void;
         
     | 
| 
       77 
     | 
    
         
            -
            } & Pick<BaseProps, "max" | "min" | "firstWeekDay" | "renderMonthLabel" | "renderWeekDay" | "renderSelectedMonthLabel" | "renderDateAriaLabel"> & Pick<ControlledProps, "value" | "onChange" | "range">;
         
     | 
| 
      
 78 
     | 
    
         
            +
            } & Pick<BaseProps, "max" | "min" | "firstWeekDay" | "selectedDates" | "renderMonthLabel" | "renderWeekDay" | "renderSelectedMonthLabel" | "renderDateAriaLabel"> & Pick<ControlledProps, "value" | "onChange" | "range">;
         
     | 
| 
       78 
79 
     | 
    
         
             
            export type YearProps = {
         
     | 
| 
       79 
80 
     | 
    
         
             
                monthDate: Date;
         
     | 
| 
       80 
81 
     | 
    
         
             
                onMonthClick: (month: number) => void;
         
     | 
| 
       81 
82 
     | 
    
         
             
            } & Pick<BaseProps, "renderMonthLabel" | "min" | "max" | "renderMonthAriaLabel">;
         
     | 
| 
       82 
83 
     | 
    
         
             
            export type DateProps = {
         
     | 
| 
       83 
84 
     | 
    
         
             
                date: Date | null;
         
     | 
| 
      
 85 
     | 
    
         
            +
                isoDate: string | null;
         
     | 
| 
       84 
86 
     | 
    
         
             
                disabled?: boolean;
         
     | 
| 
       85 
87 
     | 
    
         
             
                focusable?: boolean;
         
     | 
| 
       86 
88 
     | 
    
         
             
                startValue: Date | null;
         
     | 
| 
       87 
89 
     | 
    
         
             
                endValue: Date | null;
         
     | 
| 
       88 
     | 
    
         
            -
                isActiveStart: boolean;
         
     | 
| 
       89 
     | 
    
         
            -
                isActiveEnd: boolean;
         
     | 
| 
       90 
90 
     | 
    
         
             
                renderAriaLabel?: MonthProps["renderDateAriaLabel"];
         
     | 
| 
       91 
     | 
    
         
            -
            } & Pick<MonthProps, "hoveredDate" | "onDateHover" | "onDateHoverEnd" | "onChange" | "range" | "min" | "max">;
         
     | 
| 
      
 91 
     | 
    
         
            +
            } & Pick<MonthProps, "hoveredDate" | "onDateHover" | "onDateHoverEnd" | "onChange" | "range" | "min" | "max" | "selectedDates">;
         
     | 
| 
       92 
92 
     | 
    
         
             
            export type ControlsProps = {
         
     | 
| 
       93 
93 
     | 
    
         
             
                selectionMode: SelectionMode;
         
     | 
| 
       94 
94 
     | 
    
         
             
                onMonthTitleClick: () => void;
         
     | 
| 
         @@ -9,7 +9,7 @@ import CalendarMonth from "./CalendarMonth.js"; 
     | 
|
| 
       9 
9 
     | 
    
         
             
            import CalendarYear from "./CalendarYear.js";
         
     | 
| 
       10 
10 
     | 
    
         
             
            import CalendarControls from "./CalendarControls.js";
         
     | 
| 
       11 
11 
     | 
    
         
             
            const CalendarControlled = (props) => {
         
     | 
| 
       12 
     | 
    
         
            -
                const { value, onChange, defaultMonth, min, max, range, firstWeekDay, renderMonthLabel, renderSelectedMonthLabel, renderWeekDay, previousMonthAriaLabel, previousYearAriaLabel, nextMonthAriaLabel, nextYearAriaLabel, monthSelectionAriaLabel, renderMonthAriaLabel, renderDateAriaLabel, } = props;
         
     | 
| 
      
 12 
     | 
    
         
            +
                const { value, onChange, defaultMonth, min, max, range, firstWeekDay, selectedDates, renderMonthLabel, renderSelectedMonthLabel, renderWeekDay, previousMonthAriaLabel, previousYearAriaLabel, nextMonthAriaLabel, nextYearAriaLabel, monthSelectionAriaLabel, renderMonthAriaLabel, renderDateAriaLabel, } = props;
         
     | 
| 
       13 
13 
     | 
    
         
             
                const [selectionMode, setSelectionMode] = React.useState("date");
         
     | 
| 
       14 
14 
     | 
    
         
             
                const [monthDate, setMonthDate] = React.useState(defaultMonth || new Date());
         
     | 
| 
       15 
15 
     | 
    
         
             
                const [hoveredDate, setHoveredDate] = React.useState(null);
         
     | 
| 
         @@ -63,6 +63,6 @@ const CalendarControlled = (props) => { 
     | 
|
| 
       63 
63 
     | 
    
         
             
                    min,
         
     | 
| 
       64 
64 
     | 
    
         
             
                    max,
         
     | 
| 
       65 
65 
     | 
    
         
             
                });
         
     | 
| 
       66 
     | 
    
         
            -
                return (_jsxs(View, { gap: 2, children: [_jsx(CalendarControls, { renderSelectedMonthLabel: renderSelectedMonthLabel, monthDate: monthDate, selectionMode: selectionMode, isFirstMonth: bounds.isFirstMonth, isLastMonth: bounds.isLastMonth, monthTitleRef: monthTitleRef, onMonthTitleClick: handleMonthTitleClick, onNextClick: handleNextClick, onPreviousClick: handlePreviousClick, previousMonthAriaLabel: previousMonthAriaLabel, previousYearAriaLabel: previousYearAriaLabel, nextMonthAriaLabel: nextMonthAriaLabel, nextYearAriaLabel: nextYearAriaLabel, monthSelectionAriaLabel: monthSelectionAriaLabel }), _jsxs(View.Item, { attributes: { ref: selectionRootRef }, children: [selectionMode === "date" && (_jsx(CalendarMonth, { date: monthDate, value: value, onChange: onChange, min: min, max: max, range: range, firstWeekDay: firstWeekDay, hoveredDate: hoveredDate, onDateHover: handleDateHover, onDateHoverEnd: handleDateHoverEnd, renderWeekDay: renderWeekDay, renderDateAriaLabel: renderDateAriaLabel })), selectionMode === "month" && (_jsx(CalendarYear, { monthDate: monthDate, onMonthClick: handleMonthClick, renderMonthLabel: renderMonthLabel, renderMonthAriaLabel: renderMonthAriaLabel, min: min, max: max }))] })] }));
         
     | 
| 
      
 66 
     | 
    
         
            +
                return (_jsxs(View, { gap: 2, children: [_jsx(CalendarControls, { renderSelectedMonthLabel: renderSelectedMonthLabel, monthDate: monthDate, selectionMode: selectionMode, isFirstMonth: bounds.isFirstMonth, isLastMonth: bounds.isLastMonth, monthTitleRef: monthTitleRef, onMonthTitleClick: handleMonthTitleClick, onNextClick: handleNextClick, onPreviousClick: handlePreviousClick, previousMonthAriaLabel: previousMonthAriaLabel, previousYearAriaLabel: previousYearAriaLabel, nextMonthAriaLabel: nextMonthAriaLabel, nextYearAriaLabel: nextYearAriaLabel, monthSelectionAriaLabel: monthSelectionAriaLabel }), _jsxs(View.Item, { attributes: { ref: selectionRootRef }, children: [selectionMode === "date" && (_jsx(CalendarMonth, { date: monthDate, value: value, onChange: onChange, min: min, max: max, range: range, firstWeekDay: firstWeekDay, hoveredDate: hoveredDate, selectedDates: selectedDates, onDateHover: handleDateHover, onDateHoverEnd: handleDateHoverEnd, renderWeekDay: renderWeekDay, renderDateAriaLabel: renderDateAriaLabel })), selectionMode === "month" && (_jsx(CalendarYear, { monthDate: monthDate, onMonthClick: handleMonthClick, renderMonthLabel: renderMonthLabel, renderMonthAriaLabel: renderMonthAriaLabel, min: min, max: max }))] })] }));
         
     | 
| 
       67 
67 
     | 
    
         
             
            };
         
     | 
| 
       68 
68 
     | 
    
         
             
            export default CalendarControlled;
         
     | 
| 
         @@ -5,20 +5,38 @@ import { classNames } from "../../utilities/helpers.js"; 
     | 
|
| 
       5 
5 
     | 
    
         
             
            import { getLocalISODate } from "./Calendar.utils.js";
         
     | 
| 
       6 
6 
     | 
    
         
             
            import s from "./Calendar.module.css";
         
     | 
| 
       7 
7 
     | 
    
         
             
            const CalendarDate = (props) => {
         
     | 
| 
       8 
     | 
    
         
            -
                const { date, startValue, endValue,  
     | 
| 
      
 8 
     | 
    
         
            +
                const { date, isoDate, startValue, endValue, disabled, focusable, onChange, range, hoveredDate, onDateHover, onDateHoverEnd, renderAriaLabel, selectedDates, } = props;
         
     | 
| 
       9 
9 
     | 
    
         
             
                if (!date)
         
     | 
| 
       10 
10 
     | 
    
         
             
                    return _jsx("td", { className: s.cell, "aria-hidden": "true" });
         
     | 
| 
       11 
     | 
    
         
            -
                const  
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
                const isoStartValue = startValue && getLocalISODate({ date: startValue });
         
     | 
| 
      
 12 
     | 
    
         
            +
                const isoEndValue = endValue && getLocalISODate({ date: endValue });
         
     | 
| 
      
 13 
     | 
    
         
            +
                const isStartValue = !!isoDate && !!isoStartValue && isoDate === isoStartValue;
         
     | 
| 
      
 14 
     | 
    
         
            +
                const isEndValue = !!isoDate && !!isoEndValue && isoDate === isoEndValue;
         
     | 
| 
      
 15 
     | 
    
         
            +
                const isAfterStartValue = startValue && date > startValue;
         
     | 
| 
      
 16 
     | 
    
         
            +
                const isBeforeEndValue = endValue && date < endValue;
         
     | 
| 
      
 17 
     | 
    
         
            +
                const isInHoveredRange = hoveredDate && !endValue && hoveredDate > date;
         
     | 
| 
      
 18 
     | 
    
         
            +
                const isInSelectedDates = !!selectedDates?.find((selectedDate) => getLocalISODate({ date: selectedDate }) === isoDate);
         
     | 
| 
      
 19 
     | 
    
         
            +
                let selection;
         
     | 
| 
      
 20 
     | 
    
         
            +
                switch (true) {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    case isAfterStartValue && isInHoveredRange:
         
     | 
| 
      
 22 
     | 
    
         
            +
                    case isAfterStartValue && isBeforeEndValue:
         
     | 
| 
      
 23 
     | 
    
         
            +
                        selection = "range";
         
     | 
| 
      
 24 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 25 
     | 
    
         
            +
                    case isStartValue && (!range || isEndValue):
         
     | 
| 
      
 26 
     | 
    
         
            +
                    case isInSelectedDates:
         
     | 
| 
      
 27 
     | 
    
         
            +
                        selection = "standalone";
         
     | 
| 
      
 28 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 29 
     | 
    
         
            +
                    case isStartValue:
         
     | 
| 
      
 30 
     | 
    
         
            +
                        selection = "start";
         
     | 
| 
      
 31 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 32 
     | 
    
         
            +
                    case isEndValue:
         
     | 
| 
      
 33 
     | 
    
         
            +
                        selection = "end";
         
     | 
| 
      
 34 
     | 
    
         
            +
                        break;
         
     | 
| 
      
 35 
     | 
    
         
            +
                }
         
     | 
| 
       14 
36 
     | 
    
         
             
                const dateClassNames = classNames([
         
     | 
| 
       15 
37 
     | 
    
         
             
                    s.cell,
         
     | 
| 
       16 
     | 
    
         
            -
                     
     | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
       18 
     | 
    
         
            -
                    (isActiveEnd ||
         
     | 
| 
       19 
     | 
    
         
            -
                        (!endValue && isActiveStart && !(hoveredDate && startValue && hoveredDate > startValue))) &&
         
     | 
| 
       20 
     | 
    
         
            -
                        s["cell--active-end"],
         
     | 
| 
       21 
     | 
    
         
            -
                    inRange && s["cell--in-range"],
         
     | 
| 
      
 38 
     | 
    
         
            +
                    selection && s["--active"],
         
     | 
| 
      
 39 
     | 
    
         
            +
                    selection && s[`--selection-${selection}`],
         
     | 
| 
       22 
40 
     | 
    
         
             
                ]);
         
     | 
| 
       23 
41 
     | 
    
         
             
                const handleClick = () => {
         
     | 
| 
       24 
42 
     | 
    
         
             
                    if (!range) {
         
     | 
| 
         @@ -46,7 +64,7 @@ const CalendarDate = (props) => { 
     | 
|
| 
       46 
64 
     | 
    
         
             
                            "aria-label": renderAriaLabel
         
     | 
| 
       47 
65 
     | 
    
         
             
                                ? renderAriaLabel({ date })
         
     | 
| 
       48 
66 
     | 
    
         
             
                                : date.toLocaleDateString("en-us", { month: "long", day: "numeric", weekday: "long" }),
         
     | 
| 
       49 
     | 
    
         
            -
                            "aria-checked":  
     | 
| 
      
 67 
     | 
    
         
            +
                            "aria-checked": !!selection,
         
     | 
| 
       50 
68 
     | 
    
         
             
                            "data-rs-date": getLocalISODate({ date }),
         
     | 
| 
       51 
69 
     | 
    
         
             
                            onMouseEnter: handleMouseEnter,
         
     | 
| 
       52 
70 
     | 
    
         
             
                            onMouseLeave: handleMouseLeave,
         
     | 
| 
         @@ -4,7 +4,7 @@ import { getMonthWeeks, getWeekdayNames, getLocalISODate } from "./Calendar.util 
     | 
|
| 
       4 
4 
     | 
    
         
             
            import CalendarDate from "./CalendarDate.js";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import s from "./Calendar.module.css";
         
     | 
| 
       6 
6 
     | 
    
         
             
            const CalendarMonth = (props) => {
         
     | 
| 
       7 
     | 
    
         
            -
                const { date, value, onChange, min, max, range, firstWeekDay, hoveredDate, onDateHover, onDateHoverEnd, renderWeekDay, renderDateAriaLabel, } = props;
         
     | 
| 
      
 7 
     | 
    
         
            +
                const { date, value, onChange, min, max, range, firstWeekDay, selectedDates, hoveredDate, onDateHover, onDateHoverEnd, renderWeekDay, renderDateAriaLabel, } = props;
         
     | 
| 
       8 
8 
     | 
    
         
             
                let foundFocusableDate = false;
         
     | 
| 
       9 
9 
     | 
    
         
             
                const month = date.getMonth();
         
     | 
| 
       10 
10 
     | 
    
         
             
                const weeks = getMonthWeeks({ date, firstWeekDay });
         
     | 
| 
         @@ -19,10 +19,6 @@ const CalendarMonth = (props) => { 
     | 
|
| 
       19 
19 
     | 
    
         
             
                                        const startValue = value && "start" in value ? value.start : value;
         
     | 
| 
       20 
20 
     | 
    
         
             
                                        const endValue = value && "end" in value ? value.end : value;
         
     | 
| 
       21 
21 
     | 
    
         
             
                                        const isoDate = date && getLocalISODate({ date });
         
     | 
| 
       22 
     | 
    
         
            -
                                        const isoStartValue = startValue && getLocalISODate({ date: startValue });
         
     | 
| 
       23 
     | 
    
         
            -
                                        const isoEndValue = endValue && getLocalISODate({ date: endValue });
         
     | 
| 
       24 
     | 
    
         
            -
                                        const isActiveStart = !!isoDate && !!isoStartValue && isoDate === isoStartValue;
         
     | 
| 
       25 
     | 
    
         
            -
                                        const isActiveEnd = !!isoDate && !!isoEndValue && isoDate === isoEndValue;
         
     | 
| 
       26 
22 
     | 
    
         
             
                                        /**
         
     | 
| 
       27 
23 
     | 
    
         
             
                                         * Decide if date has to be focusable with Tab (only one date should be)
         
     | 
| 
       28 
24 
     | 
    
         
             
                                         * 1. If there is a selected value - it's focusable
         
     | 
| 
         @@ -43,7 +39,7 @@ const CalendarMonth = (props) => { 
     | 
|
| 
       43 
39 
     | 
    
         
             
                                        }
         
     | 
| 
       44 
40 
     | 
    
         
             
                                        if (focusable)
         
     | 
| 
       45 
41 
     | 
    
         
             
                                            foundFocusableDate = true;
         
     | 
| 
       46 
     | 
    
         
            -
                                        return (_jsx(CalendarDate, { date: date, disabled: disabled, range: range, focusable: focusable, startValue: startValue, endValue: endValue,  
     | 
| 
      
 42 
     | 
    
         
            +
                                        return (_jsx(CalendarDate, { date: date, isoDate: isoDate, disabled: disabled, range: range, focusable: focusable, startValue: startValue, endValue: endValue, onChange: onChange, hoveredDate: hoveredDate, onDateHover: onDateHover, onDateHoverEnd: onDateHoverEnd, renderAriaLabel: renderDateAriaLabel, selectedDates: selectedDates }, index));
         
     | 
| 
       47 
43 
     | 
    
         
             
                                    }) }, key));
         
     | 
| 
       48 
44 
     | 
    
         
             
                            }) })] }));
         
     | 
| 
       49 
45 
     | 
    
         
             
            };
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { StoryObj } from "@storybook/react";
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { type Mock } from "@storybook/test";
         
     | 
| 
       1 
3 
     | 
    
         
             
            declare const _default: {
         
     | 
| 
       2 
4 
     | 
    
         
             
                title: string;
         
     | 
| 
       3 
5 
     | 
    
         
             
                component: (props: import("./..").CalendarProps) => import("react").JSX.Element;
         
     | 
| 
         @@ -8,7 +10,20 @@ declare const _default: { 
     | 
|
| 
       8 
10 
     | 
    
         
             
                };
         
     | 
| 
       9 
11 
     | 
    
         
             
            };
         
     | 
| 
       10 
12 
     | 
    
         
             
            export default _default;
         
     | 
| 
       11 
     | 
    
         
            -
            export declare const  
     | 
| 
       12 
     | 
    
         
            -
            export declare const  
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
            export declare const defaultMonth: StoryObj;
         
     | 
| 
      
 14 
     | 
    
         
            +
            export declare const uncontrolled: StoryObj<{
         
     | 
| 
      
 15 
     | 
    
         
            +
                handleChange: Mock;
         
     | 
| 
      
 16 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 17 
     | 
    
         
            +
            export declare const controlled: StoryObj<{
         
     | 
| 
      
 18 
     | 
    
         
            +
                handleChange: Mock;
         
     | 
| 
      
 19 
     | 
    
         
            +
            }>;
         
     | 
| 
      
 20 
     | 
    
         
            +
            export declare const selectedDates: StoryObj;
         
     | 
| 
      
 21 
     | 
    
         
            +
            export declare const minMax: StoryObj;
         
     | 
| 
      
 22 
     | 
    
         
            +
            export declare const firstWeekDay: StoryObj;
         
     | 
| 
      
 23 
     | 
    
         
            +
            export declare const translation: {
         
     | 
| 
      
 24 
     | 
    
         
            +
                name: string;
         
     | 
| 
      
 25 
     | 
    
         
            +
                render: () => import("react").JSX.Element;
         
     | 
| 
      
 26 
     | 
    
         
            +
            };
         
     | 
| 
      
 27 
     | 
    
         
            +
            export declare const ariaLabels: StoryObj;
         
     | 
| 
      
 28 
     | 
    
         
            +
            export declare const monthSelection: StoryObj;
         
     | 
| 
      
 29 
     | 
    
         
            +
            export declare const keyboardNavigation: StoryObj;
         
     |