@ai-matrx/design-system 0.86.337 → 0.86.338

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 (86) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/carousel.js +6 -6
  3. package/dist/{chunk-GHPUO3O7.js → chunk-5IR3BZOS.js} +2 -2
  4. package/dist/{chunk-DQUCOMAC.js → chunk-6QKT52FR.js} +2 -2
  5. package/dist/{chunk-B24DLFWR.js → chunk-B4WMMAAJ.js} +2 -2
  6. package/dist/{chunk-M34WPTPX.js → chunk-CEA6X445.js} +2 -2
  7. package/dist/{chunk-PBDQZPKV.js → chunk-CJBSBKG5.js} +2 -2
  8. package/dist/{chunk-Q2HWDJED.js → chunk-GLLPO66A.js} +2 -2
  9. package/dist/{chunk-WZC3K7SO.js → chunk-LGC6EVFE.js} +4 -4
  10. package/dist/chunk-LGC6EVFE.js.map +1 -0
  11. package/dist/{chunk-BYOFPPPI.js → chunk-M45FEAVG.js} +4 -4
  12. package/dist/{chunk-RGJPHRU3.js → chunk-T4IJELSS.js} +4 -4
  13. package/dist/{chunk-L5OACQXS.js → chunk-TO4ZLGDW.js} +5 -2
  14. package/dist/chunk-TO4ZLGDW.js.map +1 -0
  15. package/dist/{chunk-VQ3G6AFN.js → chunk-TWRC7NP4.js} +4 -4
  16. package/dist/{chunk-BM2YYBUO.js → chunk-UM45E3LO.js} +2 -2
  17. package/dist/{chunk-SMJGESH7.js → chunk-WFITMVDB.js} +5 -2
  18. package/dist/{chunk-SMJGESH7.js.map → chunk-WFITMVDB.js.map} +1 -1
  19. package/dist/{chunk-QOEKPR37.js → chunk-XTP6HOB6.js} +2 -2
  20. package/dist/clipboard-fallback-dialog.cjs +4 -1
  21. package/dist/clipboard-fallback-dialog.cjs.map +1 -1
  22. package/dist/clipboard-fallback-dialog.js +3 -3
  23. package/dist/controls.cjs +4 -1
  24. package/dist/controls.cjs.map +1 -1
  25. package/dist/controls.js +6 -6
  26. package/dist/data-table/data-row-inspector.js +5 -5
  27. package/dist/data-table/data-row-window.js +6 -6
  28. package/dist/data-table/index.cjs +4 -1
  29. package/dist/data-table/index.cjs.map +1 -1
  30. package/dist/data-table/index.js +9 -9
  31. package/dist/data-table/layered-filter-builder.cjs +4 -1
  32. package/dist/data-table/layered-filter-builder.cjs.map +1 -1
  33. package/dist/data-table/layered-filter-builder.js +2 -2
  34. package/dist/data-table/pagination.cjs +4 -1
  35. package/dist/data-table/pagination.cjs.map +1 -1
  36. package/dist/data-table/pagination.js +3 -3
  37. package/dist/data-table/uuid-cell.js +3 -3
  38. package/dist/desktop.cjs +4 -1
  39. package/dist/desktop.cjs.map +1 -1
  40. package/dist/desktop.js +5 -5
  41. package/dist/email-input-dialog.cjs +4 -1
  42. package/dist/email-input-dialog.cjs.map +1 -1
  43. package/dist/email-input-dialog.js +2 -2
  44. package/dist/index.cjs +8 -2
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +4 -3
  47. package/dist/index.d.ts +4 -3
  48. package/dist/index.js +9 -9
  49. package/dist/item.cjs +5 -2
  50. package/dist/item.cjs.map +1 -1
  51. package/dist/item.d.cts +5 -3
  52. package/dist/item.d.ts +5 -3
  53. package/dist/item.js +4 -4
  54. package/dist/lite-table.js +2 -2
  55. package/dist/menu-look.cjs +4 -1
  56. package/dist/menu-look.cjs.map +1 -1
  57. package/dist/menu-look.css +8 -0
  58. package/dist/menu-look.d.cts +4 -1
  59. package/dist/menu-look.d.ts +4 -1
  60. package/dist/menu-look.js +1 -1
  61. package/dist/record-list.cjs +5 -2
  62. package/dist/record-list.cjs.map +1 -1
  63. package/dist/record-list.d.cts +5 -3
  64. package/dist/record-list.d.ts +5 -3
  65. package/dist/record-list.js +4 -4
  66. package/dist/settings.cjs +4 -1
  67. package/dist/settings.cjs.map +1 -1
  68. package/dist/settings.js +3 -3
  69. package/dist/text-input-dialog.cjs +4 -1
  70. package/dist/text-input-dialog.cjs.map +1 -1
  71. package/dist/text-input-dialog.js +2 -2
  72. package/dist/writing-field.js +3 -3
  73. package/package.json +2 -2
  74. package/dist/chunk-L5OACQXS.js.map +0 -1
  75. package/dist/chunk-WZC3K7SO.js.map +0 -1
  76. /package/dist/{chunk-GHPUO3O7.js.map → chunk-5IR3BZOS.js.map} +0 -0
  77. /package/dist/{chunk-DQUCOMAC.js.map → chunk-6QKT52FR.js.map} +0 -0
  78. /package/dist/{chunk-B24DLFWR.js.map → chunk-B4WMMAAJ.js.map} +0 -0
  79. /package/dist/{chunk-M34WPTPX.js.map → chunk-CEA6X445.js.map} +0 -0
  80. /package/dist/{chunk-PBDQZPKV.js.map → chunk-CJBSBKG5.js.map} +0 -0
  81. /package/dist/{chunk-Q2HWDJED.js.map → chunk-GLLPO66A.js.map} +0 -0
  82. /package/dist/{chunk-BYOFPPPI.js.map → chunk-M45FEAVG.js.map} +0 -0
  83. /package/dist/{chunk-RGJPHRU3.js.map → chunk-T4IJELSS.js.map} +0 -0
  84. /package/dist/{chunk-VQ3G6AFN.js.map → chunk-TWRC7NP4.js.map} +0 -0
  85. /package/dist/{chunk-BM2YYBUO.js.map → chunk-UM45E3LO.js.map} +0 -0
  86. /package/dist/{chunk-QOEKPR37.js.map → chunk-XTP6HOB6.js.map} +0 -0
