@bug-on/md3-react 2.0.3 → 3.0.1
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/.turbo/turbo-build.log +42 -0
- package/CHANGELOG.md +69 -0
- package/dist/index.css +178 -0
- package/dist/index.css.d.ts +2 -0
- package/dist/index.d.mts +6135 -0
- package/dist/index.d.ts +6135 -71
- package/dist/index.js +1688 -631
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1600 -564
- package/dist/index.mjs.map +1 -1
- package/dist/material-symbols-cdn.css.d.ts +2 -0
- package/dist/material-symbols-self-hosted.css.d.ts +2 -0
- package/dist/plugin.d.mts +1 -0
- package/dist/plugin.d.ts +1 -0
- package/dist/plugin.js +13 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +3 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/typography.css.d.ts +2 -0
- package/package.json +28 -19
- package/scripts/copy-assets.js +115 -0
- package/src/assets/fonts/GoogleSansFlex-VariableFont.woff2 +0 -0
- package/src/assets/fonts/MaterialSymbolsOutlined-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
- package/src/assets/fonts/MaterialSymbolsRounded-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
- package/src/assets/fonts/MaterialSymbolsSharp-VariableFont_FILL,GRAD,opsz,wght.ttf +0 -0
- package/src/assets/loading-indicator.svg +19 -0
- package/src/assets/material-symbols-cdn.css +65 -0
- package/src/assets/material-symbols-self-hosted.css +90 -0
- package/src/css.d.ts +20 -0
- package/src/hooks/useClickOutside.ts +37 -0
- package/src/hooks/useMediaQuery.ts +28 -0
- package/src/hooks/useRipple.ts +88 -0
- package/src/index.css +23 -0
- package/src/index.ts +349 -0
- package/src/lib/material-symbols-preconnect.tsx +82 -0
- package/src/lib/theme-utils.ts +195 -0
- package/src/lib/utils.ts +6 -0
- package/src/plugin.ts +12 -0
- package/src/test/button.test.tsx +59 -0
- package/src/test/icon.test.tsx +91 -0
- package/src/test/loading-indicator.test.tsx +128 -0
- package/src/test/progress-indicator.test.tsx +306 -0
- package/src/test/setup.ts +80 -0
- package/src/test/typography.test.tsx +206 -0
- package/src/types/index.ts +7 -0
- package/src/types/md3.ts +31 -0
- package/src/ui/Text.tsx +60 -0
- package/src/ui/__snapshots__/divider.test.tsx.snap +63 -0
- package/src/ui/app-bar/app-bar-column.tsx +99 -0
- package/src/ui/app-bar/app-bar-item-button.tsx +71 -0
- package/src/ui/app-bar/app-bar-items.test.tsx +89 -0
- package/src/ui/app-bar/app-bar-overflow-indicator.tsx +108 -0
- package/src/ui/app-bar/app-bar-row.tsx +104 -0
- package/src/ui/app-bar/app-bar.test.tsx +87 -0
- package/src/ui/app-bar/app-bar.tokens.ts +223 -0
- package/src/ui/app-bar/app-bar.types.ts +441 -0
- package/src/ui/app-bar/bottom-app-bar.test.tsx +42 -0
- package/src/ui/app-bar/bottom-app-bar.tsx +84 -0
- package/src/ui/app-bar/docked-toolbar.test.tsx +34 -0
- package/src/ui/app-bar/docked-toolbar.tsx +54 -0
- package/src/ui/app-bar/flexible-app-bar.test.tsx +75 -0
- package/src/ui/app-bar/hooks/use-app-bar-scroll.ts +110 -0
- package/src/ui/app-bar/hooks/use-flexible-app-bar.ts +123 -0
- package/{dist/ui/app-bar/index.d.ts → src/ui/app-bar/index.ts} +35 -2
- package/src/ui/app-bar/large-flexible-app-bar.tsx +165 -0
- package/src/ui/app-bar/medium-flexible-app-bar.tsx +167 -0
- package/src/ui/app-bar/search-app-bar.test.tsx +49 -0
- package/src/ui/app-bar/search-app-bar.tsx +176 -0
- package/src/ui/app-bar/search-view.tsx +227 -0
- package/src/ui/app-bar/small-app-bar.test.tsx +48 -0
- package/src/ui/app-bar/small-app-bar.tsx +203 -0
- package/src/ui/badge.test.tsx +345 -0
- package/src/ui/badge.tsx +282 -0
- package/src/ui/button-group.test.tsx +71 -0
- package/src/ui/button-group.tsx +350 -0
- package/src/ui/button.test.tsx +306 -0
- package/src/ui/button.tsx +665 -0
- package/src/ui/card.test.tsx +187 -0
- package/src/ui/card.tsx +259 -0
- package/src/ui/checkbox.test.tsx +423 -0
- package/src/ui/checkbox.tsx +525 -0
- package/src/ui/chip.test.tsx +292 -0
- package/src/ui/chip.tsx +548 -0
- package/src/ui/code-block.tsx +219 -0
- package/src/ui/dialog.test.tsx +300 -0
- package/src/ui/dialog.tsx +384 -0
- package/src/ui/divider.test.tsx +314 -0
- package/src/ui/divider.tsx +412 -0
- package/src/ui/drawer.tsx +240 -0
- package/src/ui/fab-menu.test.tsx +494 -0
- package/src/ui/fab-menu.tsx +739 -0
- package/src/ui/fab.test.tsx +232 -0
- package/src/ui/fab.tsx +505 -0
- package/src/ui/icon-button.test.tsx +515 -0
- package/src/ui/icon-button.tsx +525 -0
- package/src/ui/icon.test.tsx +197 -0
- package/src/ui/icon.tsx +179 -0
- package/src/ui/loading-indicator.test.tsx +73 -0
- package/src/ui/loading-indicator.tsx +312 -0
- package/src/ui/menu/context-menu.tsx +275 -0
- package/src/ui/menu/index.ts +77 -0
- package/src/ui/menu/menu-animations.ts +102 -0
- package/src/ui/menu/menu-context.tsx +99 -0
- package/src/ui/menu/menu-divider.tsx +47 -0
- package/src/ui/menu/menu-group.tsx +200 -0
- package/src/ui/menu/menu-item.tsx +294 -0
- package/src/ui/menu/menu-tokens.ts +208 -0
- package/src/ui/menu/menu-types.ts +313 -0
- package/src/ui/menu/menu.test.tsx +624 -0
- package/src/ui/menu/menu.tsx +289 -0
- package/src/ui/menu/sub-menu.tsx +223 -0
- package/src/ui/menu/vertical-menu.tsx +382 -0
- package/src/ui/navigation-rail.test.tsx +404 -0
- package/src/ui/navigation-rail.tsx +607 -0
- package/src/ui/progress-indicator/circular.tsx +248 -0
- package/src/ui/progress-indicator/hooks.ts +51 -0
- package/{dist/ui/progress-indicator/index.d.ts → src/ui/progress-indicator/index.tsx} +20 -2
- package/src/ui/progress-indicator/linear-flat.tsx +83 -0
- package/src/ui/progress-indicator/linear-wavy.tsx +243 -0
- package/src/ui/progress-indicator/linear.tsx +143 -0
- package/src/ui/progress-indicator/types.ts +158 -0
- package/src/ui/progress-indicator/utils.ts +73 -0
- package/src/ui/radio-button.test.tsx +407 -0
- package/src/ui/radio-button.tsx +551 -0
- package/src/ui/ripple.test.tsx +72 -0
- package/src/ui/ripple.tsx +234 -0
- package/src/ui/scroll-area.test.tsx +58 -0
- package/src/ui/scroll-area.tsx +139 -0
- package/src/ui/search/animated-placeholder.tsx +145 -0
- package/src/ui/search/hooks/use-search-keyboard.test.ts +202 -0
- package/src/ui/search/hooks/use-search-keyboard.ts +104 -0
- package/src/ui/search/hooks/use-search-view-focus.test.ts +96 -0
- package/src/ui/search/hooks/use-search-view-focus.ts +24 -0
- package/src/ui/search/index.ts +44 -0
- package/src/ui/search/search-bar.tsx +220 -0
- package/src/ui/search/search-context.tsx +42 -0
- package/src/ui/search/search-view-docked.tsx +194 -0
- package/src/ui/search/search-view-fullscreen.tsx +247 -0
- package/src/ui/search/search.test.tsx +233 -0
- package/src/ui/search/search.tokens.ts +134 -0
- package/src/ui/search/search.tsx +131 -0
- package/src/ui/search/search.types.ts +154 -0
- package/src/ui/search/trailing-action.tsx +49 -0
- package/src/ui/shared/constants.ts +135 -0
- package/{dist/ui/shared/touch-target.d.ts → src/ui/shared/touch-target.tsx} +13 -1
- package/src/ui/slider/hooks/useSliderMath.ts +195 -0
- package/{dist/ui/slider/index.d.ts → src/ui/slider/index.ts} +12 -1
- package/src/ui/slider/range-slider.tsx +561 -0
- package/src/ui/slider/slider-thumb.tsx +379 -0
- package/src/ui/slider/slider-track.tsx +912 -0
- package/src/ui/slider/slider.tokens.ts +189 -0
- package/src/ui/slider/slider.tsx +259 -0
- package/src/ui/slider/slider.types.ts +288 -0
- package/src/ui/snackbar/index.ts +20 -0
- package/src/ui/snackbar/snackbar.test.tsx +338 -0
- package/src/ui/snackbar/snackbar.tsx +476 -0
- package/{dist/ui/switch/index.d.ts → src/ui/switch/index.ts} +1 -0
- package/src/ui/switch/switch.stories.tsx +309 -0
- package/src/ui/switch/switch.test.tsx +243 -0
- package/src/ui/switch/switch.tokens.ts +89 -0
- package/src/ui/switch/switch.tsx +504 -0
- package/src/ui/switch/switch.types.ts +62 -0
- package/{dist/ui/tabs/index.d.ts → src/ui/tabs/index.ts} +8 -1
- package/src/ui/tabs/tab.tsx +407 -0
- package/src/ui/tabs/tabs-content.tsx +89 -0
- package/src/ui/tabs/tabs-list.tsx +146 -0
- package/src/ui/tabs/tabs.test.tsx +290 -0
- package/src/ui/tabs/tabs.tokens.ts +121 -0
- package/src/ui/tabs/tabs.tsx +229 -0
- package/src/ui/tabs/tabs.types.ts +185 -0
- package/{dist/ui/text-field/index.d.ts → src/ui/text-field/index.ts} +8 -1
- package/src/ui/text-field/subcomponents/active-indicator.tsx +67 -0
- package/src/ui/text-field/subcomponents/floating-label.tsx +161 -0
- package/src/ui/text-field/subcomponents/leading-icon.tsx +46 -0
- package/src/ui/text-field/subcomponents/outline-container.tsx +170 -0
- package/src/ui/text-field/subcomponents/prefix-suffix.tsx +59 -0
- package/src/ui/text-field/subcomponents/supporting-text.tsx +145 -0
- package/src/ui/text-field/subcomponents/trailing-icon.tsx +199 -0
- package/src/ui/text-field/text-field.test.tsx +454 -0
- package/src/ui/text-field/text-field.tokens.ts +104 -0
- package/src/ui/text-field/text-field.tsx +548 -0
- package/src/ui/text-field/text-field.types.ts +180 -0
- package/src/ui/theme-provider/index.tsx +215 -0
- package/src/ui/toc.test.tsx +108 -0
- package/src/ui/toc.tsx +172 -0
- package/src/ui/tooltip/plain-tooltip.tsx +63 -0
- package/src/ui/tooltip/rich-tooltip.tsx +94 -0
- package/src/ui/tooltip/tooltip-box.tsx +266 -0
- package/src/ui/tooltip/tooltip-caret-shape.tsx +68 -0
- package/src/ui/tooltip/tooltip.tokens.ts +26 -0
- package/src/ui/tooltip/tooltip.types.ts +70 -0
- package/src/ui/tooltip/use-tooltip-position.ts +208 -0
- package/src/ui/tooltip/use-tooltip-state.ts +41 -0
- package/src/ui/typography/__tests__/typography.test.tsx +170 -0
- package/{dist/ui/typography/index.d.ts → src/ui/typography/index.ts} +21 -3
- package/src/ui/typography/type-scale-tokens.ts +205 -0
- package/src/ui/typography/typography-key-tokens.ts +43 -0
- package/src/ui/typography/typography-tokens.ts +360 -0
- package/src/ui/typography/typography.css +22 -0
- package/src/ui/typography/typography.tsx +559 -0
- package/test-render.tsx +4 -0
- package/test-shadow.html +26 -0
- package/test_output.txt +164 -0
- package/test_output_v2.txt +5 -0
- package/tsconfig.build.json +10 -0
- package/tsconfig.json +18 -0
- package/tsup.config.ts +20 -0
- package/vitest.config.ts +11 -0
- package/dist/hooks/useClickOutside.d.ts +0 -8
- package/dist/hooks/useMediaQuery.d.ts +0 -11
- package/dist/hooks/useRipple.d.ts +0 -26
- package/dist/lib/material-symbols-preconnect.d.ts +0 -42
- package/dist/lib/theme-utils.d.ts +0 -63
- package/dist/lib/utils.d.ts +0 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/md3.d.ts +0 -14
- package/dist/ui/app-bar/app-bar-column.d.ts +0 -28
- package/dist/ui/app-bar/app-bar-item-button.d.ts +0 -16
- package/dist/ui/app-bar/app-bar-overflow-indicator.d.ts +0 -18
- package/dist/ui/app-bar/app-bar-row.d.ts +0 -36
- package/dist/ui/app-bar/app-bar.tokens.d.ts +0 -184
- package/dist/ui/app-bar/app-bar.types.d.ts +0 -392
- package/dist/ui/app-bar/bottom-app-bar.d.ts +0 -31
- package/dist/ui/app-bar/docked-toolbar.d.ts +0 -25
- package/dist/ui/app-bar/hooks/use-app-bar-scroll.d.ts +0 -42
- package/dist/ui/app-bar/hooks/use-flexible-app-bar.d.ts +0 -37
- package/dist/ui/app-bar/large-flexible-app-bar.d.ts +0 -26
- package/dist/ui/app-bar/medium-flexible-app-bar.d.ts +0 -28
- package/dist/ui/app-bar/search-app-bar.d.ts +0 -43
- package/dist/ui/app-bar/search-view.d.ts +0 -54
- package/dist/ui/app-bar/small-app-bar.d.ts +0 -37
- package/dist/ui/badge.d.ts +0 -125
- package/dist/ui/button-group.d.ts +0 -59
- package/dist/ui/button.d.ts +0 -148
- package/dist/ui/card.d.ts +0 -62
- package/dist/ui/checkbox.d.ts +0 -82
- package/dist/ui/chip.d.ts +0 -110
- package/dist/ui/code-block.d.ts +0 -14
- package/dist/ui/dialog.d.ts +0 -111
- package/dist/ui/divider.d.ts +0 -164
- package/dist/ui/drawer.d.ts +0 -39
- package/dist/ui/dropdown.d.ts +0 -29
- package/dist/ui/fab-menu.d.ts +0 -204
- package/dist/ui/fab.d.ts +0 -162
- package/dist/ui/icon-button.d.ts +0 -131
- package/dist/ui/icon.d.ts +0 -88
- package/dist/ui/loading-indicator.d.ts +0 -42
- package/dist/ui/navigation-rail.d.ts +0 -29
- package/dist/ui/progress-indicator/circular.d.ts +0 -3
- package/dist/ui/progress-indicator/hooks.d.ts +0 -3
- package/dist/ui/progress-indicator/linear-flat.d.ts +0 -10
- package/dist/ui/progress-indicator/linear-wavy.d.ts +0 -18
- package/dist/ui/progress-indicator/linear.d.ts +0 -3
- package/dist/ui/progress-indicator/types.d.ts +0 -151
- package/dist/ui/progress-indicator/utils.d.ts +0 -3
- package/dist/ui/radio-button.d.ts +0 -106
- package/dist/ui/ripple.d.ts +0 -126
- package/dist/ui/scroll-area.d.ts +0 -27
- package/dist/ui/search/animated-placeholder.d.ts +0 -54
- package/dist/ui/search/hooks/use-search-keyboard.d.ts +0 -32
- package/dist/ui/search/hooks/use-search-view-focus.d.ts +0 -6
- package/dist/ui/search/index.d.ts +0 -27
- package/dist/ui/search/search-bar.d.ts +0 -32
- package/dist/ui/search/search-context.d.ts +0 -24
- package/dist/ui/search/search-view-docked.d.ts +0 -25
- package/dist/ui/search/search-view-fullscreen.d.ts +0 -36
- package/dist/ui/search/search.d.ts +0 -50
- package/dist/ui/search/search.tokens.d.ts +0 -112
- package/dist/ui/search/search.types.d.ts +0 -131
- package/dist/ui/search/trailing-action.d.ts +0 -9
- package/dist/ui/shared/constants.d.ts +0 -86
- package/dist/ui/slider/hooks/useSliderMath.d.ts +0 -101
- package/dist/ui/slider/range-slider.d.ts +0 -47
- package/dist/ui/slider/slider-thumb.d.ts +0 -33
- package/dist/ui/slider/slider-track.d.ts +0 -25
- package/dist/ui/slider/slider.d.ts +0 -60
- package/dist/ui/slider/slider.tokens.d.ts +0 -151
- package/dist/ui/slider/slider.types.d.ts +0 -259
- package/dist/ui/snackbar/index.d.ts +0 -6
- package/dist/ui/snackbar/snackbar.d.ts +0 -197
- package/dist/ui/switch/switch.d.ts +0 -30
- package/dist/ui/switch/switch.stories.d.ts +0 -48
- package/dist/ui/switch/switch.tokens.d.ts +0 -67
- package/dist/ui/switch/switch.types.d.ts +0 -59
- package/dist/ui/tabs/tab.d.ts +0 -43
- package/dist/ui/tabs/tabs-content.d.ts +0 -36
- package/dist/ui/tabs/tabs-list.d.ts +0 -40
- package/dist/ui/tabs/tabs.d.ts +0 -60
- package/dist/ui/tabs/tabs.tokens.d.ts +0 -94
- package/dist/ui/tabs/tabs.types.d.ts +0 -172
- package/dist/ui/text-field/subcomponents/active-indicator.d.ts +0 -24
- package/dist/ui/text-field/subcomponents/floating-label.d.ts +0 -43
- package/dist/ui/text-field/subcomponents/leading-icon.d.ts +0 -23
- package/dist/ui/text-field/subcomponents/outline-container.d.ts +0 -42
- package/dist/ui/text-field/subcomponents/prefix-suffix.d.ts +0 -24
- package/dist/ui/text-field/subcomponents/supporting-text.d.ts +0 -37
- package/dist/ui/text-field/subcomponents/trailing-icon.d.ts +0 -41
- package/dist/ui/text-field/text-field.d.ts +0 -49
- package/dist/ui/text-field/text-field.tokens.d.ts +0 -76
- package/dist/ui/text-field/text-field.types.d.ts +0 -126
- package/dist/ui/theme-provider/index.d.ts +0 -48
- package/dist/ui/toc.d.ts +0 -80
- package/dist/ui/tooltip/plain-tooltip.d.ts +0 -2
- package/dist/ui/tooltip/rich-tooltip.d.ts +0 -2
- package/dist/ui/tooltip/tooltip-box.d.ts +0 -2
- package/dist/ui/tooltip/tooltip-caret-shape.d.ts +0 -9
- package/dist/ui/tooltip/tooltip.tokens.d.ts +0 -26
- package/dist/ui/tooltip/tooltip.types.d.ts +0 -56
- package/dist/ui/tooltip/use-tooltip-position.d.ts +0 -8
- package/dist/ui/tooltip/use-tooltip-state.d.ts +0 -2
- package/dist/ui/typography/type-scale-tokens.d.ts +0 -162
- package/dist/ui/typography/typography-key-tokens.d.ts +0 -40
- package/dist/ui/typography/typography-tokens.d.ts +0 -220
- package/dist/ui/typography/typography.d.ts +0 -265
- /package/{dist/hooks/index.d.ts → src/hooks/index.ts} +0 -0
- /package/{dist/ui/tooltip/index.d.ts → src/ui/tooltip/index.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React38 = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var materialColorUtilities = require('@material/material-color-utilities');
|
|
7
7
|
var clsx = require('clsx');
|
|
8
8
|
var tailwindMerge = require('tailwind-merge');
|
|
9
|
-
var
|
|
9
|
+
var RxContextMenu = require('@radix-ui/react-context-menu');
|
|
10
10
|
var react = require('motion/react');
|
|
11
|
+
var DropdownMenu = require('@radix-ui/react-dropdown-menu');
|
|
11
12
|
var reactSlot = require('@radix-ui/react-slot');
|
|
12
13
|
var classVarianceAuthority = require('class-variance-authority');
|
|
13
14
|
var RadixScrollArea = require('@radix-ui/react-scroll-area');
|
|
@@ -32,8 +33,9 @@ function _interopNamespace(e) {
|
|
|
32
33
|
return Object.freeze(n);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
var
|
|
36
|
-
var
|
|
36
|
+
var React38__namespace = /*#__PURE__*/_interopNamespace(React38);
|
|
37
|
+
var RxContextMenu__namespace = /*#__PURE__*/_interopNamespace(RxContextMenu);
|
|
38
|
+
var DropdownMenu__namespace = /*#__PURE__*/_interopNamespace(DropdownMenu);
|
|
37
39
|
var RadixScrollArea__namespace = /*#__PURE__*/_interopNamespace(RadixScrollArea);
|
|
38
40
|
var RadixDialog__namespace = /*#__PURE__*/_interopNamespace(RadixDialog);
|
|
39
41
|
|
|
@@ -77,8 +79,8 @@ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot
|
|
|
77
79
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
78
80
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
79
81
|
function useMediaQuery(query) {
|
|
80
|
-
const [matches, setMatches] =
|
|
81
|
-
|
|
82
|
+
const [matches, setMatches] = React38.useState(false);
|
|
83
|
+
React38.useEffect(() => {
|
|
82
84
|
const mql = window.matchMedia(query);
|
|
83
85
|
const handler = (e) => setMatches(e.matches);
|
|
84
86
|
setMatches(mql.matches);
|
|
@@ -94,8 +96,8 @@ function useRipple(options = {}) {
|
|
|
94
96
|
opacity = 0.12,
|
|
95
97
|
disabled = false
|
|
96
98
|
} = options;
|
|
97
|
-
const ref =
|
|
98
|
-
const onPointerDown =
|
|
99
|
+
const ref = React38.useRef(null);
|
|
100
|
+
const onPointerDown = React38.useCallback(
|
|
99
101
|
(event) => {
|
|
100
102
|
if (disabled || !ref.current) return;
|
|
101
103
|
const el = ref.current;
|
|
@@ -176,6 +178,11 @@ function MaterialSymbolsPreconnect({
|
|
|
176
178
|
)
|
|
177
179
|
] });
|
|
178
180
|
}
|
|
181
|
+
function resolveMode(mode) {
|
|
182
|
+
if (mode !== "system") return mode;
|
|
183
|
+
if (typeof window === "undefined") return "light";
|
|
184
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
185
|
+
}
|
|
179
186
|
function generateM3Theme(sourceColorHex, mode = "light") {
|
|
180
187
|
const sourceColor = materialColorUtilities.argbFromHex(sourceColorHex);
|
|
181
188
|
const theme = materialColorUtilities.themeFromSourceColor(sourceColor);
|
|
@@ -234,13 +241,14 @@ function generateM3Theme(sourceColorHex, mode = "light") {
|
|
|
234
241
|
};
|
|
235
242
|
}
|
|
236
243
|
function applyTheme(sourceColorHex, mode = "light", root = document.documentElement) {
|
|
237
|
-
const
|
|
244
|
+
const resolved = resolveMode(mode);
|
|
245
|
+
const colors = generateM3Theme(sourceColorHex, resolved);
|
|
238
246
|
for (const [key, value] of Object.entries(colors)) {
|
|
239
|
-
const kebabKey = key.replace(/[A-Z]/g, (
|
|
247
|
+
const kebabKey = key.replace(/[A-Z]/g, (m47) => `-${m47.toLowerCase()}`);
|
|
240
248
|
root.style.setProperty(`--md-sys-color-${kebabKey}`, value);
|
|
241
249
|
root.style.setProperty(`--color-m3-${kebabKey}`, value);
|
|
242
250
|
}
|
|
243
|
-
root.setAttribute("data-theme",
|
|
251
|
+
root.setAttribute("data-theme", resolved);
|
|
244
252
|
}
|
|
245
253
|
function cn(...inputs) {
|
|
246
254
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
@@ -433,6 +441,671 @@ function AppBarItemButton({ item }) {
|
|
|
433
441
|
);
|
|
434
442
|
}
|
|
435
443
|
|
|
444
|
+
// src/ui/menu/menu-animations.ts
|
|
445
|
+
var FAST_SPATIAL_SPRING = {
|
|
446
|
+
type: "spring",
|
|
447
|
+
stiffness: 380,
|
|
448
|
+
damping: 28,
|
|
449
|
+
mass: 1
|
|
450
|
+
};
|
|
451
|
+
var FAST_EFFECTS_TRANSITION = {
|
|
452
|
+
duration: 0.15,
|
|
453
|
+
ease: [0.4, 0, 1, 1]
|
|
454
|
+
// FastOutLinearIn
|
|
455
|
+
};
|
|
456
|
+
var MENU_CONTAINER_VARIANTS = {
|
|
457
|
+
hidden: {
|
|
458
|
+
opacity: 0,
|
|
459
|
+
scale: 0.8
|
|
460
|
+
},
|
|
461
|
+
visible: {
|
|
462
|
+
opacity: 1,
|
|
463
|
+
scale: 1,
|
|
464
|
+
transition: FAST_SPATIAL_SPRING
|
|
465
|
+
},
|
|
466
|
+
exit: {
|
|
467
|
+
opacity: 0,
|
|
468
|
+
scale: 0.8,
|
|
469
|
+
transition: FAST_EFFECTS_TRANSITION
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
var MENU_CHECK_ICON_SIZE = 20;
|
|
473
|
+
var CHECK_ICON_VARIANTS = {
|
|
474
|
+
hidden: {
|
|
475
|
+
opacity: 0,
|
|
476
|
+
width: 0
|
|
477
|
+
},
|
|
478
|
+
visible: {
|
|
479
|
+
opacity: 1,
|
|
480
|
+
width: MENU_CHECK_ICON_SIZE,
|
|
481
|
+
transition: FAST_SPATIAL_SPRING
|
|
482
|
+
},
|
|
483
|
+
exit: {
|
|
484
|
+
opacity: 0,
|
|
485
|
+
width: 0,
|
|
486
|
+
transition: FAST_EFFECTS_TRANSITION
|
|
487
|
+
}
|
|
488
|
+
};
|
|
489
|
+
var SUBMENU_CONTAINER_VARIANTS = {
|
|
490
|
+
hidden: {
|
|
491
|
+
opacity: 0,
|
|
492
|
+
scale: 0.9,
|
|
493
|
+
x: -4
|
|
494
|
+
},
|
|
495
|
+
visible: {
|
|
496
|
+
opacity: 1,
|
|
497
|
+
scale: 1,
|
|
498
|
+
x: 0,
|
|
499
|
+
transition: FAST_SPATIAL_SPRING
|
|
500
|
+
},
|
|
501
|
+
exit: {
|
|
502
|
+
opacity: 0,
|
|
503
|
+
scale: 0.9,
|
|
504
|
+
x: -4,
|
|
505
|
+
transition: FAST_EFFECTS_TRANSITION
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
var MenuContext = React38__namespace.createContext({
|
|
509
|
+
variant: "baseline",
|
|
510
|
+
colorVariant: "standard",
|
|
511
|
+
menuPrimitive: "dropdown",
|
|
512
|
+
open: false,
|
|
513
|
+
onOpenChange: () => {
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
function MenuProvider({
|
|
517
|
+
variant = "baseline",
|
|
518
|
+
colorVariant = "standard",
|
|
519
|
+
menuPrimitive = "dropdown",
|
|
520
|
+
open,
|
|
521
|
+
onOpenChange,
|
|
522
|
+
children
|
|
523
|
+
}) {
|
|
524
|
+
const value = React38__namespace.useMemo(
|
|
525
|
+
() => ({ variant, colorVariant, menuPrimitive, open, onOpenChange }),
|
|
526
|
+
[variant, colorVariant, menuPrimitive, open, onOpenChange]
|
|
527
|
+
);
|
|
528
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MenuContext.Provider, { value, children });
|
|
529
|
+
}
|
|
530
|
+
function useMenuContext() {
|
|
531
|
+
const ctx = React38__namespace.useContext(MenuContext);
|
|
532
|
+
return React38__namespace.useMemo(
|
|
533
|
+
() => __spreadProps(__spreadValues({}, ctx), {
|
|
534
|
+
isStatic: ctx.menuPrimitive === "static",
|
|
535
|
+
menuVariant: ctx.variant
|
|
536
|
+
}),
|
|
537
|
+
[ctx]
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// src/ui/menu/menu-tokens.ts
|
|
542
|
+
var MENU_BASELINE_ITEM_HORIZONTAL_PADDING = "px-3";
|
|
543
|
+
var MENU_ITEM_MIN_HEIGHT = "min-h-11";
|
|
544
|
+
var MENU_MIN_WIDTH = "min-w-28";
|
|
545
|
+
var MENU_MAX_WIDTH = "max-w-70";
|
|
546
|
+
var MENU_GROUP_GAP = "gap-0.5";
|
|
547
|
+
var MENU_GROUP_PADDING_Y = "py-1";
|
|
548
|
+
var MENU_POPUP_PADDING_Y = "py-2";
|
|
549
|
+
var MENU_ICON_SIZE = 20;
|
|
550
|
+
var MENU_CONTAINER_SHAPE = "rounded-[4px]";
|
|
551
|
+
var BASELINE_ITEM_SHAPE = "rounded-none";
|
|
552
|
+
var GROUP_SHAPES = {
|
|
553
|
+
/** Active standalone group shape: CornerLarge all corners (16px) */
|
|
554
|
+
standaloneActive: "16px",
|
|
555
|
+
/**
|
|
556
|
+
* Active leading group shape: top=CornerLarge(16px), bottom=CornerSmall(8px)
|
|
557
|
+
* Source: SegmentedMenuTokens — LeadingContainerShape:
|
|
558
|
+
* topStart=CornerLarge, topEnd=CornerLarge, bottomStart=CornerSmall, bottomEnd=CornerSmall
|
|
559
|
+
*/
|
|
560
|
+
leadingActive: "16px 16px 8px 8px",
|
|
561
|
+
/** Active middle group shape: CornerExtraSmall all corners (4px) */
|
|
562
|
+
middleActive: "4px",
|
|
563
|
+
/**
|
|
564
|
+
* Active trailing group shape: top=CornerSmall(8px), bottom=CornerLarge(16px)
|
|
565
|
+
* Source: SegmentedMenuTokens — TrailingContainerShape:
|
|
566
|
+
* topStart=CornerSmall, topEnd=CornerSmall, bottomStart=CornerLarge, bottomEnd=CornerLarge
|
|
567
|
+
*/
|
|
568
|
+
trailingActive: "8px 8px 16px 16px",
|
|
569
|
+
/** Inactive (default, pre-hover) shape for all groups: CornerExtraSmall (4px) */
|
|
570
|
+
inactive: "4px"
|
|
571
|
+
};
|
|
572
|
+
var ITEM_SHAPE_CLASSES = {
|
|
573
|
+
leading: "rounded-t-[12px] rounded-b-[4px]",
|
|
574
|
+
middle: "rounded-[4px]",
|
|
575
|
+
trailing: "rounded-t-[4px] rounded-b-[12px]",
|
|
576
|
+
standalone: "rounded-[4px]",
|
|
577
|
+
selected: "rounded-[12px]"
|
|
578
|
+
};
|
|
579
|
+
var STANDARD_COLORS = {
|
|
580
|
+
/** Group/popup container background (StandardMenuTokens.ContainerColor) */
|
|
581
|
+
containerBg: "bg-m3-surface-container-low",
|
|
582
|
+
/** Label text color (StandardMenuTokens.ItemLabelTextColor) */
|
|
583
|
+
labelText: "text-m3-on-surface",
|
|
584
|
+
/** Leading/trailing icon color (StandardMenuTokens.ItemLeadingIconColor) */
|
|
585
|
+
iconColor: "text-m3-on-surface-variant",
|
|
586
|
+
/** Supporting text below label (StandardMenuTokens.ItemSupportingTextColor) */
|
|
587
|
+
supportingTextColor: "text-m3-on-surface-variant",
|
|
588
|
+
/** Trailing supporting text (StandardMenuTokens.ItemTrailingSupportingTextColor) */
|
|
589
|
+
trailingSupportingTextColor: "text-m3-on-surface-variant",
|
|
590
|
+
/** Trailing icon color (StandardMenuTokens.ItemTrailingIconColor) */
|
|
591
|
+
trailingIconColor: "text-m3-on-surface-variant",
|
|
592
|
+
/** Hover state layer (OnSurface @ 8% opacity) */
|
|
593
|
+
hoverLayer: "hover:bg-m3-on-surface/8",
|
|
594
|
+
/** Focus state layer (OnSurface @ 12% opacity) */
|
|
595
|
+
focusLayer: "focus:bg-m3-on-surface/12",
|
|
596
|
+
/** Selected item background (StandardMenuTokens.ItemSelectedContainerColor) */
|
|
597
|
+
selectedBg: "bg-m3-tertiary-container",
|
|
598
|
+
/** Selected item text (StandardMenuTokens.ItemSelectedLabelTextColor) */
|
|
599
|
+
selectedText: "text-m3-on-tertiary-container",
|
|
600
|
+
/** Selected item icon (StandardMenuTokens.ItemSelectedLeadingIconColor) */
|
|
601
|
+
selectedIcon: "text-m3-on-tertiary-container",
|
|
602
|
+
/** Disabled opacity: 38% (StandardMenuTokens.ItemDisabledLabelTextOpacity) */
|
|
603
|
+
disabledOpacity: "data-disabled:opacity-[0.38]"
|
|
604
|
+
};
|
|
605
|
+
var BASELINE_COLORS = {
|
|
606
|
+
containerBg: "bg-m3-surface-container",
|
|
607
|
+
labelText: "text-m3-on-surface",
|
|
608
|
+
iconColor: "text-m3-on-surface-variant",
|
|
609
|
+
supportingTextColor: "text-m3-on-surface-variant",
|
|
610
|
+
trailingIconColor: "text-m3-on-surface-variant",
|
|
611
|
+
hoverLayer: "hover:bg-m3-on-surface/8",
|
|
612
|
+
focusLayer: "focus:bg-m3-on-surface/12",
|
|
613
|
+
selectedBg: "bg-m3-secondary-container",
|
|
614
|
+
selectedText: "text-m3-on-secondary-container",
|
|
615
|
+
selectedIcon: "text-m3-on-secondary-container"};
|
|
616
|
+
var VIBRANT_COLORS = {
|
|
617
|
+
/** Group/popup container background (VibrantMenuTokens.ContainerColor) */
|
|
618
|
+
containerBg: "bg-m3-tertiary-container",
|
|
619
|
+
/** Label text color (VibrantMenuTokens.ItemLabelTextColor) */
|
|
620
|
+
labelText: "text-m3-on-tertiary-container",
|
|
621
|
+
/** Leading/trailing icon color (VibrantMenuTokens.ItemLeadingIconColor) */
|
|
622
|
+
iconColor: "text-m3-on-tertiary-container",
|
|
623
|
+
/** Supporting text below label (VibrantMenuTokens.ItemSupportingTextColor) */
|
|
624
|
+
supportingTextColor: "text-m3-on-tertiary-container",
|
|
625
|
+
/** Trailing supporting text (VibrantMenuTokens.ItemTrailingSupportingTextColor) */
|
|
626
|
+
trailingSupportingTextColor: "text-m3-on-tertiary-container",
|
|
627
|
+
/** Trailing icon color (VibrantMenuTokens.ItemTrailingIconColor) */
|
|
628
|
+
trailingIconColor: "text-m3-on-tertiary-container",
|
|
629
|
+
/** Hover state layer (OnTertiaryContainer @ 8% opacity) */
|
|
630
|
+
hoverLayer: "hover:bg-m3-on-tertiary-container/8",
|
|
631
|
+
/** Focus state layer (OnTertiaryContainer @ 12% opacity) */
|
|
632
|
+
focusLayer: "focus:bg-m3-on-tertiary-container/12",
|
|
633
|
+
/** Selected item background (VibrantMenuTokens.ItemSelectedContainerColor = Tertiary) */
|
|
634
|
+
selectedBg: "bg-m3-tertiary",
|
|
635
|
+
/** Selected item text (VibrantMenuTokens.ItemSelectedLabelTextColor = OnTertiary) */
|
|
636
|
+
selectedText: "text-m3-on-tertiary",
|
|
637
|
+
/** Selected item icon (VibrantMenuTokens.ItemSelectedLeadingIconColor = OnTertiary) */
|
|
638
|
+
selectedIcon: "text-m3-on-tertiary",
|
|
639
|
+
/** Disabled opacity: 38% (VibrantMenuTokens.ItemDisabledLabelTextOpacity) */
|
|
640
|
+
disabledOpacity: "data-disabled:opacity-[0.38]"
|
|
641
|
+
};
|
|
642
|
+
var DIVIDER_PADDING = "mx-3 my-0.5";
|
|
643
|
+
var DIVIDER_COLOR = "bg-m3-outline-variant";
|
|
644
|
+
function ContextMenu({
|
|
645
|
+
children,
|
|
646
|
+
variant = "baseline",
|
|
647
|
+
colorVariant = "standard"
|
|
648
|
+
}) {
|
|
649
|
+
const [open, setOpen] = React38__namespace.useState(false);
|
|
650
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
651
|
+
MenuProvider,
|
|
652
|
+
{
|
|
653
|
+
variant,
|
|
654
|
+
colorVariant,
|
|
655
|
+
menuPrimitive: "context",
|
|
656
|
+
open,
|
|
657
|
+
onOpenChange: setOpen,
|
|
658
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Root, { onOpenChange: setOpen, children })
|
|
659
|
+
}
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
ContextMenu.displayName = "ContextMenu";
|
|
663
|
+
var ContextMenuTrigger = React38__namespace.forwardRef((_a, ref) => {
|
|
664
|
+
var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
|
|
665
|
+
return /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
|
|
666
|
+
});
|
|
667
|
+
ContextMenuTrigger.displayName = "ContextMenuTrigger";
|
|
668
|
+
var ContextMenuContent = React38__namespace.forwardRef(
|
|
669
|
+
(_a, ref) => {
|
|
670
|
+
var _b = _a, {
|
|
671
|
+
children,
|
|
672
|
+
hasOverflow = false,
|
|
673
|
+
colorVariant: propColorVariant,
|
|
674
|
+
separatorStyle = "gap",
|
|
675
|
+
className
|
|
676
|
+
} = _b, props = __objRest(_b, [
|
|
677
|
+
"children",
|
|
678
|
+
"hasOverflow",
|
|
679
|
+
"colorVariant",
|
|
680
|
+
"separatorStyle",
|
|
681
|
+
"className"
|
|
682
|
+
]);
|
|
683
|
+
const {
|
|
684
|
+
open,
|
|
685
|
+
variant,
|
|
686
|
+
colorVariant: contextColorVariant
|
|
687
|
+
} = useMenuContext();
|
|
688
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
689
|
+
const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
690
|
+
const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
|
|
691
|
+
const containerClassName = variant === "expressive" ? cn(
|
|
692
|
+
"z-50 flex flex-col w-full",
|
|
693
|
+
MENU_MIN_WIDTH,
|
|
694
|
+
MENU_MAX_WIDTH,
|
|
695
|
+
isExpressiveGap ? MENU_GROUP_GAP : "",
|
|
696
|
+
isExpressiveGap ? "bg-transparent" : colors.containerBg,
|
|
697
|
+
isExpressiveGap ? "" : "rounded-2xl",
|
|
698
|
+
isExpressiveGap ? "" : "elevation-2",
|
|
699
|
+
hasOverflow || isExpressiveGap ? "overflow-visible" : "overflow-hidden",
|
|
700
|
+
"outline-none",
|
|
701
|
+
className
|
|
702
|
+
) : cn(
|
|
703
|
+
"z-50 flex flex-col",
|
|
704
|
+
MENU_MIN_WIDTH,
|
|
705
|
+
MENU_MAX_WIDTH,
|
|
706
|
+
MENU_POPUP_PADDING_Y,
|
|
707
|
+
MENU_GROUP_GAP,
|
|
708
|
+
colors.containerBg,
|
|
709
|
+
MENU_CONTAINER_SHAPE,
|
|
710
|
+
"elevation-2",
|
|
711
|
+
hasOverflow ? "overflow-visible" : "overflow-hidden",
|
|
712
|
+
"outline-none",
|
|
713
|
+
className
|
|
714
|
+
);
|
|
715
|
+
const flattenChildren = (nodes) => {
|
|
716
|
+
return React38__namespace.Children.toArray(nodes).reduce(
|
|
717
|
+
(acc, child) => {
|
|
718
|
+
if (React38__namespace.isValidElement(child)) {
|
|
719
|
+
if (child.type === React38__namespace.Fragment) {
|
|
720
|
+
return acc.concat(
|
|
721
|
+
flattenChildren(
|
|
722
|
+
child.props.children
|
|
723
|
+
)
|
|
724
|
+
);
|
|
725
|
+
}
|
|
726
|
+
acc.push(child);
|
|
727
|
+
}
|
|
728
|
+
return acc;
|
|
729
|
+
},
|
|
730
|
+
[]
|
|
731
|
+
);
|
|
732
|
+
};
|
|
733
|
+
let renderedChildren = children;
|
|
734
|
+
if (variant === "expressive") {
|
|
735
|
+
const validChildren = flattenChildren(children);
|
|
736
|
+
const groupCount = validChildren.length;
|
|
737
|
+
const enhancedChildren = validChildren.map(
|
|
738
|
+
(child, i) => React38__namespace.cloneElement(
|
|
739
|
+
child,
|
|
740
|
+
{
|
|
741
|
+
index: i,
|
|
742
|
+
count: groupCount,
|
|
743
|
+
isGapVariant: isExpressiveGap
|
|
744
|
+
}
|
|
745
|
+
)
|
|
746
|
+
);
|
|
747
|
+
renderedChildren = separatorStyle === "divider" ? enhancedChildren.reduce((acc, child, i) => {
|
|
748
|
+
if (i > 0) {
|
|
749
|
+
acc.push(
|
|
750
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
751
|
+
"hr",
|
|
752
|
+
{
|
|
753
|
+
className: cn(
|
|
754
|
+
"mx-3 my-0.5 h-px border-0 bg-m3-outline-variant"
|
|
755
|
+
)
|
|
756
|
+
},
|
|
757
|
+
`divider-${child.key || i}`
|
|
758
|
+
)
|
|
759
|
+
);
|
|
760
|
+
}
|
|
761
|
+
acc.push(child);
|
|
762
|
+
return acc;
|
|
763
|
+
}, []) : enhancedChildren;
|
|
764
|
+
}
|
|
765
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(RxContextMenu__namespace.Content, __spreadProps(__spreadValues({ ref, asChild: true, forceMount: true }, props), { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
766
|
+
react.m.div,
|
|
767
|
+
{
|
|
768
|
+
className: containerClassName,
|
|
769
|
+
initial: { opacity: 0, scale: 0.95, y: -4 },
|
|
770
|
+
animate: { opacity: 1, scale: 1, y: 0 },
|
|
771
|
+
exit: { opacity: 0, scale: 0.95, y: -4 },
|
|
772
|
+
transition: FAST_SPATIAL_SPRING,
|
|
773
|
+
style: __spreadProps(__spreadValues({}, props.style), {
|
|
774
|
+
transformOrigin: "var(--radix-context-menu-content-transform-origin)"
|
|
775
|
+
}),
|
|
776
|
+
children: renderedChildren
|
|
777
|
+
}
|
|
778
|
+
) })) }) });
|
|
779
|
+
}
|
|
780
|
+
);
|
|
781
|
+
ContextMenuContent.displayName = "ContextMenuContent";
|
|
782
|
+
function Menu(_a) {
|
|
783
|
+
var _b = _a, {
|
|
784
|
+
children,
|
|
785
|
+
variant,
|
|
786
|
+
menuVariant,
|
|
787
|
+
colorVariant = "standard",
|
|
788
|
+
open: controlledOpen,
|
|
789
|
+
onOpenChange: controlledOnOpenChange,
|
|
790
|
+
defaultOpen
|
|
791
|
+
} = _b, props = __objRest(_b, [
|
|
792
|
+
"children",
|
|
793
|
+
"variant",
|
|
794
|
+
"menuVariant",
|
|
795
|
+
"colorVariant",
|
|
796
|
+
"open",
|
|
797
|
+
"onOpenChange",
|
|
798
|
+
"defaultOpen"
|
|
799
|
+
]);
|
|
800
|
+
var _a2;
|
|
801
|
+
const resolvedVariant = (_a2 = variant != null ? variant : menuVariant) != null ? _a2 : "baseline";
|
|
802
|
+
const [internalOpen, setInternalOpen] = React38__namespace.useState(
|
|
803
|
+
() => defaultOpen != null ? defaultOpen : false
|
|
804
|
+
);
|
|
805
|
+
const isControlled = controlledOpen !== void 0;
|
|
806
|
+
const open = isControlled ? controlledOpen : internalOpen;
|
|
807
|
+
const handleOpenChange = React38__namespace.useCallback(
|
|
808
|
+
(next) => {
|
|
809
|
+
if (!isControlled) setInternalOpen(next);
|
|
810
|
+
controlledOnOpenChange == null ? void 0 : controlledOnOpenChange(next);
|
|
811
|
+
},
|
|
812
|
+
[isControlled, controlledOnOpenChange]
|
|
813
|
+
);
|
|
814
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
815
|
+
MenuProvider,
|
|
816
|
+
{
|
|
817
|
+
variant: resolvedVariant,
|
|
818
|
+
colorVariant,
|
|
819
|
+
open,
|
|
820
|
+
onOpenChange: handleOpenChange,
|
|
821
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
822
|
+
DropdownMenu__namespace.Root,
|
|
823
|
+
__spreadProps(__spreadValues({}, props), {
|
|
824
|
+
defaultOpen,
|
|
825
|
+
open: isControlled ? open : void 0,
|
|
826
|
+
onOpenChange: handleOpenChange,
|
|
827
|
+
children
|
|
828
|
+
})
|
|
829
|
+
)
|
|
830
|
+
}
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
Menu.displayName = "Menu";
|
|
834
|
+
var MenuTrigger = React38__namespace.forwardRef((_a, ref) => {
|
|
835
|
+
var _b = _a, { children, asChild = true } = _b, props = __objRest(_b, ["children", "asChild"]);
|
|
836
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Trigger, __spreadProps(__spreadValues({ ref, asChild }, props), { children }));
|
|
837
|
+
});
|
|
838
|
+
MenuTrigger.displayName = "MenuTrigger";
|
|
839
|
+
var MenuContent = React38__namespace.forwardRef(
|
|
840
|
+
(_a, ref) => {
|
|
841
|
+
var _b = _a, {
|
|
842
|
+
children,
|
|
843
|
+
sideOffset = 6,
|
|
844
|
+
side = "bottom",
|
|
845
|
+
align = "start",
|
|
846
|
+
hasOverflow = false,
|
|
847
|
+
colorVariant: propColorVariant,
|
|
848
|
+
separatorStyle = "gap",
|
|
849
|
+
className
|
|
850
|
+
} = _b, props = __objRest(_b, [
|
|
851
|
+
"children",
|
|
852
|
+
"sideOffset",
|
|
853
|
+
"side",
|
|
854
|
+
"align",
|
|
855
|
+
"hasOverflow",
|
|
856
|
+
"colorVariant",
|
|
857
|
+
"separatorStyle",
|
|
858
|
+
"className"
|
|
859
|
+
]);
|
|
860
|
+
const {
|
|
861
|
+
open,
|
|
862
|
+
variant,
|
|
863
|
+
colorVariant: contextColorVariant
|
|
864
|
+
} = useMenuContext();
|
|
865
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
866
|
+
const colors = variant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
867
|
+
const isExpressiveGap = variant === "expressive" && separatorStyle === "gap";
|
|
868
|
+
const containerClassName = variant === "expressive" ? cn(
|
|
869
|
+
"z-50 flex flex-col",
|
|
870
|
+
MENU_MIN_WIDTH,
|
|
871
|
+
MENU_MAX_WIDTH,
|
|
872
|
+
isExpressiveGap ? MENU_GROUP_GAP : "",
|
|
873
|
+
isExpressiveGap ? "bg-transparent" : colors.containerBg,
|
|
874
|
+
isExpressiveGap ? "" : "rounded-2xl",
|
|
875
|
+
isExpressiveGap ? "" : "elevation-2",
|
|
876
|
+
hasOverflow || isExpressiveGap ? "overflow-visible" : "overflow-hidden",
|
|
877
|
+
"outline-none",
|
|
878
|
+
className
|
|
879
|
+
) : cn(
|
|
880
|
+
"z-50 flex flex-col",
|
|
881
|
+
MENU_MIN_WIDTH,
|
|
882
|
+
MENU_MAX_WIDTH,
|
|
883
|
+
MENU_POPUP_PADDING_Y,
|
|
884
|
+
MENU_GROUP_GAP,
|
|
885
|
+
colors.containerBg,
|
|
886
|
+
MENU_CONTAINER_SHAPE,
|
|
887
|
+
"elevation-2",
|
|
888
|
+
hasOverflow ? "overflow-visible" : "overflow-hidden",
|
|
889
|
+
"outline-none",
|
|
890
|
+
className
|
|
891
|
+
);
|
|
892
|
+
const flattenChildren = (nodes) => {
|
|
893
|
+
return React38__namespace.Children.toArray(nodes).reduce(
|
|
894
|
+
(acc, child) => {
|
|
895
|
+
if (React38__namespace.isValidElement(child)) {
|
|
896
|
+
if (child.type === React38__namespace.Fragment) {
|
|
897
|
+
return acc.concat(
|
|
898
|
+
flattenChildren(
|
|
899
|
+
child.props.children
|
|
900
|
+
)
|
|
901
|
+
);
|
|
902
|
+
}
|
|
903
|
+
acc.push(child);
|
|
904
|
+
}
|
|
905
|
+
return acc;
|
|
906
|
+
},
|
|
907
|
+
[]
|
|
908
|
+
);
|
|
909
|
+
};
|
|
910
|
+
let renderedChildren = children;
|
|
911
|
+
if (variant === "expressive") {
|
|
912
|
+
const validChildren = flattenChildren(children);
|
|
913
|
+
const groupCount = validChildren.length;
|
|
914
|
+
const enhancedChildren = validChildren.map(
|
|
915
|
+
(child, i) => React38__namespace.cloneElement(child, {
|
|
916
|
+
index: i,
|
|
917
|
+
count: groupCount,
|
|
918
|
+
isGapVariant: isExpressiveGap
|
|
919
|
+
})
|
|
920
|
+
);
|
|
921
|
+
renderedChildren = separatorStyle === "divider" ? enhancedChildren.reduce((acc, child, i) => {
|
|
922
|
+
if (i > 0) {
|
|
923
|
+
acc.push(
|
|
924
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
925
|
+
"hr",
|
|
926
|
+
{
|
|
927
|
+
className: cn(
|
|
928
|
+
"mx-3 my-0.5 h-px border-0 bg-m3-outline-variant"
|
|
929
|
+
)
|
|
930
|
+
},
|
|
931
|
+
`divider-${child.key || i}`
|
|
932
|
+
)
|
|
933
|
+
);
|
|
934
|
+
}
|
|
935
|
+
acc.push(child);
|
|
936
|
+
return acc;
|
|
937
|
+
}, []) : enhancedChildren;
|
|
938
|
+
}
|
|
939
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
940
|
+
DropdownMenu__namespace.Content,
|
|
941
|
+
__spreadProps(__spreadValues({
|
|
942
|
+
ref,
|
|
943
|
+
sideOffset,
|
|
944
|
+
side,
|
|
945
|
+
align,
|
|
946
|
+
asChild: true,
|
|
947
|
+
forceMount: true
|
|
948
|
+
}, props), {
|
|
949
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
950
|
+
react.m.div,
|
|
951
|
+
{
|
|
952
|
+
role: "menu",
|
|
953
|
+
"aria-orientation": "vertical",
|
|
954
|
+
className: containerClassName,
|
|
955
|
+
variants: MENU_CONTAINER_VARIANTS,
|
|
956
|
+
initial: "hidden",
|
|
957
|
+
animate: "visible",
|
|
958
|
+
exit: "exit",
|
|
959
|
+
style: __spreadProps(__spreadValues({}, props.style), {
|
|
960
|
+
transformOrigin: "var(--radix-dropdown-menu-content-transform-origin)"
|
|
961
|
+
}),
|
|
962
|
+
children: renderedChildren
|
|
963
|
+
}
|
|
964
|
+
)
|
|
965
|
+
})
|
|
966
|
+
) }) });
|
|
967
|
+
}
|
|
968
|
+
);
|
|
969
|
+
MenuContent.displayName = "MenuContent";
|
|
970
|
+
var MenuDivider = React38__namespace.forwardRef(
|
|
971
|
+
(_a, ref) => {
|
|
972
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
973
|
+
const { menuVariant } = useMenuContext();
|
|
974
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu__namespace.Separator, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
975
|
+
"hr",
|
|
976
|
+
__spreadValues({
|
|
977
|
+
ref,
|
|
978
|
+
className: cn(
|
|
979
|
+
// Baseline: 8dp vertical margin, 0 horizontal. Expressive: 12dp horizontal, 2dp vertical
|
|
980
|
+
menuVariant === "baseline" ? "my-2 mx-0" : "mx-3 my-0.5",
|
|
981
|
+
// 1px height line
|
|
982
|
+
"h-px border-0",
|
|
983
|
+
// outline-variant color
|
|
984
|
+
"bg-m3-outline-variant",
|
|
985
|
+
className
|
|
986
|
+
)
|
|
987
|
+
}, props)
|
|
988
|
+
) });
|
|
989
|
+
}
|
|
990
|
+
);
|
|
991
|
+
MenuDivider.displayName = "MenuDivider";
|
|
992
|
+
function getGroupPosition(index, count) {
|
|
993
|
+
if (count === 1) return "standalone";
|
|
994
|
+
if (index === 0) return "leading";
|
|
995
|
+
if (index === count - 1) return "trailing";
|
|
996
|
+
return "middle";
|
|
997
|
+
}
|
|
998
|
+
function getGroupActiveShape(position) {
|
|
999
|
+
return GROUP_SHAPES[`${position}Active`];
|
|
1000
|
+
}
|
|
1001
|
+
var MenuGroup = React38__namespace.forwardRef(
|
|
1002
|
+
(_a, ref) => {
|
|
1003
|
+
var _b = _a, {
|
|
1004
|
+
children,
|
|
1005
|
+
label,
|
|
1006
|
+
index = 0,
|
|
1007
|
+
count = 1,
|
|
1008
|
+
colorVariant: propColorVariant,
|
|
1009
|
+
isGapVariant,
|
|
1010
|
+
itemPosition,
|
|
1011
|
+
className
|
|
1012
|
+
} = _b, rest = __objRest(_b, [
|
|
1013
|
+
"children",
|
|
1014
|
+
"label",
|
|
1015
|
+
"index",
|
|
1016
|
+
"count",
|
|
1017
|
+
"colorVariant",
|
|
1018
|
+
"isGapVariant",
|
|
1019
|
+
"itemPosition",
|
|
1020
|
+
"className"
|
|
1021
|
+
]);
|
|
1022
|
+
const {
|
|
1023
|
+
menuVariant,
|
|
1024
|
+
colorVariant: contextColorVariant,
|
|
1025
|
+
isStatic
|
|
1026
|
+
} = useMenuContext();
|
|
1027
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1028
|
+
const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1029
|
+
const position = getGroupPosition(index, count);
|
|
1030
|
+
const activeShape = getGroupActiveShape(position);
|
|
1031
|
+
const [isHovered, setIsHovered] = React38__namespace.useState(false);
|
|
1032
|
+
const currentShape = isStatic || isHovered ? activeShape : GROUP_SHAPES.inactive;
|
|
1033
|
+
const handlePointerEnter = React38__namespace.useCallback(() => setIsHovered(true), []);
|
|
1034
|
+
const handlePointerLeave = React38__namespace.useCallback(() => setIsHovered(false), []);
|
|
1035
|
+
const flattenChildren = (children2) => {
|
|
1036
|
+
return React38__namespace.Children.toArray(children2).reduce(
|
|
1037
|
+
(acc, child) => {
|
|
1038
|
+
if (React38__namespace.isValidElement(child)) {
|
|
1039
|
+
if (child.type === React38__namespace.Fragment) {
|
|
1040
|
+
return acc.concat(
|
|
1041
|
+
flattenChildren(
|
|
1042
|
+
child.props.children
|
|
1043
|
+
)
|
|
1044
|
+
);
|
|
1045
|
+
}
|
|
1046
|
+
acc.push(child);
|
|
1047
|
+
}
|
|
1048
|
+
return acc;
|
|
1049
|
+
},
|
|
1050
|
+
[]
|
|
1051
|
+
);
|
|
1052
|
+
};
|
|
1053
|
+
const validChildren = flattenChildren(children);
|
|
1054
|
+
const itemCount = validChildren.length;
|
|
1055
|
+
const enhancedChildren = validChildren.map((child, i) => {
|
|
1056
|
+
const itemPosition2 = itemCount === 1 ? "standalone" : i === 0 ? "leading" : i === itemCount - 1 ? "trailing" : "middle";
|
|
1057
|
+
return React38__namespace.cloneElement(child, {
|
|
1058
|
+
itemPosition: itemPosition2,
|
|
1059
|
+
colorVariant
|
|
1060
|
+
});
|
|
1061
|
+
});
|
|
1062
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1063
|
+
react.m.div,
|
|
1064
|
+
__spreadProps(__spreadValues({
|
|
1065
|
+
ref,
|
|
1066
|
+
role: "group",
|
|
1067
|
+
"aria-label": label,
|
|
1068
|
+
className: cn(
|
|
1069
|
+
"relative",
|
|
1070
|
+
// In baseline variant, MenuGroup is transparent so it shouldn't clip.
|
|
1071
|
+
// In expressive variant, it needs overflow-hidden to clip hover states to its morphing shape.
|
|
1072
|
+
menuVariant === "baseline" ? "" : "overflow-hidden",
|
|
1073
|
+
// Vertical padding: 2dp for gap variant (to match Figma), 4dp for baseline
|
|
1074
|
+
isGapVariant ? "py-0.5" : MENU_GROUP_PADDING_Y,
|
|
1075
|
+
// Horizontal padding: 4dp for expressive menus (both static and popup), 0 for baseline
|
|
1076
|
+
menuVariant === "expressive" ? "px-1" : "",
|
|
1077
|
+
// Gap variant has floating segments, so each group manages its own shadow
|
|
1078
|
+
isGapVariant ? "elevation-2" : "",
|
|
1079
|
+
// Background based on color variant (transparent for baseline to avoid double-layering)
|
|
1080
|
+
menuVariant === "baseline" ? "bg-transparent" : colors.containerBg,
|
|
1081
|
+
className
|
|
1082
|
+
),
|
|
1083
|
+
animate: { borderRadius: currentShape },
|
|
1084
|
+
transition: FAST_SPATIAL_SPRING,
|
|
1085
|
+
onPointerEnter: handlePointerEnter,
|
|
1086
|
+
onPointerLeave: handlePointerLeave
|
|
1087
|
+
}, rest), {
|
|
1088
|
+
children: [
|
|
1089
|
+
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1090
|
+
"span",
|
|
1091
|
+
{
|
|
1092
|
+
className: cn(
|
|
1093
|
+
// Padding: 12dp top, 12dp horizontal, 8dp bottom (MD3 spec)
|
|
1094
|
+
"block pt-3 px-3 pb-2",
|
|
1095
|
+
"text-label-small",
|
|
1096
|
+
menuVariant === "baseline" ? "text-m3-on-surface-variant" : colorVariant === "vibrant" ? "text-m3-on-tertiary-container" : "text-m3-on-surface-variant"
|
|
1097
|
+
),
|
|
1098
|
+
children: label
|
|
1099
|
+
}
|
|
1100
|
+
),
|
|
1101
|
+
enhancedChildren
|
|
1102
|
+
]
|
|
1103
|
+
})
|
|
1104
|
+
);
|
|
1105
|
+
}
|
|
1106
|
+
);
|
|
1107
|
+
MenuGroup.displayName = "MenuGroup";
|
|
1108
|
+
|
|
436
1109
|
// src/ui/shared/constants.ts
|
|
437
1110
|
var SPRING_TRANSITION_FAST = {
|
|
438
1111
|
type: "spring",
|
|
@@ -444,6 +1117,11 @@ var SPRING_TRANSITION = {
|
|
|
444
1117
|
bounce: 0,
|
|
445
1118
|
duration: 0.3
|
|
446
1119
|
};
|
|
1120
|
+
var SPRING_TRANSITION_EXPRESSIVE = {
|
|
1121
|
+
type: "spring",
|
|
1122
|
+
bounce: 0.35,
|
|
1123
|
+
duration: 0.4
|
|
1124
|
+
};
|
|
447
1125
|
var ICON_SPAN_VARIANTS = {
|
|
448
1126
|
initial: { scale: 0.01 },
|
|
449
1127
|
animate: { scale: 1 },
|
|
@@ -464,7 +1142,7 @@ var VARIANT_FONT = {
|
|
|
464
1142
|
rounded: "'Material Symbols Rounded'",
|
|
465
1143
|
sharp: "'Material Symbols Sharp'"
|
|
466
1144
|
};
|
|
467
|
-
var IconComponent =
|
|
1145
|
+
var IconComponent = React38__namespace.forwardRef(
|
|
468
1146
|
(_a, ref) => {
|
|
469
1147
|
var _b = _a, {
|
|
470
1148
|
name,
|
|
@@ -530,222 +1208,527 @@ var IconComponent = React31__namespace.forwardRef(
|
|
|
530
1208
|
}
|
|
531
1209
|
);
|
|
532
1210
|
IconComponent.displayName = "Icon";
|
|
533
|
-
var Icon =
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
1211
|
+
var Icon = React38__namespace.memo(IconComponent);
|
|
1212
|
+
function getItemShapeClass(position, selected, isStatic = false, menuVariant = "expressive") {
|
|
1213
|
+
if (menuVariant === "baseline") return BASELINE_ITEM_SHAPE;
|
|
1214
|
+
if (selected) return ITEM_SHAPE_CLASSES.selected;
|
|
1215
|
+
if (isStatic && position === "standalone") return "rounded-[12px]";
|
|
1216
|
+
return ITEM_SHAPE_CLASSES[position];
|
|
1217
|
+
}
|
|
1218
|
+
var MenuItem = React38__namespace.forwardRef(
|
|
1219
|
+
(_a, ref) => {
|
|
1220
|
+
var _b = _a, {
|
|
1221
|
+
children,
|
|
1222
|
+
onClick,
|
|
1223
|
+
leadingIcon,
|
|
1224
|
+
trailingIcon,
|
|
1225
|
+
supportingText,
|
|
1226
|
+
trailingText,
|
|
1227
|
+
selected,
|
|
1228
|
+
disabled = false,
|
|
1229
|
+
itemPosition = "standalone",
|
|
1230
|
+
colorVariant: propColorVariant,
|
|
1231
|
+
keepOpen = false,
|
|
1232
|
+
className,
|
|
1233
|
+
isSubTrigger,
|
|
1234
|
+
value,
|
|
1235
|
+
role
|
|
1236
|
+
} = _b, rest = __objRest(_b, [
|
|
1237
|
+
"children",
|
|
1238
|
+
"onClick",
|
|
1239
|
+
"leadingIcon",
|
|
1240
|
+
"trailingIcon",
|
|
1241
|
+
"supportingText",
|
|
1242
|
+
"trailingText",
|
|
1243
|
+
"selected",
|
|
1244
|
+
"disabled",
|
|
1245
|
+
"itemPosition",
|
|
1246
|
+
"colorVariant",
|
|
1247
|
+
"keepOpen",
|
|
1248
|
+
"className",
|
|
1249
|
+
"isSubTrigger",
|
|
1250
|
+
"value",
|
|
1251
|
+
"role"
|
|
1252
|
+
]);
|
|
1253
|
+
const {
|
|
1254
|
+
menuVariant,
|
|
1255
|
+
colorVariant: contextColorVariant,
|
|
1256
|
+
menuPrimitive
|
|
1257
|
+
} = useMenuContext();
|
|
1258
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1259
|
+
const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1260
|
+
const isStaticMenu = menuPrimitive === "static";
|
|
1261
|
+
const shapeClass = getItemShapeClass(
|
|
1262
|
+
itemPosition,
|
|
1263
|
+
!!selected,
|
|
1264
|
+
isStaticMenu,
|
|
1265
|
+
menuVariant
|
|
1266
|
+
);
|
|
1267
|
+
const isSelectable = selected !== void 0 && !isSubTrigger;
|
|
1268
|
+
const isCheckbox = role === "menuitemcheckbox" || selected !== void 0 && !role && !isSubTrigger;
|
|
1269
|
+
const isRadio = role === "menuitemradio";
|
|
1270
|
+
const ItemPrimitive = isStaticMenu || isSubTrigger ? reactSlot.Slot : menuPrimitive === "context" ? isCheckbox ? RxContextMenu__namespace.CheckboxItem : isRadio ? RxContextMenu__namespace.RadioItem : RxContextMenu__namespace.Item : isCheckbox ? DropdownMenu__namespace.CheckboxItem : isRadio ? DropdownMenu__namespace.RadioItem : DropdownMenu__namespace.Item;
|
|
1271
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1272
|
+
ItemPrimitive,
|
|
1273
|
+
__spreadProps(__spreadValues({
|
|
1274
|
+
ref
|
|
1275
|
+
}, isStaticMenu || isSubTrigger ? {
|
|
1276
|
+
role: role || (isCheckbox ? "menuitemcheckbox" : isRadio ? "menuitemradio" : "menuitem"),
|
|
1277
|
+
"aria-checked": isCheckbox || isRadio ? !!selected : void 0,
|
|
1278
|
+
"aria-disabled": disabled ? true : void 0,
|
|
1279
|
+
tabIndex: disabled ? -1 : 0,
|
|
1280
|
+
onKeyDown: (e) => {
|
|
1281
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
1282
|
+
e.preventDefault();
|
|
1283
|
+
onClick == null ? void 0 : onClick(e);
|
|
1284
|
+
}
|
|
1285
|
+
},
|
|
1286
|
+
onClick
|
|
1287
|
+
} : __spreadProps(__spreadValues(__spreadValues({
|
|
1288
|
+
disabled,
|
|
1289
|
+
onSelect: keepOpen ? (e) => e.preventDefault() : void 0,
|
|
1290
|
+
onClick
|
|
1291
|
+
}, isCheckbox || isRadio ? { checked: !!selected } : {}), isRadio ? { value: value != null ? value : "" } : {}), {
|
|
1292
|
+
asChild: true
|
|
1293
|
+
})), {
|
|
1294
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1295
|
+
"div",
|
|
1296
|
+
__spreadProps(__spreadValues({
|
|
1297
|
+
className: cn(
|
|
1298
|
+
// Layout
|
|
1299
|
+
"relative flex w-full cursor-pointer select-none items-center outline-none",
|
|
1300
|
+
// Sizing: min-h 48dp, min-w 112dp, max-w 280dp
|
|
1301
|
+
"min-h-12 min-w-28 max-w-70",
|
|
1302
|
+
// Horizontal padding
|
|
1303
|
+
menuVariant === "baseline" ? MENU_BASELINE_ITEM_HORIZONTAL_PADDING : "px-4",
|
|
1304
|
+
// Spacing between items
|
|
1305
|
+
isStaticMenu ? "my-0.5" : "",
|
|
1306
|
+
// Shape morphing (position-based + selected override)
|
|
1307
|
+
shapeClass,
|
|
1308
|
+
// Animate border-radius AND background-color together (FastEffects: 150ms)
|
|
1309
|
+
"transition-[border-radius,background-color] duration-150 ease-in",
|
|
1310
|
+
// Colors based on variant + selection
|
|
1311
|
+
selected ? cn(colors.selectedBg, colors.selectedText) : cn(colors.labelText),
|
|
1312
|
+
// State layers (only on unselected items)
|
|
1313
|
+
!selected && colors.hoverLayer,
|
|
1314
|
+
!selected && colors.focusLayer,
|
|
1315
|
+
// Focus visible ring (WCAG 2.4.11 — visible focus indicator)
|
|
1316
|
+
// Uses ring-inset so the ring doesn't overflow the item bounds.
|
|
1317
|
+
"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-m3-primary",
|
|
1318
|
+
// Disabled
|
|
1319
|
+
disabled && "pointer-events-none opacity-[0.38]",
|
|
1320
|
+
className
|
|
1321
|
+
)
|
|
1322
|
+
}, rest), {
|
|
1323
|
+
children: [
|
|
1324
|
+
(isSelectable || leadingIcon) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1325
|
+
"div",
|
|
1326
|
+
{
|
|
1327
|
+
className: "flex h-5 w-5 shrink-0 items-center justify-center mr-3",
|
|
1328
|
+
"aria-hidden": "true",
|
|
1329
|
+
children: isSelectable ? /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { initial: false, mode: "wait", children: selected ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1330
|
+
react.m.span,
|
|
1331
|
+
{
|
|
1332
|
+
className: cn(
|
|
1333
|
+
"flex h-full w-full items-center justify-center overflow-hidden",
|
|
1334
|
+
colors.selectedIcon
|
|
1335
|
+
),
|
|
1336
|
+
variants: CHECK_ICON_VARIANTS,
|
|
1337
|
+
initial: "hidden",
|
|
1338
|
+
animate: "visible",
|
|
1339
|
+
exit: "exit",
|
|
1340
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "check", fill: 1, size: MENU_CHECK_ICON_SIZE })
|
|
1341
|
+
},
|
|
1342
|
+
"check"
|
|
1343
|
+
) : leadingIcon ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1344
|
+
react.m.span,
|
|
1345
|
+
{
|
|
1346
|
+
className: cn(
|
|
1347
|
+
"flex h-full w-full items-center justify-center overflow-hidden",
|
|
1348
|
+
colors.iconColor
|
|
1349
|
+
),
|
|
1350
|
+
variants: CHECK_ICON_VARIANTS,
|
|
1351
|
+
initial: "hidden",
|
|
1352
|
+
animate: "visible",
|
|
1353
|
+
exit: "exit",
|
|
1354
|
+
children: leadingIcon
|
|
1355
|
+
},
|
|
1356
|
+
"icon"
|
|
1357
|
+
) : (
|
|
1358
|
+
// Spacer for selectable items with no icon, to keep text aligned
|
|
1359
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-5" })
|
|
1360
|
+
) }) : (
|
|
1361
|
+
// Static icon for non-selectable items
|
|
1362
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1363
|
+
"span",
|
|
1364
|
+
{
|
|
1365
|
+
className: cn(
|
|
1366
|
+
"flex h-full w-full items-center justify-center",
|
|
1367
|
+
colors.iconColor
|
|
1368
|
+
),
|
|
1369
|
+
children: leadingIcon
|
|
1370
|
+
}
|
|
1371
|
+
)
|
|
1372
|
+
)
|
|
1373
|
+
}
|
|
1374
|
+
),
|
|
1375
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-1 flex-col", children: [
|
|
1376
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-body-large leading-snug", children }),
|
|
1377
|
+
supportingText && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1378
|
+
"span",
|
|
1379
|
+
{
|
|
1380
|
+
className: cn(
|
|
1381
|
+
"text-body-medium leading-snug",
|
|
1382
|
+
// Source: StandardMenuTokens.ItemSupportingTextColor / VibrantMenuTokens
|
|
1383
|
+
selected ? colors.selectedText : colors.supportingTextColor
|
|
1384
|
+
),
|
|
1385
|
+
children: supportingText
|
|
1386
|
+
}
|
|
1387
|
+
)
|
|
1388
|
+
] }),
|
|
1389
|
+
(trailingText || trailingIcon) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1390
|
+
"span",
|
|
1391
|
+
{
|
|
1392
|
+
className: cn(
|
|
1393
|
+
// Minimum 12dp gap from label column (ListTokens)
|
|
1394
|
+
"ml-3 flex shrink-0 items-center",
|
|
1395
|
+
// Source: StandardMenuTokens.ItemTrailingIconColor / VibrantMenuTokens
|
|
1396
|
+
selected ? colors.selectedText : colors.trailingIconColor
|
|
1397
|
+
),
|
|
1398
|
+
"aria-hidden": trailingIcon ? "true" : void 0,
|
|
1399
|
+
children: trailingText ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-label-small tracking-wider", children: trailingText }) : trailingIcon
|
|
1400
|
+
}
|
|
1401
|
+
)
|
|
1402
|
+
]
|
|
1403
|
+
})
|
|
1404
|
+
)
|
|
1405
|
+
})
|
|
1406
|
+
);
|
|
1407
|
+
}
|
|
1408
|
+
);
|
|
1409
|
+
MenuItem.displayName = "MenuItem";
|
|
1410
|
+
function SubMenu({
|
|
1411
|
+
children,
|
|
1412
|
+
trigger,
|
|
1413
|
+
side = "right",
|
|
1414
|
+
colorVariant: propColorVariant,
|
|
1415
|
+
hoverOpenDelay = 200,
|
|
1416
|
+
hoverCloseDelay = 300
|
|
1417
|
+
}) {
|
|
1418
|
+
const { colorVariant: contextColorVariant, menuPrimitive } = useMenuContext();
|
|
1419
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1420
|
+
const [open, setOpen] = React38__namespace.useState(false);
|
|
1421
|
+
const openTimerRef = React38__namespace.useRef(null);
|
|
1422
|
+
const closeTimerRef = React38__namespace.useRef(
|
|
1423
|
+
null
|
|
601
1424
|
);
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
1425
|
+
const clearTimers = React38__namespace.useCallback(() => {
|
|
1426
|
+
if (openTimerRef.current) clearTimeout(openTimerRef.current);
|
|
1427
|
+
if (closeTimerRef.current) clearTimeout(closeTimerRef.current);
|
|
1428
|
+
}, []);
|
|
1429
|
+
const handleTriggerPointerEnter = React38__namespace.useCallback(() => {
|
|
1430
|
+
clearTimers();
|
|
1431
|
+
openTimerRef.current = setTimeout(() => setOpen(true), hoverOpenDelay);
|
|
1432
|
+
}, [hoverOpenDelay, clearTimers]);
|
|
1433
|
+
const handleTriggerPointerLeave = React38__namespace.useCallback(() => {
|
|
1434
|
+
clearTimers();
|
|
1435
|
+
closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
|
|
1436
|
+
}, [hoverCloseDelay, clearTimers]);
|
|
1437
|
+
const handleContentPointerEnter = React38__namespace.useCallback(() => {
|
|
1438
|
+
clearTimers();
|
|
1439
|
+
}, [clearTimers]);
|
|
1440
|
+
const handleContentPointerLeave = React38__namespace.useCallback(() => {
|
|
1441
|
+
clearTimers();
|
|
1442
|
+
closeTimerRef.current = setTimeout(() => setOpen(false), hoverCloseDelay);
|
|
1443
|
+
}, [hoverCloseDelay, clearTimers]);
|
|
1444
|
+
React38__namespace.useEffect(() => () => clearTimers(), [clearTimers]);
|
|
1445
|
+
const Sub3 = menuPrimitive === "context" ? RxContextMenu__namespace.Sub : DropdownMenu__namespace.Sub;
|
|
1446
|
+
const SubTrigger3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubTrigger : DropdownMenu__namespace.SubTrigger;
|
|
1447
|
+
const SubContent3 = menuPrimitive === "context" ? RxContextMenu__namespace.SubContent : DropdownMenu__namespace.SubContent;
|
|
1448
|
+
const Portal7 = menuPrimitive === "context" ? RxContextMenu__namespace.Portal : DropdownMenu__namespace.Portal;
|
|
1449
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Sub3, { open, onOpenChange: setOpen, children: [
|
|
1450
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1451
|
+
SubTrigger3,
|
|
1452
|
+
{
|
|
1453
|
+
className: "w-full outline-none",
|
|
1454
|
+
onPointerEnter: handleTriggerPointerEnter,
|
|
1455
|
+
onPointerLeave: handleTriggerPointerLeave,
|
|
1456
|
+
children: React38__namespace.isValidElement(trigger) ? React38__namespace.cloneElement(trigger, {
|
|
1457
|
+
isSubTrigger: true,
|
|
1458
|
+
// Auto-add chevron if missing
|
|
1459
|
+
trailingIcon: trigger.props.trailingIcon || /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "chevron_right", size: 20 })
|
|
1460
|
+
}) : trigger
|
|
1461
|
+
}
|
|
1462
|
+
),
|
|
1463
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: open && /* @__PURE__ */ jsxRuntime.jsx(Portal7, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1464
|
+
SubContent3,
|
|
1465
|
+
{
|
|
1466
|
+
sideOffset: 4,
|
|
1467
|
+
alignOffset: -4,
|
|
1468
|
+
forceMount: true,
|
|
1469
|
+
className: "outline-none",
|
|
1470
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1471
|
+
SubMenuContent,
|
|
1472
|
+
{
|
|
1473
|
+
side,
|
|
1474
|
+
colorVariant,
|
|
1475
|
+
onPointerEnter: handleContentPointerEnter,
|
|
1476
|
+
onPointerLeave: handleContentPointerLeave,
|
|
1477
|
+
children
|
|
1478
|
+
}
|
|
1479
|
+
)
|
|
1480
|
+
}
|
|
1481
|
+
) }) })
|
|
1482
|
+
] });
|
|
1483
|
+
}
|
|
1484
|
+
SubMenu.displayName = "SubMenu";
|
|
1485
|
+
function SubMenuContent({
|
|
1486
|
+
children,
|
|
1487
|
+
side,
|
|
1488
|
+
colorVariant: propColorVariant,
|
|
1489
|
+
onPointerEnter,
|
|
1490
|
+
onPointerLeave
|
|
1491
|
+
}) {
|
|
1492
|
+
const { menuVariant, colorVariant: contextColorVariant } = useMenuContext();
|
|
1493
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1494
|
+
const colors = menuVariant === "baseline" ? BASELINE_COLORS : colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
606
1495
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
"rounded-lg px-3 py-2 text-sm text-m3-on-surface",
|
|
614
|
-
"outline-none transition-colors duration-150",
|
|
615
|
-
"hover:bg-m3-on-surface/8",
|
|
616
|
-
"focus:bg-m3-on-surface/12",
|
|
617
|
-
"data-disabled:pointer-events-none data-disabled:opacity-38",
|
|
618
|
-
"focus-visible:ring-0",
|
|
619
|
-
// Radix gốc handle ring internally
|
|
620
|
-
inset && "pl-8",
|
|
621
|
-
className
|
|
622
|
-
)
|
|
623
|
-
}, props)
|
|
624
|
-
);
|
|
625
|
-
});
|
|
626
|
-
DropdownMenuItem.displayName = "DropdownMenuItem";
|
|
627
|
-
var DropdownMenuCheckboxItem = React31__namespace.forwardRef((_a, ref) => {
|
|
628
|
-
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
|
629
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
630
|
-
RadixDropdown__namespace.CheckboxItem,
|
|
631
|
-
__spreadProps(__spreadValues({
|
|
632
|
-
ref,
|
|
1496
|
+
react.m.div,
|
|
1497
|
+
{
|
|
1498
|
+
role: "menu",
|
|
1499
|
+
"aria-orientation": "vertical",
|
|
1500
|
+
onPointerEnter,
|
|
1501
|
+
onPointerLeave,
|
|
633
1502
|
className: cn(
|
|
634
|
-
"
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
1503
|
+
"z-50 flex flex-col",
|
|
1504
|
+
// Width constraints
|
|
1505
|
+
MENU_MIN_WIDTH,
|
|
1506
|
+
MENU_MAX_WIDTH,
|
|
1507
|
+
// Vertical padding: 8dp
|
|
1508
|
+
MENU_POPUP_PADDING_Y,
|
|
1509
|
+
// Gap between groups: 2dp
|
|
1510
|
+
MENU_GROUP_GAP,
|
|
1511
|
+
// Container background
|
|
1512
|
+
colors.containerBg,
|
|
1513
|
+
// Container shape: CornerExtraSmall (4px)
|
|
1514
|
+
MENU_CONTAINER_SHAPE,
|
|
1515
|
+
// Elevation-2 shadow
|
|
1516
|
+
"elevation-2",
|
|
1517
|
+
// Overflow clip
|
|
1518
|
+
"overflow-hidden",
|
|
1519
|
+
"outline-none"
|
|
640
1520
|
),
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
}
|
|
650
|
-
DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
|
|
651
|
-
var DropdownMenuRadioItem = React31__namespace.forwardRef((_a, ref) => {
|
|
652
|
-
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
653
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
654
|
-
RadixDropdown__namespace.RadioItem,
|
|
655
|
-
__spreadProps(__spreadValues({
|
|
656
|
-
ref,
|
|
657
|
-
className: cn(
|
|
658
|
-
"relative flex cursor-pointer select-none items-center gap-2",
|
|
659
|
-
"rounded-lg py-2 pl-8 pr-3 text-sm text-m3-on-surface",
|
|
660
|
-
"outline-none transition-colors duration-150",
|
|
661
|
-
"hover:bg-m3-on-surface/8 focus:bg-m3-on-surface/12",
|
|
662
|
-
"data-disabled:pointer-events-none data-disabled:opacity-38",
|
|
663
|
-
className
|
|
664
|
-
)
|
|
665
|
-
}, props), {
|
|
666
|
-
children: [
|
|
667
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-4 w-4 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(RadixDropdown__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: "circle", fill: 1, size: 8, "aria-hidden": "true" }) }) }),
|
|
668
|
-
children
|
|
669
|
-
]
|
|
670
|
-
})
|
|
671
|
-
);
|
|
672
|
-
});
|
|
673
|
-
DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
|
|
674
|
-
var DropdownMenuSeparator = React31__namespace.forwardRef((_a, ref) => {
|
|
675
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
676
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
677
|
-
RadixDropdown__namespace.Separator,
|
|
678
|
-
__spreadValues({
|
|
679
|
-
ref,
|
|
680
|
-
className: cn("my-1 h-px bg-m3-outline-variant", className)
|
|
681
|
-
}, props)
|
|
1521
|
+
variants: SUBMENU_CONTAINER_VARIANTS,
|
|
1522
|
+
initial: "hidden",
|
|
1523
|
+
animate: "visible",
|
|
1524
|
+
exit: "exit",
|
|
1525
|
+
style: {
|
|
1526
|
+
transformOrigin: side === "right" ? "top left" : "top right"
|
|
1527
|
+
},
|
|
1528
|
+
children
|
|
1529
|
+
}
|
|
682
1530
|
);
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
var
|
|
686
|
-
var _b = _a, { className,
|
|
1531
|
+
}
|
|
1532
|
+
SubMenuContent.displayName = "SubMenuContent";
|
|
1533
|
+
var VerticalMenuDivider = React38__namespace.forwardRef((_a, ref) => {
|
|
1534
|
+
var _b = _a, { className, index, count, isGapVariant } = _b, props = __objRest(_b, ["className", "index", "count", "isGapVariant"]);
|
|
687
1535
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
688
|
-
|
|
1536
|
+
"hr",
|
|
689
1537
|
__spreadValues({
|
|
690
1538
|
ref,
|
|
691
1539
|
className: cn(
|
|
692
|
-
|
|
693
|
-
|
|
1540
|
+
// HorizontalDividerPadding: horizontal=12dp, vertical=2dp
|
|
1541
|
+
"mx-3 my-0.5",
|
|
1542
|
+
// 1px height, no default border
|
|
1543
|
+
"h-px border-0",
|
|
1544
|
+
// Source: MenuDefaults.HorizontalDividerPadding / outline-variant
|
|
1545
|
+
"bg-m3-outline-variant",
|
|
694
1546
|
className
|
|
695
1547
|
)
|
|
696
1548
|
}, props)
|
|
697
1549
|
);
|
|
698
1550
|
});
|
|
699
|
-
|
|
700
|
-
var
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
{
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
1551
|
+
VerticalMenuDivider.displayName = "VerticalMenuDivider";
|
|
1552
|
+
var VerticalMenuGroup = MenuGroup;
|
|
1553
|
+
var VerticalMenuContent = React38__namespace.forwardRef(
|
|
1554
|
+
(_a, ref) => {
|
|
1555
|
+
var _b = _a, {
|
|
1556
|
+
children,
|
|
1557
|
+
separatorStyle = "gap",
|
|
1558
|
+
colorVariant: propColorVariant,
|
|
1559
|
+
className
|
|
1560
|
+
} = _b, props = __objRest(_b, [
|
|
1561
|
+
"children",
|
|
1562
|
+
"separatorStyle",
|
|
1563
|
+
"colorVariant",
|
|
1564
|
+
"className"
|
|
1565
|
+
]);
|
|
1566
|
+
const { colorVariant: contextColorVariant } = useMenuContext();
|
|
1567
|
+
const colorVariant = propColorVariant != null ? propColorVariant : contextColorVariant;
|
|
1568
|
+
const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1569
|
+
const flattenChildren = (children2) => {
|
|
1570
|
+
return React38__namespace.Children.toArray(children2).reduce(
|
|
1571
|
+
(acc, child) => {
|
|
1572
|
+
if (React38__namespace.isValidElement(child)) {
|
|
1573
|
+
if (child.type === React38__namespace.Fragment) {
|
|
1574
|
+
return acc.concat(
|
|
1575
|
+
flattenChildren(
|
|
1576
|
+
child.props.children
|
|
1577
|
+
)
|
|
1578
|
+
);
|
|
1579
|
+
}
|
|
1580
|
+
acc.push(child);
|
|
725
1581
|
}
|
|
1582
|
+
return acc;
|
|
1583
|
+
},
|
|
1584
|
+
[]
|
|
1585
|
+
);
|
|
1586
|
+
};
|
|
1587
|
+
const validChildren = flattenChildren(children);
|
|
1588
|
+
const groupCount = validChildren.length;
|
|
1589
|
+
const enhancedChildren = validChildren.map(
|
|
1590
|
+
(child, i) => React38__namespace.cloneElement(child, {
|
|
1591
|
+
index: i,
|
|
1592
|
+
count: groupCount,
|
|
1593
|
+
isGapVariant: separatorStyle === "gap"
|
|
1594
|
+
})
|
|
1595
|
+
);
|
|
1596
|
+
const renderedChildren = separatorStyle === "divider" ? enhancedChildren.reduce((acc, child, i) => {
|
|
1597
|
+
if (i > 0) {
|
|
1598
|
+
acc.push(
|
|
1599
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1600
|
+
VerticalMenuDivider,
|
|
1601
|
+
{},
|
|
1602
|
+
`divider-${child.key || i}`
|
|
1603
|
+
)
|
|
1604
|
+
);
|
|
1605
|
+
}
|
|
1606
|
+
acc.push(child);
|
|
1607
|
+
return acc;
|
|
1608
|
+
}, []) : enhancedChildren;
|
|
1609
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1610
|
+
"div",
|
|
1611
|
+
__spreadProps(__spreadValues({
|
|
1612
|
+
ref,
|
|
1613
|
+
className: cn(
|
|
1614
|
+
"flex flex-col w-full",
|
|
1615
|
+
// Gap variant: transparent background + 2dp gap — page bg shows through gaps.
|
|
1616
|
+
// Divider variant: solid container background behind all groups.
|
|
1617
|
+
separatorStyle === "gap" ? cn("bg-transparent", MENU_GROUP_GAP) : colors.containerBg,
|
|
1618
|
+
className
|
|
726
1619
|
)
|
|
727
|
-
|
|
728
|
-
|
|
1620
|
+
}, props), {
|
|
1621
|
+
children: renderedChildren
|
|
1622
|
+
})
|
|
1623
|
+
);
|
|
1624
|
+
}
|
|
1625
|
+
);
|
|
1626
|
+
VerticalMenuContent.displayName = "VerticalMenuContent";
|
|
1627
|
+
var VerticalMenu = React38__namespace.forwardRef((_a, ref) => {
|
|
1628
|
+
var _b = _a, { children, colorVariant = "standard", className } = _b, props = __objRest(_b, ["children", "colorVariant", "className"]);
|
|
1629
|
+
const noop = React38__namespace.useCallback(() => {
|
|
1630
|
+
}, []);
|
|
1631
|
+
const colors = colorVariant === "vibrant" ? VIBRANT_COLORS : STANDARD_COLORS;
|
|
1632
|
+
const containerRef = React38__namespace.useRef(null);
|
|
1633
|
+
const mergedRef = React38__namespace.useCallback(
|
|
1634
|
+
(node) => {
|
|
1635
|
+
containerRef.current = node;
|
|
1636
|
+
if (typeof ref === "function") ref(node);
|
|
1637
|
+
else if (ref)
|
|
1638
|
+
ref.current = node;
|
|
1639
|
+
},
|
|
1640
|
+
[ref]
|
|
729
1641
|
);
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
var
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
1642
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
1643
|
+
(e) => {
|
|
1644
|
+
var _a2;
|
|
1645
|
+
if (!containerRef.current) return;
|
|
1646
|
+
const items = Array.from(
|
|
1647
|
+
containerRef.current.querySelectorAll(
|
|
1648
|
+
'[role="menuitem"]:not([aria-disabled="true"]):not([tabindex="-1"]),[role="menuitemcheckbox"]:not([aria-disabled="true"]):not([tabindex="-1"]),[role="menuitemradio"]:not([aria-disabled="true"]):not([tabindex="-1"])'
|
|
1649
|
+
)
|
|
1650
|
+
);
|
|
1651
|
+
if (!items.length) return;
|
|
1652
|
+
const idx = items.indexOf(document.activeElement);
|
|
1653
|
+
let next = null;
|
|
1654
|
+
switch (e.key) {
|
|
1655
|
+
case "ArrowDown":
|
|
1656
|
+
e.preventDefault();
|
|
1657
|
+
next = idx < items.length - 1 ? idx + 1 : 0;
|
|
1658
|
+
break;
|
|
1659
|
+
case "ArrowUp":
|
|
1660
|
+
e.preventDefault();
|
|
1661
|
+
next = idx > 0 ? idx - 1 : items.length - 1;
|
|
1662
|
+
break;
|
|
1663
|
+
case "Home":
|
|
1664
|
+
e.preventDefault();
|
|
1665
|
+
next = 0;
|
|
1666
|
+
break;
|
|
1667
|
+
case "End":
|
|
1668
|
+
e.preventDefault();
|
|
1669
|
+
next = items.length - 1;
|
|
1670
|
+
break;
|
|
1671
|
+
default:
|
|
1672
|
+
return;
|
|
1673
|
+
}
|
|
1674
|
+
if (next !== null) (_a2 = items[next]) == null ? void 0 : _a2.focus();
|
|
1675
|
+
},
|
|
1676
|
+
[]
|
|
1677
|
+
);
|
|
1678
|
+
const separatorStyle = detectSeparatorStyle(children);
|
|
1679
|
+
const isGapVariant = separatorStyle !== "divider";
|
|
738
1680
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
1681
|
+
MenuProvider,
|
|
1682
|
+
{
|
|
1683
|
+
variant: "expressive",
|
|
1684
|
+
colorVariant,
|
|
1685
|
+
menuPrimitive: "static",
|
|
1686
|
+
open: true,
|
|
1687
|
+
onOpenChange: noop,
|
|
1688
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1689
|
+
"div",
|
|
1690
|
+
__spreadProps(__spreadValues({
|
|
1691
|
+
ref: mergedRef,
|
|
1692
|
+
role: "menu",
|
|
1693
|
+
"aria-orientation": "vertical",
|
|
1694
|
+
onKeyDown: handleKeyDown,
|
|
1695
|
+
className: cn(
|
|
1696
|
+
// Width constraints: 112dp min, 280dp max (MenuTokens)
|
|
1697
|
+
MENU_MIN_WIDTH,
|
|
1698
|
+
MENU_MAX_WIDTH,
|
|
1699
|
+
"flex flex-col",
|
|
1700
|
+
isGapVariant ? [
|
|
1701
|
+
// GAP VARIANT: NO overflow-hidden — groups must morph freely.
|
|
1702
|
+
"outline-none"
|
|
1703
|
+
// NO background — transparent between segments.
|
|
1704
|
+
// NO rounded corners — each group manages its own shape.
|
|
1705
|
+
// Elevation is managed by each individual group.
|
|
1706
|
+
] : [
|
|
1707
|
+
// DIVIDER VARIANT: Container clips the content.
|
|
1708
|
+
"rounded-2xl",
|
|
1709
|
+
"overflow-hidden",
|
|
1710
|
+
colors.containerBg,
|
|
1711
|
+
"elevation-2",
|
|
1712
|
+
"outline-none"
|
|
1713
|
+
],
|
|
1714
|
+
className
|
|
1715
|
+
)
|
|
1716
|
+
}, props), {
|
|
1717
|
+
children
|
|
1718
|
+
})
|
|
744
1719
|
)
|
|
745
|
-
}
|
|
1720
|
+
}
|
|
746
1721
|
);
|
|
747
|
-
};
|
|
748
|
-
|
|
1722
|
+
});
|
|
1723
|
+
VerticalMenu.displayName = "VerticalMenu";
|
|
1724
|
+
function detectSeparatorStyle(children) {
|
|
1725
|
+
const child = React38__namespace.Children.toArray(children).find(React38__namespace.isValidElement);
|
|
1726
|
+
if (child) {
|
|
1727
|
+
const style = child.props.separatorStyle;
|
|
1728
|
+
if (style) return style;
|
|
1729
|
+
}
|
|
1730
|
+
return "gap";
|
|
1731
|
+
}
|
|
749
1732
|
function MoreVertIcon() {
|
|
750
1733
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
751
1734
|
"span",
|
|
@@ -760,10 +1743,14 @@ function OverflowItem({ item }) {
|
|
|
760
1743
|
var _a;
|
|
761
1744
|
if (item.type === "toggleable") {
|
|
762
1745
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
763
|
-
|
|
1746
|
+
MenuItem,
|
|
764
1747
|
{
|
|
765
|
-
|
|
766
|
-
|
|
1748
|
+
role: "menuitemcheckbox",
|
|
1749
|
+
selected: (_a = item.checked) != null ? _a : false,
|
|
1750
|
+
onClick: () => {
|
|
1751
|
+
var _a2;
|
|
1752
|
+
return (_a2 = item.onCheckedChange) == null ? void 0 : _a2.call(item, !item.checked);
|
|
1753
|
+
},
|
|
767
1754
|
disabled: item.enabled === false,
|
|
768
1755
|
children: item.label
|
|
769
1756
|
}
|
|
@@ -778,15 +1765,15 @@ function OverflowItem({ item }) {
|
|
|
778
1765
|
}
|
|
779
1766
|
}) });
|
|
780
1767
|
}
|
|
781
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1768
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MenuItem, { onClick: item.onClick, disabled: item.enabled === false, children: item.label });
|
|
782
1769
|
}
|
|
783
1770
|
function AppBarOverflowIndicator({
|
|
784
1771
|
items,
|
|
785
1772
|
className
|
|
786
1773
|
}) {
|
|
787
1774
|
if (items.length === 0) return null;
|
|
788
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
789
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1775
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Menu, { children: [
|
|
1776
|
+
/* @__PURE__ */ jsxRuntime.jsx(MenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
790
1777
|
"button",
|
|
791
1778
|
{
|
|
792
1779
|
type: "button",
|
|
@@ -805,7 +1792,7 @@ function AppBarOverflowIndicator({
|
|
|
805
1792
|
children: /* @__PURE__ */ jsxRuntime.jsx(MoreVertIcon, {})
|
|
806
1793
|
}
|
|
807
1794
|
) }),
|
|
808
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1795
|
+
/* @__PURE__ */ jsxRuntime.jsx(MenuContent, { align: "end", sideOffset: 4, children: items.map((item, index) => (
|
|
809
1796
|
// biome-ignore lint/suspicious/noArrayIndexKey: static list from props
|
|
810
1797
|
/* @__PURE__ */ jsxRuntime.jsx(OverflowItem, { item }, index)
|
|
811
1798
|
)) })
|
|
@@ -816,11 +1803,11 @@ function AppBarColumn({
|
|
|
816
1803
|
maxItemCount,
|
|
817
1804
|
className
|
|
818
1805
|
}) {
|
|
819
|
-
const containerRef =
|
|
820
|
-
const [visibleCount, setVisibleCount] =
|
|
1806
|
+
const containerRef = React38__namespace.useRef(null);
|
|
1807
|
+
const [visibleCount, setVisibleCount] = React38__namespace.useState(
|
|
821
1808
|
maxItemCount != null ? maxItemCount : items.length
|
|
822
1809
|
);
|
|
823
|
-
|
|
1810
|
+
React38__namespace.useEffect(() => {
|
|
824
1811
|
if (maxItemCount !== void 0) {
|
|
825
1812
|
setVisibleCount(Math.min(maxItemCount, items.length));
|
|
826
1813
|
return;
|
|
@@ -868,11 +1855,11 @@ function AppBarColumn({
|
|
|
868
1855
|
);
|
|
869
1856
|
}
|
|
870
1857
|
function AppBarRow({ items, maxItemCount, className }) {
|
|
871
|
-
const containerRef =
|
|
872
|
-
const [visibleCount, setVisibleCount] =
|
|
1858
|
+
const containerRef = React38__namespace.useRef(null);
|
|
1859
|
+
const [visibleCount, setVisibleCount] = React38__namespace.useState(
|
|
873
1860
|
maxItemCount != null ? maxItemCount : items.length
|
|
874
1861
|
);
|
|
875
|
-
|
|
1862
|
+
React38__namespace.useEffect(() => {
|
|
876
1863
|
if (maxItemCount !== void 0) {
|
|
877
1864
|
setVisibleCount(Math.min(maxItemCount, items.length));
|
|
878
1865
|
return;
|
|
@@ -926,12 +1913,12 @@ function useAppBarScroll({
|
|
|
926
1913
|
collapsedHeight = 64,
|
|
927
1914
|
expandedHeight = 112
|
|
928
1915
|
} = {}) {
|
|
929
|
-
const [isScrolled, setIsScrolled] =
|
|
930
|
-
const [collapsedFraction, setCollapsedFraction] =
|
|
931
|
-
const [isHidden, setIsHidden] =
|
|
932
|
-
const prevScrollYRef =
|
|
1916
|
+
const [isScrolled, setIsScrolled] = React38__namespace.useState(false);
|
|
1917
|
+
const [collapsedFraction, setCollapsedFraction] = React38__namespace.useState(0);
|
|
1918
|
+
const [isHidden, setIsHidden] = React38__namespace.useState(false);
|
|
1919
|
+
const prevScrollYRef = React38__namespace.useRef(0);
|
|
933
1920
|
const hideThreshold = 64;
|
|
934
|
-
|
|
1921
|
+
React38__namespace.useEffect(() => {
|
|
935
1922
|
var _a;
|
|
936
1923
|
const scrollDistance = expandedHeight - collapsedHeight;
|
|
937
1924
|
const getScrollY = () => {
|
|
@@ -1052,7 +2039,7 @@ function useFlexibleAppBar({
|
|
|
1052
2039
|
expandedHeight
|
|
1053
2040
|
});
|
|
1054
2041
|
const scrollProgress = react.useMotionValue(0);
|
|
1055
|
-
|
|
2042
|
+
React38__namespace.useEffect(() => {
|
|
1056
2043
|
scrollProgress.set(
|
|
1057
2044
|
shouldReduceMotion ? collapsedFraction > 0.5 ? 1 : 0 : collapsedFraction
|
|
1058
2045
|
);
|
|
@@ -1393,7 +2380,7 @@ function SearchAppBar({
|
|
|
1393
2380
|
}) {
|
|
1394
2381
|
var _a, _b;
|
|
1395
2382
|
const shouldReduceMotion = react.useReducedMotion();
|
|
1396
|
-
const [isSearchOpen, setIsSearchOpen] =
|
|
2383
|
+
const [isSearchOpen, setIsSearchOpen] = React38__namespace.useState(false);
|
|
1397
2384
|
const { isScrolled } = useAppBarScroll({
|
|
1398
2385
|
scrollElement,
|
|
1399
2386
|
behavior: scrollBehavior === "exitUntilCollapsed" ? "pinned" : scrollBehavior
|
|
@@ -1507,8 +2494,8 @@ function SearchView({
|
|
|
1507
2494
|
className
|
|
1508
2495
|
}) {
|
|
1509
2496
|
const shouldReduceMotion = react.useReducedMotion();
|
|
1510
|
-
const inputRef =
|
|
1511
|
-
|
|
2497
|
+
const inputRef = React38__namespace.useRef(null);
|
|
2498
|
+
React38__namespace.useEffect(() => {
|
|
1512
2499
|
const timer = window.setTimeout(() => {
|
|
1513
2500
|
var _a;
|
|
1514
2501
|
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
@@ -1778,9 +2765,9 @@ function formatBadgeLabel(children, max) {
|
|
|
1778
2765
|
return "";
|
|
1779
2766
|
}
|
|
1780
2767
|
function detectBadgeHasContent(badge) {
|
|
1781
|
-
return
|
|
2768
|
+
return React38__namespace.isValidElement(badge) && badge.props.children != null;
|
|
1782
2769
|
}
|
|
1783
|
-
var BadgeImpl =
|
|
2770
|
+
var BadgeImpl = React38__namespace.forwardRef(
|
|
1784
2771
|
(_a, ref) => {
|
|
1785
2772
|
var _b = _a, {
|
|
1786
2773
|
children,
|
|
@@ -1834,7 +2821,7 @@ var BadgeImpl = React31__namespace.forwardRef(
|
|
|
1834
2821
|
}
|
|
1835
2822
|
);
|
|
1836
2823
|
BadgeImpl.displayName = "Badge";
|
|
1837
|
-
var Badge =
|
|
2824
|
+
var Badge = React38__namespace.memo(BadgeImpl);
|
|
1838
2825
|
function BadgedBox({
|
|
1839
2826
|
badge,
|
|
1840
2827
|
children,
|
|
@@ -1900,11 +2887,11 @@ var ROTATE_KEY_SPLINES = [
|
|
|
1900
2887
|
var ROTATE_VALUES = "0 24 24; 154 24 24; 309 24 24; 463 24 24; 617 24 24; 771 24 24; 926 24 24; 1080 24 24";
|
|
1901
2888
|
var DETERMINATE_CIRCLE = "M24 7 C34.49 7 41 13.51 41 24 C41 34.49 34.49 41 24 41 C13.51 41 7 34.49 7 24 C7 13.51 13.51 7 24 7 Z";
|
|
1902
2889
|
var DETERMINATE_SOFT_BURST = "M20.9 10.4 21.4 9.5 21.9 8.7 22.5 7.8 23.2 7.2 24.2 7 25.1 7.4 25.7 8.1 26.2 9 26.8 9.8 27.3 10.6 28.1 11.2 29 11.3 30 11 30.9 10.6 31.8 10.3 32.8 9.9 33.7 10 34.5 10.6 34.9 11.5 34.8 12.5 34.8 13.5 34.7 14.5 34.7 15.5 35.2 16.3 36 16.8 37 17.1 37.9 17.3 38.9 17.5 39.8 17.9 40.4 18.7 40.5 19.7 40 20.5 39.4 21.3 38.7 22 38.1 22.8 37.6 23.7 37.7 24.6 38.3 25.5 38.9 26.2 39.6 27 40.2 27.7 40.5 28.7 40.3 29.6 39.5 30.3 38.6 30.6 37.6 30.8 36.7 31 35.7 31.3 35 31.9 34.6 32.8 34.7 33.8 34.8 34.8 34.9 35.8 34.8 36.8 34.3 37.6 33.4 38.1 32.4 38 31.5 37.6 30.6 37.2 29.7 36.9 28.7 36.6 27.8 36.9 27.1 37.6 26.6 38.5 26.1 39.3 25.5 40.2 24.8 40.8 23.8 41 22.9 40.6 22.3 39.9 21.8 39 21.2 38.2 20.7 37.4 19.9 36.8 19 36.7 18 37 17.1 37.4 16.2 37.7 15.2 38.1 14.3 38 13.5 37.4 13.1 36.5 13.2 35.5 13.2 34.5 13.3 33.5 13.3 32.5 12.8 31.7 12 31.2 11 31 10.1 30.7 9.1 30.5 8.2 30.1 7.6 29.3 7.5 28.3 8 27.5 8.7 26.7 9.3 26 9.9 25.2 10.4 24.3 10.3 23.4 9.7 22.5 9.1 21.8 8.4 21 7.8 20.3 7.5 19.3 7.7 18.4 8.5 17.7 9.4 17.4 10.4 17.2 11.3 17 12.3 16.7 13 16.1 13.4 15.2 13.3 14.2 13.2 13.2 13.1 12.2 13.2 11.2 13.7 10.4 14.6 9.9 15.6 10 16.5 10.4 17.4 10.8 18.3 11.1 19.3 11.4 20.2 11.1Z";
|
|
1903
|
-
var IndeterminateSvg =
|
|
2890
|
+
var IndeterminateSvg = React38__namespace.memo(function IndeterminateSvg2({
|
|
1904
2891
|
size
|
|
1905
2892
|
}) {
|
|
1906
|
-
const [ready, setReady] =
|
|
1907
|
-
|
|
2893
|
+
const [ready, setReady] = React38__namespace.useState(false);
|
|
2894
|
+
React38__namespace.useEffect(() => {
|
|
1908
2895
|
const raf = requestAnimationFrame(() => setReady(true));
|
|
1909
2896
|
return () => cancelAnimationFrame(raf);
|
|
1910
2897
|
}, []);
|
|
@@ -1949,7 +2936,7 @@ var IndeterminateSvg = React31__namespace.memo(function IndeterminateSvg2({
|
|
|
1949
2936
|
}
|
|
1950
2937
|
);
|
|
1951
2938
|
});
|
|
1952
|
-
var DeterminateSvg =
|
|
2939
|
+
var DeterminateSvg = React38__namespace.memo(function DeterminateSvg2({
|
|
1953
2940
|
size,
|
|
1954
2941
|
progress
|
|
1955
2942
|
}) {
|
|
@@ -1974,7 +2961,7 @@ var DeterminateSvg = React31__namespace.memo(function DeterminateSvg2({
|
|
|
1974
2961
|
}
|
|
1975
2962
|
);
|
|
1976
2963
|
});
|
|
1977
|
-
var LoadingIndicator =
|
|
2964
|
+
var LoadingIndicator = React38__namespace.forwardRef(
|
|
1978
2965
|
(_a, ref) => {
|
|
1979
2966
|
var _b = _a, {
|
|
1980
2967
|
variant = "uncontained",
|
|
@@ -2089,7 +3076,7 @@ function getSinePath(startX, endX, phase, wl, amp) {
|
|
|
2089
3076
|
d += ` L ${endX.toFixed(2)} ${yEnd.toFixed(2)}`;
|
|
2090
3077
|
return d;
|
|
2091
3078
|
}
|
|
2092
|
-
var CircularProgress =
|
|
3079
|
+
var CircularProgress = React38__namespace.forwardRef(
|
|
2093
3080
|
(_a, ref) => {
|
|
2094
3081
|
var _b = _a, {
|
|
2095
3082
|
value,
|
|
@@ -2127,15 +3114,15 @@ var CircularProgress = React31__namespace.forwardRef(
|
|
|
2127
3114
|
const isWavy = shape === "wavy";
|
|
2128
3115
|
const BASELINE_SIZE = 48;
|
|
2129
3116
|
const scaleFactor = size / BASELINE_SIZE;
|
|
2130
|
-
const effectiveAmplitude =
|
|
3117
|
+
const effectiveAmplitude = React38__namespace.useMemo(
|
|
2131
3118
|
() => amplitude != null ? amplitude : 1.6 * scaleFactor,
|
|
2132
3119
|
[amplitude, scaleFactor]
|
|
2133
3120
|
);
|
|
2134
|
-
const effectiveWavelength =
|
|
3121
|
+
const effectiveWavelength = React38__namespace.useMemo(
|
|
2135
3122
|
() => wavelength != null ? wavelength : 15 * scaleFactor,
|
|
2136
3123
|
[wavelength, scaleFactor]
|
|
2137
3124
|
);
|
|
2138
|
-
const wavyActivePath =
|
|
3125
|
+
const wavyActivePath = React38__namespace.useMemo(
|
|
2139
3126
|
() => isWavy ? generateWavyCircularPath(
|
|
2140
3127
|
center,
|
|
2141
3128
|
radius,
|
|
@@ -2144,8 +3131,8 @@ var CircularProgress = React31__namespace.forwardRef(
|
|
|
2144
3131
|
) : null,
|
|
2145
3132
|
[isWavy, center, radius, effectiveAmplitude, effectiveWavelength]
|
|
2146
3133
|
);
|
|
2147
|
-
const circumference =
|
|
2148
|
-
const gapForTrack =
|
|
3134
|
+
const circumference = React38__namespace.useMemo(() => 2 * Math.PI * radius, [radius]);
|
|
3135
|
+
const gapForTrack = React38__namespace.useMemo(
|
|
2149
3136
|
() => (gapSize + trackHeight) / circumference,
|
|
2150
3137
|
[gapSize, trackHeight, circumference]
|
|
2151
3138
|
);
|
|
@@ -2334,9 +3321,9 @@ var CircularProgress = React31__namespace.forwardRef(
|
|
|
2334
3321
|
);
|
|
2335
3322
|
CircularProgress.displayName = "CircularProgress";
|
|
2336
3323
|
function useContainerWidth() {
|
|
2337
|
-
const [width, setWidth] =
|
|
2338
|
-
const observerRef =
|
|
2339
|
-
const ref =
|
|
3324
|
+
const [width, setWidth] = React38__namespace.useState(0);
|
|
3325
|
+
const observerRef = React38__namespace.useRef(null);
|
|
3326
|
+
const ref = React38__namespace.useCallback((node) => {
|
|
2340
3327
|
if (observerRef.current) {
|
|
2341
3328
|
observerRef.current.disconnect();
|
|
2342
3329
|
observerRef.current = null;
|
|
@@ -2350,7 +3337,7 @@ function useContainerWidth() {
|
|
|
2350
3337
|
observerRef.current = obs;
|
|
2351
3338
|
}
|
|
2352
3339
|
}, []);
|
|
2353
|
-
|
|
3340
|
+
React38__namespace.useEffect(() => {
|
|
2354
3341
|
return () => {
|
|
2355
3342
|
if (observerRef.current) {
|
|
2356
3343
|
observerRef.current.disconnect();
|
|
@@ -2360,7 +3347,7 @@ function useContainerWidth() {
|
|
|
2360
3347
|
return [ref, width];
|
|
2361
3348
|
}
|
|
2362
3349
|
function useMergedRef(...refs) {
|
|
2363
|
-
return
|
|
3350
|
+
return React38__namespace.useCallback(
|
|
2364
3351
|
(node) => {
|
|
2365
3352
|
for (const ref of refs) {
|
|
2366
3353
|
if (typeof ref === "function") {
|
|
@@ -2374,7 +3361,7 @@ function useMergedRef(...refs) {
|
|
|
2374
3361
|
[refs]
|
|
2375
3362
|
);
|
|
2376
3363
|
}
|
|
2377
|
-
var FlatLinearTrack =
|
|
3364
|
+
var FlatLinearTrack = React38__namespace.memo(function FlatLinearTrack2({
|
|
2378
3365
|
trackHeight,
|
|
2379
3366
|
activeColor,
|
|
2380
3367
|
trackColor,
|
|
@@ -2450,7 +3437,7 @@ var FlatLinearTrack = React31__namespace.memo(function FlatLinearTrack2({
|
|
|
2450
3437
|
}
|
|
2451
3438
|
);
|
|
2452
3439
|
});
|
|
2453
|
-
var WavyLinearTrack =
|
|
3440
|
+
var WavyLinearTrack = React38__namespace.memo(function WavyLinearTrack2({
|
|
2454
3441
|
trackHeight,
|
|
2455
3442
|
svgHeight,
|
|
2456
3443
|
amplitude,
|
|
@@ -2469,13 +3456,13 @@ var WavyLinearTrack = React31__namespace.memo(function WavyLinearTrack2({
|
|
|
2469
3456
|
}) {
|
|
2470
3457
|
const isDeterminate = typeof value === "number";
|
|
2471
3458
|
const clampedValue = isDeterminate ? Math.max(0, Math.min(100, value)) : 100;
|
|
2472
|
-
const titleId =
|
|
3459
|
+
const titleId = React38__namespace.useId();
|
|
2473
3460
|
const [containerRef, width] = useContainerWidth();
|
|
2474
|
-
const activePathRef =
|
|
2475
|
-
const trackPathRef =
|
|
3461
|
+
const activePathRef = React38__namespace.useRef(null);
|
|
3462
|
+
const trackPathRef = React38__namespace.useRef(null);
|
|
2476
3463
|
const amplitudeMV = react.useMotionValue(amplitude);
|
|
2477
3464
|
const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 1);
|
|
2478
|
-
|
|
3465
|
+
React38__namespace.useEffect(() => {
|
|
2479
3466
|
if (isDeterminate) {
|
|
2480
3467
|
const fraction = clampedValue / 100;
|
|
2481
3468
|
let targetAmp = amplitude;
|
|
@@ -2646,7 +3633,7 @@ var WavyLinearTrack = React31__namespace.memo(function WavyLinearTrack2({
|
|
|
2646
3633
|
}
|
|
2647
3634
|
);
|
|
2648
3635
|
});
|
|
2649
|
-
var LinearProgress =
|
|
3636
|
+
var LinearProgress = React38__namespace.forwardRef(
|
|
2650
3637
|
(_a, ref) => {
|
|
2651
3638
|
var _b = _a, {
|
|
2652
3639
|
value,
|
|
@@ -2687,10 +3674,10 @@ var LinearProgress = React31__namespace.forwardRef(
|
|
|
2687
3674
|
]);
|
|
2688
3675
|
const isDeterminate = value !== void 0;
|
|
2689
3676
|
const clampedValue = isDeterminate ? Math.min(100, Math.max(0, value)) : 0;
|
|
2690
|
-
const containerRef =
|
|
3677
|
+
const containerRef = React38__namespace.useRef(null);
|
|
2691
3678
|
const mergedRef = useMergedRef(ref, containerRef);
|
|
2692
|
-
const [isRtl, setIsRtl] =
|
|
2693
|
-
|
|
3679
|
+
const [isRtl, setIsRtl] = React38__namespace.useState(false);
|
|
3680
|
+
React38__namespace.useEffect(() => {
|
|
2694
3681
|
if (containerRef.current) {
|
|
2695
3682
|
const dir = getComputedStyle(containerRef.current).direction;
|
|
2696
3683
|
setIsRtl(dir === "rtl");
|
|
@@ -2698,16 +3685,16 @@ var LinearProgress = React31__namespace.forwardRef(
|
|
|
2698
3685
|
}, []);
|
|
2699
3686
|
const isWavy = shape === "wavy";
|
|
2700
3687
|
const resolvedTrackShape = trackShape != null ? trackShape : shape;
|
|
2701
|
-
const effectiveAmplitude =
|
|
2702
|
-
const svgHeight =
|
|
3688
|
+
const effectiveAmplitude = React38__namespace.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
|
|
3689
|
+
const svgHeight = React38__namespace.useMemo(
|
|
2703
3690
|
() => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
|
|
2704
3691
|
[isWavy, trackHeight, effectiveAmplitude]
|
|
2705
3692
|
);
|
|
2706
|
-
const shouldShowStop =
|
|
3693
|
+
const shouldShowStop = React38__namespace.useMemo(
|
|
2707
3694
|
() => isDeterminate && resolvedTrackShape === "flat" && (showStopIndicator === true || showStopIndicator === "auto" && isDeterminate),
|
|
2708
3695
|
[isDeterminate, resolvedTrackShape, showStopIndicator]
|
|
2709
3696
|
);
|
|
2710
|
-
const stopSize =
|
|
3697
|
+
const stopSize = React38__namespace.useMemo(
|
|
2711
3698
|
() => Math.max(2, trackHeight > 4 ? 4 : trackHeight / 2),
|
|
2712
3699
|
[trackHeight]
|
|
2713
3700
|
);
|
|
@@ -2780,14 +3767,14 @@ var LinearProgress = React31__namespace.forwardRef(
|
|
|
2780
3767
|
}
|
|
2781
3768
|
);
|
|
2782
3769
|
LinearProgress.displayName = "LinearProgress";
|
|
2783
|
-
var ProgressIndicator =
|
|
3770
|
+
var ProgressIndicator = React38__namespace.forwardRef((props, ref) => {
|
|
2784
3771
|
if (props.variant === "circular") {
|
|
2785
3772
|
return /* @__PURE__ */ jsxRuntime.jsx(CircularProgress, __spreadValues({ ref }, props));
|
|
2786
3773
|
}
|
|
2787
3774
|
return /* @__PURE__ */ jsxRuntime.jsx(LinearProgress, __spreadValues({ ref }, props));
|
|
2788
3775
|
});
|
|
2789
3776
|
ProgressIndicator.displayName = "ProgressIndicator";
|
|
2790
|
-
var RippleItem =
|
|
3777
|
+
var RippleItem = React38__namespace.memo(function RippleItem2({
|
|
2791
3778
|
ripple,
|
|
2792
3779
|
onDone
|
|
2793
3780
|
}) {
|
|
@@ -2831,8 +3818,8 @@ function Ripple({
|
|
|
2831
3818
|
}
|
|
2832
3819
|
function useRippleState(options = {}) {
|
|
2833
3820
|
const { disabled = false } = options;
|
|
2834
|
-
const [ripples, setRipples] =
|
|
2835
|
-
const onPointerDown =
|
|
3821
|
+
const [ripples, setRipples] = React38__namespace.useState([]);
|
|
3822
|
+
const onPointerDown = React38__namespace.useCallback(
|
|
2836
3823
|
(e) => {
|
|
2837
3824
|
if (disabled) return;
|
|
2838
3825
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -2846,7 +3833,7 @@ function useRippleState(options = {}) {
|
|
|
2846
3833
|
},
|
|
2847
3834
|
[disabled]
|
|
2848
3835
|
);
|
|
2849
|
-
const removeRipple =
|
|
3836
|
+
const removeRipple = React38__namespace.useCallback((id) => {
|
|
2850
3837
|
setRipples((prev) => prev.filter((r) => r.id !== id));
|
|
2851
3838
|
}, []);
|
|
2852
3839
|
return { ripples, onPointerDown, removeRipple };
|
|
@@ -2975,15 +3962,12 @@ var buttonColorVariants = classVarianceAuthority.cva(
|
|
|
2975
3962
|
defaultVariants: { colorStyle: "filled" }
|
|
2976
3963
|
}
|
|
2977
3964
|
);
|
|
2978
|
-
function toSentenceCase(text) {
|
|
2979
|
-
return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
|
|
2980
|
-
}
|
|
2981
3965
|
function resolveLabel(children, asChild) {
|
|
2982
3966
|
if (asChild) {
|
|
2983
|
-
const child =
|
|
3967
|
+
const child = React38__namespace.Children.only(children);
|
|
2984
3968
|
return child.props.children;
|
|
2985
3969
|
}
|
|
2986
|
-
return
|
|
3970
|
+
return children;
|
|
2987
3971
|
}
|
|
2988
3972
|
var MOTION_PROP_KEYS = [
|
|
2989
3973
|
"animate",
|
|
@@ -3052,7 +4036,7 @@ function AnimatedIconSlot({
|
|
|
3052
4036
|
}
|
|
3053
4037
|
);
|
|
3054
4038
|
}
|
|
3055
|
-
var ButtonComponent =
|
|
4039
|
+
var ButtonComponent = React38__namespace.forwardRef(
|
|
3056
4040
|
(_a, ref) => {
|
|
3057
4041
|
var _b = _a, {
|
|
3058
4042
|
className,
|
|
@@ -3101,15 +4085,15 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3101
4085
|
const { pressed: pressedRadius } = (_b2 = radiusMap[size]) != null ? _b2 : radiusMap.sm;
|
|
3102
4086
|
const iconClass = (_c = SIZE_ICON_CLASS[size]) != null ? _c : "size-5";
|
|
3103
4087
|
const mergedStyle = __spreadValues(__spreadValues({}, SIZE_STYLES[size]), style);
|
|
3104
|
-
const labelText =
|
|
4088
|
+
const labelText = React38__namespace.useMemo(
|
|
3105
4089
|
() => resolveLabel(children, asChild),
|
|
3106
4090
|
[children, asChild]
|
|
3107
4091
|
);
|
|
3108
4092
|
const computedAriaLabel = ariaLabelProp || (typeof children === "string" ? children : void 0);
|
|
3109
4093
|
const needsTouchTarget = size === "xs" || size === "sm";
|
|
3110
4094
|
const motionRadius = react.useMotionValue(animateRadius);
|
|
3111
|
-
const asChildRef =
|
|
3112
|
-
const mergedRef =
|
|
4095
|
+
const asChildRef = React38__namespace.useRef(null);
|
|
4096
|
+
const mergedRef = React38__namespace.useCallback(
|
|
3113
4097
|
(node) => {
|
|
3114
4098
|
asChildRef.current = node;
|
|
3115
4099
|
if (typeof ref === "function") ref(node);
|
|
@@ -3118,27 +4102,27 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3118
4102
|
},
|
|
3119
4103
|
[ref]
|
|
3120
4104
|
);
|
|
3121
|
-
|
|
4105
|
+
React38__namespace.useEffect(
|
|
3122
4106
|
() => motionRadius.on("change", (v) => {
|
|
3123
4107
|
if (asChildRef.current)
|
|
3124
4108
|
asChildRef.current.style.borderRadius = `${v}px`;
|
|
3125
4109
|
}),
|
|
3126
4110
|
[motionRadius]
|
|
3127
4111
|
);
|
|
3128
|
-
|
|
4112
|
+
React38__namespace.useEffect(() => {
|
|
3129
4113
|
springAnimate(motionRadius, animateRadius);
|
|
3130
4114
|
}, [animateRadius, motionRadius]);
|
|
3131
4115
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
3132
4116
|
disabled: loading
|
|
3133
4117
|
});
|
|
3134
|
-
const handleClick =
|
|
4118
|
+
const handleClick = React38__namespace.useCallback(
|
|
3135
4119
|
(e) => {
|
|
3136
4120
|
if (loading) return e.preventDefault();
|
|
3137
4121
|
onClick == null ? void 0 : onClick(e);
|
|
3138
4122
|
},
|
|
3139
4123
|
[loading, onClick]
|
|
3140
4124
|
);
|
|
3141
|
-
const handleKeyDown =
|
|
4125
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
3142
4126
|
(e) => {
|
|
3143
4127
|
if (loading) return;
|
|
3144
4128
|
if (onClick && (e.key === "Enter" || e.key === " ")) {
|
|
@@ -3172,7 +4156,7 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3172
4156
|
react.m.span,
|
|
3173
4157
|
{
|
|
3174
4158
|
layout: "size",
|
|
3175
|
-
className: "inline-flex items-center gap-[inherit]",
|
|
4159
|
+
className: "inline-flex items-center h-full gap-[inherit]",
|
|
3176
4160
|
transition: SPRING_TRANSITION,
|
|
3177
4161
|
children: labelText
|
|
3178
4162
|
}
|
|
@@ -3181,7 +4165,7 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3181
4165
|
] });
|
|
3182
4166
|
if (asChild) {
|
|
3183
4167
|
const htmlProps = stripMotionProps(restProps);
|
|
3184
|
-
const child =
|
|
4168
|
+
const child = React38__namespace.Children.only(children);
|
|
3185
4169
|
const handleAsChildPointerDown = (e) => {
|
|
3186
4170
|
springAnimate(motionRadius, pressedRadius);
|
|
3187
4171
|
onPointerDown == null ? void 0 : onPointerDown(e);
|
|
@@ -3205,7 +4189,7 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3205
4189
|
}),
|
|
3206
4190
|
className: buttonClassName
|
|
3207
4191
|
}, htmlProps), {
|
|
3208
|
-
children:
|
|
4192
|
+
children: React38__namespace.cloneElement(child, { children: innerContent })
|
|
3209
4193
|
})
|
|
3210
4194
|
) });
|
|
3211
4195
|
}
|
|
@@ -3233,7 +4217,7 @@ var ButtonComponent = React31__namespace.forwardRef(
|
|
|
3233
4217
|
}
|
|
3234
4218
|
);
|
|
3235
4219
|
ButtonComponent.displayName = "Button";
|
|
3236
|
-
var Button =
|
|
4220
|
+
var Button = React38__namespace.memo(ButtonComponent);
|
|
3237
4221
|
var SIZE_PADDING_MAP = {
|
|
3238
4222
|
xs: "0.75rem",
|
|
3239
4223
|
sm: "1rem",
|
|
@@ -3262,7 +4246,7 @@ var PRESSED_RADIUS_MAP = {
|
|
|
3262
4246
|
lg: 28,
|
|
3263
4247
|
xl: 40
|
|
3264
4248
|
};
|
|
3265
|
-
var ButtonGroupComponent =
|
|
4249
|
+
var ButtonGroupComponent = React38__namespace.forwardRef(
|
|
3266
4250
|
(_a, ref) => {
|
|
3267
4251
|
var _b = _a, {
|
|
3268
4252
|
className,
|
|
@@ -3283,13 +4267,13 @@ var ButtonGroupComponent = React31__namespace.forwardRef(
|
|
|
3283
4267
|
"showCheck",
|
|
3284
4268
|
"children"
|
|
3285
4269
|
]);
|
|
3286
|
-
const [pressedIndex, setPressedIndex] =
|
|
3287
|
-
const childrenArray =
|
|
3288
|
-
() =>
|
|
4270
|
+
const [pressedIndex, setPressedIndex] = React38__namespace.useState(null);
|
|
4271
|
+
const childrenArray = React38__namespace.useMemo(
|
|
4272
|
+
() => React38__namespace.Children.toArray(children).filter(React38__namespace.isValidElement),
|
|
3289
4273
|
[children]
|
|
3290
4274
|
);
|
|
3291
4275
|
const count = childrenArray.length;
|
|
3292
|
-
const handlePointerLeaveAndUp =
|
|
4276
|
+
const handlePointerLeaveAndUp = React38__namespace.useCallback(() => {
|
|
3293
4277
|
setPressedIndex(null);
|
|
3294
4278
|
}, []);
|
|
3295
4279
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3428,7 +4412,7 @@ var ButtonGroupComponent = React31__namespace.forwardRef(
|
|
|
3428
4412
|
duration: 0.2
|
|
3429
4413
|
};
|
|
3430
4414
|
}
|
|
3431
|
-
return
|
|
4415
|
+
return React38__namespace.cloneElement(element, __spreadValues(__spreadProps(__spreadValues({
|
|
3432
4416
|
key: (_a2 = element.key) != null ? _a2 : index,
|
|
3433
4417
|
tabIndex: isFirst ? 0 : -1,
|
|
3434
4418
|
size: size || element.props.size,
|
|
@@ -3457,7 +4441,7 @@ var ButtonGroupComponent = React31__namespace.forwardRef(
|
|
|
3457
4441
|
}
|
|
3458
4442
|
);
|
|
3459
4443
|
ButtonGroupComponent.displayName = "ButtonGroup";
|
|
3460
|
-
var ButtonGroup =
|
|
4444
|
+
var ButtonGroup = React38__namespace.memo(ButtonGroupComponent);
|
|
3461
4445
|
var SHADOW = {
|
|
3462
4446
|
level0: "none",
|
|
3463
4447
|
level1: "0px 1px 2px 0px rgba(0,0,0,.3), 0px 1px 3px 1px rgba(0,0,0,.15)",
|
|
@@ -3516,7 +4500,7 @@ function useCardElevation(variant, disabled) {
|
|
|
3516
4500
|
}
|
|
3517
4501
|
};
|
|
3518
4502
|
}
|
|
3519
|
-
var CardImpl =
|
|
4503
|
+
var CardImpl = React38__namespace.forwardRef(
|
|
3520
4504
|
(_a, ref) => {
|
|
3521
4505
|
var _b = _a, {
|
|
3522
4506
|
className,
|
|
@@ -3614,7 +4598,7 @@ var CardImpl = React31__namespace.forwardRef(
|
|
|
3614
4598
|
}
|
|
3615
4599
|
);
|
|
3616
4600
|
CardImpl.displayName = "Card";
|
|
3617
|
-
var Card =
|
|
4601
|
+
var Card = React38__namespace.memo(CardImpl);
|
|
3618
4602
|
var MD3_STANDARD = [0.2, 0, 0, 1];
|
|
3619
4603
|
var MD3_FAST_EFFECTS = [0.3, 0, 1, 1];
|
|
3620
4604
|
var CHECKMARK_PATH = "M 4.5 9.5 L 7.5 12.5 L 13.5 5.5";
|
|
@@ -3628,7 +4612,7 @@ var NEXT_STATE = {
|
|
|
3628
4612
|
checked: "indeterminate",
|
|
3629
4613
|
indeterminate: "unchecked"
|
|
3630
4614
|
};
|
|
3631
|
-
var CheckboxVisual =
|
|
4615
|
+
var CheckboxVisual = React38__namespace.memo(function CheckboxVisual2({
|
|
3632
4616
|
isSelected,
|
|
3633
4617
|
isIndeterminate,
|
|
3634
4618
|
containerBg,
|
|
@@ -3699,7 +4683,7 @@ var CheckboxVisual = React31__namespace.memo(function CheckboxVisual2({
|
|
|
3699
4683
|
);
|
|
3700
4684
|
});
|
|
3701
4685
|
function useMergedRef2(externalRef, internalRef) {
|
|
3702
|
-
return
|
|
4686
|
+
return React38__namespace.useCallback(
|
|
3703
4687
|
(node) => {
|
|
3704
4688
|
internalRef.current = node;
|
|
3705
4689
|
if (!externalRef) return;
|
|
@@ -3712,7 +4696,7 @@ function useMergedRef2(externalRef, internalRef) {
|
|
|
3712
4696
|
[externalRef, internalRef]
|
|
3713
4697
|
);
|
|
3714
4698
|
}
|
|
3715
|
-
var CheckboxComponent =
|
|
4699
|
+
var CheckboxComponent = React38__namespace.forwardRef(
|
|
3716
4700
|
({
|
|
3717
4701
|
checked,
|
|
3718
4702
|
defaultChecked = false,
|
|
@@ -3734,20 +4718,20 @@ var CheckboxComponent = React31__namespace.forwardRef(
|
|
|
3734
4718
|
}, ref) => {
|
|
3735
4719
|
var _a;
|
|
3736
4720
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
3737
|
-
const generatedId =
|
|
4721
|
+
const generatedId = React38__namespace.useId();
|
|
3738
4722
|
const inputId = idProp != null ? idProp : label ? `checkbox-${generatedId}` : void 0;
|
|
3739
|
-
const [internalState, setInternalState] =
|
|
4723
|
+
const [internalState, setInternalState] = React38__namespace.useState(
|
|
3740
4724
|
() => defaultChecked ? "checked" : "unchecked"
|
|
3741
4725
|
);
|
|
3742
4726
|
const isControlled = stateProp !== void 0 || checked !== void 0;
|
|
3743
4727
|
const baseState = isControlled ? resolveState(checked, false, stateProp) : internalState;
|
|
3744
4728
|
const effectiveState = indeterminate ? "indeterminate" : baseState;
|
|
3745
|
-
const [ripples, setRipples] =
|
|
3746
|
-
const removeRipple =
|
|
4729
|
+
const [ripples, setRipples] = React38__namespace.useState([]);
|
|
4730
|
+
const removeRipple = React38__namespace.useCallback(
|
|
3747
4731
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
3748
4732
|
[]
|
|
3749
4733
|
);
|
|
3750
|
-
const onPointerDown =
|
|
4734
|
+
const onPointerDown = React38__namespace.useCallback(
|
|
3751
4735
|
(e) => {
|
|
3752
4736
|
if (disabled) return;
|
|
3753
4737
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -3761,7 +4745,7 @@ var CheckboxComponent = React31__namespace.forwardRef(
|
|
|
3761
4745
|
},
|
|
3762
4746
|
[disabled]
|
|
3763
4747
|
);
|
|
3764
|
-
const handleChange =
|
|
4748
|
+
const handleChange = React38__namespace.useCallback(
|
|
3765
4749
|
(e) => {
|
|
3766
4750
|
if (disabled) return;
|
|
3767
4751
|
if (stateProp !== void 0) {
|
|
@@ -3787,9 +4771,9 @@ var CheckboxComponent = React31__namespace.forwardRef(
|
|
|
3787
4771
|
onCheckedChange
|
|
3788
4772
|
]
|
|
3789
4773
|
);
|
|
3790
|
-
const inputRef =
|
|
4774
|
+
const inputRef = React38__namespace.useRef(null);
|
|
3791
4775
|
const mergedRef = useMergedRef2(ref, inputRef);
|
|
3792
|
-
|
|
4776
|
+
React38__namespace.useEffect(() => {
|
|
3793
4777
|
if (inputRef.current) {
|
|
3794
4778
|
inputRef.current.indeterminate = effectiveState === "indeterminate";
|
|
3795
4779
|
}
|
|
@@ -3914,13 +4898,13 @@ var CheckboxComponent = React31__namespace.forwardRef(
|
|
|
3914
4898
|
}
|
|
3915
4899
|
);
|
|
3916
4900
|
CheckboxComponent.displayName = "Checkbox";
|
|
3917
|
-
var Checkbox =
|
|
3918
|
-
var TriStateCheckboxComponent =
|
|
4901
|
+
var Checkbox = React38__namespace.memo(CheckboxComponent);
|
|
4902
|
+
var TriStateCheckboxComponent = React38__namespace.forwardRef((_a, ref) => {
|
|
3919
4903
|
var _b = _a, { state, onStateChange } = _b, rest = __objRest(_b, ["state", "onStateChange"]);
|
|
3920
4904
|
return /* @__PURE__ */ jsxRuntime.jsx(Checkbox, __spreadValues({ ref, state, onStateChange }, rest));
|
|
3921
4905
|
});
|
|
3922
4906
|
TriStateCheckboxComponent.displayName = "TriStateCheckbox";
|
|
3923
|
-
var TriStateCheckbox =
|
|
4907
|
+
var TriStateCheckbox = React38__namespace.memo(TriStateCheckboxComponent);
|
|
3924
4908
|
function CheckIcon({ className }) {
|
|
3925
4909
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3926
4910
|
"svg",
|
|
@@ -4014,7 +4998,7 @@ var chipVariants = classVarianceAuthority.cva(
|
|
|
4014
4998
|
defaultVariants: { variant: "assist" }
|
|
4015
4999
|
}
|
|
4016
5000
|
);
|
|
4017
|
-
var ChipImpl =
|
|
5001
|
+
var ChipImpl = React38__namespace.forwardRef(
|
|
4018
5002
|
(_a, ref) => {
|
|
4019
5003
|
var _b = _a, {
|
|
4020
5004
|
variant = "assist",
|
|
@@ -4050,7 +5034,7 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4050
5034
|
const showCheckmark = isFilter && selected;
|
|
4051
5035
|
const hasTrailingContent = !!trailingIcon || !!onRemove;
|
|
4052
5036
|
const hasLeadingContent = isFilter || !!resolvedLeadingIcon;
|
|
4053
|
-
const paddingClass =
|
|
5037
|
+
const paddingClass = React38__namespace.useMemo(
|
|
4054
5038
|
() => cn(
|
|
4055
5039
|
!isInput && !hasLeadingContent && !hasTrailingContent && "px-4",
|
|
4056
5040
|
!isInput && hasLeadingContent && !hasTrailingContent && "pl-2 pr-4",
|
|
@@ -4063,7 +5047,7 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4063
5047
|
),
|
|
4064
5048
|
[isInput, hasLeadingContent, hasTrailingContent]
|
|
4065
5049
|
);
|
|
4066
|
-
const stateClass =
|
|
5050
|
+
const stateClass = React38__namespace.useMemo(
|
|
4067
5051
|
() => cn(
|
|
4068
5052
|
(isFilter || isInput) && selected && "bg-m3-secondary-container text-m3-on-secondary-container border-none before:bg-m3-on-secondary-container",
|
|
4069
5053
|
elevated && !selected && "bg-m3-surface-container-low border-none elevation-1",
|
|
@@ -4074,7 +5058,7 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4074
5058
|
),
|
|
4075
5059
|
[isFilter, isInput, selected, elevated, disabled]
|
|
4076
5060
|
);
|
|
4077
|
-
const leadingIconColorClass =
|
|
5061
|
+
const leadingIconColorClass = React38__namespace.useMemo(
|
|
4078
5062
|
() => cn(
|
|
4079
5063
|
(variant === "assist" || variant === "suggestion") && "text-m3-primary",
|
|
4080
5064
|
isFilter && !selected && "text-m3-primary",
|
|
@@ -4085,7 +5069,7 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4085
5069
|
[variant, isFilter, isInput, selected]
|
|
4086
5070
|
);
|
|
4087
5071
|
const isCompound = !!onRemove;
|
|
4088
|
-
const
|
|
5072
|
+
const Root6 = isCompound ? "div" : "button";
|
|
4089
5073
|
const containerClass = cn(
|
|
4090
5074
|
chipVariants({ variant }),
|
|
4091
5075
|
!isCompound && paddingClass,
|
|
@@ -4155,7 +5139,7 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4155
5139
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: label })
|
|
4156
5140
|
] });
|
|
4157
5141
|
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4158
|
-
|
|
5142
|
+
Root6,
|
|
4159
5143
|
__spreadProps(__spreadValues(__spreadProps(__spreadValues({
|
|
4160
5144
|
ref: !isCompound ? ref : void 0,
|
|
4161
5145
|
type: !isCompound ? "button" : void 0
|
|
@@ -4246,8 +5230,8 @@ var ChipImpl = React31__namespace.forwardRef(
|
|
|
4246
5230
|
}
|
|
4247
5231
|
);
|
|
4248
5232
|
ChipImpl.displayName = "Chip";
|
|
4249
|
-
var Chip =
|
|
4250
|
-
var ScrollArea =
|
|
5233
|
+
var Chip = React38__namespace.memo(ChipImpl);
|
|
5234
|
+
var ScrollArea = React38__namespace.forwardRef(
|
|
4251
5235
|
(_a, ref) => {
|
|
4252
5236
|
var _b = _a, {
|
|
4253
5237
|
className,
|
|
@@ -4306,7 +5290,7 @@ var ScrollArea = React31__namespace.forwardRef(
|
|
|
4306
5290
|
}
|
|
4307
5291
|
);
|
|
4308
5292
|
ScrollArea.displayName = "ScrollArea";
|
|
4309
|
-
var ScrollAreaScrollbar =
|
|
5293
|
+
var ScrollAreaScrollbar = React38__namespace.forwardRef((_a, ref) => {
|
|
4310
5294
|
var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
|
|
4311
5295
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4312
5296
|
RadixScrollArea__namespace.Scrollbar,
|
|
@@ -4336,7 +5320,7 @@ var ScrollAreaScrollbar = React31__namespace.forwardRef((_a, ref) => {
|
|
|
4336
5320
|
);
|
|
4337
5321
|
});
|
|
4338
5322
|
ScrollAreaScrollbar.displayName = RadixScrollArea__namespace.Scrollbar.displayName;
|
|
4339
|
-
var ScrollAreaCorner =
|
|
5323
|
+
var ScrollAreaCorner = React38__namespace.forwardRef((_a, ref) => {
|
|
4340
5324
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4341
5325
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4342
5326
|
RadixScrollArea__namespace.Corner,
|
|
@@ -4431,7 +5415,7 @@ function mapDomToReact(node, key) {
|
|
|
4431
5415
|
props[propName] = attr.value;
|
|
4432
5416
|
}
|
|
4433
5417
|
}
|
|
4434
|
-
return
|
|
5418
|
+
return React38.createElement(
|
|
4435
5419
|
tagName,
|
|
4436
5420
|
props,
|
|
4437
5421
|
Array.from(el.childNodes).map((child, i) => mapDomToReact(child, i))
|
|
@@ -4440,8 +5424,8 @@ function mapDomToReact(node, key) {
|
|
|
4440
5424
|
return null;
|
|
4441
5425
|
}
|
|
4442
5426
|
function CodeContent({ html, code }) {
|
|
4443
|
-
const [parsedContent, setParsedContent] =
|
|
4444
|
-
|
|
5427
|
+
const [parsedContent, setParsedContent] = React38.useState(null);
|
|
5428
|
+
React38.useEffect(() => {
|
|
4445
5429
|
if (html) {
|
|
4446
5430
|
const parser = new DOMParser();
|
|
4447
5431
|
const doc = parser.parseFromString(html, "text/html");
|
|
@@ -4471,8 +5455,8 @@ function CodeBlock({
|
|
|
4471
5455
|
className,
|
|
4472
5456
|
html
|
|
4473
5457
|
}) {
|
|
4474
|
-
const [copied, setCopied] =
|
|
4475
|
-
const handleCopy =
|
|
5458
|
+
const [copied, setCopied] = React38.useState(false);
|
|
5459
|
+
const handleCopy = React38.useCallback(async () => {
|
|
4476
5460
|
try {
|
|
4477
5461
|
await navigator.clipboard.writeText(code);
|
|
4478
5462
|
setCopied(true);
|
|
@@ -4613,7 +5597,7 @@ function resolveDisabledBgClass(colorStyle) {
|
|
|
4613
5597
|
}
|
|
4614
5598
|
return "disabled:text-m3-on-surface/[0.38]";
|
|
4615
5599
|
}
|
|
4616
|
-
var IconButtonComponent =
|
|
5600
|
+
var IconButtonComponent = React38__namespace.forwardRef(
|
|
4617
5601
|
(_a, ref) => {
|
|
4618
5602
|
var _b = _a, {
|
|
4619
5603
|
className,
|
|
@@ -4647,18 +5631,18 @@ var IconButtonComponent = React31__namespace.forwardRef(
|
|
|
4647
5631
|
var _a2, _b2;
|
|
4648
5632
|
const isToggle = variant === "toggle";
|
|
4649
5633
|
const isSelected = isToggle && !!selected;
|
|
4650
|
-
const resolvedColorClass =
|
|
5634
|
+
const resolvedColorClass = React38__namespace.useMemo(
|
|
4651
5635
|
() => isSelected ? colorStyles[colorStyle].selected : colorStyles[colorStyle].default,
|
|
4652
5636
|
[isSelected, colorStyle]
|
|
4653
5637
|
);
|
|
4654
|
-
const outlineWidthClass =
|
|
5638
|
+
const outlineWidthClass = React38__namespace.useMemo(
|
|
4655
5639
|
() => {
|
|
4656
5640
|
var _a3;
|
|
4657
5641
|
return colorStyle === "outlined" && !isSelected ? (_a3 = SIZE_OUTLINE_WIDTH[size]) != null ? _a3 : "border" : "";
|
|
4658
5642
|
},
|
|
4659
5643
|
[colorStyle, isSelected, size]
|
|
4660
5644
|
);
|
|
4661
|
-
const disabledBgClass =
|
|
5645
|
+
const disabledBgClass = React38__namespace.useMemo(
|
|
4662
5646
|
() => resolveDisabledBgClass(colorStyle),
|
|
4663
5647
|
[colorStyle]
|
|
4664
5648
|
);
|
|
@@ -4677,7 +5661,7 @@ var IconButtonComponent = React31__namespace.forwardRef(
|
|
|
4677
5661
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
4678
5662
|
disabled: loading
|
|
4679
5663
|
});
|
|
4680
|
-
const handleClick =
|
|
5664
|
+
const handleClick = React38__namespace.useCallback(
|
|
4681
5665
|
(e) => {
|
|
4682
5666
|
if (loading) {
|
|
4683
5667
|
e.preventDefault();
|
|
@@ -4687,7 +5671,7 @@ var IconButtonComponent = React31__namespace.forwardRef(
|
|
|
4687
5671
|
},
|
|
4688
5672
|
[loading, onClick]
|
|
4689
5673
|
);
|
|
4690
|
-
const handleKeyDown =
|
|
5674
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
4691
5675
|
(e) => {
|
|
4692
5676
|
if (loading) return;
|
|
4693
5677
|
if ((e.key === "Enter" || e.key === " ") && onClick) {
|
|
@@ -4775,7 +5759,7 @@ var IconButtonComponent = React31__namespace.forwardRef(
|
|
|
4775
5759
|
}
|
|
4776
5760
|
);
|
|
4777
5761
|
IconButtonComponent.displayName = "IconButton";
|
|
4778
|
-
var IconButton =
|
|
5762
|
+
var IconButton = React38__namespace.memo(IconButtonComponent);
|
|
4779
5763
|
var MD3_SPRING = {
|
|
4780
5764
|
type: "spring",
|
|
4781
5765
|
stiffness: 400,
|
|
@@ -4812,9 +5796,9 @@ DialogTrigger.displayName = "DialogTrigger";
|
|
|
4812
5796
|
var DialogPortal = ({
|
|
4813
5797
|
open,
|
|
4814
5798
|
children
|
|
4815
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: open ?
|
|
5799
|
+
}) => /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { children: open ? React38__namespace.Children.toArray(children) : null }) });
|
|
4816
5800
|
DialogPortal.displayName = "DialogPortal";
|
|
4817
|
-
var DialogOverlay =
|
|
5801
|
+
var DialogOverlay = React38__namespace.forwardRef((_a, ref) => {
|
|
4818
5802
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4819
5803
|
return /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4820
5804
|
react.m.div,
|
|
@@ -4825,7 +5809,7 @@ var DialogOverlay = React31__namespace.forwardRef((_a, ref) => {
|
|
|
4825
5809
|
) }));
|
|
4826
5810
|
});
|
|
4827
5811
|
DialogOverlay.displayName = "DialogOverlay";
|
|
4828
|
-
var DialogContent =
|
|
5812
|
+
var DialogContent = React38__namespace.forwardRef((_a, ref) => {
|
|
4829
5813
|
var _b = _a, { className, children, hideCloseButton = false } = _b, props = __objRest(_b, ["className", "children", "hideCloseButton"]);
|
|
4830
5814
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4831
5815
|
RadixDialog__namespace.Content,
|
|
@@ -4865,7 +5849,7 @@ var DialogContent = React31__namespace.forwardRef((_a, ref) => {
|
|
|
4865
5849
|
);
|
|
4866
5850
|
});
|
|
4867
5851
|
DialogContent.displayName = "DialogContent";
|
|
4868
|
-
var DialogIcon =
|
|
5852
|
+
var DialogIcon = React38__namespace.forwardRef((_a, ref) => {
|
|
4869
5853
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
|
4870
5854
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4871
5855
|
"div",
|
|
@@ -4888,7 +5872,7 @@ var DialogHeader = (_a) => {
|
|
|
4888
5872
|
return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mb-4", className) }, props));
|
|
4889
5873
|
};
|
|
4890
5874
|
DialogHeader.displayName = "DialogHeader";
|
|
4891
|
-
var DialogTitle =
|
|
5875
|
+
var DialogTitle = React38__namespace.forwardRef((_a, ref) => {
|
|
4892
5876
|
var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
|
|
4893
5877
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4894
5878
|
RadixDialog__namespace.Title,
|
|
@@ -4903,7 +5887,7 @@ var DialogTitle = React31__namespace.forwardRef((_a, ref) => {
|
|
|
4903
5887
|
);
|
|
4904
5888
|
});
|
|
4905
5889
|
DialogTitle.displayName = "DialogTitle";
|
|
4906
|
-
var DialogDescription =
|
|
5890
|
+
var DialogDescription = React38__namespace.forwardRef((_a, ref) => {
|
|
4907
5891
|
var _b = _a, { className, asChild } = _b, props = __objRest(_b, ["className", "asChild"]);
|
|
4908
5892
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4909
5893
|
RadixDialog__namespace.Description,
|
|
@@ -4915,7 +5899,7 @@ var DialogDescription = React31__namespace.forwardRef((_a, ref) => {
|
|
|
4915
5899
|
);
|
|
4916
5900
|
});
|
|
4917
5901
|
DialogDescription.displayName = "DialogDescription";
|
|
4918
|
-
var DialogBody =
|
|
5902
|
+
var DialogBody = React38__namespace.forwardRef((_a, ref) => {
|
|
4919
5903
|
var _b = _a, { className, children, dir } = _b, props = __objRest(_b, ["className", "children", "dir"]);
|
|
4920
5904
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4921
5905
|
ScrollArea,
|
|
@@ -4946,7 +5930,7 @@ var DialogFooter = (_a) => {
|
|
|
4946
5930
|
};
|
|
4947
5931
|
DialogFooter.displayName = "DialogFooter";
|
|
4948
5932
|
var DialogClose = RadixDialog__namespace.Close;
|
|
4949
|
-
var DialogFullScreenContent =
|
|
5933
|
+
var DialogFullScreenContent = React38__namespace.forwardRef(
|
|
4950
5934
|
(_a, ref) => {
|
|
4951
5935
|
var _b = _a, {
|
|
4952
5936
|
className,
|
|
@@ -5029,7 +6013,7 @@ function buildWavePath(startX, endX, amplitude = 2, wavelength = 32, yCenter = 4
|
|
|
5029
6013
|
}
|
|
5030
6014
|
return d;
|
|
5031
6015
|
}
|
|
5032
|
-
var DividerImpl =
|
|
6016
|
+
var DividerImpl = React38__namespace.forwardRef(
|
|
5033
6017
|
(_a, ref) => {
|
|
5034
6018
|
var _b = _a, {
|
|
5035
6019
|
variant = "full-bleed",
|
|
@@ -5149,7 +6133,7 @@ var DividerImpl = React31__namespace.forwardRef(
|
|
|
5149
6133
|
}
|
|
5150
6134
|
);
|
|
5151
6135
|
DividerImpl.displayName = "Divider";
|
|
5152
|
-
var Divider =
|
|
6136
|
+
var Divider = React38__namespace.memo(DividerImpl);
|
|
5153
6137
|
var MD3_DRAWER_SPRING = {
|
|
5154
6138
|
type: "spring",
|
|
5155
6139
|
stiffness: 350,
|
|
@@ -5186,7 +6170,7 @@ var DrawerPortal = ({
|
|
|
5186
6170
|
open,
|
|
5187
6171
|
children
|
|
5188
6172
|
}) => /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Portal, { forceMount: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { mode: "wait", children: open && children }) });
|
|
5189
|
-
var DrawerOverlay =
|
|
6173
|
+
var DrawerOverlay = React38__namespace.forwardRef((_a, ref) => {
|
|
5190
6174
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5191
6175
|
return /* @__PURE__ */ jsxRuntime.jsx(RadixDialog__namespace.Overlay, __spreadProps(__spreadValues({ ref, asChild: true }, props), { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5192
6176
|
react.m.div,
|
|
@@ -5197,7 +6181,7 @@ var DrawerOverlay = React31__namespace.forwardRef((_a, ref) => {
|
|
|
5197
6181
|
) }));
|
|
5198
6182
|
});
|
|
5199
6183
|
DrawerOverlay.displayName = "DrawerOverlay";
|
|
5200
|
-
var DrawerContent =
|
|
6184
|
+
var DrawerContent = React38__namespace.forwardRef(
|
|
5201
6185
|
(_a, ref) => {
|
|
5202
6186
|
var _b = _a, {
|
|
5203
6187
|
className,
|
|
@@ -5276,7 +6260,7 @@ var DrawerFooter = (_a) => {
|
|
|
5276
6260
|
return /* @__PURE__ */ jsxRuntime.jsx("div", __spreadValues({ className: cn("flex flex-col gap-2 mt-4", className) }, props));
|
|
5277
6261
|
};
|
|
5278
6262
|
DrawerFooter.displayName = "DrawerFooter";
|
|
5279
|
-
var DrawerTitle =
|
|
6263
|
+
var DrawerTitle = React38__namespace.forwardRef((_a, ref) => {
|
|
5280
6264
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5281
6265
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5282
6266
|
RadixDialog__namespace.Title,
|
|
@@ -5290,7 +6274,7 @@ var DrawerTitle = React31__namespace.forwardRef((_a, ref) => {
|
|
|
5290
6274
|
);
|
|
5291
6275
|
});
|
|
5292
6276
|
DrawerTitle.displayName = "DrawerTitle";
|
|
5293
|
-
var DrawerDescription =
|
|
6277
|
+
var DrawerDescription = React38__namespace.forwardRef((_a, ref) => {
|
|
5294
6278
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
5295
6279
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5296
6280
|
RadixDialog__namespace.Description,
|
|
@@ -5371,7 +6355,7 @@ function FABPosition({
|
|
|
5371
6355
|
}
|
|
5372
6356
|
);
|
|
5373
6357
|
}
|
|
5374
|
-
var FABComponent =
|
|
6358
|
+
var FABComponent = React38__namespace.forwardRef(
|
|
5375
6359
|
(_a, ref) => {
|
|
5376
6360
|
var _b = _a, {
|
|
5377
6361
|
className,
|
|
@@ -5416,7 +6400,7 @@ var FABComponent = React31__namespace.forwardRef(
|
|
|
5416
6400
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
5417
6401
|
disabled: loading
|
|
5418
6402
|
});
|
|
5419
|
-
const handleClick =
|
|
6403
|
+
const handleClick = React38__namespace.useCallback(
|
|
5420
6404
|
(e) => {
|
|
5421
6405
|
if (loading) {
|
|
5422
6406
|
e.preventDefault();
|
|
@@ -5426,7 +6410,7 @@ var FABComponent = React31__namespace.forwardRef(
|
|
|
5426
6410
|
},
|
|
5427
6411
|
[loading, onClick]
|
|
5428
6412
|
);
|
|
5429
|
-
const handleKeyDown =
|
|
6413
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
5430
6414
|
(e) => {
|
|
5431
6415
|
if (loading) return;
|
|
5432
6416
|
if ((e.key === "Enter" || e.key === " ") && onClick) {
|
|
@@ -5535,7 +6519,7 @@ var FABComponent = React31__namespace.forwardRef(
|
|
|
5535
6519
|
}
|
|
5536
6520
|
);
|
|
5537
6521
|
FABComponent.displayName = "FAB";
|
|
5538
|
-
var FAB =
|
|
6522
|
+
var FAB = React38__namespace.memo(FABComponent);
|
|
5539
6523
|
var SPRING_NORMAL = { stiffness: 700, damping: 40 };
|
|
5540
6524
|
var SPRING_REDUCED = { stiffness: 1e4, damping: 100 };
|
|
5541
6525
|
var FOCUS_DELAY_MS = 50;
|
|
@@ -5600,7 +6584,7 @@ var ALIGNMENT_TRANSFORM_ORIGIN = {
|
|
|
5600
6584
|
center: "bottom"
|
|
5601
6585
|
};
|
|
5602
6586
|
var ITEM_SPRING = { type: "spring", stiffness: 700, damping: 25 };
|
|
5603
|
-
var
|
|
6587
|
+
var MENU_CONTAINER_VARIANTS2 = {
|
|
5604
6588
|
open: { transition: { staggerChildren: 0.033, staggerDirection: 1 } },
|
|
5605
6589
|
closed: { transition: { staggerChildren: 0.02, staggerDirection: -1 } }
|
|
5606
6590
|
};
|
|
@@ -5643,7 +6627,7 @@ function CloseIcon3() {
|
|
|
5643
6627
|
function defaultFabIcon(progress) {
|
|
5644
6628
|
return progress > 0.5 ? /* @__PURE__ */ jsxRuntime.jsx(CloseIcon3, {}) : /* @__PURE__ */ jsxRuntime.jsx(AddIcon, {});
|
|
5645
6629
|
}
|
|
5646
|
-
var ToggleFABComponent =
|
|
6630
|
+
var ToggleFABComponent = React38__namespace.forwardRef(
|
|
5647
6631
|
({
|
|
5648
6632
|
expanded,
|
|
5649
6633
|
onToggle,
|
|
@@ -5661,7 +6645,7 @@ var ToggleFABComponent = React31__namespace.forwardRef(
|
|
|
5661
6645
|
const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
|
|
5662
6646
|
const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
|
|
5663
6647
|
const checkedProgress = react.useSpring(expanded ? 1 : 0, springConfig);
|
|
5664
|
-
|
|
6648
|
+
React38__namespace.useEffect(() => {
|
|
5665
6649
|
checkedProgress.set(expanded ? 1 : 0);
|
|
5666
6650
|
}, [expanded, checkedProgress]);
|
|
5667
6651
|
const borderRadius = react.useTransform(
|
|
@@ -5669,12 +6653,12 @@ var ToggleFABComponent = React31__namespace.forwardRef(
|
|
|
5669
6653
|
[0, 1],
|
|
5670
6654
|
[`${sizeTokens.initialRadius}px`, `${sizeTokens.finalRadius}px`]
|
|
5671
6655
|
);
|
|
5672
|
-
const [iconProgress, setIconProgress] =
|
|
5673
|
-
|
|
6656
|
+
const [iconProgress, setIconProgress] = React38__namespace.useState(expanded ? 1 : 0);
|
|
6657
|
+
React38__namespace.useEffect(() => {
|
|
5674
6658
|
return checkedProgress.on("change", setIconProgress);
|
|
5675
6659
|
}, [checkedProgress]);
|
|
5676
6660
|
const { ripples, onPointerDown, removeRipple } = useRippleState();
|
|
5677
|
-
const handleClick =
|
|
6661
|
+
const handleClick = React38__namespace.useCallback(() => {
|
|
5678
6662
|
onToggle(!expanded);
|
|
5679
6663
|
}, [expanded, onToggle]);
|
|
5680
6664
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5723,7 +6707,7 @@ var ToggleFABComponent = React31__namespace.forwardRef(
|
|
|
5723
6707
|
}
|
|
5724
6708
|
);
|
|
5725
6709
|
ToggleFABComponent.displayName = "ToggleFAB";
|
|
5726
|
-
var ToggleFAB =
|
|
6710
|
+
var ToggleFAB = React38__namespace.memo(ToggleFABComponent);
|
|
5727
6711
|
function FABMenuItem({
|
|
5728
6712
|
icon,
|
|
5729
6713
|
label,
|
|
@@ -5736,7 +6720,7 @@ function FABMenuItem({
|
|
|
5736
6720
|
var _a;
|
|
5737
6721
|
const colors = (_a = MENU_ITEM_COLORS[colorVariant]) != null ? _a : MENU_ITEM_COLORS.primary;
|
|
5738
6722
|
const { ripples, onPointerDown, removeRipple } = useRippleState({ disabled });
|
|
5739
|
-
const handleClick =
|
|
6723
|
+
const handleClick = React38__namespace.useCallback(
|
|
5740
6724
|
(e) => {
|
|
5741
6725
|
if (disabled) {
|
|
5742
6726
|
e.preventDefault();
|
|
@@ -5746,7 +6730,7 @@ function FABMenuItem({
|
|
|
5746
6730
|
},
|
|
5747
6731
|
[disabled, onClick]
|
|
5748
6732
|
);
|
|
5749
|
-
const handleKeyDown =
|
|
6733
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
5750
6734
|
(e) => {
|
|
5751
6735
|
if (disabled) return;
|
|
5752
6736
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -5813,13 +6797,13 @@ function FABMenu({
|
|
|
5813
6797
|
focusLast = true,
|
|
5814
6798
|
"aria-label": ariaLabel
|
|
5815
6799
|
}) {
|
|
5816
|
-
const fabId =
|
|
5817
|
-
const menuId =
|
|
5818
|
-
const toggleRef =
|
|
5819
|
-
const itemRefs =
|
|
5820
|
-
const [focusedIndex, setFocusedIndex] =
|
|
5821
|
-
const reversedItems =
|
|
5822
|
-
const focusItem =
|
|
6800
|
+
const fabId = React38__namespace.useId();
|
|
6801
|
+
const menuId = React38__namespace.useId();
|
|
6802
|
+
const toggleRef = React38__namespace.useRef(null);
|
|
6803
|
+
const itemRefs = React38__namespace.useRef([]);
|
|
6804
|
+
const [focusedIndex, setFocusedIndex] = React38__namespace.useState(-1);
|
|
6805
|
+
const reversedItems = React38__namespace.useMemo(() => [...items].reverse(), [items]);
|
|
6806
|
+
const focusItem = React38__namespace.useCallback((index) => {
|
|
5823
6807
|
var _a;
|
|
5824
6808
|
const clampedIndex = Math.max(
|
|
5825
6809
|
0,
|
|
@@ -5828,8 +6812,8 @@ function FABMenu({
|
|
|
5828
6812
|
setFocusedIndex(clampedIndex);
|
|
5829
6813
|
(_a = itemRefs.current[clampedIndex]) == null ? void 0 : _a.focus();
|
|
5830
6814
|
}, []);
|
|
5831
|
-
const wasExpandedRef =
|
|
5832
|
-
|
|
6815
|
+
const wasExpandedRef = React38__namespace.useRef(false);
|
|
6816
|
+
React38__namespace.useEffect(() => {
|
|
5833
6817
|
var _a;
|
|
5834
6818
|
if (expanded) {
|
|
5835
6819
|
wasExpandedRef.current = true;
|
|
@@ -5844,7 +6828,7 @@ function FABMenu({
|
|
|
5844
6828
|
wasExpandedRef.current = false;
|
|
5845
6829
|
setFocusedIndex(-1);
|
|
5846
6830
|
}, [expanded, focusLast, items.length, focusItem]);
|
|
5847
|
-
const handleMenuKeyDown =
|
|
6831
|
+
const handleMenuKeyDown = React38__namespace.useCallback(
|
|
5848
6832
|
(e) => {
|
|
5849
6833
|
if (!expanded) return;
|
|
5850
6834
|
const lastIndex = items.length - 1;
|
|
@@ -5905,7 +6889,7 @@ function FABMenu({
|
|
|
5905
6889
|
role: "menu",
|
|
5906
6890
|
"aria-labelledby": fabId,
|
|
5907
6891
|
"aria-orientation": "vertical",
|
|
5908
|
-
variants:
|
|
6892
|
+
variants: MENU_CONTAINER_VARIANTS2,
|
|
5909
6893
|
initial: "closed",
|
|
5910
6894
|
animate: "open",
|
|
5911
6895
|
exit: "closed",
|
|
@@ -5968,7 +6952,7 @@ function FABMenu({
|
|
|
5968
6952
|
)
|
|
5969
6953
|
] });
|
|
5970
6954
|
}
|
|
5971
|
-
var NavigationRailContext =
|
|
6955
|
+
var NavigationRailContext = React38__namespace.createContext({ variant: "collapsed", labelVisibility: "labeled", xr: false });
|
|
5972
6956
|
var MD3_MODAL_TRANSITION = {
|
|
5973
6957
|
type: "tween",
|
|
5974
6958
|
ease: [0.05, 0.7, 0.1, 1],
|
|
@@ -6004,9 +6988,9 @@ var railContainerVariants = classVarianceAuthority.cva(
|
|
|
6004
6988
|
}
|
|
6005
6989
|
);
|
|
6006
6990
|
function cloneIconWithFill(icon, selected) {
|
|
6007
|
-
if (!
|
|
6991
|
+
if (!React38__namespace.isValidElement(icon)) return icon;
|
|
6008
6992
|
if (icon.type === Icon) {
|
|
6009
|
-
return
|
|
6993
|
+
return React38__namespace.cloneElement(
|
|
6010
6994
|
icon,
|
|
6011
6995
|
{ fill: selected ? 1 : 0, animateFill: true }
|
|
6012
6996
|
);
|
|
@@ -6034,11 +7018,11 @@ function ActivePill({ layoutId, disableInitial = false }) {
|
|
|
6034
7018
|
{
|
|
6035
7019
|
layoutId,
|
|
6036
7020
|
className: "absolute inset-0 bg-m3-secondary-container pointer-events-none",
|
|
6037
|
-
style: { borderRadius: 9999, zIndex: 0 },
|
|
6038
|
-
initial: disableInitial ? false : { opacity: 0 },
|
|
6039
|
-
animate: { opacity: 1 },
|
|
6040
|
-
exit: { opacity: 0 },
|
|
6041
|
-
transition:
|
|
7021
|
+
style: { borderRadius: 9999, zIndex: 0, originX: 0.5, originY: 0.5 },
|
|
7022
|
+
initial: disableInitial ? false : { opacity: 0, scale: 0.5 },
|
|
7023
|
+
animate: { opacity: 1, scale: 1 },
|
|
7024
|
+
exit: { opacity: 0, scale: 0.5, transition: { duration: 0.15 } },
|
|
7025
|
+
transition: SPRING_TRANSITION_EXPRESSIVE
|
|
6042
7026
|
}
|
|
6043
7027
|
);
|
|
6044
7028
|
}
|
|
@@ -6064,7 +7048,7 @@ function IconContainer({ selected, badge, children }) {
|
|
|
6064
7048
|
}
|
|
6065
7049
|
);
|
|
6066
7050
|
}
|
|
6067
|
-
var NavigationRailItemComponent =
|
|
7051
|
+
var NavigationRailItemComponent = React38__namespace.forwardRef(
|
|
6068
7052
|
({
|
|
6069
7053
|
selected,
|
|
6070
7054
|
icon,
|
|
@@ -6075,18 +7059,18 @@ var NavigationRailItemComponent = React31__namespace.forwardRef(
|
|
|
6075
7059
|
className,
|
|
6076
7060
|
"aria-label": ariaLabelProp
|
|
6077
7061
|
}, ref) => {
|
|
6078
|
-
const { variant, labelVisibility } =
|
|
7062
|
+
const { variant, labelVisibility } = React38__namespace.useContext(
|
|
6079
7063
|
NavigationRailContext
|
|
6080
7064
|
);
|
|
6081
7065
|
const isExpanded = variant === "expanded" || variant === "modal";
|
|
6082
7066
|
const isModal = variant === "modal";
|
|
6083
7067
|
const enableLayout = !isModal;
|
|
6084
|
-
const activePillId = `rail-pill-${
|
|
7068
|
+
const activePillId = `rail-pill-${React38__namespace.useId()}`;
|
|
6085
7069
|
const { ripples, onPointerDown, removeRipple } = useRippleState({
|
|
6086
7070
|
disabled
|
|
6087
7071
|
});
|
|
6088
7072
|
const showLabel = isExpanded || labelVisibility === "labeled" || labelVisibility === "auto" && selected;
|
|
6089
|
-
const handleClick =
|
|
7073
|
+
const handleClick = React38__namespace.useCallback(
|
|
6090
7074
|
(e) => {
|
|
6091
7075
|
if (disabled) {
|
|
6092
7076
|
e.preventDefault();
|
|
@@ -6188,9 +7172,9 @@ var NavigationRailItemComponent = React31__namespace.forwardRef(
|
|
|
6188
7172
|
}
|
|
6189
7173
|
);
|
|
6190
7174
|
NavigationRailItemComponent.displayName = "NavigationRailItem";
|
|
6191
|
-
var NavigationRailItem =
|
|
7175
|
+
var NavigationRailItem = React38__namespace.memo(NavigationRailItemComponent);
|
|
6192
7176
|
function useRoving(navRef) {
|
|
6193
|
-
|
|
7177
|
+
React38__namespace.useEffect(() => {
|
|
6194
7178
|
if (!navRef.current) return;
|
|
6195
7179
|
const items = getMenuItems(navRef.current);
|
|
6196
7180
|
const selected = items.find(
|
|
@@ -6200,7 +7184,7 @@ function useRoving(navRef) {
|
|
|
6200
7184
|
const firstFocusable = selected != null ? selected : items[0];
|
|
6201
7185
|
if (firstFocusable) firstFocusable.tabIndex = 0;
|
|
6202
7186
|
}, [navRef]);
|
|
6203
|
-
return
|
|
7187
|
+
return React38__namespace.useCallback(
|
|
6204
7188
|
(e) => {
|
|
6205
7189
|
if (!navRef.current) return;
|
|
6206
7190
|
const items = getMenuItems(navRef.current);
|
|
@@ -6228,7 +7212,7 @@ function useRoving(navRef) {
|
|
|
6228
7212
|
[navRef]
|
|
6229
7213
|
);
|
|
6230
7214
|
}
|
|
6231
|
-
var NavigationRailComponent =
|
|
7215
|
+
var NavigationRailComponent = React38__namespace.forwardRef(
|
|
6232
7216
|
({
|
|
6233
7217
|
variant = "collapsed",
|
|
6234
7218
|
labelVisibility = "labeled",
|
|
@@ -6248,9 +7232,9 @@ var NavigationRailComponent = React31__namespace.forwardRef(
|
|
|
6248
7232
|
const xrMode = xr === "spatialized" ? "spatialized" : "contained";
|
|
6249
7233
|
const isSpatial = isXr && xrMode === "spatialized";
|
|
6250
7234
|
const applyAnimation = !isXr || !isSpatial;
|
|
6251
|
-
const navRef =
|
|
7235
|
+
const navRef = React38__namespace.useRef(null);
|
|
6252
7236
|
const handleKeyDown = useRoving(navRef);
|
|
6253
|
-
const setRefs =
|
|
7237
|
+
const setRefs = React38__namespace.useCallback(
|
|
6254
7238
|
(node) => {
|
|
6255
7239
|
navRef.current = node;
|
|
6256
7240
|
if (typeof ref === "function") ref(node);
|
|
@@ -6343,7 +7327,7 @@ var NavigationRailComponent = React31__namespace.forwardRef(
|
|
|
6343
7327
|
children: fab
|
|
6344
7328
|
}
|
|
6345
7329
|
),
|
|
6346
|
-
|
|
7330
|
+
React38__namespace.cloneElement(
|
|
6347
7331
|
navElement,
|
|
6348
7332
|
{
|
|
6349
7333
|
className: cn(navBaseClasses, "pointer-events-auto")
|
|
@@ -6381,13 +7365,13 @@ var NavigationRailComponent = React31__namespace.forwardRef(
|
|
|
6381
7365
|
}
|
|
6382
7366
|
);
|
|
6383
7367
|
NavigationRailComponent.displayName = "NavigationRail";
|
|
6384
|
-
var NavigationRail =
|
|
7368
|
+
var NavigationRail = React38__namespace.memo(NavigationRailComponent);
|
|
6385
7369
|
var MD3_FAST_EFFECTS2 = [0.3, 0, 1, 1];
|
|
6386
|
-
var RadioGroupContext =
|
|
7370
|
+
var RadioGroupContext = React38__namespace.createContext(
|
|
6387
7371
|
null
|
|
6388
7372
|
);
|
|
6389
7373
|
function useMergedRef3(externalRef, internalRef) {
|
|
6390
|
-
return
|
|
7374
|
+
return React38__namespace.useCallback(
|
|
6391
7375
|
(node) => {
|
|
6392
7376
|
internalRef.current = node;
|
|
6393
7377
|
if (!externalRef) return;
|
|
@@ -6400,7 +7384,7 @@ function useMergedRef3(externalRef, internalRef) {
|
|
|
6400
7384
|
[externalRef, internalRef]
|
|
6401
7385
|
);
|
|
6402
7386
|
}
|
|
6403
|
-
var RadioVisual =
|
|
7387
|
+
var RadioVisual = React38__namespace.memo(function RadioVisual2({
|
|
6404
7388
|
isSelected,
|
|
6405
7389
|
disabled,
|
|
6406
7390
|
error,
|
|
@@ -6453,7 +7437,7 @@ var RadioVisual = React31__namespace.memo(function RadioVisual2({
|
|
|
6453
7437
|
}
|
|
6454
7438
|
);
|
|
6455
7439
|
});
|
|
6456
|
-
var RadioButtonComponent =
|
|
7440
|
+
var RadioButtonComponent = React38__namespace.forwardRef(
|
|
6457
7441
|
({
|
|
6458
7442
|
selected,
|
|
6459
7443
|
defaultSelected = false,
|
|
@@ -6472,23 +7456,23 @@ var RadioButtonComponent = React31__namespace.forwardRef(
|
|
|
6472
7456
|
required: requiredProp
|
|
6473
7457
|
}, ref) => {
|
|
6474
7458
|
var _a, _b;
|
|
6475
|
-
const group =
|
|
7459
|
+
const group = React38__namespace.useContext(RadioGroupContext);
|
|
6476
7460
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
6477
|
-
const generatedId =
|
|
7461
|
+
const generatedId = React38__namespace.useId();
|
|
6478
7462
|
const inputId = idProp != null ? idProp : label ? `radio-${generatedId}` : void 0;
|
|
6479
7463
|
const name = (_b = group == null ? void 0 : group.name) != null ? _b : nameProp;
|
|
6480
7464
|
const disabled = (group == null ? void 0 : group.disabled) || disabledProp;
|
|
6481
7465
|
const error = (group == null ? void 0 : group.error) || errorProp || color === "error";
|
|
6482
7466
|
const required = (group == null ? void 0 : group.required) || requiredProp;
|
|
6483
|
-
const [internalSelected, setInternalSelected] =
|
|
7467
|
+
const [internalSelected, setInternalSelected] = React38__namespace.useState(defaultSelected);
|
|
6484
7468
|
const isControlled = selected !== void 0;
|
|
6485
7469
|
const isSelected = group ? group.selectedValue === value : isControlled ? selected != null ? selected : false : internalSelected;
|
|
6486
|
-
const [ripples, setRipples] =
|
|
6487
|
-
const removeRipple =
|
|
7470
|
+
const [ripples, setRipples] = React38__namespace.useState([]);
|
|
7471
|
+
const removeRipple = React38__namespace.useCallback(
|
|
6488
7472
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
6489
7473
|
[]
|
|
6490
7474
|
);
|
|
6491
|
-
const onPointerDown =
|
|
7475
|
+
const onPointerDown = React38__namespace.useCallback(
|
|
6492
7476
|
(e) => {
|
|
6493
7477
|
if (disabled) return;
|
|
6494
7478
|
const rect = e.currentTarget.getBoundingClientRect();
|
|
@@ -6502,12 +7486,12 @@ var RadioButtonComponent = React31__namespace.forwardRef(
|
|
|
6502
7486
|
},
|
|
6503
7487
|
[disabled]
|
|
6504
7488
|
);
|
|
6505
|
-
const [isHovered, setIsHovered] =
|
|
6506
|
-
const onPointerEnter =
|
|
7489
|
+
const [isHovered, setIsHovered] = React38__namespace.useState(false);
|
|
7490
|
+
const onPointerEnter = React38__namespace.useCallback(() => {
|
|
6507
7491
|
if (!disabled) setIsHovered(true);
|
|
6508
7492
|
}, [disabled]);
|
|
6509
|
-
const onPointerLeave =
|
|
6510
|
-
const handleChange =
|
|
7493
|
+
const onPointerLeave = React38__namespace.useCallback(() => setIsHovered(false), []);
|
|
7494
|
+
const handleChange = React38__namespace.useCallback(
|
|
6511
7495
|
(_e) => {
|
|
6512
7496
|
if (disabled || onClick === null) return;
|
|
6513
7497
|
if (group) {
|
|
@@ -6521,7 +7505,7 @@ var RadioButtonComponent = React31__namespace.forwardRef(
|
|
|
6521
7505
|
},
|
|
6522
7506
|
[disabled, onClick, group, value, isControlled]
|
|
6523
7507
|
);
|
|
6524
|
-
const inputRef =
|
|
7508
|
+
const inputRef = React38__namespace.useRef(null);
|
|
6525
7509
|
const mergedRef = useMergedRef3(ref, inputRef);
|
|
6526
7510
|
const stateLayerBg = error ? "before:bg-m3-error" : "before:bg-m3-primary";
|
|
6527
7511
|
const stateLayerClass = cn(
|
|
@@ -6632,8 +7616,8 @@ var RadioButtonComponent = React31__namespace.forwardRef(
|
|
|
6632
7616
|
}
|
|
6633
7617
|
);
|
|
6634
7618
|
RadioButtonComponent.displayName = "RadioButton";
|
|
6635
|
-
var RadioButton =
|
|
6636
|
-
var RadioGroupComponent =
|
|
7619
|
+
var RadioButton = React38__namespace.memo(RadioButtonComponent);
|
|
7620
|
+
var RadioGroupComponent = React38__namespace.forwardRef(
|
|
6637
7621
|
({
|
|
6638
7622
|
name,
|
|
6639
7623
|
value: valueProp,
|
|
@@ -6648,19 +7632,19 @@ var RadioGroupComponent = React31__namespace.forwardRef(
|
|
|
6648
7632
|
children,
|
|
6649
7633
|
className
|
|
6650
7634
|
}, ref) => {
|
|
6651
|
-
const [internalValue, setInternalValue] =
|
|
7635
|
+
const [internalValue, setInternalValue] = React38__namespace.useState(defaultValue);
|
|
6652
7636
|
const isControlled = valueProp !== void 0;
|
|
6653
7637
|
const selectedValue = isControlled ? valueProp : internalValue;
|
|
6654
|
-
const handleValueChange =
|
|
7638
|
+
const handleValueChange = React38__namespace.useCallback(
|
|
6655
7639
|
(val) => {
|
|
6656
7640
|
if (!isControlled) setInternalValue(val);
|
|
6657
7641
|
onValueChange == null ? void 0 : onValueChange(val);
|
|
6658
7642
|
},
|
|
6659
7643
|
[isControlled, onValueChange]
|
|
6660
7644
|
);
|
|
6661
|
-
const groupRef =
|
|
7645
|
+
const groupRef = React38__namespace.useRef(null);
|
|
6662
7646
|
const mergedRef = useMergedRef3(ref, groupRef);
|
|
6663
|
-
const onKeyDown =
|
|
7647
|
+
const onKeyDown = React38__namespace.useCallback(
|
|
6664
7648
|
(e) => {
|
|
6665
7649
|
var _a, _b;
|
|
6666
7650
|
if (disabled) return;
|
|
@@ -6684,7 +7668,7 @@ var RadioGroupComponent = React31__namespace.forwardRef(
|
|
|
6684
7668
|
},
|
|
6685
7669
|
[disabled, handleValueChange]
|
|
6686
7670
|
);
|
|
6687
|
-
const contextValue =
|
|
7671
|
+
const contextValue = React38__namespace.useMemo(
|
|
6688
7672
|
() => ({
|
|
6689
7673
|
name,
|
|
6690
7674
|
selectedValue,
|
|
@@ -6719,7 +7703,7 @@ var RadioGroupComponent = React31__namespace.forwardRef(
|
|
|
6719
7703
|
}
|
|
6720
7704
|
);
|
|
6721
7705
|
RadioGroupComponent.displayName = "RadioGroup";
|
|
6722
|
-
var
|
|
7706
|
+
var RadioGroup = React38__namespace.memo(RadioGroupComponent);
|
|
6723
7707
|
function useSearchKeyboard({
|
|
6724
7708
|
active,
|
|
6725
7709
|
onActiveChange,
|
|
@@ -6728,14 +7712,14 @@ function useSearchKeyboard({
|
|
|
6728
7712
|
itemCount,
|
|
6729
7713
|
onSelectSuggestion
|
|
6730
7714
|
}) {
|
|
6731
|
-
const [activeIndex, setActiveIndex] =
|
|
6732
|
-
const resetKeyRef =
|
|
7715
|
+
const [activeIndex, setActiveIndex] = React38__namespace.useState(-1);
|
|
7716
|
+
const resetKeyRef = React38__namespace.useRef(`${active}:${query}`);
|
|
6733
7717
|
const currentKey = `${active}:${query}`;
|
|
6734
7718
|
if (resetKeyRef.current !== currentKey) {
|
|
6735
7719
|
resetKeyRef.current = currentKey;
|
|
6736
7720
|
setActiveIndex(-1);
|
|
6737
7721
|
}
|
|
6738
|
-
const handleKeyDown =
|
|
7722
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
6739
7723
|
(e) => {
|
|
6740
7724
|
if (!active) return;
|
|
6741
7725
|
switch (e.key) {
|
|
@@ -6775,7 +7759,7 @@ function useSearchKeyboard({
|
|
|
6775
7759
|
query
|
|
6776
7760
|
]
|
|
6777
7761
|
);
|
|
6778
|
-
const resetActiveIndex =
|
|
7762
|
+
const resetActiveIndex = React38__namespace.useCallback(() => {
|
|
6779
7763
|
setActiveIndex(-1);
|
|
6780
7764
|
}, []);
|
|
6781
7765
|
return { activeIndex, handleKeyDown, resetActiveIndex };
|
|
@@ -6863,10 +7847,10 @@ function AnimatedPlaceholder({
|
|
|
6863
7847
|
className
|
|
6864
7848
|
}) {
|
|
6865
7849
|
const shouldReduceMotion = react.useReducedMotion();
|
|
6866
|
-
const containerRef =
|
|
6867
|
-
const spanRef =
|
|
6868
|
-
const [xOffset, setXOffset] =
|
|
6869
|
-
const recalculate =
|
|
7850
|
+
const containerRef = React38__namespace.useRef(null);
|
|
7851
|
+
const spanRef = React38__namespace.useRef(null);
|
|
7852
|
+
const [xOffset, setXOffset] = React38__namespace.useState(0);
|
|
7853
|
+
const recalculate = React38__namespace.useCallback(() => {
|
|
6870
7854
|
const container = containerRef.current;
|
|
6871
7855
|
const span = spanRef.current;
|
|
6872
7856
|
if (!container || !span || textAlign === "left") {
|
|
@@ -6881,10 +7865,10 @@ function AnimatedPlaceholder({
|
|
|
6881
7865
|
setXOffset(Math.max(0, containerWidth - textWidth));
|
|
6882
7866
|
}
|
|
6883
7867
|
}, [textAlign]);
|
|
6884
|
-
|
|
7868
|
+
React38__namespace.useLayoutEffect(() => {
|
|
6885
7869
|
recalculate();
|
|
6886
7870
|
}, [recalculate]);
|
|
6887
|
-
|
|
7871
|
+
React38__namespace.useEffect(() => {
|
|
6888
7872
|
const container = containerRef.current;
|
|
6889
7873
|
if (!container) return;
|
|
6890
7874
|
const observer = new ResizeObserver(recalculate);
|
|
@@ -6953,10 +7937,10 @@ function SearchBar({
|
|
|
6953
7937
|
activeIndex
|
|
6954
7938
|
}) {
|
|
6955
7939
|
const shouldReduceMotion = react.useReducedMotion();
|
|
6956
|
-
const inputRef =
|
|
6957
|
-
const prevActiveRef =
|
|
6958
|
-
const isRestoringFocusRef =
|
|
6959
|
-
|
|
7940
|
+
const inputRef = React38__namespace.useRef(null);
|
|
7941
|
+
const prevActiveRef = React38__namespace.useRef(active);
|
|
7942
|
+
const isRestoringFocusRef = React38__namespace.useRef(false);
|
|
7943
|
+
React38__namespace.useEffect(() => {
|
|
6960
7944
|
var _a;
|
|
6961
7945
|
let rafId;
|
|
6962
7946
|
if (prevActiveRef.current === true && active === false) {
|
|
@@ -7075,7 +8059,7 @@ function SearchBar({
|
|
|
7075
8059
|
) })
|
|
7076
8060
|
);
|
|
7077
8061
|
}
|
|
7078
|
-
var SearchContext =
|
|
8062
|
+
var SearchContext = React38__namespace.createContext(null);
|
|
7079
8063
|
function SearchProvider({
|
|
7080
8064
|
children,
|
|
7081
8065
|
value
|
|
@@ -7083,15 +8067,15 @@ function SearchProvider({
|
|
|
7083
8067
|
return /* @__PURE__ */ jsxRuntime.jsx(SearchContext.Provider, { value, children });
|
|
7084
8068
|
}
|
|
7085
8069
|
function useSearch() {
|
|
7086
|
-
const context =
|
|
8070
|
+
const context = React38__namespace.useContext(SearchContext);
|
|
7087
8071
|
if (!context) {
|
|
7088
8072
|
return { listboxId: "", activeIndex: -1 };
|
|
7089
8073
|
}
|
|
7090
8074
|
return context;
|
|
7091
8075
|
}
|
|
7092
8076
|
function useClickOutside(handler, enabled = true) {
|
|
7093
|
-
const ref =
|
|
7094
|
-
|
|
8077
|
+
const ref = React38.useRef(null);
|
|
8078
|
+
React38.useEffect(() => {
|
|
7095
8079
|
if (!enabled) return;
|
|
7096
8080
|
const listener = (event) => {
|
|
7097
8081
|
const el = ref.current;
|
|
@@ -7110,7 +8094,7 @@ function useClickOutside(handler, enabled = true) {
|
|
|
7110
8094
|
return ref;
|
|
7111
8095
|
}
|
|
7112
8096
|
function useSearchViewFocus(inputRef, active) {
|
|
7113
|
-
|
|
8097
|
+
React38__namespace.useEffect(() => {
|
|
7114
8098
|
if (!active) return;
|
|
7115
8099
|
let raf2;
|
|
7116
8100
|
const raf1 = requestAnimationFrame(() => {
|
|
@@ -7184,7 +8168,7 @@ function SearchViewDocked({
|
|
|
7184
8168
|
activeIndex
|
|
7185
8169
|
}) {
|
|
7186
8170
|
const shouldReduceMotion = react.useReducedMotion();
|
|
7187
|
-
const inputRef =
|
|
8171
|
+
const inputRef = React38__namespace.useRef(null);
|
|
7188
8172
|
useSearchViewFocus(inputRef, active);
|
|
7189
8173
|
const dropdownRef = useClickOutside(() => {
|
|
7190
8174
|
onActiveChange(false);
|
|
@@ -7330,10 +8314,10 @@ function SearchViewFullScreen({
|
|
|
7330
8314
|
activeIndex
|
|
7331
8315
|
}) {
|
|
7332
8316
|
const shouldReduceMotion = react.useReducedMotion();
|
|
7333
|
-
const inputRef =
|
|
8317
|
+
const inputRef = React38__namespace.useRef(null);
|
|
7334
8318
|
useSearchViewFocus(inputRef, active);
|
|
7335
|
-
const [mounted, setMounted] =
|
|
7336
|
-
|
|
8319
|
+
const [mounted, setMounted] = React38__namespace.useState(false);
|
|
8320
|
+
React38__namespace.useEffect(() => {
|
|
7337
8321
|
setMounted(true);
|
|
7338
8322
|
}, []);
|
|
7339
8323
|
const handleFormSubmit = (e) => {
|
|
@@ -7491,10 +8475,10 @@ function SearchComponent({
|
|
|
7491
8475
|
className,
|
|
7492
8476
|
viewClassName
|
|
7493
8477
|
}) {
|
|
7494
|
-
const generatedId =
|
|
8478
|
+
const generatedId = React38__namespace.useId();
|
|
7495
8479
|
const searchId = id != null ? id : generatedId;
|
|
7496
8480
|
const listboxId = `${searchId}-listbox`;
|
|
7497
|
-
const itemCount =
|
|
8481
|
+
const itemCount = React38__namespace.Children.count(children);
|
|
7498
8482
|
const { activeIndex, handleKeyDown } = useSearchKeyboard({
|
|
7499
8483
|
active,
|
|
7500
8484
|
onActiveChange,
|
|
@@ -7592,7 +8576,7 @@ function useSliderMath({
|
|
|
7592
8576
|
max,
|
|
7593
8577
|
step
|
|
7594
8578
|
}) {
|
|
7595
|
-
return
|
|
8579
|
+
return React38.useMemo(
|
|
7596
8580
|
() => ({
|
|
7597
8581
|
coerce: (v) => coerceValue(v, min, max),
|
|
7598
8582
|
snap: (v) => snapToStep(v, min, step),
|
|
@@ -7730,7 +8714,7 @@ var SLIDER_INDICATOR_TRANSITION = {
|
|
|
7730
8714
|
stiffness: 450,
|
|
7731
8715
|
damping: 32
|
|
7732
8716
|
};
|
|
7733
|
-
var ValueIndicator =
|
|
8717
|
+
var ValueIndicator = React38__namespace.memo(function ValueIndicator2({
|
|
7734
8718
|
value,
|
|
7735
8719
|
visible,
|
|
7736
8720
|
orientation,
|
|
@@ -7777,7 +8761,7 @@ var ValueIndicator = React31__namespace.memo(function ValueIndicator2({
|
|
|
7777
8761
|
"value-indicator"
|
|
7778
8762
|
) });
|
|
7779
8763
|
});
|
|
7780
|
-
var SliderThumb =
|
|
8764
|
+
var SliderThumb = React38__namespace.memo(function SliderThumb2({
|
|
7781
8765
|
value,
|
|
7782
8766
|
percent,
|
|
7783
8767
|
min,
|
|
@@ -7809,11 +8793,11 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7809
8793
|
[posTarget]: `calc(${trackInset}px + ${percent} * (100% - ${trackInset * 2}px))`
|
|
7810
8794
|
};
|
|
7811
8795
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
7812
|
-
const [isDragging, setIsDragging] =
|
|
7813
|
-
const [isHovered, setIsHovered] =
|
|
7814
|
-
const [isFocused, setIsFocused] =
|
|
7815
|
-
const pointerIdRef =
|
|
7816
|
-
const thumbRef =
|
|
8796
|
+
const [isDragging, setIsDragging] = React38__namespace.useState(false);
|
|
8797
|
+
const [isHovered, setIsHovered] = React38__namespace.useState(false);
|
|
8798
|
+
const [isFocused, setIsFocused] = React38__namespace.useState(false);
|
|
8799
|
+
const pointerIdRef = React38__namespace.useRef(null);
|
|
8800
|
+
const thumbRef = React38__namespace.useRef(null);
|
|
7817
8801
|
const showIndicator = showValueIndicator && (isDragging || isHovered || isFocused);
|
|
7818
8802
|
const positionStyle = isHorizontal ? __spreadProps(__spreadValues({
|
|
7819
8803
|
position: "absolute"
|
|
@@ -7828,7 +8812,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7828
8812
|
transform: "translate(-50%, 50%)",
|
|
7829
8813
|
zIndex
|
|
7830
8814
|
});
|
|
7831
|
-
const getDeltaFromPointer =
|
|
8815
|
+
const getDeltaFromPointer = React38__namespace.useCallback(
|
|
7832
8816
|
(e) => {
|
|
7833
8817
|
const trackEl = trackRef.current;
|
|
7834
8818
|
if (!trackEl) return percent;
|
|
@@ -7855,7 +8839,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7855
8839
|
},
|
|
7856
8840
|
[isHorizontal, max, min, percent, step, trackRef, trackSize]
|
|
7857
8841
|
);
|
|
7858
|
-
const handlePointerDown =
|
|
8842
|
+
const handlePointerDown = React38__namespace.useCallback(
|
|
7859
8843
|
(e) => {
|
|
7860
8844
|
if (disabled) return;
|
|
7861
8845
|
e.preventDefault();
|
|
@@ -7866,7 +8850,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7866
8850
|
},
|
|
7867
8851
|
[disabled]
|
|
7868
8852
|
);
|
|
7869
|
-
const handlePointerMove =
|
|
8853
|
+
const handlePointerMove = React38__namespace.useCallback(
|
|
7870
8854
|
(e) => {
|
|
7871
8855
|
if (!isDragging || e.pointerId !== pointerIdRef.current) return;
|
|
7872
8856
|
const newValue = getDeltaFromPointer(e.nativeEvent);
|
|
@@ -7874,7 +8858,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7874
8858
|
},
|
|
7875
8859
|
[isDragging, getDeltaFromPointer, onValueChange]
|
|
7876
8860
|
);
|
|
7877
|
-
const handlePointerUp =
|
|
8861
|
+
const handlePointerUp = React38__namespace.useCallback(
|
|
7878
8862
|
(e) => {
|
|
7879
8863
|
if (e.pointerId !== pointerIdRef.current) return;
|
|
7880
8864
|
e.currentTarget.releasePointerCapture(e.pointerId);
|
|
@@ -7884,7 +8868,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7884
8868
|
},
|
|
7885
8869
|
[onValueChangeEnd, value]
|
|
7886
8870
|
);
|
|
7887
|
-
const handleKeyDown =
|
|
8871
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
7888
8872
|
(e) => {
|
|
7889
8873
|
if (disabled) return;
|
|
7890
8874
|
if (e.key === "Home") {
|
|
@@ -7988,7 +8972,7 @@ var SliderThumb = React31__namespace.memo(function SliderThumb2({
|
|
|
7988
8972
|
}
|
|
7989
8973
|
);
|
|
7990
8974
|
});
|
|
7991
|
-
var RangeTrack =
|
|
8975
|
+
var RangeTrack = React38__namespace.memo(function RangeTrack2({
|
|
7992
8976
|
startPercent,
|
|
7993
8977
|
endPercent,
|
|
7994
8978
|
trackSize,
|
|
@@ -8233,7 +9217,7 @@ var RangeTrack = React31__namespace.memo(function RangeTrack2({
|
|
|
8233
9217
|
}
|
|
8234
9218
|
);
|
|
8235
9219
|
});
|
|
8236
|
-
var RangeSliderComponent =
|
|
9220
|
+
var RangeSliderComponent = React38__namespace.forwardRef(
|
|
8237
9221
|
({
|
|
8238
9222
|
value: controlledValue,
|
|
8239
9223
|
defaultValue,
|
|
@@ -8257,7 +9241,7 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8257
9241
|
const isHorizontal = orientation === "horizontal";
|
|
8258
9242
|
const defaultStart = (_a = defaultValue == null ? void 0 : defaultValue[0]) != null ? _a : min;
|
|
8259
9243
|
const defaultEnd = (_b = defaultValue == null ? void 0 : defaultValue[1]) != null ? _b : max;
|
|
8260
|
-
const [internalValue, setInternalValue] =
|
|
9244
|
+
const [internalValue, setInternalValue] = React38__namespace.useState([
|
|
8261
9245
|
defaultStart,
|
|
8262
9246
|
defaultEnd
|
|
8263
9247
|
]);
|
|
@@ -8271,10 +9255,10 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8271
9255
|
const endValue = snap(coerce(resolvedValue[1]));
|
|
8272
9256
|
const startPercent = toPercent(startValue);
|
|
8273
9257
|
const endPercent = toPercent(endValue);
|
|
8274
|
-
const [topThumb, setTopThumb] =
|
|
8275
|
-
const trackRef =
|
|
9258
|
+
const [topThumb, setTopThumb] = React38__namespace.useState("end");
|
|
9259
|
+
const trackRef = React38__namespace.useRef(null);
|
|
8276
9260
|
const minGap = step > 0 ? step : (max - min) / 1e3;
|
|
8277
|
-
const handleStartChange =
|
|
9261
|
+
const handleStartChange = React38__namespace.useCallback(
|
|
8278
9262
|
(newStart) => {
|
|
8279
9263
|
setTopThumb("start");
|
|
8280
9264
|
const clamped = Math.min(newStart, endValue - minGap);
|
|
@@ -8286,7 +9270,7 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8286
9270
|
},
|
|
8287
9271
|
[controlledValue, coerce, endValue, minGap, onValueChange, snap]
|
|
8288
9272
|
);
|
|
8289
|
-
const handleEndChange =
|
|
9273
|
+
const handleEndChange = React38__namespace.useCallback(
|
|
8290
9274
|
(newEnd) => {
|
|
8291
9275
|
setTopThumb("end");
|
|
8292
9276
|
const clamped = Math.max(newEnd, startValue + minGap);
|
|
@@ -8298,15 +9282,15 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8298
9282
|
},
|
|
8299
9283
|
[controlledValue, coerce, minGap, onValueChange, snap, startValue]
|
|
8300
9284
|
);
|
|
8301
|
-
const handleStartChangeEnd =
|
|
9285
|
+
const handleStartChangeEnd = React38__namespace.useCallback(
|
|
8302
9286
|
(v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([v, endValue]),
|
|
8303
9287
|
[endValue, onValueChangeEnd]
|
|
8304
9288
|
);
|
|
8305
|
-
const handleEndChangeEnd =
|
|
9289
|
+
const handleEndChangeEnd = React38__namespace.useCallback(
|
|
8306
9290
|
(v) => onValueChangeEnd == null ? void 0 : onValueChangeEnd([startValue, v]),
|
|
8307
9291
|
[onValueChangeEnd, startValue]
|
|
8308
9292
|
);
|
|
8309
|
-
const handleTrackPointerDown =
|
|
9293
|
+
const handleTrackPointerDown = React38__namespace.useCallback(
|
|
8310
9294
|
(e) => {
|
|
8311
9295
|
if (disabled) return;
|
|
8312
9296
|
const trackEl = trackRef.current;
|
|
@@ -8350,7 +9334,7 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8350
9334
|
trackSize
|
|
8351
9335
|
]
|
|
8352
9336
|
);
|
|
8353
|
-
const id =
|
|
9337
|
+
const id = React38__namespace.useId();
|
|
8354
9338
|
return /* @__PURE__ */ jsxRuntime.jsx(react.LazyMotion, { features: react.domMax, strict: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8355
9339
|
"div",
|
|
8356
9340
|
{
|
|
@@ -8430,7 +9414,7 @@ var RangeSliderComponent = React31__namespace.forwardRef(
|
|
|
8430
9414
|
}
|
|
8431
9415
|
);
|
|
8432
9416
|
RangeSliderComponent.displayName = "RangeSlider";
|
|
8433
|
-
var RangeSlider =
|
|
9417
|
+
var RangeSlider = React38__namespace.memo(RangeSliderComponent);
|
|
8434
9418
|
function getHorizontalRadius(isLeading, innerR, outerR) {
|
|
8435
9419
|
if (isLeading) {
|
|
8436
9420
|
return {
|
|
@@ -8469,7 +9453,7 @@ var allInnerRadius = (innerR) => ({
|
|
|
8469
9453
|
borderTopRightRadius: innerR,
|
|
8470
9454
|
borderBottomRightRadius: innerR
|
|
8471
9455
|
});
|
|
8472
|
-
var InsetIcon =
|
|
9456
|
+
var InsetIcon = React38__namespace.memo(function InsetIcon2({
|
|
8473
9457
|
icon,
|
|
8474
9458
|
isOnActiveSegment,
|
|
8475
9459
|
position,
|
|
@@ -8563,7 +9547,7 @@ function Ticks({
|
|
|
8563
9547
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { style, "aria-hidden": "true" }, tick);
|
|
8564
9548
|
}) });
|
|
8565
9549
|
}
|
|
8566
|
-
var SliderTrack =
|
|
9550
|
+
var SliderTrack = React38__namespace.memo(function SliderTrack2({
|
|
8567
9551
|
percent,
|
|
8568
9552
|
trackSize,
|
|
8569
9553
|
orientation,
|
|
@@ -8598,8 +9582,8 @@ var SliderTrack = React31__namespace.memo(function SliderTrack2({
|
|
|
8598
9582
|
const gapWithThumbStr = `${thumbGap + thumbHalfWidth}px`;
|
|
8599
9583
|
const hasAnyInsetIcon = Boolean(insetIcon || insetIconTrailing);
|
|
8600
9584
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
8601
|
-
const [trackWidth, setTrackWidth] =
|
|
8602
|
-
|
|
9585
|
+
const [trackWidth, setTrackWidth] = React38__namespace.useState(0);
|
|
9586
|
+
React38__namespace.useLayoutEffect(() => {
|
|
8603
9587
|
const el = trackRef.current;
|
|
8604
9588
|
if (!el || !hasAnyInsetIcon) return;
|
|
8605
9589
|
setTrackWidth(isHorizontal ? el.clientWidth : el.clientHeight);
|
|
@@ -8616,8 +9600,8 @@ var SliderTrack = React31__namespace.memo(function SliderTrack2({
|
|
|
8616
9600
|
const iconTotalWidth = activeIconSize + SliderTokens.insetIconPadding * 2 + thumbGap + thumbHalfWidth;
|
|
8617
9601
|
const iconThreshold = trackWidth > 0 ? iconTotalWidth / trackWidth : 0.15;
|
|
8618
9602
|
const HYSTERESIS_GAP = 0.04;
|
|
8619
|
-
const trailingActiveRef =
|
|
8620
|
-
const leadingActiveRef =
|
|
9603
|
+
const trailingActiveRef = React38__namespace.useRef(1 - percent <= iconThreshold);
|
|
9604
|
+
const leadingActiveRef = React38__namespace.useRef(percent > iconThreshold);
|
|
8621
9605
|
const trailingPercent = 1 - percent;
|
|
8622
9606
|
if (trailingActiveRef.current) {
|
|
8623
9607
|
if (trailingPercent > iconThreshold + HYSTERESIS_GAP) {
|
|
@@ -9124,7 +10108,7 @@ var SliderTrack = React31__namespace.memo(function SliderTrack2({
|
|
|
9124
10108
|
}
|
|
9125
10109
|
);
|
|
9126
10110
|
});
|
|
9127
|
-
var SliderComponent =
|
|
10111
|
+
var SliderComponent = React38__namespace.forwardRef(
|
|
9128
10112
|
({
|
|
9129
10113
|
value: controlledValue,
|
|
9130
10114
|
defaultValue,
|
|
@@ -9153,7 +10137,7 @@ var SliderComponent = React31__namespace.forwardRef(
|
|
|
9153
10137
|
const isHorizontal = orientation === "horizontal";
|
|
9154
10138
|
const midpoint = min + (max - min) / 2;
|
|
9155
10139
|
const initialValue = defaultValue != null ? defaultValue : midpoint;
|
|
9156
|
-
const [internalValue, setInternalValue] =
|
|
10140
|
+
const [internalValue, setInternalValue] = React38__namespace.useState(initialValue);
|
|
9157
10141
|
const resolvedValue = controlledValue !== void 0 ? controlledValue : internalValue;
|
|
9158
10142
|
const { coerce, snap, toPercent, ticks } = useSliderMath({
|
|
9159
10143
|
min,
|
|
@@ -9162,8 +10146,8 @@ var SliderComponent = React31__namespace.forwardRef(
|
|
|
9162
10146
|
});
|
|
9163
10147
|
const safeValue = snap(coerce(resolvedValue));
|
|
9164
10148
|
const percent = toPercent(safeValue);
|
|
9165
|
-
const trackRef =
|
|
9166
|
-
const handleValueChange =
|
|
10149
|
+
const trackRef = React38__namespace.useRef(null);
|
|
10150
|
+
const handleValueChange = React38__namespace.useCallback(
|
|
9167
10151
|
(newValue) => {
|
|
9168
10152
|
const clamped = snap(coerce(newValue));
|
|
9169
10153
|
if (controlledValue === void 0) {
|
|
@@ -9173,13 +10157,13 @@ var SliderComponent = React31__namespace.forwardRef(
|
|
|
9173
10157
|
},
|
|
9174
10158
|
[coerce, controlledValue, onValueChange, snap]
|
|
9175
10159
|
);
|
|
9176
|
-
const handleValueChangeEnd =
|
|
10160
|
+
const handleValueChangeEnd = React38__namespace.useCallback(
|
|
9177
10161
|
(newValue) => {
|
|
9178
10162
|
onValueChangeEnd == null ? void 0 : onValueChangeEnd(snap(coerce(newValue)));
|
|
9179
10163
|
},
|
|
9180
10164
|
[coerce, onValueChangeEnd, snap]
|
|
9181
10165
|
);
|
|
9182
|
-
const handleTrackPointerDown =
|
|
10166
|
+
const handleTrackPointerDown = React38__namespace.useCallback(
|
|
9183
10167
|
(e) => {
|
|
9184
10168
|
if (disabled) return;
|
|
9185
10169
|
const trackEl = trackRef.current;
|
|
@@ -9214,7 +10198,7 @@ var SliderComponent = React31__namespace.forwardRef(
|
|
|
9214
10198
|
trackSize
|
|
9215
10199
|
]
|
|
9216
10200
|
);
|
|
9217
|
-
const id =
|
|
10201
|
+
const id = React38__namespace.useId();
|
|
9218
10202
|
const thumbId = `slider-thumb-${id}`;
|
|
9219
10203
|
const supportsInsetIcon = !isCentered && SliderTokens.trackSizes[trackSize] >= 40;
|
|
9220
10204
|
const hasAnyInsetIcon = !!(insetIcon || insetIconTrailing);
|
|
@@ -9286,7 +10270,7 @@ var SliderComponent = React31__namespace.forwardRef(
|
|
|
9286
10270
|
}
|
|
9287
10271
|
);
|
|
9288
10272
|
SliderComponent.displayName = "Slider";
|
|
9289
|
-
var Slider =
|
|
10273
|
+
var Slider = React38__namespace.memo(SliderComponent);
|
|
9290
10274
|
var DURATION_MAP = {
|
|
9291
10275
|
short: 4e3,
|
|
9292
10276
|
long: 7e3
|
|
@@ -9332,9 +10316,9 @@ function toSnackbarData(item) {
|
|
|
9332
10316
|
return { id: generateId(), visuals: item.visuals, resolve: item.resolve };
|
|
9333
10317
|
}
|
|
9334
10318
|
function useSnackbarState() {
|
|
9335
|
-
const [current, setCurrent] =
|
|
9336
|
-
const queueRef =
|
|
9337
|
-
const showSnackbar =
|
|
10319
|
+
const [current, setCurrent] = React38__namespace.useState(null);
|
|
10320
|
+
const queueRef = React38__namespace.useRef([]);
|
|
10321
|
+
const showSnackbar = React38__namespace.useCallback(
|
|
9338
10322
|
(visuals) => {
|
|
9339
10323
|
return new Promise((resolve) => {
|
|
9340
10324
|
const item = { visuals, resolve };
|
|
@@ -9347,14 +10331,14 @@ function useSnackbarState() {
|
|
|
9347
10331
|
},
|
|
9348
10332
|
[]
|
|
9349
10333
|
);
|
|
9350
|
-
const _dismiss =
|
|
10334
|
+
const _dismiss = React38__namespace.useCallback((result) => {
|
|
9351
10335
|
setCurrent((prev) => {
|
|
9352
10336
|
if (prev) prev.resolve(result);
|
|
9353
10337
|
const next = queueRef.current.shift();
|
|
9354
10338
|
return next ? toSnackbarData(next) : null;
|
|
9355
10339
|
});
|
|
9356
10340
|
}, []);
|
|
9357
|
-
|
|
10341
|
+
React38__namespace.useEffect(() => {
|
|
9358
10342
|
return () => {
|
|
9359
10343
|
for (const item of queueRef.current) {
|
|
9360
10344
|
item.resolve(RESULT.DISMISSED);
|
|
@@ -9364,7 +10348,7 @@ function useSnackbarState() {
|
|
|
9364
10348
|
}, []);
|
|
9365
10349
|
return { current, showSnackbar, _dismiss };
|
|
9366
10350
|
}
|
|
9367
|
-
var Snackbar =
|
|
10351
|
+
var Snackbar = React38__namespace.memo(function Snackbar2({
|
|
9368
10352
|
data,
|
|
9369
10353
|
className
|
|
9370
10354
|
}) {
|
|
@@ -9378,15 +10362,15 @@ var Snackbar = React31__namespace.memo(function Snackbar2({
|
|
|
9378
10362
|
} = visuals;
|
|
9379
10363
|
const reducedMotion = react.useReducedMotion();
|
|
9380
10364
|
const durationMs = resolveDuration(duration);
|
|
9381
|
-
|
|
10365
|
+
React38__namespace.useEffect(() => {
|
|
9382
10366
|
const timer = setTimeout(() => resolve(RESULT.DISMISSED), durationMs);
|
|
9383
10367
|
return () => clearTimeout(timer);
|
|
9384
10368
|
}, [resolve, durationMs]);
|
|
9385
|
-
const handleAction =
|
|
10369
|
+
const handleAction = React38__namespace.useCallback(
|
|
9386
10370
|
() => resolve(RESULT.ACTION),
|
|
9387
10371
|
[resolve]
|
|
9388
10372
|
);
|
|
9389
|
-
const handleDismiss =
|
|
10373
|
+
const handleDismiss = React38__namespace.useCallback(
|
|
9390
10374
|
() => resolve(RESULT.DISMISSED),
|
|
9391
10375
|
[resolve]
|
|
9392
10376
|
);
|
|
@@ -9454,7 +10438,7 @@ var Snackbar = React31__namespace.memo(function Snackbar2({
|
|
|
9454
10438
|
Snackbar.displayName = "Snackbar";
|
|
9455
10439
|
function SnackbarHost({ state, className }) {
|
|
9456
10440
|
const { current, _dismiss } = state;
|
|
9457
|
-
const wrappedData =
|
|
10441
|
+
const wrappedData = React38__namespace.useMemo(() => {
|
|
9458
10442
|
if (!current) return null;
|
|
9459
10443
|
return __spreadProps(__spreadValues({}, current), { resolve: _dismiss });
|
|
9460
10444
|
}, [current, _dismiss]);
|
|
@@ -9472,12 +10456,12 @@ function SnackbarHost({ state, className }) {
|
|
|
9472
10456
|
) });
|
|
9473
10457
|
}
|
|
9474
10458
|
SnackbarHost.displayName = "SnackbarHost";
|
|
9475
|
-
var SnackbarContext =
|
|
10459
|
+
var SnackbarContext = React38__namespace.createContext(
|
|
9476
10460
|
null
|
|
9477
10461
|
);
|
|
9478
10462
|
function SnackbarProvider({ children }) {
|
|
9479
10463
|
const state = useSnackbarState();
|
|
9480
|
-
const contextValue =
|
|
10464
|
+
const contextValue = React38__namespace.useMemo(
|
|
9481
10465
|
() => ({ showSnackbar: state.showSnackbar }),
|
|
9482
10466
|
[state.showSnackbar]
|
|
9483
10467
|
);
|
|
@@ -9488,7 +10472,7 @@ function SnackbarProvider({ children }) {
|
|
|
9488
10472
|
}
|
|
9489
10473
|
SnackbarProvider.displayName = "SnackbarProvider";
|
|
9490
10474
|
function useSnackbar() {
|
|
9491
|
-
const ctx =
|
|
10475
|
+
const ctx = React38__namespace.useContext(SnackbarContext);
|
|
9492
10476
|
if (!ctx) {
|
|
9493
10477
|
throw new Error("useSnackbar must be used within a <SnackbarProvider>.");
|
|
9494
10478
|
}
|
|
@@ -9551,7 +10535,7 @@ var SwitchColors = {
|
|
|
9551
10535
|
// Focus indicator
|
|
9552
10536
|
focusIndicator: "var(--md-sys-color-secondary)"
|
|
9553
10537
|
};
|
|
9554
|
-
var
|
|
10538
|
+
var FAST_SPATIAL_SPRING2 = {
|
|
9555
10539
|
type: "spring",
|
|
9556
10540
|
stiffness: 500,
|
|
9557
10541
|
damping: 40
|
|
@@ -9592,7 +10576,7 @@ function isIconVisible(thumbContent, icons, showOnlySelectedIcon, checked) {
|
|
|
9592
10576
|
if (icons) return true;
|
|
9593
10577
|
return showOnlySelectedIcon && checked;
|
|
9594
10578
|
}
|
|
9595
|
-
var SwitchVisual =
|
|
10579
|
+
var SwitchVisual = React38__namespace.memo(function SwitchVisual2({
|
|
9596
10580
|
checked,
|
|
9597
10581
|
disabled,
|
|
9598
10582
|
isPressed,
|
|
@@ -9683,9 +10667,9 @@ var SwitchVisual = React31__namespace.memo(function SwitchVisual2({
|
|
|
9683
10667
|
backgroundColor: thumbBg
|
|
9684
10668
|
},
|
|
9685
10669
|
transition: prefersReduced ? { duration: 0 } : isPressed ? SNAP_TRANSITION : {
|
|
9686
|
-
x:
|
|
9687
|
-
width:
|
|
9688
|
-
height:
|
|
10670
|
+
x: FAST_SPATIAL_SPRING2,
|
|
10671
|
+
width: FAST_SPATIAL_SPRING2,
|
|
10672
|
+
height: FAST_SPATIAL_SPRING2,
|
|
9689
10673
|
backgroundColor: colorTransition
|
|
9690
10674
|
},
|
|
9691
10675
|
children: /* @__PURE__ */ jsxRuntime.jsx(react.AnimatePresence, { mode: "wait", children: showIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -9712,7 +10696,7 @@ var SwitchVisual = React31__namespace.memo(function SwitchVisual2({
|
|
|
9712
10696
|
}
|
|
9713
10697
|
);
|
|
9714
10698
|
});
|
|
9715
|
-
var SwitchComponent =
|
|
10699
|
+
var SwitchComponent = React38__namespace.forwardRef(
|
|
9716
10700
|
({
|
|
9717
10701
|
checked,
|
|
9718
10702
|
onCheckedChange,
|
|
@@ -9730,16 +10714,16 @@ var SwitchComponent = React31__namespace.forwardRef(
|
|
|
9730
10714
|
}, ref) => {
|
|
9731
10715
|
var _a;
|
|
9732
10716
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
9733
|
-
const [isPressed, setIsPressed] =
|
|
9734
|
-
const [isHovered, setIsHovered] =
|
|
9735
|
-
const [isFocused, setIsFocused] =
|
|
9736
|
-
const [ripples, setRipples] =
|
|
9737
|
-
const generatedId =
|
|
10717
|
+
const [isPressed, setIsPressed] = React38__namespace.useState(false);
|
|
10718
|
+
const [isHovered, setIsHovered] = React38__namespace.useState(false);
|
|
10719
|
+
const [isFocused, setIsFocused] = React38__namespace.useState(false);
|
|
10720
|
+
const [ripples, setRipples] = React38__namespace.useState([]);
|
|
10721
|
+
const generatedId = React38__namespace.useId();
|
|
9738
10722
|
const switchId = label ? `switch-${generatedId}` : void 0;
|
|
9739
|
-
const handleClick =
|
|
10723
|
+
const handleClick = React38__namespace.useCallback(() => {
|
|
9740
10724
|
if (!disabled) onCheckedChange(!checked);
|
|
9741
10725
|
}, [disabled, checked, onCheckedChange]);
|
|
9742
|
-
const handleKeyDown =
|
|
10726
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
9743
10727
|
(e) => {
|
|
9744
10728
|
if (disabled) return;
|
|
9745
10729
|
if (e.key === " " || e.key === "Enter") {
|
|
@@ -9749,7 +10733,7 @@ var SwitchComponent = React31__namespace.forwardRef(
|
|
|
9749
10733
|
},
|
|
9750
10734
|
[disabled, checked, onCheckedChange]
|
|
9751
10735
|
);
|
|
9752
|
-
const handlePointerDown =
|
|
10736
|
+
const handlePointerDown = React38__namespace.useCallback(
|
|
9753
10737
|
(e) => {
|
|
9754
10738
|
if (disabled) return;
|
|
9755
10739
|
setIsPressed(true);
|
|
@@ -9764,19 +10748,19 @@ var SwitchComponent = React31__namespace.forwardRef(
|
|
|
9764
10748
|
},
|
|
9765
10749
|
[disabled]
|
|
9766
10750
|
);
|
|
9767
|
-
const handlePointerUp =
|
|
10751
|
+
const handlePointerUp = React38__namespace.useCallback(() => {
|
|
9768
10752
|
setIsPressed(false);
|
|
9769
10753
|
}, []);
|
|
9770
|
-
const handlePointerEnter =
|
|
10754
|
+
const handlePointerEnter = React38__namespace.useCallback(() => {
|
|
9771
10755
|
if (!disabled) setIsHovered(true);
|
|
9772
10756
|
}, [disabled]);
|
|
9773
|
-
const handlePointerLeave =
|
|
10757
|
+
const handlePointerLeave = React38__namespace.useCallback(() => {
|
|
9774
10758
|
setIsHovered(false);
|
|
9775
10759
|
setIsPressed(false);
|
|
9776
10760
|
}, []);
|
|
9777
|
-
const handleFocus =
|
|
9778
|
-
const handleBlur =
|
|
9779
|
-
const removeRipple =
|
|
10761
|
+
const handleFocus = React38__namespace.useCallback(() => setIsFocused(true), []);
|
|
10762
|
+
const handleBlur = React38__namespace.useCallback(() => setIsFocused(false), []);
|
|
10763
|
+
const removeRipple = React38__namespace.useCallback(
|
|
9780
10764
|
(id) => setRipples((prev) => prev.filter((r) => r.id !== id)),
|
|
9781
10765
|
[]
|
|
9782
10766
|
);
|
|
@@ -9861,10 +10845,54 @@ var SwitchComponent = React31__namespace.forwardRef(
|
|
|
9861
10845
|
}
|
|
9862
10846
|
);
|
|
9863
10847
|
SwitchComponent.displayName = "Switch";
|
|
9864
|
-
var Switch =
|
|
9865
|
-
var
|
|
10848
|
+
var Switch = React38__namespace.memo(SwitchComponent);
|
|
10849
|
+
var typographyVariants = classVarianceAuthority.cva("m-0 p-0 text-m3-on-surface", {
|
|
10850
|
+
variants: {
|
|
10851
|
+
variant: {
|
|
10852
|
+
"display-lg": "text-[57px] leading-[64px] font-normal tracking-[-0.25px]",
|
|
10853
|
+
"display-md": "text-[45px] leading-[52px] font-normal tracking-[0px]",
|
|
10854
|
+
"display-sm": "text-[36px] leading-[44px] font-normal tracking-[0px]",
|
|
10855
|
+
"headline-lg": "text-[32px] leading-[40px] font-normal tracking-[0px]",
|
|
10856
|
+
"headline-md": "text-[28px] leading-[36px] font-normal tracking-[0px]",
|
|
10857
|
+
"headline-sm": "text-[24px] leading-[32px] font-normal tracking-[0px]",
|
|
10858
|
+
"title-lg": "text-[22px] leading-[28px] font-normal tracking-[0px]",
|
|
10859
|
+
"title-md": "text-[16px] leading-[24px] font-medium tracking-[0.15px]",
|
|
10860
|
+
"title-sm": "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
|
|
10861
|
+
"label-lg": "text-[14px] leading-[20px] font-medium tracking-[0.1px]",
|
|
10862
|
+
"label-md": "text-[12px] leading-[16px] font-medium tracking-[0.5px]",
|
|
10863
|
+
"label-sm": "text-[11px] leading-[16px] font-medium tracking-[0.5px]",
|
|
10864
|
+
"body-lg": "text-[16px] leading-[24px] font-normal tracking-[0.5px]",
|
|
10865
|
+
"body-md": "text-[14px] leading-[20px] font-normal tracking-[0.25px]",
|
|
10866
|
+
"body-sm": "text-[12px] leading-[16px] font-normal tracking-[0.4px]"
|
|
10867
|
+
}
|
|
10868
|
+
},
|
|
10869
|
+
defaultVariants: {
|
|
10870
|
+
variant: "body-md"
|
|
10871
|
+
}
|
|
10872
|
+
});
|
|
10873
|
+
var Text = React38__namespace.forwardRef(
|
|
10874
|
+
(_a, ref) => {
|
|
10875
|
+
var _b = _a, { className, variant, as: Component } = _b, props = __objRest(_b, ["className", "variant", "as"]);
|
|
10876
|
+
const defaultComponent = React38__namespace.useMemo(() => {
|
|
10877
|
+
if ((variant == null ? void 0 : variant.startsWith("display")) || (variant == null ? void 0 : variant.startsWith("headline")))
|
|
10878
|
+
return "h1";
|
|
10879
|
+
if (variant == null ? void 0 : variant.startsWith("title")) return "h2";
|
|
10880
|
+
return "p";
|
|
10881
|
+
}, [variant]);
|
|
10882
|
+
const Tag = Component || defaultComponent;
|
|
10883
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10884
|
+
Tag,
|
|
10885
|
+
__spreadValues({
|
|
10886
|
+
ref,
|
|
10887
|
+
className: cn(typographyVariants({ variant, className }))
|
|
10888
|
+
}, props)
|
|
10889
|
+
);
|
|
10890
|
+
}
|
|
10891
|
+
);
|
|
10892
|
+
Text.displayName = "Text";
|
|
10893
|
+
var TabsContext = React38__namespace.createContext(null);
|
|
9866
10894
|
function useTabsContext() {
|
|
9867
|
-
const ctx =
|
|
10895
|
+
const ctx = React38__namespace.useContext(TabsContext);
|
|
9868
10896
|
if (!ctx) {
|
|
9869
10897
|
throw new Error(
|
|
9870
10898
|
"[MD3 Tabs] Component must be used within a <Tabs> root. Ensure <TabsList>, <Tab>, and <TabsContent> are descendants of <Tabs>."
|
|
@@ -9872,7 +10900,7 @@ function useTabsContext() {
|
|
|
9872
10900
|
}
|
|
9873
10901
|
return ctx;
|
|
9874
10902
|
}
|
|
9875
|
-
var TabsComponent =
|
|
10903
|
+
var TabsComponent = React38__namespace.forwardRef(
|
|
9876
10904
|
({
|
|
9877
10905
|
value: controlledValue,
|
|
9878
10906
|
defaultValue = "",
|
|
@@ -9881,35 +10909,35 @@ var TabsComponent = React31__namespace.forwardRef(
|
|
|
9881
10909
|
children,
|
|
9882
10910
|
className
|
|
9883
10911
|
}, ref) => {
|
|
9884
|
-
const [internalValue, setInternalValue] =
|
|
10912
|
+
const [internalValue, setInternalValue] = React38__namespace.useState(defaultValue);
|
|
9885
10913
|
const isControlled = controlledValue !== void 0;
|
|
9886
10914
|
const value = isControlled ? controlledValue : internalValue;
|
|
9887
|
-
const handleValueChange =
|
|
10915
|
+
const handleValueChange = React38__namespace.useCallback(
|
|
9888
10916
|
(newValue) => {
|
|
9889
10917
|
if (!isControlled) setInternalValue(newValue);
|
|
9890
10918
|
onValueChange == null ? void 0 : onValueChange(newValue);
|
|
9891
10919
|
},
|
|
9892
10920
|
[isControlled, onValueChange]
|
|
9893
10921
|
);
|
|
9894
|
-
const [focusedValue, setFocusedValue] =
|
|
9895
|
-
|
|
10922
|
+
const [focusedValue, setFocusedValue] = React38__namespace.useState(value);
|
|
10923
|
+
React38__namespace.useEffect(() => {
|
|
9896
10924
|
setFocusedValue(value);
|
|
9897
10925
|
}, [value]);
|
|
9898
|
-
const [tabValues, setTabValues] =
|
|
9899
|
-
const registerTab =
|
|
10926
|
+
const [tabValues, setTabValues] = React38__namespace.useState([]);
|
|
10927
|
+
const registerTab = React38__namespace.useCallback((tabValue) => {
|
|
9900
10928
|
setTabValues((prev) => {
|
|
9901
10929
|
if (prev.includes(tabValue)) return prev;
|
|
9902
10930
|
return [...prev, tabValue];
|
|
9903
10931
|
});
|
|
9904
10932
|
}, []);
|
|
9905
|
-
const unregisterTab =
|
|
10933
|
+
const unregisterTab = React38__namespace.useCallback((tabValue) => {
|
|
9906
10934
|
setTabValues((prev) => prev.filter((v) => v !== tabValue));
|
|
9907
10935
|
}, []);
|
|
9908
|
-
const hasAutoSelected =
|
|
9909
|
-
const [disabledValues, setDisabledValues] =
|
|
10936
|
+
const hasAutoSelected = React38__namespace.useRef(false);
|
|
10937
|
+
const [disabledValues, setDisabledValues] = React38__namespace.useState(
|
|
9910
10938
|
/* @__PURE__ */ new Set()
|
|
9911
10939
|
);
|
|
9912
|
-
const markTabDisabled =
|
|
10940
|
+
const markTabDisabled = React38__namespace.useCallback(
|
|
9913
10941
|
(tabValue, disabled) => {
|
|
9914
10942
|
setDisabledValues((prev) => {
|
|
9915
10943
|
const next = new Set(prev);
|
|
@@ -9923,7 +10951,7 @@ var TabsComponent = React31__namespace.forwardRef(
|
|
|
9923
10951
|
},
|
|
9924
10952
|
[]
|
|
9925
10953
|
);
|
|
9926
|
-
|
|
10954
|
+
React38__namespace.useEffect(() => {
|
|
9927
10955
|
if (isControlled || hasAutoSelected.current || tabValues.length === 0) {
|
|
9928
10956
|
return;
|
|
9929
10957
|
}
|
|
@@ -9938,9 +10966,9 @@ var TabsComponent = React31__namespace.forwardRef(
|
|
|
9938
10966
|
setFocusedValue(firstEnabled);
|
|
9939
10967
|
}
|
|
9940
10968
|
}, [tabValues, disabledValues, isControlled, value]);
|
|
9941
|
-
const id =
|
|
10969
|
+
const id = React38__namespace.useId();
|
|
9942
10970
|
const layoutGroupId = `tabs-${id}`;
|
|
9943
|
-
const contextValue =
|
|
10971
|
+
const contextValue = React38__namespace.useMemo(
|
|
9944
10972
|
() => ({
|
|
9945
10973
|
value,
|
|
9946
10974
|
onValueChange: handleValueChange,
|
|
@@ -9971,12 +10999,12 @@ var TabsComponent = React31__namespace.forwardRef(
|
|
|
9971
10999
|
}
|
|
9972
11000
|
);
|
|
9973
11001
|
TabsComponent.displayName = "Tabs";
|
|
9974
|
-
var Tabs =
|
|
9975
|
-
var TabsListContext =
|
|
11002
|
+
var Tabs = React38__namespace.memo(TabsComponent);
|
|
11003
|
+
var TabsListContext = React38__namespace.createContext(
|
|
9976
11004
|
null
|
|
9977
11005
|
);
|
|
9978
11006
|
function useTabsListContext() {
|
|
9979
|
-
const ctx =
|
|
11007
|
+
const ctx = React38__namespace.useContext(TabsListContext);
|
|
9980
11008
|
return ctx != null ? ctx : { variant: "primary", scrollable: false };
|
|
9981
11009
|
}
|
|
9982
11010
|
|
|
@@ -10060,7 +11088,7 @@ var TABS_CONTENT_TRANSITION = {
|
|
|
10060
11088
|
ease: "easeInOut"
|
|
10061
11089
|
};
|
|
10062
11090
|
var INDICATOR_MIN_WIDTH = 24;
|
|
10063
|
-
var TabComponent =
|
|
11091
|
+
var TabComponent = React38__namespace.forwardRef(
|
|
10064
11092
|
({
|
|
10065
11093
|
value,
|
|
10066
11094
|
icon,
|
|
@@ -10090,9 +11118,9 @@ var TabComponent = React31__namespace.forwardRef(
|
|
|
10090
11118
|
const isFocused = focusedValue === value;
|
|
10091
11119
|
const hasIcon = icon != null;
|
|
10092
11120
|
const isStackedIcon = hasIcon && !inlineIcon;
|
|
10093
|
-
const buttonRef =
|
|
10094
|
-
const isFirstMount =
|
|
10095
|
-
const mergedRef =
|
|
11121
|
+
const buttonRef = React38__namespace.useRef(null);
|
|
11122
|
+
const isFirstMount = React38__namespace.useRef(true);
|
|
11123
|
+
const mergedRef = React38__namespace.useCallback(
|
|
10096
11124
|
(node) => {
|
|
10097
11125
|
buttonRef.current = node;
|
|
10098
11126
|
if (typeof ref === "function") ref(node);
|
|
@@ -10100,15 +11128,15 @@ var TabComponent = React31__namespace.forwardRef(
|
|
|
10100
11128
|
},
|
|
10101
11129
|
[ref]
|
|
10102
11130
|
);
|
|
10103
|
-
|
|
11131
|
+
React38__namespace.useEffect(() => {
|
|
10104
11132
|
registerTab(value);
|
|
10105
11133
|
return () => unregisterTab(value);
|
|
10106
11134
|
}, [value, registerTab, unregisterTab]);
|
|
10107
|
-
|
|
11135
|
+
React38__namespace.useEffect(() => {
|
|
10108
11136
|
markTabDisabled(value, disabled);
|
|
10109
11137
|
return () => markTabDisabled(value, false);
|
|
10110
11138
|
}, [value, disabled, markTabDisabled]);
|
|
10111
|
-
const handleKeyDown =
|
|
11139
|
+
const handleKeyDown = React38__namespace.useCallback(
|
|
10112
11140
|
(e) => {
|
|
10113
11141
|
const isRtl = buttonRef.current ? getComputedStyle(buttonRef.current).direction === "rtl" : false;
|
|
10114
11142
|
const enabledValues = tabValues.filter((v) => !disabledValues.has(v));
|
|
@@ -10162,7 +11190,7 @@ var TabComponent = React31__namespace.forwardRef(
|
|
|
10162
11190
|
autoActivate
|
|
10163
11191
|
]
|
|
10164
11192
|
);
|
|
10165
|
-
|
|
11193
|
+
React38__namespace.useEffect(() => {
|
|
10166
11194
|
if (isFirstMount.current) {
|
|
10167
11195
|
isFirstMount.current = false;
|
|
10168
11196
|
return;
|
|
@@ -10171,7 +11199,7 @@ var TabComponent = React31__namespace.forwardRef(
|
|
|
10171
11199
|
buttonRef.current.focus({ preventScroll: true });
|
|
10172
11200
|
}
|
|
10173
11201
|
}, [isFocused]);
|
|
10174
|
-
|
|
11202
|
+
React38__namespace.useEffect(() => {
|
|
10175
11203
|
if (!isActive || !scrollable || !buttonRef.current) return;
|
|
10176
11204
|
const btn = buttonRef.current;
|
|
10177
11205
|
let container = btn.parentElement;
|
|
@@ -10308,8 +11336,8 @@ var TabComponent = React31__namespace.forwardRef(
|
|
|
10308
11336
|
}
|
|
10309
11337
|
);
|
|
10310
11338
|
TabComponent.displayName = "Tab";
|
|
10311
|
-
var Tab =
|
|
10312
|
-
var TabsContentComponent =
|
|
11339
|
+
var Tab = React38__namespace.memo(TabComponent);
|
|
11340
|
+
var TabsContentComponent = React38__namespace.forwardRef(
|
|
10313
11341
|
({ value, className, children }, ref) => {
|
|
10314
11342
|
var _a;
|
|
10315
11343
|
const { value: selectedValue, layoutGroupId } = useTabsContext();
|
|
@@ -10343,8 +11371,8 @@ var TabsContentComponent = React31__namespace.forwardRef(
|
|
|
10343
11371
|
}
|
|
10344
11372
|
);
|
|
10345
11373
|
TabsContentComponent.displayName = "TabsContent";
|
|
10346
|
-
var TabsContent =
|
|
10347
|
-
var TabsListComponent =
|
|
11374
|
+
var TabsContent = React38__namespace.memo(TabsContentComponent);
|
|
11375
|
+
var TabsListComponent = React38__namespace.forwardRef(
|
|
10348
11376
|
({
|
|
10349
11377
|
variant,
|
|
10350
11378
|
scrollable = false,
|
|
@@ -10355,12 +11383,12 @@ var TabsListComponent = React31__namespace.forwardRef(
|
|
|
10355
11383
|
}, ref) => {
|
|
10356
11384
|
const { layoutGroupId, value, setFocusedValue } = useTabsContext();
|
|
10357
11385
|
const listLayoutId = `${layoutGroupId}-list`;
|
|
10358
|
-
const listContextValue =
|
|
11386
|
+
const listContextValue = React38__namespace.useMemo(
|
|
10359
11387
|
() => ({ variant, scrollable }),
|
|
10360
11388
|
[variant, scrollable]
|
|
10361
11389
|
);
|
|
10362
11390
|
const bgColor = backgroundColor != null ? backgroundColor : "var(--md-sys-color-surface)";
|
|
10363
|
-
const handleBlur =
|
|
11391
|
+
const handleBlur = React38__namespace.useCallback(
|
|
10364
11392
|
(e) => {
|
|
10365
11393
|
const listEl = e.currentTarget;
|
|
10366
11394
|
if (listEl.contains(e.relatedTarget)) return;
|
|
@@ -10409,7 +11437,7 @@ var TabsListComponent = React31__namespace.forwardRef(
|
|
|
10409
11437
|
}
|
|
10410
11438
|
);
|
|
10411
11439
|
TabsListComponent.displayName = "TabsList";
|
|
10412
|
-
var TabsList =
|
|
11440
|
+
var TabsList = React38__namespace.memo(TabsListComponent);
|
|
10413
11441
|
|
|
10414
11442
|
// src/ui/text-field/text-field.tokens.ts
|
|
10415
11443
|
var TF_COLORS = {
|
|
@@ -10448,7 +11476,7 @@ var TF_TYPOGRAPHY = {
|
|
|
10448
11476
|
var TF_CLASSES = {
|
|
10449
11477
|
// Prefix / Suffix
|
|
10450
11478
|
prefixSuffix: "text-base text-[var(--color-m3-on-surface-variant)] select-none shrink-0"};
|
|
10451
|
-
var ActiveIndicator =
|
|
11479
|
+
var ActiveIndicator = React38__namespace.memo(function ActiveIndicator2({
|
|
10452
11480
|
isFocused,
|
|
10453
11481
|
isError,
|
|
10454
11482
|
isDisabled,
|
|
@@ -10495,7 +11523,7 @@ function getLabelColor(isFloated, isFocused, isError, isDisabled) {
|
|
|
10495
11523
|
if (isFloated && isFocused) return TF_COLORS.primary;
|
|
10496
11524
|
return TF_COLORS.onSurfaceVariant;
|
|
10497
11525
|
}
|
|
10498
|
-
var FloatingLabel =
|
|
11526
|
+
var FloatingLabel = React38__namespace.memo(function FloatingLabel2({
|
|
10499
11527
|
text,
|
|
10500
11528
|
isFloated,
|
|
10501
11529
|
isFocused,
|
|
@@ -10555,7 +11583,7 @@ var FloatingLabel = React31__namespace.memo(function FloatingLabel2({
|
|
|
10555
11583
|
);
|
|
10556
11584
|
});
|
|
10557
11585
|
FloatingLabel.displayName = "FloatingLabel";
|
|
10558
|
-
var LeadingIcon =
|
|
11586
|
+
var LeadingIcon = React38__namespace.memo(function LeadingIcon2({
|
|
10559
11587
|
children,
|
|
10560
11588
|
isError,
|
|
10561
11589
|
isDisabled
|
|
@@ -10579,7 +11607,7 @@ function getOutlineColor(isFocused, isError, isHovered, isDisabled) {
|
|
|
10579
11607
|
if (isHovered) return TF_COLORS.inputText;
|
|
10580
11608
|
return TF_COLORS.outline;
|
|
10581
11609
|
}
|
|
10582
|
-
var OutlineContainer =
|
|
11610
|
+
var OutlineContainer = React38__namespace.memo(function OutlineContainer2({
|
|
10583
11611
|
isFloated,
|
|
10584
11612
|
isFocused,
|
|
10585
11613
|
isError,
|
|
@@ -10677,7 +11705,7 @@ var OutlineContainer = React31__namespace.memo(function OutlineContainer2({
|
|
|
10677
11705
|
);
|
|
10678
11706
|
});
|
|
10679
11707
|
OutlineContainer.displayName = "OutlineContainer";
|
|
10680
|
-
var PrefixSuffix =
|
|
11708
|
+
var PrefixSuffix = React38__namespace.memo(function PrefixSuffix2({
|
|
10681
11709
|
text,
|
|
10682
11710
|
type,
|
|
10683
11711
|
visible,
|
|
@@ -10719,7 +11747,7 @@ function AnimatedText({
|
|
|
10719
11747
|
motionKey
|
|
10720
11748
|
);
|
|
10721
11749
|
}
|
|
10722
|
-
var SupportingText =
|
|
11750
|
+
var SupportingText = React38__namespace.memo(function SupportingText2({
|
|
10723
11751
|
supportingText,
|
|
10724
11752
|
errorText,
|
|
10725
11753
|
isError,
|
|
@@ -10830,7 +11858,7 @@ function ClearIcon() {
|
|
|
10830
11858
|
}
|
|
10831
11859
|
);
|
|
10832
11860
|
}
|
|
10833
|
-
var TrailingIcon =
|
|
11861
|
+
var TrailingIcon = React38__namespace.memo(function TrailingIcon2({
|
|
10834
11862
|
mode,
|
|
10835
11863
|
children,
|
|
10836
11864
|
value,
|
|
@@ -10896,7 +11924,7 @@ var TrailingIcon = React31__namespace.memo(function TrailingIcon2({
|
|
|
10896
11924
|
});
|
|
10897
11925
|
TrailingIcon.displayName = "TrailingIcon";
|
|
10898
11926
|
var LINE_HEIGHT_PX = 24;
|
|
10899
|
-
var TextFieldComponent =
|
|
11927
|
+
var TextFieldComponent = React38__namespace.forwardRef(
|
|
10900
11928
|
({
|
|
10901
11929
|
// Core
|
|
10902
11930
|
variant = "filled",
|
|
@@ -10960,30 +11988,30 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
10960
11988
|
}, ref) => {
|
|
10961
11989
|
var _a;
|
|
10962
11990
|
const prefersReduced = (_a = react.useReducedMotion()) != null ? _a : false;
|
|
10963
|
-
const generatedId =
|
|
11991
|
+
const generatedId = React38__namespace.useId();
|
|
10964
11992
|
const inputId = idProp != null ? idProp : `tf-${generatedId}`;
|
|
10965
11993
|
const supportingId = `${inputId}-supporting`;
|
|
10966
11994
|
const isControlled = valueProp !== void 0;
|
|
10967
|
-
const [internalValue, setInternalValue] =
|
|
11995
|
+
const [internalValue, setInternalValue] = React38__namespace.useState(defaultValue);
|
|
10968
11996
|
const currentValue = isControlled ? valueProp : internalValue;
|
|
10969
|
-
const [isFocused, setIsFocused] =
|
|
10970
|
-
const [showPassword, setShowPassword] =
|
|
11997
|
+
const [isFocused, setIsFocused] = React38__namespace.useState(false);
|
|
11998
|
+
const [showPassword, setShowPassword] = React38__namespace.useState(false);
|
|
10971
11999
|
const resolvedInputType = type === "password" && showPassword ? "text" : type;
|
|
10972
|
-
const [nativeError, setNativeError] =
|
|
10973
|
-
const [labelWidth, setLabelWidth] =
|
|
12000
|
+
const [nativeError, setNativeError] = React38__namespace.useState("");
|
|
12001
|
+
const [labelWidth, setLabelWidth] = React38__namespace.useState(0);
|
|
10974
12002
|
const hasValue = currentValue.length > 0;
|
|
10975
12003
|
const isFloated = isFocused || hasValue;
|
|
10976
12004
|
const isError = errorProp || !!nativeError || maxLength !== void 0 && currentValue.length > maxLength;
|
|
10977
12005
|
const containerHeight = dense ? TF_SIZE.denseHeight : TF_SIZE.height;
|
|
10978
12006
|
const showAsterisk = required && !noAsterisk;
|
|
10979
|
-
const inputRef =
|
|
10980
|
-
const labelSpanRef =
|
|
10981
|
-
|
|
12007
|
+
const inputRef = React38__namespace.useRef(null);
|
|
12008
|
+
const labelSpanRef = React38__namespace.useRef(null);
|
|
12009
|
+
React38__namespace.useLayoutEffect(() => {
|
|
10982
12010
|
if (labelSpanRef.current) {
|
|
10983
12011
|
setLabelWidth(labelSpanRef.current.offsetWidth);
|
|
10984
12012
|
}
|
|
10985
12013
|
}, []);
|
|
10986
|
-
|
|
12014
|
+
React38__namespace.useLayoutEffect(() => {
|
|
10987
12015
|
if (type !== "textarea" || !inputRef.current) return;
|
|
10988
12016
|
const textarea = inputRef.current;
|
|
10989
12017
|
if (autoResize) {
|
|
@@ -10995,7 +12023,7 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
10995
12023
|
}
|
|
10996
12024
|
textarea.style.overflowY = "hidden";
|
|
10997
12025
|
}, [type, autoResize, maxRows, currentValue]);
|
|
10998
|
-
const handleValueChange =
|
|
12026
|
+
const handleValueChange = React38__namespace.useCallback(
|
|
10999
12027
|
(newValue) => {
|
|
11000
12028
|
var _a2, _b;
|
|
11001
12029
|
if (!isControlled) setInternalValue(newValue);
|
|
@@ -11004,7 +12032,7 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
11004
12032
|
},
|
|
11005
12033
|
[isControlled]
|
|
11006
12034
|
);
|
|
11007
|
-
const handleChange =
|
|
12035
|
+
const handleChange = React38__namespace.useCallback(
|
|
11008
12036
|
(e) => {
|
|
11009
12037
|
const newVal = e.target.value;
|
|
11010
12038
|
handleValueChange(newVal);
|
|
@@ -11012,14 +12040,14 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
11012
12040
|
},
|
|
11013
12041
|
[handleValueChange, onChange]
|
|
11014
12042
|
);
|
|
11015
|
-
const handleFocus =
|
|
12043
|
+
const handleFocus = React38__namespace.useCallback(
|
|
11016
12044
|
(e) => {
|
|
11017
12045
|
setIsFocused(true);
|
|
11018
12046
|
onFocus == null ? void 0 : onFocus(e);
|
|
11019
12047
|
},
|
|
11020
12048
|
[onFocus]
|
|
11021
12049
|
);
|
|
11022
|
-
const handleBlur =
|
|
12050
|
+
const handleBlur = React38__namespace.useCallback(
|
|
11023
12051
|
(e) => {
|
|
11024
12052
|
setIsFocused(false);
|
|
11025
12053
|
const el = inputRef.current;
|
|
@@ -11032,7 +12060,7 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
11032
12060
|
},
|
|
11033
12061
|
[onBlur]
|
|
11034
12062
|
);
|
|
11035
|
-
const handleClear =
|
|
12063
|
+
const handleClear = React38__namespace.useCallback(() => {
|
|
11036
12064
|
var _a2;
|
|
11037
12065
|
handleValueChange("");
|
|
11038
12066
|
onChange == null ? void 0 : onChange("", {
|
|
@@ -11040,12 +12068,12 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
11040
12068
|
});
|
|
11041
12069
|
(_a2 = inputRef.current) == null ? void 0 : _a2.focus();
|
|
11042
12070
|
}, [handleValueChange, onChange]);
|
|
11043
|
-
const handlePasswordToggle =
|
|
12071
|
+
const handlePasswordToggle = React38__namespace.useCallback(() => {
|
|
11044
12072
|
var _a2;
|
|
11045
12073
|
setShowPassword((prev) => !prev);
|
|
11046
12074
|
(_a2 = inputRef.current) == null ? void 0 : _a2.focus();
|
|
11047
12075
|
}, []);
|
|
11048
|
-
|
|
12076
|
+
React38__namespace.useImperativeHandle(
|
|
11049
12077
|
ref,
|
|
11050
12078
|
() => ({
|
|
11051
12079
|
focus: () => {
|
|
@@ -11290,7 +12318,7 @@ var TextFieldComponent = React31__namespace.forwardRef(
|
|
|
11290
12318
|
}
|
|
11291
12319
|
);
|
|
11292
12320
|
TextFieldComponent.displayName = "TextField";
|
|
11293
|
-
var TextField =
|
|
12321
|
+
var TextField = React38__namespace.memo(TextFieldComponent);
|
|
11294
12322
|
|
|
11295
12323
|
// src/ui/typography/typography-key-tokens.ts
|
|
11296
12324
|
var TypographyKeyTokens = /* @__PURE__ */ ((TypographyKeyTokens2) => {
|
|
@@ -12005,9 +13033,9 @@ var TOKEN_TO_PROP = {
|
|
|
12005
13033
|
};
|
|
12006
13034
|
var defaultTokens = new TypographyTokens();
|
|
12007
13035
|
var defaultTypography = new Typography();
|
|
12008
|
-
var TypographyContext =
|
|
13036
|
+
var TypographyContext = React38.createContext(defaultTypography);
|
|
12009
13037
|
function useTypography() {
|
|
12010
|
-
return
|
|
13038
|
+
return React38.useContext(TypographyContext);
|
|
12011
13039
|
}
|
|
12012
13040
|
function TypographyProvider({
|
|
12013
13041
|
children,
|
|
@@ -12015,7 +13043,7 @@ function TypographyProvider({
|
|
|
12015
13043
|
fontFamily,
|
|
12016
13044
|
fontVariationAxes
|
|
12017
13045
|
}) {
|
|
12018
|
-
const value =
|
|
13046
|
+
const value = React38.useMemo(() => {
|
|
12019
13047
|
if (typography) return typography;
|
|
12020
13048
|
if (fontFamily || fontVariationAxes) {
|
|
12021
13049
|
return new Typography(
|
|
@@ -12026,7 +13054,7 @@ function TypographyProvider({
|
|
|
12026
13054
|
}, [typography, fontFamily, fontVariationAxes]);
|
|
12027
13055
|
return /* @__PURE__ */ jsxRuntime.jsx(TypographyContext.Provider, { value, children });
|
|
12028
13056
|
}
|
|
12029
|
-
var ThemeContext =
|
|
13057
|
+
var ThemeContext = React38.createContext(void 0);
|
|
12030
13058
|
var STORAGE_KEY_COLOR = "md3-source-color";
|
|
12031
13059
|
var STORAGE_KEY_MODE = "md3-theme-mode";
|
|
12032
13060
|
var defaultTokens2 = new TypographyTokens();
|
|
@@ -12041,20 +13069,21 @@ function MD3ThemeProvider({
|
|
|
12041
13069
|
fontVariationAxes,
|
|
12042
13070
|
enableSnackbar = false
|
|
12043
13071
|
}) {
|
|
12044
|
-
const [sourceColor, setSourceColor] =
|
|
12045
|
-
const [mode, setMode] =
|
|
12046
|
-
const [isHydrated, setIsHydrated] =
|
|
12047
|
-
|
|
13072
|
+
const [sourceColor, setSourceColor] = React38.useState(initialSourceColor);
|
|
13073
|
+
const [mode, setMode] = React38.useState(defaultMode);
|
|
13074
|
+
const [isHydrated, setIsHydrated] = React38.useState(!persistToLocalStorage);
|
|
13075
|
+
React38.useEffect(() => {
|
|
12048
13076
|
if (!persistToLocalStorage) return;
|
|
12049
13077
|
const savedColor = localStorage.getItem(STORAGE_KEY_COLOR);
|
|
12050
13078
|
const savedMode = localStorage.getItem(
|
|
12051
13079
|
STORAGE_KEY_MODE
|
|
12052
13080
|
);
|
|
12053
13081
|
if (savedColor) setSourceColor(savedColor);
|
|
12054
|
-
if (savedMode === "light" || savedMode === "dark"
|
|
13082
|
+
if (savedMode === "light" || savedMode === "dark" || savedMode === "system")
|
|
13083
|
+
setMode(savedMode);
|
|
12055
13084
|
setIsHydrated(true);
|
|
12056
13085
|
}, [persistToLocalStorage]);
|
|
12057
|
-
|
|
13086
|
+
React38.useEffect(() => {
|
|
12058
13087
|
if (!isHydrated) return;
|
|
12059
13088
|
applyTheme(sourceColor, mode);
|
|
12060
13089
|
if (persistToLocalStorage) {
|
|
@@ -12062,11 +13091,19 @@ function MD3ThemeProvider({
|
|
|
12062
13091
|
localStorage.setItem(STORAGE_KEY_MODE, mode);
|
|
12063
13092
|
}
|
|
12064
13093
|
}, [sourceColor, mode, persistToLocalStorage, isHydrated]);
|
|
12065
|
-
|
|
12066
|
-
(
|
|
12067
|
-
|
|
13094
|
+
React38.useEffect(() => {
|
|
13095
|
+
if (mode !== "system" || typeof window === "undefined") return;
|
|
13096
|
+
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
13097
|
+
const handleChange = () => applyTheme(sourceColor, "system");
|
|
13098
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
13099
|
+
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
13100
|
+
}, [mode, sourceColor]);
|
|
13101
|
+
const effectiveMode = resolveMode(mode);
|
|
13102
|
+
const themeValue = React38.useMemo(
|
|
13103
|
+
() => ({ sourceColor, setSourceColor, mode, setMode, effectiveMode }),
|
|
13104
|
+
[sourceColor, mode, effectiveMode]
|
|
12068
13105
|
);
|
|
12069
|
-
const typographyValue =
|
|
13106
|
+
const typographyValue = React38.useMemo(() => {
|
|
12070
13107
|
if (typographyProp) return typographyProp;
|
|
12071
13108
|
if (fontFamily != null ? fontFamily : fontVariationAxes) {
|
|
12072
13109
|
return new Typography(
|
|
@@ -12079,7 +13116,7 @@ function MD3ThemeProvider({
|
|
|
12079
13116
|
}
|
|
12080
13117
|
function SnackbarMountedProvider({ children }) {
|
|
12081
13118
|
const state = useSnackbarState();
|
|
12082
|
-
const contextValue =
|
|
13119
|
+
const contextValue = React38.useMemo(
|
|
12083
13120
|
() => ({ showSnackbar: state.showSnackbar }),
|
|
12084
13121
|
[state.showSnackbar]
|
|
12085
13122
|
);
|
|
@@ -12089,24 +13126,24 @@ function SnackbarMountedProvider({ children }) {
|
|
|
12089
13126
|
] });
|
|
12090
13127
|
}
|
|
12091
13128
|
function useTheme() {
|
|
12092
|
-
const context =
|
|
13129
|
+
const context = React38.useContext(ThemeContext);
|
|
12093
13130
|
if (!context) {
|
|
12094
13131
|
throw new Error("useTheme must be used within <MD3ThemeProvider>.");
|
|
12095
13132
|
}
|
|
12096
13133
|
return context;
|
|
12097
13134
|
}
|
|
12098
13135
|
function useThemeMode() {
|
|
12099
|
-
const { mode, setMode } = useTheme();
|
|
12100
|
-
return { mode, setMode };
|
|
13136
|
+
const { mode, setMode, effectiveMode } = useTheme();
|
|
13137
|
+
return { mode, setMode, effectiveMode };
|
|
12101
13138
|
}
|
|
12102
13139
|
function TableOfContents({
|
|
12103
13140
|
items,
|
|
12104
13141
|
className,
|
|
12105
13142
|
scrollAreaProps
|
|
12106
13143
|
}) {
|
|
12107
|
-
const [activeId, setActiveId] =
|
|
12108
|
-
const itemIds =
|
|
12109
|
-
|
|
13144
|
+
const [activeId, setActiveId] = React38.useState("");
|
|
13145
|
+
const itemIds = React38.useMemo(() => items.map((i) => i.id), [items]);
|
|
13146
|
+
React38.useEffect(() => {
|
|
12110
13147
|
if (typeof IntersectionObserver === "undefined") return;
|
|
12111
13148
|
const observer = new IntersectionObserver(
|
|
12112
13149
|
(entries) => {
|
|
@@ -12123,7 +13160,7 @@ function TableOfContents({
|
|
|
12123
13160
|
}
|
|
12124
13161
|
return () => observer.disconnect();
|
|
12125
13162
|
}, [itemIds]);
|
|
12126
|
-
const handleClick =
|
|
13163
|
+
const handleClick = React38.useCallback(
|
|
12127
13164
|
(e, id) => {
|
|
12128
13165
|
var _a;
|
|
12129
13166
|
e.preventDefault();
|
|
@@ -12259,7 +13296,7 @@ function TooltipCaretShape({
|
|
|
12259
13296
|
}
|
|
12260
13297
|
);
|
|
12261
13298
|
}
|
|
12262
|
-
var PlainTooltip =
|
|
13299
|
+
var PlainTooltip = React38.forwardRef(
|
|
12263
13300
|
(_a, ref) => {
|
|
12264
13301
|
var _b = _a, {
|
|
12265
13302
|
children,
|
|
@@ -12316,7 +13353,7 @@ var PlainTooltip = React31.forwardRef(
|
|
|
12316
13353
|
}
|
|
12317
13354
|
);
|
|
12318
13355
|
PlainTooltip.displayName = "PlainTooltip";
|
|
12319
|
-
var RichTooltip =
|
|
13356
|
+
var RichTooltip = React38.forwardRef(
|
|
12320
13357
|
(_a, ref) => {
|
|
12321
13358
|
var _b = _a, {
|
|
12322
13359
|
children,
|
|
@@ -12400,7 +13437,7 @@ var RichTooltip = React31.forwardRef(
|
|
|
12400
13437
|
);
|
|
12401
13438
|
RichTooltip.displayName = "RichTooltip";
|
|
12402
13439
|
var VIEWPORT_PADDING = 8;
|
|
12403
|
-
var useIsomorphicLayoutEffect = typeof window !== "undefined" ?
|
|
13440
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React38.useLayoutEffect : React38.useEffect;
|
|
12404
13441
|
function resolveAutoPlacement(spaceTop, spaceBottom, spaceLeft, spaceRight, tooltipWidth, tooltipHeight, spacing) {
|
|
12405
13442
|
if (spaceTop >= tooltipHeight + spacing) return "top";
|
|
12406
13443
|
if (spaceBottom >= tooltipHeight + spacing) return "bottom";
|
|
@@ -12460,7 +13497,7 @@ function clampToViewport(side, top, left, tooltipWidth, tooltipHeight) {
|
|
|
12460
13497
|
return { top, left };
|
|
12461
13498
|
}
|
|
12462
13499
|
function useTooltipPosition(anchorRef, tooltipRef, placement, spacing, isVisible) {
|
|
12463
|
-
const [position, setPosition] =
|
|
13500
|
+
const [position, setPosition] = React38.useState({
|
|
12464
13501
|
top: -9999,
|
|
12465
13502
|
left: -9999,
|
|
12466
13503
|
actualSide: placement === "auto" ? "top" : placement
|
|
@@ -12535,24 +13572,24 @@ function useTooltipState(config) {
|
|
|
12535
13572
|
isPersistent = false,
|
|
12536
13573
|
duration = 1500
|
|
12537
13574
|
} = config != null ? config : {};
|
|
12538
|
-
const [isVisible, setIsVisible] =
|
|
12539
|
-
const dismiss =
|
|
13575
|
+
const [isVisible, setIsVisible] = React38.useState(initialVisible);
|
|
13576
|
+
const dismiss = React38.useCallback(() => {
|
|
12540
13577
|
setIsVisible(false);
|
|
12541
13578
|
activeTooltipDismissals.delete(dismiss);
|
|
12542
13579
|
}, []);
|
|
12543
|
-
const show =
|
|
13580
|
+
const show = React38.useCallback(() => {
|
|
12544
13581
|
for (const otherDismiss of activeTooltipDismissals) {
|
|
12545
13582
|
if (otherDismiss !== dismiss) otherDismiss();
|
|
12546
13583
|
}
|
|
12547
13584
|
setIsVisible(true);
|
|
12548
13585
|
activeTooltipDismissals.add(dismiss);
|
|
12549
13586
|
}, [dismiss]);
|
|
12550
|
-
|
|
13587
|
+
React38.useEffect(() => {
|
|
12551
13588
|
if (!isVisible || isPersistent) return;
|
|
12552
13589
|
const timeoutId = setTimeout(dismiss, duration);
|
|
12553
13590
|
return () => clearTimeout(timeoutId);
|
|
12554
13591
|
}, [isVisible, isPersistent, duration, dismiss]);
|
|
12555
|
-
|
|
13592
|
+
React38.useEffect(() => {
|
|
12556
13593
|
return () => {
|
|
12557
13594
|
activeTooltipDismissals.delete(dismiss);
|
|
12558
13595
|
};
|
|
@@ -12609,20 +13646,20 @@ function TooltipBox({
|
|
|
12609
13646
|
}) {
|
|
12610
13647
|
const internalState = useTooltipState();
|
|
12611
13648
|
const state = controlledState != null ? controlledState : internalState;
|
|
12612
|
-
const anchorRef =
|
|
12613
|
-
const tooltipRef =
|
|
12614
|
-
const hoverTimeoutRef =
|
|
12615
|
-
const hideTimeoutRef =
|
|
12616
|
-
const pressTimeoutRef =
|
|
13649
|
+
const anchorRef = React38.useRef(null);
|
|
13650
|
+
const tooltipRef = React38.useRef(null);
|
|
13651
|
+
const hoverTimeoutRef = React38.useRef(null);
|
|
13652
|
+
const hideTimeoutRef = React38.useRef(null);
|
|
13653
|
+
const pressTimeoutRef = React38.useRef(null);
|
|
12617
13654
|
const triggers = Array.isArray(trigger) ? trigger : [trigger];
|
|
12618
|
-
const [mounted, setMounted] =
|
|
12619
|
-
const [hasHoverSupport, setHasHoverSupport] =
|
|
12620
|
-
const [prefersReducedMotion, setPrefersReducedMotion] =
|
|
12621
|
-
|
|
13655
|
+
const [mounted, setMounted] = React38.useState(false);
|
|
13656
|
+
const [hasHoverSupport, setHasHoverSupport] = React38.useState(true);
|
|
13657
|
+
const [prefersReducedMotion, setPrefersReducedMotion] = React38.useState(false);
|
|
13658
|
+
React38.useEffect(() => {
|
|
12622
13659
|
setMounted(true);
|
|
12623
13660
|
setHasHoverSupport(!window.matchMedia("(hover: none)").matches);
|
|
12624
13661
|
}, []);
|
|
12625
|
-
|
|
13662
|
+
React38.useEffect(() => {
|
|
12626
13663
|
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
12627
13664
|
setPrefersReducedMotion(mediaQuery.matches);
|
|
12628
13665
|
const onChange = (e) => setPrefersReducedMotion(e.matches);
|
|
@@ -12694,7 +13731,7 @@ function TooltipBox({
|
|
|
12694
13731
|
hideDelay
|
|
12695
13732
|
);
|
|
12696
13733
|
};
|
|
12697
|
-
|
|
13734
|
+
React38.useEffect(() => {
|
|
12698
13735
|
if (!state.isVisible) return;
|
|
12699
13736
|
const onKeyDown = (e) => {
|
|
12700
13737
|
var _a;
|
|
@@ -12706,8 +13743,8 @@ function TooltipBox({
|
|
|
12706
13743
|
document.addEventListener("keydown", onKeyDown);
|
|
12707
13744
|
return () => document.removeEventListener("keydown", onKeyDown);
|
|
12708
13745
|
}, [state.isVisible, state]);
|
|
12709
|
-
const tooltipId =
|
|
12710
|
-
const tooltipWithProps =
|
|
13746
|
+
const tooltipId = React38.useId();
|
|
13747
|
+
const tooltipWithProps = React38.cloneElement(
|
|
12711
13748
|
tooltip,
|
|
12712
13749
|
{
|
|
12713
13750
|
"data-side": position.actualSide,
|
|
@@ -12735,7 +13772,7 @@ function TooltipBox({
|
|
|
12735
13772
|
onKeyDown: handleKeyDown,
|
|
12736
13773
|
"aria-label": ariaLabel,
|
|
12737
13774
|
"aria-describedby": state.isVisible ? tooltipId : void 0,
|
|
12738
|
-
children:
|
|
13775
|
+
children: React38__namespace.isValidElement(children) ? children : /* @__PURE__ */ jsxRuntime.jsx("span", { children })
|
|
12739
13776
|
}
|
|
12740
13777
|
),
|
|
12741
13778
|
mounted && reactDom.createPortal(
|
|
@@ -12779,10 +13816,16 @@ exports.BadgedBox = BadgedBox;
|
|
|
12779
13816
|
exports.BottomAppBar = BottomAppBar;
|
|
12780
13817
|
exports.Button = Button;
|
|
12781
13818
|
exports.ButtonGroup = ButtonGroup;
|
|
13819
|
+
exports.CHECK_ICON_VARIANTS = CHECK_ICON_VARIANTS;
|
|
12782
13820
|
exports.Card = Card;
|
|
12783
13821
|
exports.Checkbox = Checkbox;
|
|
12784
13822
|
exports.Chip = Chip;
|
|
12785
13823
|
exports.CodeBlock = CodeBlock;
|
|
13824
|
+
exports.ContextMenu = ContextMenu;
|
|
13825
|
+
exports.ContextMenuContent = ContextMenuContent;
|
|
13826
|
+
exports.ContextMenuTrigger = ContextMenuTrigger;
|
|
13827
|
+
exports.DIVIDER_COLOR = DIVIDER_COLOR;
|
|
13828
|
+
exports.DIVIDER_PADDING = DIVIDER_PADDING;
|
|
12786
13829
|
exports.Dialog = Dialog;
|
|
12787
13830
|
exports.DialogBody = DialogBody;
|
|
12788
13831
|
exports.DialogClose = DialogClose;
|
|
@@ -12808,39 +13851,42 @@ exports.DrawerOverlay = DrawerOverlay;
|
|
|
12808
13851
|
exports.DrawerPortal = DrawerPortal;
|
|
12809
13852
|
exports.DrawerTitle = DrawerTitle;
|
|
12810
13853
|
exports.DrawerTrigger = DrawerTrigger;
|
|
12811
|
-
exports.DropdownMenu = DropdownMenu;
|
|
12812
|
-
exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
|
|
12813
|
-
exports.DropdownMenuContent = DropdownMenuContent;
|
|
12814
|
-
exports.DropdownMenuGroup = DropdownMenuGroup;
|
|
12815
|
-
exports.DropdownMenuItem = DropdownMenuItem;
|
|
12816
|
-
exports.DropdownMenuLabel = DropdownMenuLabel;
|
|
12817
|
-
exports.DropdownMenuPortal = DropdownMenuPortal;
|
|
12818
|
-
exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
|
|
12819
|
-
exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
|
|
12820
|
-
exports.DropdownMenuSeparator = DropdownMenuSeparator;
|
|
12821
|
-
exports.DropdownMenuShortcut = DropdownMenuShortcut;
|
|
12822
|
-
exports.DropdownMenuSub = DropdownMenuSub;
|
|
12823
|
-
exports.DropdownMenuSubContent = DropdownMenuSubContent;
|
|
12824
|
-
exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
|
|
12825
|
-
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
12826
13854
|
exports.FAB = FAB;
|
|
12827
13855
|
exports.FABMenu = FABMenu;
|
|
12828
13856
|
exports.FABMenuItem = FABMenuItem;
|
|
12829
13857
|
exports.FABPosition = FABPosition;
|
|
13858
|
+
exports.FAST_EFFECTS_TRANSITION = FAST_EFFECTS_TRANSITION;
|
|
13859
|
+
exports.FAST_SPATIAL_SPRING = FAST_SPATIAL_SPRING;
|
|
13860
|
+
exports.GROUP_SHAPES = GROUP_SHAPES;
|
|
13861
|
+
exports.ITEM_SHAPE_CLASSES = ITEM_SHAPE_CLASSES;
|
|
12830
13862
|
exports.Icon = Icon;
|
|
12831
13863
|
exports.IconButton = IconButton;
|
|
12832
13864
|
exports.LargeFlexibleAppBar = LargeFlexibleAppBar;
|
|
12833
13865
|
exports.LoadingIndicator = LoadingIndicator;
|
|
12834
13866
|
exports.MD3ThemeProvider = MD3ThemeProvider;
|
|
12835
13867
|
exports.MD3_EXPRESSIVE_FONT_VARIATION = MD3_EXPRESSIVE_FONT_VARIATION;
|
|
13868
|
+
exports.MENU_CHECK_ICON_SIZE = MENU_CHECK_ICON_SIZE;
|
|
13869
|
+
exports.MENU_CONTAINER_VARIANTS = MENU_CONTAINER_VARIANTS;
|
|
13870
|
+
exports.MENU_GROUP_GAP = MENU_GROUP_GAP;
|
|
13871
|
+
exports.MENU_ICON_SIZE = MENU_ICON_SIZE;
|
|
13872
|
+
exports.MENU_ITEM_MIN_HEIGHT = MENU_ITEM_MIN_HEIGHT;
|
|
13873
|
+
exports.MENU_MAX_WIDTH = MENU_MAX_WIDTH;
|
|
13874
|
+
exports.MENU_MIN_WIDTH = MENU_MIN_WIDTH;
|
|
12836
13875
|
exports.MaterialSymbolsPreconnect = MaterialSymbolsPreconnect;
|
|
12837
13876
|
exports.MediumFlexibleAppBar = MediumFlexibleAppBar;
|
|
13877
|
+
exports.Menu = Menu;
|
|
13878
|
+
exports.MenuContent = MenuContent;
|
|
13879
|
+
exports.MenuDivider = MenuDivider;
|
|
13880
|
+
exports.MenuGroup = MenuGroup;
|
|
13881
|
+
exports.MenuItem = MenuItem;
|
|
13882
|
+
exports.MenuProvider = MenuProvider;
|
|
13883
|
+
exports.MenuTrigger = MenuTrigger;
|
|
12838
13884
|
exports.NavigationRail = NavigationRail;
|
|
12839
13885
|
exports.NavigationRailItem = NavigationRailItem;
|
|
12840
13886
|
exports.PlainTooltip = PlainTooltip;
|
|
12841
13887
|
exports.ProgressIndicator = ProgressIndicator;
|
|
12842
13888
|
exports.RadioButton = RadioButton;
|
|
12843
|
-
exports.RadioGroup =
|
|
13889
|
+
exports.RadioGroup = RadioGroup;
|
|
12844
13890
|
exports.RangeSlider = RangeSlider;
|
|
12845
13891
|
exports.RichTooltip = RichTooltip;
|
|
12846
13892
|
exports.Ripple = Ripple;
|
|
@@ -12850,6 +13896,8 @@ exports.SEARCH_DOCKED_REVEAL_SPRING = SEARCH_DOCKED_REVEAL_SPRING;
|
|
|
12850
13896
|
exports.SEARCH_FULLSCREEN_SPRING = SEARCH_FULLSCREEN_SPRING;
|
|
12851
13897
|
exports.SEARCH_TYPOGRAPHY = SEARCH_TYPOGRAPHY;
|
|
12852
13898
|
exports.SEARCH_VIEW_SPRING = SEARCH_VIEW_SPRING;
|
|
13899
|
+
exports.STANDARD_COLORS = STANDARD_COLORS;
|
|
13900
|
+
exports.SUBMENU_CONTAINER_VARIANTS = SUBMENU_CONTAINER_VARIANTS;
|
|
12853
13901
|
exports.ScrollArea = ScrollArea;
|
|
12854
13902
|
exports.ScrollAreaScrollbar = ScrollAreaScrollbar;
|
|
12855
13903
|
exports.Search = Search;
|
|
@@ -12867,6 +13915,7 @@ exports.SmallAppBar = SmallAppBar;
|
|
|
12867
13915
|
exports.Snackbar = Snackbar;
|
|
12868
13916
|
exports.SnackbarHost = SnackbarHost;
|
|
12869
13917
|
exports.SnackbarProvider = SnackbarProvider;
|
|
13918
|
+
exports.SubMenu = SubMenu;
|
|
12870
13919
|
exports.Switch = Switch;
|
|
12871
13920
|
exports.SwitchColors = SwitchColors;
|
|
12872
13921
|
exports.SwitchTokens = SwitchTokens;
|
|
@@ -12877,6 +13926,7 @@ exports.TabsColors = TabsColors;
|
|
|
12877
13926
|
exports.TabsContent = TabsContent;
|
|
12878
13927
|
exports.TabsList = TabsList;
|
|
12879
13928
|
exports.TabsTokens = TabsTokens;
|
|
13929
|
+
exports.Text = Text;
|
|
12880
13930
|
exports.TextField = TextField;
|
|
12881
13931
|
exports.ToggleFAB = ToggleFAB;
|
|
12882
13932
|
exports.TooltipBox = TooltipBox;
|
|
@@ -12889,14 +13939,21 @@ exports.TypographyContext = TypographyContext;
|
|
|
12889
13939
|
exports.TypographyKeyTokens = TypographyKeyTokens;
|
|
12890
13940
|
exports.TypographyProvider = TypographyProvider;
|
|
12891
13941
|
exports.TypographyTokens = TypographyTokens;
|
|
13942
|
+
exports.VIBRANT_COLORS = VIBRANT_COLORS;
|
|
13943
|
+
exports.VerticalMenu = VerticalMenu;
|
|
13944
|
+
exports.VerticalMenuContent = VerticalMenuContent;
|
|
13945
|
+
exports.VerticalMenuDivider = VerticalMenuDivider;
|
|
13946
|
+
exports.VerticalMenuGroup = VerticalMenuGroup;
|
|
12892
13947
|
exports.appBarTypography = appBarTypography;
|
|
12893
13948
|
exports.applyTheme = applyTheme;
|
|
12894
13949
|
exports.buildWavePath = buildWavePath;
|
|
12895
13950
|
exports.cn = cn;
|
|
12896
13951
|
exports.generateM3Theme = generateM3Theme;
|
|
13952
|
+
exports.resolveMode = resolveMode;
|
|
12897
13953
|
exports.useAppBarScroll = useAppBarScroll;
|
|
12898
13954
|
exports.useDOMRipple = useRipple;
|
|
12899
13955
|
exports.useMediaQuery = useMediaQuery;
|
|
13956
|
+
exports.useMenuContext = useMenuContext;
|
|
12900
13957
|
exports.useRipple = useRipple2;
|
|
12901
13958
|
exports.useRippleState = useRippleState;
|
|
12902
13959
|
exports.useSearchKeyboard = useSearchKeyboard;
|