@avenue-ticketing/ui 0.12.0-beta.1 → 0.12.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/checkbox.js +10 -7
- package/dist/react/checkbox.js.map +1 -1
- package/dist/react/combobox.d.ts +3 -2
- package/dist/react/combobox.js +284 -32
- package/dist/react/combobox.js.map +1 -1
- package/dist/react/dropdown-account-breadcrumb.js +176 -14
- package/dist/react/dropdown-account-breadcrumb.js.map +1 -1
- package/dist/react/dropdown-account-button.js +186 -21
- package/dist/react/dropdown-account-button.js.map +1 -1
- package/dist/react/dropdown-account-card-md.js +187 -22
- package/dist/react/dropdown-account-card-md.js.map +1 -1
- package/dist/react/dropdown-account-card-sm.js +187 -22
- package/dist/react/dropdown-account-card-sm.js.map +1 -1
- package/dist/react/dropdown-account-card-xs.js +187 -22
- package/dist/react/dropdown-account-card-xs.js.map +1 -1
- package/dist/react/dropdown-avatar.js +186 -21
- package/dist/react/dropdown-avatar.js.map +1 -1
- package/dist/react/dropdown-button-advanced.js +186 -21
- package/dist/react/dropdown-button-advanced.js.map +1 -1
- package/dist/react/dropdown-button-link.js +187 -22
- package/dist/react/dropdown-button-link.js.map +1 -1
- package/dist/react/dropdown-button-simple.js +186 -21
- package/dist/react/dropdown-button-simple.js.map +1 -1
- package/dist/react/dropdown-icon-advanced.js +187 -22
- package/dist/react/dropdown-icon-advanced.js.map +1 -1
- package/dist/react/dropdown-icon-simple.js +187 -22
- package/dist/react/dropdown-icon-simple.js.map +1 -1
- package/dist/react/dropdown-integration.js +186 -21
- package/dist/react/dropdown-integration.js.map +1 -1
- package/dist/react/dropdown-search-advanced.js +186 -21
- package/dist/react/dropdown-search-advanced.js.map +1 -1
- package/dist/react/dropdown-search-simple.js +186 -21
- package/dist/react/dropdown-search-simple.js.map +1 -1
- package/dist/react/dropdown.d.ts +4 -1
- package/dist/react/dropdown.js +187 -22
- package/dist/react/dropdown.js.map +1 -1
- package/dist/react/input-tags-outer.js +8 -8
- package/dist/react/input-tags-outer.js.map +1 -1
- package/dist/react/input-tags.js +8 -8
- package/dist/react/input-tags.js.map +1 -1
- package/dist/react/multi-select.d.ts +3 -2
- package/dist/react/multi-select.js +228 -27
- package/dist/react/multi-select.js.map +1 -1
- package/dist/react/popover.d.ts +10 -1
- package/dist/react/popover.js +195 -18
- package/dist/react/popover.js.map +1 -1
- package/dist/react/radio-buttons.js +2 -1
- package/dist/react/radio-buttons.js.map +1 -1
- package/dist/react/select-item.d.ts +2 -1
- package/dist/react/select-item.js +11 -7
- package/dist/react/select-item.js.map +1 -1
- package/dist/react/select.d.ts +4 -3
- package/dist/react/select.js +298 -42
- package/dist/react/select.js.map +1 -1
- package/dist/react/switch.js +1 -1
- package/dist/react/switch.js.map +1 -1
- package/dist/react/tag-select.d.ts +5 -2
- package/dist/react/tag-select.js +215 -25
- package/dist/react/tag-select.js.map +1 -1
- package/dist/react/tags.js +8 -8
- package/dist/react/tags.js.map +1 -1
- package/dist/select-mobile-sheet-CB2ptDTJ.d.ts +12 -0
- package/dist/{select-shared-B3Y5SMXU.d.ts → select-shared-oJEeJxeB.d.ts} +6 -0
- package/package.json +1 -1
- package/theme.css +1 -1
package/dist/react/switch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../utils/cx.ts","../../../../components/base/toggle/toggle.tsx"],"names":["styles","AriaSwitch"],"mappings":";;;;AAEA,IAAM,UAAU,mBAAA,CAAoB;AAAA,EAChC,MAAA,EAAQ;AAAA,IACJ,KAAA,EAAO;AAAA,MACH,MAAM,CAAC,YAAA,EAAc,cAAc,YAAA,EAAc,YAAA,EAAc,cAAc,aAAa;AAAA;AAC9F;AAER,CAAC,CAAA;AAMM,IAAM,EAAA,GAAK,OAAA;ACNlB,IAAM,eAAA,GACF,2GAAA;AAYG,IAAM,UAAA,GAAa,CAAC,EAAE,SAAA,EAAW,SAAA,EAAW,UAAA,EAAY,cAAA,EAAgB,UAAA,EAAY,IAAA,EAAM,IAAA,GAAO,IAAA,EAAK,KAAuB;AAChI,EAAA,MAAMA,OAAAA,GAAS;AAAA,IACX,OAAA,EAAS;AAAA,MACL,EAAA,EAAI;AAAA,QACA,KAAA,EAAO,eAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,aAAA,EAAe,aAAa,iCAAA,GAAoC;AAAA,OACpE;AAAA,MACA,EAAA,EAAI;AAAA,QACA,KAAA,EAAO,gBAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,aAAA,EAAe,aAAa,oCAAA,GAAuC;AAAA;AACvE,KACJ;AAAA,IACA,IAAA,EAAM;AAAA,MACF,EAAA,EAAI;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,aAAA,EAAe,aAAa,QAAA,GAAW;AAAA,OAC3C;AAAA,MACA,EAAA,EAAI;AAAA,QACA,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO,QAAA;AAAA,QACP,aAAA,EAAe,aAAa,QAAA,GAAW;AAAA;AAC3C;AACJ,GACJ;AAEA,EAAA,MAAM,OAAA,GAAU,OAAOA,OAAAA,CAAO,IAAA,CAAK,IAAI,CAAA,GAAIA,OAAAA,CAAO,QAAQ,IAAI,CAAA;AAE9D,EAAA,MAAM,sBAAsB,MAAM;AAC9B,IAAA,IAAI,YAAY,OAAO,aAAA;AACvB,IAAA,IAAI,
|
|
1
|
+
{"version":3,"sources":["../../../../utils/cx.ts","../../../../components/base/toggle/toggle.tsx"],"names":["styles","AriaSwitch"],"mappings":"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","file":"switch.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport type { SwitchProps as AriaSwitchProps } from \"react-aria-components\";\nimport { Switch as AriaSwitch } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\n/** Figma: Toggle (1102:4631) — spread focus ring (2px surface gap + 4px focus-ring). */\nconst focusRingShadow =\n \"outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\ninterface ToggleBaseProps {\n size?: \"sm\" | \"md\";\n slim?: boolean;\n className?: string;\n isHovered?: boolean;\n isFocusVisible?: boolean;\n isSelected?: boolean;\n isDisabled?: boolean;\n}\n\nexport const ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected, slim, size = \"sm\" }: ToggleBaseProps) => {\n const styles = {\n default: {\n sm: {\n track: \"h-5 w-9 p-0.5\",\n thumb: \"size-4\",\n thumbPosition: isSelected ? \"left-[calc(100%-1rem-0.125rem)]\" : \"left-0.5\",\n },\n md: {\n track: \"h-6 w-11 p-0.5\",\n thumb: \"size-5\",\n thumbPosition: isSelected ? \"left-[calc(100%-1.25rem-0.125rem)]\" : \"left-0.5\",\n },\n },\n slim: {\n sm: {\n track: \"h-4 w-8\",\n thumb: \"size-4\",\n thumbPosition: isSelected ? \"left-4\" : \"left-0\",\n },\n md: {\n track: \"h-5 w-10\",\n thumb: \"size-5\",\n thumbPosition: isSelected ? \"left-5\" : \"left-0\",\n },\n },\n };\n\n const classes = slim ? styles.slim[size] : styles.default[size];\n\n const offTrackBackground = (() => {\n if (isDisabled) return \"bg-tertiary\";\n if (isHovered) return \"bg-secondary_hover\";\n return \"bg-quaternary\";\n })();\n\n return (\n <div\n className={cx(\n \"relative inline-flex shrink-0 cursor-pointer overflow-clip rounded-full outline-none transition duration-150 ease-linear\",\n !isSelected && offTrackBackground,\n !slim && \"ring-[0.5px] ring-secondary ring-inset\",\n slim && \"ring-1 ring-secondary ring-inset\",\n isSelected && \"bg-brand-solid\",\n isSelected && isHovered && \"bg-brand-solid_hover\",\n isSelected && \"ring-transparent\",\n isDisabled && \"cursor-not-allowed opacity-50\",\n isFocusVisible && !isDisabled && focusRingShadow,\n classes.track,\n className,\n )}\n >\n <div\n className={cx(\n \"absolute rounded-full bg-fg-white shadow-sm transition-[left] duration-150 ease-in-out\",\n slim ? \"top-0 shadow-xs\" : \"top-0.5\",\n slim && \"border border-toggle-border\",\n slim && isSelected && \"border-toggle-slim-border_pressed\",\n slim && isSelected && isHovered && \"border-toggle-slim-border_pressed-hover\",\n classes.thumb,\n classes.thumbPosition,\n )}\n />\n </div>\n );\n};\n\nconst styles = {\n sm: {\n root: \"gap-2\",\n textWrapper: \"\",\n label: \"text-sm font-medium\",\n hint: \"text-sm\",\n },\n md: {\n root: \"gap-3\",\n textWrapper: \"gap-0.5\",\n label: \"text-md font-medium\",\n hint: \"text-md\",\n },\n};\n\ninterface ToggleProps extends AriaSwitchProps {\n size?: \"sm\" | \"md\";\n label?: string;\n hint?: ReactNode;\n slim?: boolean;\n}\n\nexport const Toggle = ({ label, hint, className, size = \"sm\", slim, ...ariaSwitchProps }: ToggleProps) => {\n return (\n <AriaSwitch\n {...ariaSwitchProps}\n className={(state) =>\n cx(\n \"relative flex w-max items-start\",\n state.isDisabled && \"cursor-not-allowed\",\n styles[size].root,\n typeof className === \"function\" ? className(state) : className,\n )\n }\n >\n {({ isSelected, isDisabled, isFocusVisible, isHovered }) => (\n <>\n <ToggleBase\n slim={slim}\n size={size}\n isHovered={isHovered}\n isDisabled={isDisabled}\n isFocusVisible={isFocusVisible}\n isSelected={isSelected}\n className={label || hint ? \"mt-0.5\" : \"\"}\n />\n\n {(label || hint) && (\n <div className={cx(\"flex flex-col\", styles[size].textWrapper)}>\n {label && <p className={cx(\"text-secondary select-none\", styles[size].label)}>{label}</p>}\n {hint && (\n <span className={cx(\"text-tertiary\", styles[size].hint)} onClick={(event) => event.stopPropagation()}>\n {hint}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaSwitch>\n );\n};\n"]}
|
|
@@ -2,8 +2,9 @@ import react__default, { RefAttributes, RefObject, FocusEventHandler, PointerEve
|
|
|
2
2
|
import { ComboBoxProps, ListBoxProps, Key, GroupProps } from 'react-aria-components';
|
|
3
3
|
import { ListData } from 'react-stately';
|
|
4
4
|
import { I as IconComponentType } from '../badge-types-B67wcd4m.js';
|
|
5
|
-
import { S as SelectItemType } from '../select-shared-
|
|
5
|
+
import { S as SelectItemType } from '../select-shared-oJEeJxeB.js';
|
|
6
6
|
import { SelectItem } from './select-item.js';
|
|
7
|
+
import { S as SelectMobileOptions } from '../select-mobile-sheet-CB2ptDTJ.js';
|
|
7
8
|
|
|
8
9
|
/** Figma: Tag select (11132:11643) */
|
|
9
10
|
|
|
@@ -27,6 +28,8 @@ interface TagSelectProps extends Omit<ComboBoxProps<SelectItemType>, "children"
|
|
|
27
28
|
shortcut?: boolean;
|
|
28
29
|
items?: SelectItemType[];
|
|
29
30
|
popoverClassName?: string;
|
|
31
|
+
/** Narrow-viewport (≤1024px) bottom-sheet options. `sheet` defaults to `true`. */
|
|
32
|
+
mobileOptions?: SelectMobileOptions;
|
|
30
33
|
shortcutClassName?: string;
|
|
31
34
|
selectedItems: ListData<SelectItemType>;
|
|
32
35
|
icon?: IconComponentType | null;
|
|
@@ -35,7 +38,7 @@ interface TagSelectProps extends Omit<ComboBoxProps<SelectItemType>, "children"
|
|
|
35
38
|
onItemInserted?: (key: Key) => void;
|
|
36
39
|
valueFormatter?: (item: SelectItemType) => string;
|
|
37
40
|
}
|
|
38
|
-
declare const TagSelectBase: ({ items, children, size, selectedItems, onItemCleared, onItemInserted, valueFormatter, shortcut, placeholder, icon, name: _name, className, ...props }: TagSelectProps) => react__default.JSX.Element;
|
|
41
|
+
declare const TagSelectBase: ({ items, children, size, selectedItems, onItemCleared, onItemInserted, valueFormatter, shortcut, placeholder, icon, name: _name, mobileOptions, className, ...props }: TagSelectProps) => react__default.JSX.Element;
|
|
39
42
|
declare const TagSelectTagsValue: ({ size, shortcut, placeholder, shortcutClassName, icon: Icon, isDisabled: _isDisabled, ...otherProps }: TagSelectValueProps) => react__default.JSX.Element;
|
|
40
43
|
declare const TagSelect: typeof TagSelectBase & {
|
|
41
44
|
Item: typeof SelectItem;
|
package/dist/react/tag-select.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createContext, useCallback, useRef, useState, useContext, useMemo, useEffect, isValidElement, useLayoutEffect } from 'react';
|
|
2
2
|
import { MagnifyingGlassIcon } from '@phosphor-icons/react/dist/csr/MagnifyingGlass';
|
|
3
3
|
import { useFilter, FocusScope, useFocusManager } from 'react-aria';
|
|
4
|
-
import { ComboBox, ListBox, Group, Label as Label$1, Popover as Popover$1, Text, ComboBoxStateContext, Input, ListBoxItem, TooltipTrigger as TooltipTrigger$1, Tooltip as Tooltip$1, OverlayArrow, Button } from 'react-aria-components';
|
|
4
|
+
import { ComboBox, ListBox, Group, Label as Label$1, OverlayTriggerStateContext, Popover as Popover$1, Text, ComboBoxStateContext, Input, ListBoxItem, TooltipTrigger as TooltipTrigger$1, Tooltip as Tooltip$1, OverlayArrow, Button } from 'react-aria-components';
|
|
5
5
|
import { UserIcon } from '@phosphor-icons/react/dist/csr/User';
|
|
6
6
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
7
7
|
import '@phosphor-icons/react/dist/csr/Plus';
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
import { QuestionIcon } from '@phosphor-icons/react/dist/csr/Question';
|
|
10
|
+
import { createPortal } from 'react-dom';
|
|
10
11
|
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
11
12
|
import '@phosphor-icons/react/dist/csr/Eye';
|
|
12
13
|
import '@phosphor-icons/react/dist/csr/EyeSlash';
|
|
@@ -511,25 +512,199 @@ var Label = ({ isInvalid, isRequired, tooltip, tooltipDescription, className, ..
|
|
|
511
512
|
);
|
|
512
513
|
};
|
|
513
514
|
Label.displayName = "Label";
|
|
514
|
-
var
|
|
515
|
-
|
|
516
|
-
|
|
515
|
+
var MOBILE_SHEET_MAX_PX = 1024;
|
|
516
|
+
function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
|
|
517
|
+
const [isMobile, setIsMobile] = useState(() => {
|
|
518
|
+
if (typeof window === "undefined") return false;
|
|
519
|
+
return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
|
|
520
|
+
});
|
|
521
|
+
useEffect(() => {
|
|
522
|
+
const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
523
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
524
|
+
mq.addEventListener("change", handler);
|
|
525
|
+
return () => mq.removeEventListener("change", handler);
|
|
526
|
+
}, [breakpoint]);
|
|
527
|
+
return isMobile;
|
|
528
|
+
}
|
|
529
|
+
var MOBILE_SHEET_MOTION_MS = 175;
|
|
530
|
+
var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
|
|
531
|
+
var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
|
|
532
|
+
var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
|
|
533
|
+
function resolveSelectMobileOptions(mobileOptions) {
|
|
534
|
+
return {
|
|
535
|
+
sheet: mobileOptions?.sheet ?? true,
|
|
536
|
+
title: mobileOptions?.title,
|
|
537
|
+
sheetClassName: mobileOptions?.className,
|
|
538
|
+
contentClassName: mobileOptions?.contentClassName
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
|
|
542
|
+
const [shouldRender, setShouldRender] = useState(open);
|
|
543
|
+
const [isAnimating, setIsAnimating] = useState(false);
|
|
544
|
+
useLayoutEffect(() => {
|
|
545
|
+
if (!enabled) {
|
|
546
|
+
setShouldRender(open);
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
if (open) {
|
|
550
|
+
setShouldRender(true);
|
|
551
|
+
}
|
|
552
|
+
}, [open, enabled]);
|
|
553
|
+
useEffect(() => {
|
|
554
|
+
if (!enabled || open) return;
|
|
555
|
+
const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
|
|
556
|
+
return () => clearTimeout(timer);
|
|
557
|
+
}, [open, enabled]);
|
|
558
|
+
useLayoutEffect(() => {
|
|
559
|
+
if (!enabled || open || !shouldRender) return;
|
|
560
|
+
setIsAnimating(false);
|
|
561
|
+
}, [enabled, open, shouldRender]);
|
|
562
|
+
useEffect(() => {
|
|
563
|
+
if (!enabled || !shouldRender || !open) return;
|
|
564
|
+
let raf2 = 0;
|
|
565
|
+
const raf1 = requestAnimationFrame(() => {
|
|
566
|
+
raf2 = requestAnimationFrame(() => setIsAnimating(true));
|
|
567
|
+
});
|
|
568
|
+
return () => {
|
|
569
|
+
cancelAnimationFrame(raf1);
|
|
570
|
+
if (raf2) cancelAnimationFrame(raf2);
|
|
571
|
+
};
|
|
572
|
+
}, [shouldRender, open, enabled]);
|
|
573
|
+
const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
|
|
574
|
+
const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
|
|
575
|
+
const panelStyle = enabled ? {
|
|
576
|
+
transform: isAnimating ? "translateY(0)" : hiddenTransform,
|
|
577
|
+
opacity: isAnimating ? 1 : 0,
|
|
578
|
+
transitionProperty: "transform, opacity",
|
|
579
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
580
|
+
transitionTimingFunction: motionEasing
|
|
581
|
+
} : void 0;
|
|
582
|
+
const backdropStyle = enabled ? {
|
|
583
|
+
opacity: isAnimating ? 1 : 0,
|
|
584
|
+
transitionProperty: "opacity",
|
|
585
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
586
|
+
transitionTimingFunction: motionEasing
|
|
587
|
+
} : void 0;
|
|
588
|
+
return { shouldRender, isAnimating, panelStyle, backdropStyle };
|
|
589
|
+
}
|
|
590
|
+
function MobileSheetCloseButton({ onClose }) {
|
|
591
|
+
return /* @__PURE__ */ jsxs(
|
|
592
|
+
"button",
|
|
517
593
|
{
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
props.size === "lg" && "max-h-80!",
|
|
529
|
-
typeof props.className === "function" ? props.className(state) : props.className
|
|
530
|
-
)
|
|
594
|
+
type: "button",
|
|
595
|
+
onClick: (e) => {
|
|
596
|
+
e.stopPropagation();
|
|
597
|
+
onClose();
|
|
598
|
+
},
|
|
599
|
+
className: "flex size-12 shrink-0 cursor-pointer items-center justify-center rounded-full text-fg-primary transition duration-100 ease-linear hover:bg-primary_hover active:scale-[0.96] focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]",
|
|
600
|
+
children: [
|
|
601
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
|
|
602
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
603
|
+
]
|
|
531
604
|
}
|
|
532
605
|
);
|
|
606
|
+
}
|
|
607
|
+
function MobileSheetChrome({
|
|
608
|
+
title,
|
|
609
|
+
contentClassName,
|
|
610
|
+
onClose,
|
|
611
|
+
children
|
|
612
|
+
}) {
|
|
613
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
614
|
+
/* @__PURE__ */ jsxs("div", { className: cx("flex w-full shrink-0 items-center py-2 pl-4 pr-2", title ? "justify-between gap-3" : "justify-end"), children: [
|
|
615
|
+
title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
|
|
616
|
+
/* @__PURE__ */ jsx(MobileSheetCloseButton, { onClose })
|
|
617
|
+
] }),
|
|
618
|
+
/* @__PURE__ */ jsx(
|
|
619
|
+
"div",
|
|
620
|
+
{
|
|
621
|
+
className: cx(
|
|
622
|
+
"min-h-0 flex-1 overflow-y-auto pb-[calc(5rem+env(safe-area-inset-bottom,0px))]",
|
|
623
|
+
contentClassName
|
|
624
|
+
),
|
|
625
|
+
children
|
|
626
|
+
}
|
|
627
|
+
)
|
|
628
|
+
] });
|
|
629
|
+
}
|
|
630
|
+
var Popover = ({ mobileOptions, children, size, className, style, compoundContent = false, ...props }) => {
|
|
631
|
+
const isMobile = useIsMobile();
|
|
632
|
+
const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
|
|
633
|
+
const useMobileSheet = isMobile && resolvedMobile.sheet;
|
|
634
|
+
const overlayState = useContext(OverlayTriggerStateContext);
|
|
635
|
+
const open = overlayState?.isOpen ?? false;
|
|
636
|
+
const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
|
|
637
|
+
useEffect(() => {
|
|
638
|
+
if (!useMobileSheet || !open) return;
|
|
639
|
+
const prev = document.body.style.overflow;
|
|
640
|
+
document.body.style.overflow = "hidden";
|
|
641
|
+
return () => {
|
|
642
|
+
document.body.style.overflow = prev;
|
|
643
|
+
};
|
|
644
|
+
}, [useMobileSheet, open]);
|
|
645
|
+
const close = () => overlayState?.close();
|
|
646
|
+
const showMobileSheet = useMobileSheet && shouldRender;
|
|
647
|
+
const isMobileSheetExiting = showMobileSheet && !open;
|
|
648
|
+
const mobileScrim = useMobileSheet && shouldRender && typeof document !== "undefined" ? createPortal(
|
|
649
|
+
/* @__PURE__ */ jsx(
|
|
650
|
+
"div",
|
|
651
|
+
{
|
|
652
|
+
className: "fixed inset-0 z-50 bg-overlay/70",
|
|
653
|
+
style: backdropStyle,
|
|
654
|
+
onClick: close,
|
|
655
|
+
"aria-hidden": "true"
|
|
656
|
+
}
|
|
657
|
+
),
|
|
658
|
+
document.body
|
|
659
|
+
) : null;
|
|
660
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
661
|
+
mobileScrim,
|
|
662
|
+
/* @__PURE__ */ jsx(
|
|
663
|
+
Popover$1,
|
|
664
|
+
{
|
|
665
|
+
placement: "bottom",
|
|
666
|
+
containerPadding: 0,
|
|
667
|
+
offset: 4,
|
|
668
|
+
...props,
|
|
669
|
+
isExiting: isMobileSheetExiting,
|
|
670
|
+
...useMobileSheet ? { "data-select-mobile-sheet": true } : {},
|
|
671
|
+
style: useMobileSheet ? { ...panelStyle, ...style } : style,
|
|
672
|
+
className: (state) => cx(
|
|
673
|
+
"outline-hidden",
|
|
674
|
+
!useMobileSheet && [
|
|
675
|
+
"w-(--trigger-width) origin-(--trigger-anchor-point) rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
|
|
676
|
+
compoundContent ? "overflow-hidden outline-hidden" : "overflow-x-hidden overflow-y-auto py-1 outline-hidden",
|
|
677
|
+
state.isEntering && "duration-150 ease-out animate-in fade-in placement-right:slide-in-from-left-0.5 placement-top:slide-in-from-bottom-0.5 placement-bottom:slide-in-from-top-0.5",
|
|
678
|
+
state.isExiting && "duration-100 ease-in animate-out fade-out placement-right:slide-out-to-left-0.5 placement-top:slide-out-to-bottom-0.5 placement-bottom:slide-out-to-top-0.5",
|
|
679
|
+
!compoundContent && size === "sm" && "max-h-56!",
|
|
680
|
+
!compoundContent && size === "md" && "max-h-64!",
|
|
681
|
+
!compoundContent && size === "lg" && "max-h-80!"
|
|
682
|
+
],
|
|
683
|
+
useMobileSheet && [
|
|
684
|
+
"fixed! inset-x-0! bottom-0! top-auto! left-0! right-0! z-[51] flex w-full! max-w-none! flex-col overflow-hidden rounded-t-2xl rounded-b-none border-x-0 border-t border-secondary bg-primary shadow-xl",
|
|
685
|
+
"max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))]",
|
|
686
|
+
resolvedMobile.sheetClassName
|
|
687
|
+
],
|
|
688
|
+
typeof className === "function" ? className(state) : className
|
|
689
|
+
),
|
|
690
|
+
children: (state) => {
|
|
691
|
+
const content = typeof children === "function" ? children(state) : children;
|
|
692
|
+
if (useMobileSheet) {
|
|
693
|
+
return /* @__PURE__ */ jsx(
|
|
694
|
+
MobileSheetChrome,
|
|
695
|
+
{
|
|
696
|
+
title: resolvedMobile.title,
|
|
697
|
+
contentClassName: resolvedMobile.contentClassName,
|
|
698
|
+
onClose: close,
|
|
699
|
+
children: content
|
|
700
|
+
}
|
|
701
|
+
);
|
|
702
|
+
}
|
|
703
|
+
return content;
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
)
|
|
707
|
+
] });
|
|
533
708
|
};
|
|
534
709
|
var sizes3 = {
|
|
535
710
|
sm: {
|
|
@@ -602,7 +777,7 @@ var inputErrorFocusRingShadow = "border-error ring-1 ring-inset ring-error";
|
|
|
602
777
|
createContext({});
|
|
603
778
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
604
779
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
605
|
-
function CheckboxAnimatedCheckMark({ className }) {
|
|
780
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
606
781
|
const pathRef = useRef(null);
|
|
607
782
|
useLayoutEffect(() => {
|
|
608
783
|
const path = pathRef.current;
|
|
@@ -623,7 +798,7 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
623
798
|
});
|
|
624
799
|
return () => anim.cancel();
|
|
625
800
|
}, []);
|
|
626
|
-
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 14 14", fill: "none", className: cx("block
|
|
801
|
+
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", width: pixelSize, height: pixelSize, viewBox: "0 0 14 14", fill: "none", className: cx("block", className), children: /* @__PURE__ */ jsx(
|
|
627
802
|
"path",
|
|
628
803
|
{
|
|
629
804
|
ref: pathRef,
|
|
@@ -638,14 +813,15 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
638
813
|
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
639
814
|
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
640
815
|
const isChecked = isSelected || isIndeterminate;
|
|
641
|
-
const
|
|
816
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
642
817
|
return /* @__PURE__ */ jsxs(
|
|
643
818
|
"div",
|
|
644
819
|
{
|
|
645
820
|
className: cx(
|
|
646
|
-
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center border border-solid border-primary",
|
|
821
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
647
822
|
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
648
823
|
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
824
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
649
825
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
650
826
|
isDisabled && !isChecked && "bg-tertiary",
|
|
651
827
|
isFocusVisible && !isDisabled && focusRingShadow,
|
|
@@ -656,13 +832,15 @@ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size =
|
|
|
656
832
|
"svg",
|
|
657
833
|
{
|
|
658
834
|
"aria-hidden": "true",
|
|
835
|
+
width: iconPixelSize,
|
|
836
|
+
height: iconPixelSize,
|
|
659
837
|
viewBox: "0 0 14 14",
|
|
660
838
|
fill: "none",
|
|
661
|
-
className:
|
|
839
|
+
className: "pointer-events-none block text-fg-white",
|
|
662
840
|
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
663
841
|
}
|
|
664
842
|
),
|
|
665
|
-
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { className:
|
|
843
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
666
844
|
]
|
|
667
845
|
}
|
|
668
846
|
);
|
|
@@ -744,7 +922,8 @@ var SelectItem = ({
|
|
|
744
922
|
{
|
|
745
923
|
className: cx(
|
|
746
924
|
"flex cursor-pointer items-center rounded-md outline-hidden select-none",
|
|
747
|
-
(state.isFocused || state.isHovered
|
|
925
|
+
(state.isFocused || state.isHovered) && !(state.isSelected && selectionIndicator !== "checkbox") && "bg-primary_hover",
|
|
926
|
+
state.isSelected && selectionIndicator !== "checkbox" && "bg-brand-primary_alt",
|
|
748
927
|
state.isDisabled && "cursor-not-allowed opacity-50",
|
|
749
928
|
// Icon styles
|
|
750
929
|
"*:data-icon:shrink-0 *:data-icon:text-fg-quaternary",
|
|
@@ -787,6 +966,7 @@ var TagSelectBase = ({
|
|
|
787
966
|
icon,
|
|
788
967
|
// Omit name to avoid conflicts with the `Select` component
|
|
789
968
|
name: _name,
|
|
969
|
+
mobileOptions,
|
|
790
970
|
className,
|
|
791
971
|
...props
|
|
792
972
|
}) => {
|
|
@@ -877,7 +1057,17 @@ var TagSelectBase = ({
|
|
|
877
1057
|
onPointerEnter: onResize
|
|
878
1058
|
}
|
|
879
1059
|
),
|
|
880
|
-
/* @__PURE__ */ jsx(
|
|
1060
|
+
/* @__PURE__ */ jsx(
|
|
1061
|
+
Popover,
|
|
1062
|
+
{
|
|
1063
|
+
size,
|
|
1064
|
+
triggerRef: placeholderRef,
|
|
1065
|
+
style: { width: popoverWidth },
|
|
1066
|
+
className: props?.popoverClassName,
|
|
1067
|
+
mobileOptions: { title: props.label, ...mobileOptions },
|
|
1068
|
+
children: /* @__PURE__ */ jsx(ListBox, { selectionMode: "multiple", className: "size-full outline-hidden", children })
|
|
1069
|
+
}
|
|
1070
|
+
),
|
|
881
1071
|
props.hint && /* @__PURE__ */ jsx(HintText, { isInvalid: state.isInvalid, className: cx(size === "sm" && "text-xs"), children: props.hint })
|
|
882
1072
|
] })
|
|
883
1073
|
}
|