@@ -10,17 +10,17 @@ import {
10
10
  } from "./chunk-FRJ4PPA2.js";
11
11
  import {
12
12
  PropertyRow
13
- } from "./chunk-DQUCOMAC.js";
13
+ } from "./chunk-6QKT52FR.js";
14
14
  import {
15
15
  completeLayeredFilterRules,
16
16
  layeredFilterMatchesValue
17
17
  } from "./chunk-7ZCD4AZS.js";
18
18
  import {
19
19
  RecordId
20
- } from "./chunk-Q2HWDJED.js";
20
+ } from "./chunk-GLLPO66A.js";
21
21
  import {
22
22
  Button
23
- } from "./chunk-QOEKPR37.js";
23
+ } from "./chunk-XTP6HOB6.js";
24
24
  import {
25
25
  useMatrxDataTableHost
26
26
  } from "./chunk-POJ3RR3K.js";
@@ -671,4 +671,4 @@ export {
671
671
  isUuidValue,
672
672
  DataRowInspector
673
673
  };
674
- //# sourceMappingURL=chunk-VQ3G6AFN.js.map
674
+ //# sourceMappingURL=chunk-TWRC7NP4.js.map
@@ -24,7 +24,7 @@ import {
24
24
  SelectItem,
25
25
  SelectTrigger,
26
26
  SelectValue
27
- } from "./chunk-SMJGESH7.js";
27
+ } from "./chunk-WFITMVDB.js";
28
28
  import {
29
29
  Button
30
30
  } from "./chunk-7IOSA55D.js";
