@avenue-ticketing/ui 0.12.0-beta.1 → 0.12.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/react/badge-groups.js +2 -2
  2. package/dist/react/badge-groups.js.map +1 -1
  3. package/dist/react/badge.js +49 -18
  4. package/dist/react/badge.js.map +1 -1
  5. package/dist/react/button.js +2 -2
  6. package/dist/react/button.js.map +1 -1
  7. package/dist/react/checkbox.js +10 -7
  8. package/dist/react/checkbox.js.map +1 -1
  9. package/dist/react/combobox.d.ts +3 -2
  10. package/dist/react/combobox.js +284 -32
  11. package/dist/react/combobox.js.map +1 -1
  12. package/dist/react/dropdown-account-breadcrumb.js +176 -14
  13. package/dist/react/dropdown-account-breadcrumb.js.map +1 -1
  14. package/dist/react/dropdown-account-button.js +190 -25
  15. package/dist/react/dropdown-account-button.js.map +1 -1
  16. package/dist/react/dropdown-account-card-md.js +189 -24
  17. package/dist/react/dropdown-account-card-md.js.map +1 -1
  18. package/dist/react/dropdown-account-card-sm.js +189 -24
  19. package/dist/react/dropdown-account-card-sm.js.map +1 -1
  20. package/dist/react/dropdown-account-card-xs.js +189 -24
  21. package/dist/react/dropdown-account-card-xs.js.map +1 -1
  22. package/dist/react/dropdown-avatar.js +190 -25
  23. package/dist/react/dropdown-avatar.js.map +1 -1
  24. package/dist/react/dropdown-button-advanced.js +190 -25
  25. package/dist/react/dropdown-button-advanced.js.map +1 -1
  26. package/dist/react/dropdown-button-link.js +189 -24
  27. package/dist/react/dropdown-button-link.js.map +1 -1
  28. package/dist/react/dropdown-button-simple.js +190 -25
  29. package/dist/react/dropdown-button-simple.js.map +1 -1
  30. package/dist/react/dropdown-icon-advanced.js +189 -24
  31. package/dist/react/dropdown-icon-advanced.js.map +1 -1
  32. package/dist/react/dropdown-icon-simple.js +189 -24
  33. package/dist/react/dropdown-icon-simple.js.map +1 -1
  34. package/dist/react/dropdown-integration.js +190 -25
  35. package/dist/react/dropdown-integration.js.map +1 -1
  36. package/dist/react/dropdown-search-advanced.js +191 -26
  37. package/dist/react/dropdown-search-advanced.js.map +1 -1
  38. package/dist/react/dropdown-search-simple.js +191 -26
  39. package/dist/react/dropdown-search-simple.js.map +1 -1
  40. package/dist/react/dropdown.d.ts +4 -1
  41. package/dist/react/dropdown.js +189 -24
  42. package/dist/react/dropdown.js.map +1 -1
  43. package/dist/react/input-date.js.map +1 -1
  44. package/dist/react/input-file.js +3 -3
  45. package/dist/react/input-file.js.map +1 -1
  46. package/dist/react/input-group.js.map +1 -1
  47. package/dist/react/input-number.js +2 -2
  48. package/dist/react/input-number.js.map +1 -1
  49. package/dist/react/input-payment.js +1 -1
  50. package/dist/react/input-payment.js.map +1 -1
  51. package/dist/react/input-tags-outer.js +9 -9
  52. package/dist/react/input-tags-outer.js.map +1 -1
  53. package/dist/react/input-tags.js +8 -8
  54. package/dist/react/input-tags.js.map +1 -1
  55. package/dist/react/input.js +1 -1
  56. package/dist/react/input.js.map +1 -1
  57. package/dist/react/multi-select.d.ts +3 -2
  58. package/dist/react/multi-select.js +230 -29
  59. package/dist/react/multi-select.js.map +1 -1
  60. package/dist/react/popover.d.ts +10 -1
  61. package/dist/react/popover.js +195 -18
  62. package/dist/react/popover.js.map +1 -1
  63. package/dist/react/radio-buttons.js +2 -1
  64. package/dist/react/radio-buttons.js.map +1 -1
  65. package/dist/react/select-item.d.ts +2 -1
  66. package/dist/react/select-item.js +11 -7
  67. package/dist/react/select-item.js.map +1 -1
  68. package/dist/react/select.d.ts +4 -3
  69. package/dist/react/select.js +298 -42
  70. package/dist/react/select.js.map +1 -1
  71. package/dist/react/switch.js +1 -1
  72. package/dist/react/switch.js.map +1 -1
  73. package/dist/react/tag-select.d.ts +5 -2
  74. package/dist/react/tag-select.js +215 -25
  75. package/dist/react/tag-select.js.map +1 -1
  76. package/dist/react/tags.js +8 -8
  77. package/dist/react/tags.js.map +1 -1
  78. package/dist/react/textarea.js.map +1 -1
  79. package/dist/select-mobile-sheet-CB2ptDTJ.d.ts +12 -0
  80. package/dist/{select-shared-B3Y5SMXU.d.ts → select-shared-oJEeJxeB.d.ts} +6 -0
  81. package/package.json +1 -1
  82. package/theme.css +3 -1
@@ -1 +1 @@
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 slim ? \"bg-tertiary\" : \"bg-brand-primary\";\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"]}
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-toggle-track_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-B3Y5SMXU.js';
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;
@@ -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 Popover = (props) => {
515
- return /* @__PURE__ */ jsx(
516
- Popover$1,
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
- placement: "bottom",
519
- containerPadding: 0,
520
- offset: 4,
521
- ...props,
522
- className: (state) => cx(
523
- "w-(--trigger-width) origin-(--trigger-anchor-point) overflow-x-hidden overflow-y-auto rounded-lg bg-primary py-1 shadow-lg ring-1 ring-secondary_alt outline-hidden will-change-transform",
524
- 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",
525
- 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",
526
- props.size === "sm" && "max-h-56!",
527
- props.size === "md" && "max-h-64!",
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 shrink-0", className), children: /* @__PURE__ */ jsx(
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 iconClassName = size === "sm" ? "size-2.5" : "size-3.5";
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: cx("pointer-events-none block shrink-0 text-fg-white", iconClassName),
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: cx("pointer-events-none text-fg-white", iconClassName) })
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 || state.isSelected && selectionIndicator !== "checkbox") && "bg-primary_hover",
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(Popover, { size, triggerRef: placeholderRef, style: { width: popoverWidth }, className: props?.popoverClassName, children: /* @__PURE__ */ jsx(ListBox, { selectionMode: "multiple", className: "size-full outline-hidden", children }) }),
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
  }