@@ -410,4 +410,4 @@ function LayeredRuleRow({
410
410
  export {
411
411
  LayeredFilterBuilder
412
412
  };
413
- //# sourceMappingURL=chunk-BM2YYBUO.js.map
413
+ //# sourceMappingURL=chunk-UM45E3LO.js.map
@@ -162,7 +162,10 @@ var SelectItem = React.forwardRef(({ className, children, description, meta, tit
162
162
  ...props,
163
163
  children: [
164
164
  /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(RadixCheckIcon, { className: "h-4 w-4" }) }) }),
165
- /* @__PURE__ */ jsx("span", { className: "min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }) }),
165
+ /* @__PURE__ */ jsxs("span", { className: "min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]", children: [
166
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }),
167
+ description ? /* @__PURE__ */ jsx("span", { "data-touch-hint": "", className: "hidden text-xs leading-snug text-muted-foreground [@media(hover:none)]:block", children: description }) : null
168
+ ] }),
166
169
  meta ? /* @__PURE__ */ jsx("span", { "data-slot": "select-item-meta", className: "ml-3 min-w-0 shrink text-xs text-muted-foreground [overflow-wrap:anywhere]", children: meta }) : null
167
170
  ]
168
171
  }
@@ -192,4 +195,4 @@ export {
192
195
  SelectItem,
193
196
  SelectSeparator
194
197
  };
195
- //# sourceMappingURL=chunk-SMJGESH7.js.map
198
+ //# sourceMappingURL=chunk-WFITMVDB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/select.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Select — ported verbatim from matrx-frontend `components/ui/select.tsx`.\n *\n * Seam inversions:\n * - The host's `useNestedPortalContainer` (dialog/popout aware) becomes the\n * injected `PortalContainerProvider` seam (`portal-container.tsx`); the\n * explicit `container` prop keeps top priority, exactly as before.\n * - `ChevronDownIcon` / `ChevronUpIcon` / `CheckIcon` come from the package's\n * inlined SVGs (C19), not @radix-ui/react-icons — same glyphs, same\n * viewBoxes. (The origin also imported `CaretSortIcon` without ever using\n * it; the dead import is not carried along.)\n *\n * THE ROOT RENDERS UNCONDITIONALLY — no mount gate. This wrapper used to defer\n * rendering until after hydration (\"Radix generates dynamic aria-controls ids\n * that differ between SSR and client\"), and that justification was false:\n * Radix ids come from React's SSR-stable `useId` (verified against\n * @radix-ui/react-select 2.3.1 / react-id 1.1.2). The gate was actively\n * harmful — it deleted the ALWAYS-VISIBLE select trigger (a form control)\n * from SSR and the first client paint.\n */\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"./cn\";\nimport { MOTION_POPPER, POPPER_OFFSET } from \"./motion\";\nimport { RadixCheckIcon, RadixChevronDownIcon, RadixChevronUpIcon } from \"./icons\";\nimport { usePortalContainer } from \"./portal-container\";\nimport { FIELD_SURFACE_CLASS } from \"./field-surface\";\nimport { keepMovedFocus } from \"./focus-return\";\n\nexport const Select = SelectPrimitive.Root;\n\nexport const SelectGroup = SelectPrimitive.Group;\n\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const selectTriggerVariants = cva(\n `matrx-glyph-trim flex w-full items-center justify-between gap-2 whitespace-nowrap rounded-md ${FIELD_SURFACE_CLASS} text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground transition-colors hover:bg-accent hover:border-accent-foreground/20 focus:outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/15 data-[state=open]:border-primary disabled:cursor-not-allowed disabled:bg-muted disabled:text-disabled-foreground [&>span]:min-w-0 [&>span]:line-clamp-1`,\n {\n variants: {\n size: {\n sm: \"h-7 px-2 py-1 text-xs\",\n default: \"h-9 px-3 py-1\",\n lg: \"h-10 px-3 py-2\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\n/**\n * THE ONE DROPDOWN CHEVRON (page-pass 2026-09-27, /crm/<id>). Pickers drew three\n * different trigger glyphs side by side — a down chevron, an up-down pair, and\n * a larger up-down — so one form read as three kinds of control. Every dropdown\n * trigger (Select, CreatablePicker, every host combobox) draws THIS.\n */\nexport function SelectChevron({ className, size = \"default\" }: { className?: string | undefined; size?: \"sm\" | \"default\" | undefined }) {\n return (\n <RadixChevronDownIcon\n aria-hidden=\"true\"\n data-select-chevron=\"\"\n className={cn(size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\", \"shrink-0 opacity-50\", className)}\n />\n );\n}\n\nexport interface SelectTriggerProps\n extends\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>,\n VariantProps<typeof selectTriggerVariants> {\n hideArrow?: boolean;\n}\n\nexport const SelectTrigger = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, hideArrow = false, size, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(selectTriggerVariants({ size, className }))}\n {...props}\n >\n {children}\n {!hideArrow && (\n <SelectPrimitive.Icon asChild>\n <SelectChevron size={size === \"sm\" ? \"sm\" : \"default\"} />\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nexport const SelectScrollUpButton = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <RadixChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nexport const SelectScrollDownButton = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <RadixChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nexport interface SelectContentProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n /** Explicit portal target; wins over the injected container. */\n container?: HTMLElement | null;\n /**\n * Package-owned open/close motion. Default `true`. Pass `false` for a\n * surface that must appear instantly. It is NOT the reduced-motion switch;\n * `styles.css` already honors `prefers-reduced-motion`.\n */\n animated?: boolean;\n}\n\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(\n (\n {\n className,\n children,\n position = \"popper\",\n container,\n animated = true,\n onCloseAutoFocus,\n ...props\n },\n ref,\n ) => {\n const portalContainer = usePortalContainer(container);\n return (\n <SelectPrimitive.Portal container={portalContainer}>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-[10001] max-h-96 min-w-[8rem] max-w-[calc(100vw-2rem)] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\",\n animated && MOTION_POPPER,\n // The resting gap from the trigger. It is the `translate` property\n // (POPPER_OFFSET), never Tailwind translate utilities: those compose\n // with `transform` on a v4 host and are REPLACED by it on a v3 one,\n // so on v3 the animation ate the gap and the surface snapped 4px at\n // the end. Same law as the centered dialog card — see motion.ts.\n position === \"popper\" && POPPER_OFFSET,\n className,\n )}\n position={position}\n {...props}\n onCloseAutoFocus={keepMovedFocus(onCloseAutoFocus)}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"max-w-full overflow-y-auto p-0.5\",\n position === \"popper\" &&\n \"w-full min-w-[var(--radix-select-trigger-width)] max-h-[var(--radix-select-content-available-height)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"type-label px-2 pb-1 pt-2 text-muted-foreground\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {\n /**\n * What the option means, as its HOVER text — never a second line (Arman,\n * 2026-10-14: no \"novels\" in menus). An option is one line; the trigger\n * shows exactly that line.\n */\n description?: string;\n /** Short trailing text in the menu only (a count, a size, why it cannot be chosen); the trigger never shows it. */\n meta?: React.ReactNode;\n }\n>(({ className, children, description, meta, title, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n title={title ?? description}\n className={cn(\n \"relative flex w-full min-w-0 select-none items-center rounded-sm py-1 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:text-disabled-foreground\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <RadixCheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <span className=\"min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]\">\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </span>\n {meta ? (\n <span data-slot=\"select-item-meta\" className=\"ml-3 min-w-0 shrink text-xs text-muted-foreground [overflow-wrap:anywhere]\">\n {meta}\n </span>\n ) : null}\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/select.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Select — ported verbatim from matrx-frontend `components/ui/select.tsx`.\n *\n * Seam inversions:\n * - The host's `useNestedPortalContainer` (dialog/popout aware) becomes the\n * injected `PortalContainerProvider` seam (`portal-container.tsx`); the\n * explicit `container` prop keeps top priority, exactly as before.\n * - `ChevronDownIcon` / `ChevronUpIcon` / `CheckIcon` come from the package's\n * inlined SVGs (C19), not @radix-ui/react-icons — same glyphs, same\n * viewBoxes. (The origin also imported `CaretSortIcon` without ever using\n * it; the dead import is not carried along.)\n *\n * THE ROOT RENDERS UNCONDITIONALLY — no mount gate. This wrapper used to defer\n * rendering until after hydration (\"Radix generates dynamic aria-controls ids\n * that differ between SSR and client\"), and that justification was false:\n * Radix ids come from React's SSR-stable `useId` (verified against\n * @radix-ui/react-select 2.3.1 / react-id 1.1.2). The gate was actively\n * harmful — it deleted the ALWAYS-VISIBLE select trigger (a form control)\n * from SSR and the first client paint.\n */\n\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"./cn\";\nimport { MOTION_POPPER, POPPER_OFFSET } from \"./motion\";\nimport { RadixCheckIcon, RadixChevronDownIcon, RadixChevronUpIcon } from \"./icons\";\nimport { usePortalContainer } from \"./portal-container\";\nimport { FIELD_SURFACE_CLASS } from \"./field-surface\";\nimport { keepMovedFocus } from \"./focus-return\";\n\nexport const Select = SelectPrimitive.Root;\n\nexport const SelectGroup = SelectPrimitive.Group;\n\nexport const SelectValue = SelectPrimitive.Value;\n\nexport const selectTriggerVariants = cva(\n `matrx-glyph-trim flex w-full items-center justify-between gap-2 whitespace-nowrap rounded-md ${FIELD_SURFACE_CLASS} text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground transition-colors hover:bg-accent hover:border-accent-foreground/20 focus:outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/15 data-[state=open]:border-primary disabled:cursor-not-allowed disabled:bg-muted disabled:text-disabled-foreground [&>span]:min-w-0 [&>span]:line-clamp-1`,\n {\n variants: {\n size: {\n sm: \"h-7 px-2 py-1 text-xs\",\n default: \"h-9 px-3 py-1\",\n lg: \"h-10 px-3 py-2\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\n/**\n * THE ONE DROPDOWN CHEVRON (page-pass 2026-09-27, /crm/<id>). Pickers drew three\n * different trigger glyphs side by side — a down chevron, an up-down pair, and\n * a larger up-down — so one form read as three kinds of control. Every dropdown\n * trigger (Select, CreatablePicker, every host combobox) draws THIS.\n */\nexport function SelectChevron({ className, size = \"default\" }: { className?: string | undefined; size?: \"sm\" | \"default\" | undefined }) {\n return (\n <RadixChevronDownIcon\n aria-hidden=\"true\"\n data-select-chevron=\"\"\n className={cn(size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\", \"shrink-0 opacity-50\", className)}\n />\n );\n}\n\nexport interface SelectTriggerProps\n extends\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>,\n VariantProps<typeof selectTriggerVariants> {\n hideArrow?: boolean;\n}\n\nexport const SelectTrigger = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, hideArrow = false, size, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(selectTriggerVariants({ size, className }))}\n {...props}\n >\n {children}\n {!hideArrow && (\n <SelectPrimitive.Icon asChild>\n <SelectChevron size={size === \"sm\" ? \"sm\" : \"default\"} />\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nexport const SelectScrollUpButton = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <RadixChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nexport const SelectScrollDownButton = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <RadixChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nexport interface SelectContentProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n /** Explicit portal target; wins over the injected container. */\n container?: HTMLElement | null;\n /**\n * Package-owned open/close motion. Default `true`. Pass `false` for a\n * surface that must appear instantly. It is NOT the reduced-motion switch;\n * `styles.css` already honors `prefers-reduced-motion`.\n */\n animated?: boolean;\n}\n\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(\n (\n {\n className,\n children,\n position = \"popper\",\n container,\n animated = true,\n onCloseAutoFocus,\n ...props\n },\n ref,\n ) => {\n const portalContainer = usePortalContainer(container);\n return (\n <SelectPrimitive.Portal container={portalContainer}>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-[10001] max-h-96 min-w-[8rem] max-w-[calc(100vw-2rem)] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\",\n animated && MOTION_POPPER,\n // The resting gap from the trigger. It is the `translate` property\n // (POPPER_OFFSET), never Tailwind translate utilities: those compose\n // with `transform` on a v4 host and are REPLACED by it on a v3 one,\n // so on v3 the animation ate the gap and the surface snapped 4px at\n // the end. Same law as the centered dialog card — see motion.ts.\n position === \"popper\" && POPPER_OFFSET,\n className,\n )}\n position={position}\n {...props}\n onCloseAutoFocus={keepMovedFocus(onCloseAutoFocus)}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"max-w-full overflow-y-auto p-0.5\",\n position === \"popper\" &&\n \"w-full min-w-[var(--radix-select-trigger-width)] max-h-[var(--radix-select-content-available-height)]\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n});\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"type-label px-2 pb-1 pt-2 text-muted-foreground\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {\n /**\n * What the option means, as its HOVER text — never a second line on desktop\n * (Arman, 2026-10-14: no \"novels\" in menus). Where nothing can hover (a phone,\n * a mouse-less tablet) it is the option's muted second line in the open list\n * (`data-touch-hint`, menu-look.css). The trigger shows only the label.\n */\n description?: string;\n /** Short trailing text in the menu only (a count, a size, why it cannot be chosen); the trigger never shows it. */\n meta?: React.ReactNode;\n }\n>(({ className, children, description, meta, title, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n title={title ?? description}\n className={cn(\n \"relative flex w-full min-w-0 select-none items-center rounded-sm py-1 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:text-disabled-foreground\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <RadixCheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <span className=\"min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]\">\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n {/* Outside ItemText: the closed trigger shows the label alone. */}\n {description ? (\n <span data-touch-hint=\"\" className=\"hidden text-xs leading-snug text-muted-foreground [@media(hover:none)]:block\">\n {description}\n </span>\n ) : null}\n </span>\n {meta ? (\n <span data-slot=\"select-item-meta\" className=\"ml-3 min-w-0 shrink text-xs text-muted-foreground [overflow-wrap:anywhere]\">\n {meta}\n </span>\n ) : null}\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n"],"mappings":"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","names":[]}
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-X6ZRHJQP.js";
19
19
  import {
20
20
  SelectChevron
21
- } from "./chunk-SMJGESH7.js";
21
+ } from "./chunk-WFITMVDB.js";
22
22
  import {
23
23
  swallowClick
24
24
  } from "./chunk-7IOSA55D.js";
@@ -462,4 +462,4 @@ export {
462
462
  Switch,
463
463
  Textarea
464
464
  };
465
- //# sourceMappingURL=chunk-QOEKPR37.js.map
465
+ //# sourceMappingURL=chunk-XTP6HOB6.js.map
@@ -450,7 +450,10 @@ var SelectItem = React3.forwardRef(({ className, children, description, meta, ti
450
450
  ...props,
451
451
  children: [
452
452
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RadixCheckIcon, { className: "h-4 w-4" }) }) }),
453
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SelectPrimitive.ItemText, { children }) }),
453
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "min-w-0 whitespace-normal break-words [overflow-wrap:anywhere]", children: [
454
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SelectPrimitive.ItemText, { children }),
455
+ description ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { "data-touch-hint": "", className: "hidden text-xs leading-snug text-muted-foreground [@media(hover:none)]:block", children: description }) : null
456
+ ] }),
454
457
  meta ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { "data-slot": "select-item-meta", className: "ml-3 min-w-0 shrink text-xs text-muted-foreground [overflow-wrap:anywhere]", children: meta }) : null
455
458
  ]
456
459
  }