@exponential_app/eui-react 0.0.0-stage → 0.2.0

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 (102) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +54 -0
  3. package/README.md +360 -2
  4. package/dist/chunks/index-5yzzfez5.js +126 -0
  5. package/dist/chunks/index-5yzzfez5.js.map +11 -0
  6. package/dist/exponential-ui-react.css +2 -0
  7. package/dist/index.js +7700 -0
  8. package/dist/index.js.map +46 -0
  9. package/dist/primitives/index.js +3154 -0
  10. package/dist/primitives/index.js.map +59 -0
  11. package/dist/types/context.d.ts +96 -0
  12. package/dist/types/extensions.d.ts +25 -0
  13. package/dist/types/form.d.ts +65 -0
  14. package/dist/types/host-surface.d.ts +32 -0
  15. package/dist/types/host.d.ts +37 -0
  16. package/dist/types/icons.d.ts +31 -0
  17. package/dist/types/index.d.ts +37 -0
  18. package/dist/types/inputs.d.ts +25 -0
  19. package/dist/types/list.d.ts +31 -0
  20. package/dist/types/live.d.ts +18 -0
  21. package/dist/types/markdown.d.ts +9 -0
  22. package/dist/types/media.d.ts +15 -0
  23. package/dist/types/natives/actions.d.ts +10 -0
  24. package/dist/types/natives/bound.d.ts +2 -0
  25. package/dist/types/natives/chart.d.ts +2 -0
  26. package/dist/types/natives/chips.d.ts +5 -0
  27. package/dist/types/natives/choice-tiles.d.ts +2 -0
  28. package/dist/types/natives/code.d.ts +2 -0
  29. package/dist/types/natives/dates.d.ts +29 -0
  30. package/dist/types/natives/feedback.d.ts +29 -0
  31. package/dist/types/natives/index.d.ts +4 -0
  32. package/dist/types/natives/inputs.d.ts +19 -0
  33. package/dist/types/natives/layout.d.ts +15 -0
  34. package/dist/types/natives/listbox.d.ts +15 -0
  35. package/dist/types/natives/media.d.ts +13 -0
  36. package/dist/types/natives/nav.d.ts +17 -0
  37. package/dist/types/natives/overlays.d.ts +17 -0
  38. package/dist/types/natives/qr.d.ts +3 -0
  39. package/dist/types/natives/resizable.d.ts +2 -0
  40. package/dist/types/natives/search.d.ts +46 -0
  41. package/dist/types/natives/select.d.ts +8 -0
  42. package/dist/types/natives/shared.d.ts +35 -0
  43. package/dist/types/natives/table.d.ts +5 -0
  44. package/dist/types/natives/text.d.ts +4 -0
  45. package/dist/types/node-view.d.ts +73 -0
  46. package/dist/types/platform.d.ts +12 -0
  47. package/dist/types/primitives/alert-dialog.d.ts +14 -0
  48. package/dist/types/primitives/alert.d.ts +7 -0
  49. package/dist/types/primitives/avatar-color.d.ts +1 -0
  50. package/dist/types/primitives/avatar.d.ts +8 -0
  51. package/dist/types/primitives/badge.d.ts +8 -0
  52. package/dist/types/primitives/breadcrumb.d.ts +11 -0
  53. package/dist/types/primitives/button.d.ts +7 -0
  54. package/dist/types/primitives/calendar.d.ts +8 -0
  55. package/dist/types/primitives/card.d.ts +9 -0
  56. package/dist/types/primitives/checkbox.d.ts +4 -0
  57. package/dist/types/primitives/choice-tiles.d.ts +60 -0
  58. package/dist/types/primitives/cn.d.ts +1 -0
  59. package/dist/types/primitives/code-block.d.ts +32 -0
  60. package/dist/types/primitives/collapsible.d.ts +6 -0
  61. package/dist/types/primitives/command.d.ts +49 -0
  62. package/dist/types/primitives/context-ring.d.ts +15 -0
  63. package/dist/types/primitives/dialog-arms.d.ts +2 -0
  64. package/dist/types/primitives/dialog.d.ts +32 -0
  65. package/dist/types/primitives/disclosure-header.d.ts +7 -0
  66. package/dist/types/primitives/dock-card.d.ts +43 -0
  67. package/dist/types/primitives/dropdown-menu.d.ts +26 -0
  68. package/dist/types/primitives/empty-state.d.ts +19 -0
  69. package/dist/types/primitives/glass-card.d.ts +3 -0
  70. package/dist/types/primitives/hover-card.d.ts +6 -0
  71. package/dist/types/primitives/icon-disc.d.ts +10 -0
  72. package/dist/types/primitives/index.d.ts +52 -0
  73. package/dist/types/primitives/input.d.ts +4 -0
  74. package/dist/types/primitives/kbd.d.ts +4 -0
  75. package/dist/types/primitives/label.d.ts +4 -0
  76. package/dist/types/primitives/menu-surface.d.ts +1 -0
  77. package/dist/types/primitives/meter.d.ts +10 -0
  78. package/dist/types/primitives/popover.d.ts +7 -0
  79. package/dist/types/primitives/progress-ring.d.ts +12 -0
  80. package/dist/types/primitives/progress.d.ts +4 -0
  81. package/dist/types/primitives/scroll-area.d.ts +5 -0
  82. package/dist/types/primitives/segmented-control.d.ts +25 -0
  83. package/dist/types/primitives/select.d.ts +15 -0
  84. package/dist/types/primitives/separator.d.ts +4 -0
  85. package/dist/types/primitives/sheet-chrome.d.ts +13 -0
  86. package/dist/types/primitives/sheet.d.ts +18 -0
  87. package/dist/types/primitives/skeleton.d.ts +3 -0
  88. package/dist/types/primitives/spinner.d.ts +8 -0
  89. package/dist/types/primitives/switch.d.ts +6 -0
  90. package/dist/types/primitives/table.d.ts +11 -0
  91. package/dist/types/primitives/tabs.d.ts +8 -0
  92. package/dist/types/primitives/textarea.d.ts +3 -0
  93. package/dist/types/primitives/toast.d.ts +16 -0
  94. package/dist/types/primitives/tooltip.d.ts +7 -0
  95. package/dist/types/primitives/truncate.d.ts +1 -0
  96. package/dist/types/primitives/use-media-query.d.ts +3 -0
  97. package/dist/types/primitives/use-mobile.d.ts +1 -0
  98. package/dist/types/primitives/use-sheet-drag.d.ts +20 -0
  99. package/dist/types/primitives/voice-wave.d.ts +22 -0
  100. package/dist/types/surface.d.ts +117 -0
  101. package/dist/types/use-surface.d.ts +57 -0
  102. package/package.json +60 -4
@@ -0,0 +1,59 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/primitives/alert.tsx", "../src/primitives/alert-dialog.tsx", "../src/primitives/avatar.tsx", "../src/primitives/avatar-color.ts", "../src/primitives/badge.tsx", "../src/primitives/breadcrumb.tsx", "../src/primitives/button.tsx", "../src/primitives/calendar.tsx", "../src/primitives/card.tsx", "../src/primitives/checkbox.tsx", "../src/primitives/code-block.tsx", "../src/primitives/collapsible.tsx", "../src/primitives/command.tsx", "../src/primitives/context-ring.tsx", "../src/primitives/dialog.tsx", "../src/primitives/dialog-arms.ts", "../src/primitives/sheet-chrome.tsx", "../src/primitives/sheet.tsx", "../src/primitives/use-sheet-drag.ts", "../src/primitives/use-media-query.ts", "../src/primitives/disclosure-header.tsx", "../src/primitives/dock-card.tsx", "../src/primitives/dropdown-menu.tsx", "../src/primitives/empty-state.tsx", "../src/primitives/icon-disc.tsx", "../src/primitives/glass-card.tsx", "../src/primitives/hover-card.tsx", "../src/primitives/input.tsx", "../src/primitives/kbd.tsx", "../src/primitives/label.tsx", "../src/primitives/menu-surface.ts", "../src/primitives/meter.tsx", "../src/primitives/progress.tsx", "../src/primitives/popover.tsx", "../src/primitives/progress-ring.tsx", "../src/primitives/scroll-area.tsx", "../src/primitives/segmented-control.tsx", "../src/primitives/tabs.tsx", "../src/primitives/select.tsx", "../src/primitives/separator.tsx", "../src/primitives/skeleton.tsx", "../src/primitives/spinner.tsx", "../src/primitives/switch.tsx", "../src/primitives/table.tsx", "../src/primitives/textarea.tsx", "../src/primitives/toast.tsx", "../src/primitives/tooltip.tsx", "../src/primitives/truncate.ts", "../src/primitives/use-mobile.ts", "../src/primitives/voice-wave.tsx"],
4
+ "sourcesContent": [
5
+ "import * as React from \"react\"\nimport type { VariantProps } from \"class-variance-authority\"\nimport { ALERT_CLASSES, alertVariants } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<`div`> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(ALERT_CLASSES.title, className)}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(ALERT_CLASSES.description, className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants }\n",
6
+ "import * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"radix-ui\"\n\nimport { ALERT_DIALOG_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n}\n\nfunction AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n}\n\nfunction AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return <AlertDialogPrimitive.Overlay data-slot=\"alert-dialog-overlay\" className={cn(ALERT_DIALOG_CLASSES.overlay, className)} {...props} />\n}\n\nfunction AlertDialogContent({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(ALERT_DIALOG_CLASSES.content, className)}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({ className, ...props }: React.ComponentProps<`div`>) {\n return <div data-slot=\"alert-dialog-header\" className={cn(ALERT_DIALOG_CLASSES.header, className)} {...props} />\n}\n\nfunction AlertDialogFooter({ className, ...props }: React.ComponentProps<`div`>) {\n return <div data-slot=\"alert-dialog-footer\" className={cn(ALERT_DIALOG_CLASSES.footer, className)} {...props} />\n}\n\nfunction AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return <AlertDialogPrimitive.Title data-slot=\"alert-dialog-title\" className={cn(ALERT_DIALOG_CLASSES.title, className)} {...props} />\n}\n\nfunction AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return <AlertDialogPrimitive.Description data-slot=\"alert-dialog-description\" className={cn(ALERT_DIALOG_CLASSES.description, className)} {...props} />\n}\n\nfunction AlertDialogAction({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return <AlertDialogPrimitive.Action className={cn(ALERT_DIALOG_CLASSES.action, className)} {...props} />\n}\n\nfunction AlertDialogCancel({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return <AlertDialogPrimitive.Cancel className={cn(ALERT_DIALOG_CLASSES.cancel, className)} {...props} />\n}\n\nexport { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel }\n",
7
+ "import * as React from \"react\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\nimport { AVATAR_CLASSES, avatarFallbackColors, avatarFallbackHue } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(AVATAR_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(AVATAR_CLASSES.image, className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n userId,\n style,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback> & {\n userId?: string | null\n}) {\n const hue = avatarFallbackHue(userId)\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n AVATAR_CLASSES.fallback,\n hue === undefined && AVATAR_CLASSES.fallbackMuted,\n className\n )}\n style={hue === undefined ? style : { ...avatarFallbackColors(hue), ...style }}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n",
8
+ "export { AVATAR_HUE_COUNT, avatarHueIndex } from \"@exponential_app/eui/web/primitives\"\n",
9
+ "import * as React from \"react\"\nimport { BADGE_CLASSES, badgeLabel, type BadgeTone } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport function Badge({\n count,\n max = 99,\n tone = `muted`,\n className,\n ...props\n}: Omit<React.ComponentProps<`span`>, `children`> & {\n count: number\n /** Past this the badge reads `${max}+`. */\n max?: number\n tone?: BadgeTone\n}) {\n if (count <= 0) return null\n return (\n <span\n data-slot=\"badge\"\n data-tone={tone}\n className={cn(BADGE_CLASSES.root, BADGE_CLASSES.tones[tone], className)}\n {...props}\n >\n {badgeLabel(count, max)}\n </span>\n )\n}\n",
10
+ "import * as React from \"react\"\nimport { ChevronRight, Ellipsis } from \"lucide-react\"\nimport { Slot } from \"radix-ui\"\nimport { BREADCRUMB_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<`nav`>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<`ol`>) {\n return <ol data-slot=\"breadcrumb-list\" className={cn(BREADCRUMB_CLASSES.list, className)} {...props} />\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<`li`>) {\n return <li data-slot=\"breadcrumb-item\" className={cn(BREADCRUMB_CLASSES.item, className)} {...props} />\n}\n\nfunction BreadcrumbLink({ asChild, className, ...props }: React.ComponentProps<`a`> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : `a`\n return <Comp data-slot=\"breadcrumb-link\" className={cn(BREADCRUMB_CLASSES.link, className)} {...props} />\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<`span`>) {\n return <span data-slot=\"breadcrumb-page\" role=\"link\" aria-disabled=\"true\" aria-current=\"page\" className={cn(BREADCRUMB_CLASSES.page, className)} {...props} />\n}\n\nfunction BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<`li`>) {\n return (\n <li data-slot=\"breadcrumb-separator\" role=\"presentation\" aria-hidden=\"true\" className={cn(BREADCRUMB_CLASSES.separator, className)} {...props}>\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<`span`>) {\n return (\n <span data-slot=\"breadcrumb-ellipsis\" role=\"presentation\" aria-hidden=\"true\" className={cn(BREADCRUMB_CLASSES.ellipsis, className)} {...props}>\n <Ellipsis className={BREADCRUMB_CLASSES.ellipsisIcon} />\n <span className={BREADCRUMB_CLASSES.srOnly}>More</span>\n </span>\n )\n}\n\nexport { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis }\n",
11
+ "import * as React from \"react\"\nimport type { VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\nimport { buttonVariants } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Button({\n className,\n variant = `default`,\n size = `default`,\n asChild = false,\n ...props\n}: React.ComponentProps<`button`> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : `button`\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n",
12
+ "import * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\nimport { CALENDAR_CLASSES, buttonVariants } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { Button } from \"./button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = `label`,\n buttonVariant = `ghost`,\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[`variant`]\n}) {\n const defaultClassNames = getDefaultClassNames()\n const parts = CALENDAR_CLASSES.classNames\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(CALENDAR_CLASSES.root, className)}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(`default`, { month: `short` }),\n ...formatters,\n }}\n classNames={{\n root: cn(parts.root, defaultClassNames.root),\n months: cn(parts.months, defaultClassNames.months),\n month: cn(parts.month, defaultClassNames.month),\n nav: cn(parts.nav, defaultClassNames.nav),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n parts.button_previous,\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n parts.button_next,\n defaultClassNames.button_next\n ),\n month_caption: cn(parts.month_caption, defaultClassNames.month_caption),\n dropdowns: cn(parts.dropdowns, defaultClassNames.dropdowns),\n dropdown_root: cn(parts.dropdown_root, defaultClassNames.dropdown_root),\n dropdown: cn(parts.dropdown, defaultClassNames.dropdown),\n caption_label: cn(\n parts.caption_label,\n captionLayout === `label`\n ? CALENDAR_CLASSES.captionLabel.label\n : CALENDAR_CLASSES.captionLabel.dropdown,\n defaultClassNames.caption_label\n ),\n table: parts.table,\n weekdays: cn(parts.weekdays, defaultClassNames.weekdays),\n weekday: cn(parts.weekday, defaultClassNames.weekday),\n week: cn(parts.week, defaultClassNames.week),\n week_number_header: cn(parts.week_number_header, defaultClassNames.week_number_header),\n week_number: cn(parts.week_number, defaultClassNames.week_number),\n day: cn(\n parts.day,\n props.showWeekNumber\n ? CALENDAR_CLASSES.dayFirst.weekNumbers\n : CALENDAR_CLASSES.dayFirst.plain,\n defaultClassNames.day\n ),\n range_start: cn(parts.range_start, defaultClassNames.range_start),\n range_middle: cn(parts.range_middle, defaultClassNames.range_middle),\n range_end: cn(parts.range_end, defaultClassNames.range_end),\n today: cn(parts.today, defaultClassNames.today),\n outside: cn(parts.outside, defaultClassNames.outside),\n disabled: cn(parts.disabled, defaultClassNames.disabled),\n hidden: cn(parts.hidden, defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === `left`) {\n return (\n <ChevronLeftIcon className={cn(CALENDAR_CLASSES.chevron, className)} {...props} />\n )\n }\n\n if (orientation === `right`) {\n return (\n <ChevronRightIcon\n className={cn(CALENDAR_CLASSES.chevron, className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(CALENDAR_CLASSES.chevron, className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className={CALENDAR_CLASSES.weekNumber}>\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n CALENDAR_CLASSES.dayButton,\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n",
13
+ "import * as React from \"react\"\nimport { CARD_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Card({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card\"\n className={cn(CARD_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(CARD_CLASSES.header, className)}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(CARD_CLASSES.title, className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(CARD_CLASSES.description, className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(CARD_CLASSES.action, className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(CARD_CLASSES.content, className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(CARD_CLASSES.footer, className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n",
14
+ "import * as React from \"react\"\nimport { CheckIcon } from \"lucide-react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { CHECKBOX_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(CHECKBOX_CLASSES.root, className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={CHECKBOX_CLASSES.indicator}\n >\n <CheckIcon className={CHECKBOX_CLASSES.icon} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n",
15
+ "import * as React from \"react\"\nimport type { VariantProps } from \"class-variance-authority\"\nimport { Check, Copy } from \"lucide-react\"\nimport { tokenizeCode } from \"@exponential_app/eui\"\nimport { CODE_BLOCK_CLASSES, CODE_TOKEN_CLASS, codeBlockLineVariants, codeBlockVariants } from \"@exponential_app/eui/web/primitives\"\n\nimport { Button } from \"./button\"\nimport { cn } from \"./cn\"\n\nfunction CodeBlock({\n className,\n variant = `default`,\n size = `default`,\n ...props\n}: React.ComponentProps<`div`> &\n VariantProps<typeof codeBlockVariants> & { size?: `default` | `sm` }) {\n return (\n <div\n data-slot=\"code-block\"\n data-variant={variant}\n data-size={size}\n className={cn(codeBlockVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction CodeBlockHeader({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"code-block-header\"\n className={cn(\n CODE_BLOCK_CLASSES.header,\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CodeBlockTitle({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"code-block-title\"\n className={cn(\n CODE_BLOCK_CLASSES.title,\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CodeBlockActions({\n className,\n ...props\n}: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"code-block-actions\"\n className={cn(\n CODE_BLOCK_CLASSES.actions,\n className\n )}\n {...props}\n />\n )\n}\n\n/** The copy action: ui-copy → ui-check for 2s, announced politely. A copy\n * that did not happen (no clipboard, a refusal) changes nothing. */\nfunction CodeBlockCopyButton({\n value,\n variant = `ghost`,\n size = `icon-xs`,\n className,\n onClick,\n labels = { copy: `Copy`, copied: `Copied` },\n ...props\n}: React.ComponentProps<typeof Button> & {\n value: string\n labels?: { copy: string; copied: string }\n}) {\n const [copied, setCopied] = React.useState(false)\n\n React.useEffect(() => {\n if (!copied) return\n const timeout = setTimeout(() => setCopied(false), 2000)\n return () => clearTimeout(timeout)\n }, [copied])\n\n return (\n <>\n <Button\n data-slot=\"code-block-copy-button\"\n data-copied={copied || undefined}\n variant={variant}\n size={size}\n aria-label={copied ? labels.copied : labels.copy}\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n const clipboard =\n typeof navigator === `undefined` ? undefined : navigator.clipboard\n if (!clipboard?.writeText) return\n clipboard\n .writeText(value)\n .then(() => setCopied(true))\n .catch(() => {})\n }}\n {...props}\n >\n {copied ? <Check /> : <Copy />}\n </Button>\n <span aria-live=\"polite\" className={CODE_BLOCK_CLASSES.srOnly}>\n {copied ? labels.copied : ``}\n </span>\n </>\n )\n}\n\nfunction CodeBlockContent({\n className,\n children,\n style,\n wrap = false,\n lineNumbers = false,\n startLine = 1,\n language,\n maxLines = 16,\n ...props\n}: React.ComponentProps<`pre`> & {\n wrap?: boolean\n lineNumbers?: boolean\n startLine?: number\n /** A catalog language (`ts`, `json`, `ansi`…): string children are\n * tokenized and coloured per token kind. */\n language?: string\n /** Lines shown before the block scrolls; 0 = unbounded. */\n maxLines?: number\n}) {\n const source = typeof children === `string` ? children : null\n const lines = React.useMemo(\n () =>\n source !== null && language\n ? tokenizeCode(source.replace(/\\n$/, ``), language)\n : null,\n [source, language]\n )\n return (\n <pre\n data-slot=\"code-block-content\"\n data-wrap={wrap || undefined}\n data-numbered={lineNumbers || undefined}\n data-language={language}\n dir=\"ltr\"\n tabIndex={0}\n style={{\n counterReset: `line ${startLine - 1}`,\n ...(maxLines > 0\n ? { maxHeight: `calc(${maxLines}lh + var(--code-block-pad, 1.5rem))` }\n : null),\n ...style,\n }}\n className={cn(\n CODE_BLOCK_CLASSES.content,\n className\n )}\n {...props}\n >\n <code\n data-slot=\"code-block-code\"\n className={CODE_BLOCK_CLASSES.code}\n >\n {lines !== null\n ? lines.map((tokens, index) => (\n <CodeBlockLine key={index}>\n {tokens.length === 0\n ? null\n : tokens.map((token, j) => (\n <span\n key={j}\n data-token={token.kind}\n className={cn(\n CODE_TOKEN_CLASS[token.kind],\n CODE_BLOCK_CLASSES.token\n )}\n >\n {token.text}\n </span>\n ))}\n </CodeBlockLine>\n ))\n : lineNumbers && source !== null\n ? source\n .replace(/\\n$/, ``)\n .split(`\\n`)\n .map((line, index) => (\n <CodeBlockLine key={index}>{line}</CodeBlockLine>\n ))\n : children}\n </code>\n </pre>\n )\n}\n\nfunction CodeBlockLine({\n className,\n variant = `default`,\n children,\n ...props\n}: React.ComponentProps<`span`> & VariantProps<typeof codeBlockLineVariants>) {\n // An empty line holds a newline so copying a selection keeps blank lines.\n const empty =\n children === undefined ||\n children === null ||\n children === `` ||\n (Array.isArray(children) && children.length === 0)\n\n return (\n <span\n data-slot=\"code-block-line\"\n data-variant={variant}\n className={cn(codeBlockLineVariants({ variant }), className)}\n {...props}\n >\n <span data-slot=\"code-block-line-content\" className={CODE_BLOCK_CLASSES.lineContent}>\n {empty ? `\\n` : children}\n </span>\n </span>\n )\n}\n\nfunction CodeBlockFooter({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"code-block-footer\"\n className={cn(\n CODE_BLOCK_CLASSES.footer,\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n CodeBlock,\n CodeBlockHeader,\n CodeBlockTitle,\n CodeBlockActions,\n CodeBlockCopyButton,\n CodeBlockContent,\n CodeBlockLine,\n CodeBlockFooter,\n CODE_TOKEN_CLASS,\n}\n",
16
+ "import * as React from \"react\"\nimport { Collapsible as CollapsiblePrimitive } from \"radix-ui\"\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n return (\n <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n )\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Content>) {\n return (\n <CollapsiblePrimitive.Content data-slot=\"collapsible-content\" {...props} />\n )\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n",
17
+ "\"use client\"\n\nimport * as React from \"react\"\nimport { CircleXIcon, SearchIcon } from \"lucide-react\"\nimport { COMMAND_CLASSES, COMMAND_LABEL_STYLE, COMMAND_SELECT_EVENT, commandItemValue, createCommandStore, observeCommandListHeight, type CommandFilter, type CommandStore } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\n// FEED-131: the command menu on the shared engine (no cmdk): the root owns\n// the store, every part re-renders on its emit, and the root's layout\n// effect runs the post-render pass (`flush`) once the DOM caught up.\n\ninterface RootContext {\n store: CommandStore\n listId: string\n inputId: string\n labelId: string\n}\nconst CommandContext = React.createContext<RootContext | null>(null)\nconst GroupContext = React.createContext<{ id: string; forceMount?: boolean } | null>(null)\n\nfunction useRoot(): RootContext {\n const ctx = React.useContext(CommandContext)\n if (!ctx) throw new Error(`Command parts must sit inside <Command>`)\n return ctx\n}\n\nfunction useStore(store: CommandStore) {\n React.useSyncExternalStore(store.subscribe, () => store.version, () => store.version)\n}\n\ntype CommandProps = Omit<React.ComponentProps<`div`>, `onChange` | `defaultValue`> & {\n /** The selected item's value (controlled). */\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n /** Score an item against the query (0 hides it); default `commandScore`. */\n filter?: CommandFilter\n /** `false` = the host filters: every item shows, in its own order. */\n shouldFilter?: boolean\n /** Arrow keys wrap around. */\n loop?: boolean\n /** The accessible label (a visually hidden <label> for the input). */\n label?: string\n}\n\nfunction Command({ className, value, defaultValue, onValueChange, filter, shouldFilter, loop, label, children, onKeyDown, ...props }: CommandProps) {\n const latest = React.useRef({ value, onValueChange, filter, shouldFilter, loop })\n latest.current = { value, onValueChange, filter, shouldFilter, loop }\n const [, setTick] = React.useState(0)\n const [store] = React.useState(() => {\n const s = createCommandStore({ props: () => latest.current, schedule: () => setTick((t) => t + 1) })\n if (value === undefined && defaultValue !== undefined) s.setValue(defaultValue.trim())\n return s\n })\n useStore(store)\n React.useLayoutEffect(() => {\n store.syncValue()\n }, [store, value])\n React.useLayoutEffect(() => store.flush())\n const listId = React.useId()\n const inputId = React.useId()\n const labelId = React.useId()\n const ctx = React.useMemo(() => ({ store, listId, inputId, labelId }), [store, listId, inputId, labelId])\n return (\n <div\n data-slot=\"command\"\n tabIndex={-1}\n className={cn(COMMAND_CLASSES.root, className)}\n {...props}\n onKeyDown={(e) => {\n onKeyDown?.(e)\n store.onKeyDown(e.nativeEvent)\n }}\n >\n <label data-slot=\"command-label\" htmlFor={inputId} id={labelId} style={COMMAND_LABEL_STYLE}>\n {label}\n </label>\n <CommandContext.Provider value={ctx}>{children}</CommandContext.Provider>\n </div>\n )\n}\n\ntype CommandInputProps = Omit<React.ComponentProps<`input`>, `value` | `defaultValue` | `onChange` | `type`> & {\n /** The query (controlled). */\n value?: string\n defaultValue?: string\n onValueChange?: (query: string) => void\n /** The clear button's accessible name. */\n clearLabel?: string\n}\n\nfunction CommandInput({ className, value, defaultValue, onValueChange, clearLabel, ref, ...props }: CommandInputProps) {\n const { store, listId, inputId, labelId } = useRoot()\n useStore(store)\n const input = React.useRef<HTMLInputElement | null>(null)\n const controlled = value !== undefined\n React.useState(() => store.setSearch(controlled ? value : (defaultValue ?? ``), true))\n React.useEffect(() => {\n if (controlled) store.setSearch(value)\n }, [controlled, value, store])\n const shown = controlled ? value : store.search\n const change = (next: string) => {\n if (!controlled) store.setSearch(next)\n onValueChange?.(next)\n }\n return (\n <div data-slot=\"command-input-wrapper\" className={COMMAND_CLASSES.inputWrapper}>\n <SearchIcon className={COMMAND_CLASSES.inputGlyph} />\n <input\n ref={(node) => {\n input.current = node\n if (typeof ref === `function`) ref(node)\n else if (ref) ref.current = node\n }}\n data-slot=\"command-input\"\n className={cn(COMMAND_CLASSES.input, className)}\n {...props}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n aria-autocomplete=\"list\"\n role=\"combobox\"\n aria-expanded={true}\n aria-controls={listId}\n aria-labelledby={labelId}\n aria-activedescendant={store.selectedId}\n id={inputId}\n type=\"text\"\n value={shown}\n onChange={(e) => change(e.target.value)}\n />\n {shown !== `` ? (\n <button\n type=\"button\"\n data-slot=\"command-input-clear\"\n aria-label={clearLabel ?? `Clear search`}\n className={COMMAND_CLASSES.inputClear}\n onClick={() => {\n change(``)\n input.current?.focus()\n }}\n >\n <CircleXIcon />\n </button>\n ) : null}\n </div>\n )\n}\n\nfunction CommandList({ className, children, \"aria-label\": ariaLabel, ...props }: React.ComponentProps<`div`>) {\n const { store, listId } = useRoot()\n useStore(store)\n const list = React.useRef<HTMLDivElement | null>(null)\n const sizer = React.useRef<HTMLDivElement | null>(null)\n React.useEffect(() => {\n if (list.current && sizer.current) return observeCommandListHeight(list.current, sizer.current)\n }, [])\n return (\n <div ref={list} data-slot=\"command-list\" className={cn(COMMAND_CLASSES.list, className)} {...props} role=\"listbox\" tabIndex={-1} aria-activedescendant={store.selectedId} aria-label={ariaLabel ?? `Suggestions`} id={listId}>\n <div\n ref={(node) => {\n sizer.current = node\n store.setSizer(node)\n }}\n data-slot=\"command-list-sizer\"\n >\n {children}\n </div>\n </div>\n )\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<`div`>) {\n const { store } = useRoot()\n useStore(store)\n return store.empty() ? <div data-slot=\"command-empty\" className={cn(COMMAND_CLASSES.empty, className)} {...props} role=\"presentation\" /> : null\n}\n\nfunction CommandGroup({ className, heading, value, forceMount, children, ...props }: Omit<React.ComponentProps<`div`>, `value`> & { heading?: React.ReactNode; value?: string; forceMount?: boolean }) {\n const { store } = useRoot()\n useStore(store)\n const id = React.useId()\n const headingId = React.useId()\n const el = React.useRef<HTMLDivElement | null>(null)\n const [seq] = React.useState(() => store.nextSeq())\n React.useLayoutEffect(() => store.register({ id, kind: `group`, seq }), [store, id, seq])\n React.useLayoutEffect(() => store.update(id, { el: el.current }))\n const visible = forceMount || store.groupVisible(id)\n const groupValue = value ?? (typeof heading === `string` ? heading : undefined)\n const ctx = React.useMemo(() => ({ id, forceMount }), [id, forceMount])\n return (\n <div ref={el} data-slot=\"command-group\" className={cn(COMMAND_CLASSES.group, className)} {...props} role=\"presentation\" data-value={groupValue} hidden={visible ? undefined : true}>\n {heading ? (\n <div data-slot=\"command-group-heading\" className={COMMAND_CLASSES.groupHeading} aria-hidden={true} id={headingId}>\n {heading}\n </div>\n ) : null}\n <div data-slot=\"command-group-items\" role=\"group\" aria-labelledby={heading ? headingId : undefined}>\n <GroupContext.Provider value={ctx}>{children}</GroupContext.Provider>\n </div>\n </div>\n )\n}\n\ntype CommandItemProps = Omit<React.ComponentProps<`div`>, `value` | `onSelect`> & {\n /** The value it filters and selects by (default: its text, trimmed). */\n value?: string\n keywords?: string[]\n onSelect?: (value: string) => void\n disabled?: boolean\n /** Always rendered, whatever the query. */\n forceMount?: boolean\n}\n\nfunction CommandItem({ className, value, keywords, onSelect, disabled, forceMount, children, ...props }: CommandItemProps) {\n const { store } = useRoot()\n useStore(store)\n const group = React.useContext(GroupContext)\n const id = React.useId()\n const el = React.useRef<HTMLDivElement | null>(null)\n const [seq] = React.useState(() => store.nextSeq())\n const known = React.useRef(``)\n const forced = forceMount ?? group?.forceMount ?? false\n React.useLayoutEffect(() => store.register({ id, kind: `item`, seq, group: group?.id, forceMount: forced }), [store, id, seq, group?.id, forced])\n const own = commandItemValue(value, children, el.current, known.current)\n React.useLayoutEffect(() => {\n const next = commandItemValue(value, children, el.current, known.current)\n known.current = next\n store.update(id, { el: el.current, value: next, keywords: keywords?.map((k) => k.trim()), disabled })\n })\n const select = React.useRef(() => {})\n select.current = () => {\n const v = known.current\n store.setValue(v, { pointer: true })\n onSelect?.(v)\n }\n React.useEffect(() => {\n const node = el.current\n if (!node || disabled) return\n const listener = () => select.current()\n node.addEventListener(COMMAND_SELECT_EVENT, listener)\n return () => node.removeEventListener(COMMAND_SELECT_EVENT, listener)\n })\n const visible = forced || store.score(own, keywords) > 0\n if (!visible) return null\n const selected = own !== `` && store.value === own\n return (\n <div\n ref={el}\n data-slot=\"command-item\"\n className={cn(COMMAND_CLASSES.item, className)}\n {...props}\n id={id}\n role=\"option\"\n aria-disabled={Boolean(disabled)}\n aria-selected={selected}\n data-disabled={Boolean(disabled)}\n data-selected={selected}\n data-value={own || undefined}\n onPointerMove={disabled ? undefined : () => store.setValue(known.current, { pointer: true })}\n onClick={disabled ? undefined : () => select.current()}\n >\n {children}\n </div>\n )\n}\n\nfunction CommandSeparator({ className, alwaysRender, ...props }: React.ComponentProps<`div`> & { alwaysRender?: boolean }) {\n const { store } = useRoot()\n useStore(store)\n const id = React.useId()\n const [seq] = React.useState(() => store.nextSeq())\n const el = React.useRef<HTMLDivElement | null>(null)\n React.useLayoutEffect(() => store.register({ id, kind: `separator`, seq }), [store, id, seq])\n React.useLayoutEffect(() => store.update(id, { el: el.current }))\n if (!alwaysRender && store.search !== ``) return null\n return <div ref={el} data-slot=\"command-separator\" className={cn(COMMAND_CLASSES.separator, className)} {...props} role=\"separator\" />\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<`span`>) {\n return <span data-slot=\"command-shortcut\" className={cn(COMMAND_CLASSES.shortcut, className)} {...props} />\n}\n\nexport { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut }\nexport type { CommandProps, CommandInputProps, CommandItemProps }\n",
18
+ "import { forwardRef, type ComponentProps } from \"react\"\nimport { CONTEXT_RING_CLASSES, RING_RADIUS, RING_SIZE, RING_STROKE, RING_TONE_CLASS, ringGeometry, type RingTone } from \"@exponential_app/eui/web/primitives\"\n\nimport { Button } from \"./button\"\nimport { cn } from \"./cn\"\n\nexport { RING_RADIUS, RING_SIZE, RING_STROKE, RING_TONE_CLASS, ringGeometry } from \"@exponential_app/eui/web/primitives\"\nexport type { RingGeometry, RingTone } from \"@exponential_app/eui/web/primitives\"\n\ninterface ContextRingProps extends ComponentProps<typeof Button> {\n /** How full the context window is — null while nothing measured it. */\n percent: number | null | undefined\n /** Which of the three tones to paint. Default: `normal`. */\n tone?: RingTone\n /** Draw the empty track anyway (the run has other usage worth opening).\n * Without it, a run with no context window renders NOTHING. */\n showEmpty?: boolean\n}\n\nexport const ContextRing = forwardRef<HTMLButtonElement, ContextRingProps>(\n function ContextRing(\n { percent, tone, showEmpty = false, className, ...props },\n ref\n ) {\n const value = percent ?? null\n if (value === null && !showEmpty) return null\n const { circumference, dashOffset } = ringGeometry(value ?? 0)\n return (\n <Button\n ref={ref}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n aria-label=\"Usage\"\n title=\"Usage\"\n data-testid=\"session-context-ring\"\n className={cn(\n CONTEXT_RING_CLASSES.root,\n value === null\n ? RING_TONE_CLASS.normal\n : RING_TONE_CLASS[tone ?? `normal`],\n className\n )}\n {...props}\n >\n <svg\n viewBox={`0 0 ${RING_SIZE} ${RING_SIZE}`}\n width={RING_SIZE}\n height={RING_SIZE}\n aria-hidden\n className={CONTEXT_RING_CLASSES.svg}\n >\n <circle\n cx={RING_SIZE / 2}\n cy={RING_SIZE / 2}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={RING_STROKE}\n opacity={0.2}\n />\n {value !== null && (\n <circle\n cx={RING_SIZE / 2}\n cy={RING_SIZE / 2}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={RING_STROKE}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n />\n )}\n </svg>\n </Button>\n )\n }\n)\n",
19
+ "import * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as DialogPrimitive } from \"radix-ui\"\nimport { DIALOG_CLASSES, DIALOG_PHONE_QUERY, isTypeaheadPortalInteraction } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { Button } from \"./button\"\nimport { MOBILE_ARMS, type DialogMobileArm } from \"./dialog-arms\"\nimport {\n SheetDragProvider,\n SheetGrabber,\n useSheetDragHandleProps,\n} from \"./sheet-chrome\"\nimport { SheetContent } from \"./sheet\"\nimport { useMediaQuery } from \"./use-media-query\"\nimport { useSheetDrag } from \"./use-sheet-drag\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(DIALOG_CLASSES.overlay, className)}\n {...props}\n />\n )\n}\n\n/** The `< sm` presentation of the enclosing dialog, for chrome that differs\n * per arm (the ✕, DialogCancel). `null` outside a DialogContent. */\nconst DialogPresentationContext = React.createContext<DialogMobileArm | null>(\n null\n)\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n mobile = `sheet`,\n ref,\n onInteractOutside,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n /** How the dialog presents below `sm` (EXP-687). Defaults to the bottom\n * `sheet`; the `sm:` presentation is identical for every arm. See\n * ui/dialog-arms.ts for what each one means. */\n mobile?: DialogMobileArm\n}) {\n const isSheet = mobile === `sheet` || mobile === `sheet-full`\n const panelRef = React.useRef<HTMLDivElement | null>(null)\n const dragCloseRef = React.useRef<HTMLButtonElement | null>(null)\n\n // Dragging the sheet down clicks a hidden Close — i.e. it takes the same\n // Root-level path as the EXP-247 overlay tap, NOT the DismissableLayer, so\n // `onInteractOutside` + preventDefault does not veto it. A dialog that must\n // guard its dismissal (issue-editor/dialog-shell.tsx) re-checks at the Root.\n const onDragDismiss = React.useCallback(() => {\n dragCloseRef.current?.click()\n }, [])\n const { handleProps } = useSheetDrag({ panelRef, onDismiss: onDragDismiss })\n\n const setPanel = React.useCallback(\n (node: HTMLDivElement | null) => {\n panelRef.current = node\n if (typeof ref === `function`) {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n const isPhone = useMediaQuery(DIALOG_PHONE_QUERY)\n\n if (isSheet && isPhone) {\n // ONE phone sheet: the dialog renders THROUGH `SheetContent` (the same\n // Radix Dialog underneath, so this Root still owns it) — its grabber,\n // drag-to-dismiss, overlay-tap close and opaque surface — instead of a\n // second copy of that chrome painted onto the centred panel.\n return (\n <SheetContent\n side=\"bottom\"\n data-slot=\"dialog-content\"\n data-mobile={mobile}\n ref={ref}\n className={cn(\n DIALOG_CLASSES.phoneSheet,\n mobile === `sheet-full` && DIALOG_CLASSES.phoneSheetFull,\n className\n )}\n onInteractOutside={onInteractOutside}\n {...props}\n >\n <DialogPresentationContext.Provider value={mobile}>\n {children}\n </DialogPresentationContext.Provider>\n </SheetContent>\n )\n }\n\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n data-mobile={mobile}\n ref={setPanel}\n className={cn(\n DIALOG_CLASSES.content,\n MOBILE_ARMS[mobile],\n className\n )}\n // The typeahead's anchored arm portals to document.body (EXP-54),\n // so Radix takes a pointer-down on it as an OUTSIDE interaction and\n // would close the dialog under the menu. Every dialog ignores that\n // one; the caller's own guard runs first and its veto stands.\n onInteractOutside={(event) => {\n onInteractOutside?.(event)\n if (!event.defaultPrevented && isTypeaheadPortalInteraction(event)) {\n event.preventDefault()\n }\n }}\n {...props}\n >\n <DialogPresentationContext.Provider value={mobile}>\n <SheetDragProvider value={isSheet ? handleProps : null}>\n {isSheet && (\n <>\n <SheetGrabber className={DIALOG_CLASSES.grabber} />\n <DialogPrimitive.Close\n ref={dragCloseRef}\n aria-hidden\n tabIndex={-1}\n className={DIALOG_CLASSES.dragClose}\n />\n </>\n )}\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n DIALOG_CLASSES.close,\n mobile !== `page` && DIALOG_CLASSES.closePhoneHidden\n )}\n >\n <XIcon />\n <span className={DIALOG_CLASSES.srOnly}>Close</span>\n </DialogPrimitive.Close>\n )}\n </SheetDragProvider>\n </DialogPresentationContext.Provider>\n </DialogPrimitive.Content>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<`div`>) {\n // Inside a sheet the whole header area drags, not just the 4px grabber.\n const drag = useSheetDragHandleProps()\n return (\n <div\n data-slot=\"dialog-header\"\n {...drag}\n className={cn(DIALOG_CLASSES.header, className)}\n {...props}\n />\n )\n}\n\nfunction DialogBody({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"dialog-body\"\n className={cn(DIALOG_CLASSES.body, className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(DIALOG_CLASSES.footer, className)}\n {...props}\n />\n )\n}\n\n/**\n * The Cancel of a dialog footer (EXP-687). Hidden on a phone for the sheet\n * arms — a sheet is dismissed by dragging it down or tapping outside, so a\n * Cancel button is redundant chrome — and visible for `alert`/`page`, where\n * native platforms keep it. Desktop is unchanged: a ghost button.\n */\nfunction DialogCancel({\n className,\n children = `Cancel`,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const mobile = React.useContext(DialogPresentationContext)\n const keepOnMobile = mobile === `alert` || mobile === `page`\n return (\n <DialogPrimitive.Close asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n // Keeps Button's `data-slot=\"button\"`, which DialogFooter's phone\n // sizing keys on; this attribute only names the role.\n data-dialog-cancel=\"\"\n className={cn(!keepOnMobile && DIALOG_CLASSES.cancelPhoneHidden, className)}\n {...props}\n >\n {children}\n </Button>\n </DialogPrimitive.Close>\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(DIALOG_CLASSES.title, className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(DIALOG_CLASSES.description, className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogBody,\n DialogCancel,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogPresentationContext,\n DialogTitle,\n DialogTrigger,\n}\n",
20
+ "export { MOBILE_ALERT, MOBILE_ARMS, MOBILE_PAGE, MOBILE_SHEET, MOBILE_SHEET_FULL } from \"@exponential_app/eui/web/primitives\"\nexport type { DialogMobileArm } from \"@exponential_app/eui/web/primitives\"\n",
21
+ "import * as React from \"react\"\nimport { SHEET_CHROME_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport type { SheetDragHandleProps } from \"./use-sheet-drag\"\n\n// Lives in its own module so both primitives can import it without a cycle.\n\nconst SheetDragContext = React.createContext<SheetDragHandleProps | null>(null)\n\nexport function SheetDragProvider({\n value,\n children,\n}: {\n value: SheetDragHandleProps | null\n children: React.ReactNode\n}) {\n return (\n <SheetDragContext.Provider value={value}>\n {children}\n </SheetDragContext.Provider>\n )\n}\n\n/**\n * The drag props of the enclosing sheet, or `null` outside one (a desktop\n * panel, a side drawer). Header components spread these so the whole title\n * area is draggable, not just the 4px bar.\n */\nexport function useSheetDragHandleProps(): SheetDragHandleProps | null {\n return React.useContext(SheetDragContext)\n}\n\nexport function SheetGrabber({\n className,\n ...props\n}: React.ComponentProps<`div`>) {\n const drag = useSheetDragHandleProps()\n return (\n <div\n data-slot=\"sheet-grabber\"\n aria-hidden\n {...drag}\n {...props}\n className={cn(SHEET_CHROME_CLASSES.grabber, className)}\n />\n )\n}\n",
22
+ "import * as React from \"react\"\nimport { XIcon } from \"lucide-react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { SHEET_CLASSES, isTypeaheadPortalInteraction, type SheetSide } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport {\n SheetDragProvider,\n SheetGrabber,\n useSheetDragHandleProps,\n} from \"./sheet-chrome\"\nimport { useSheetDrag } from \"./use-sheet-drag\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(SHEET_CLASSES.overlay, className)}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = `right`,\n // A bottom sheet carries NO ✕ (EXP-687): it is dismissed by tapping outside\n // or dragging the grabber down, exactly like its iOS/Android twins. The side\n // and top drawers keep theirs.\n showCloseButton = side !== `bottom`,\n showGrabber = side === `bottom`,\n ref,\n onInteractOutside,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: SheetSide\n showCloseButton?: boolean\n /** The drag pill at the top edge. On by default for `bottom`; the two\n * page-like bottom sheets (New issue, search) turn it off. */\n showGrabber?: boolean\n}) {\n const panelRef = React.useRef<HTMLDivElement | null>(null)\n const dragCloseRef = React.useRef<HTMLButtonElement | null>(null)\n const onDragDismiss = React.useCallback(() => {\n dragCloseRef.current?.click()\n }, [])\n const { handleProps } = useSheetDrag({ panelRef, onDismiss: onDragDismiss })\n const setPanel = React.useCallback(\n (node: HTMLDivElement | null) => {\n panelRef.current = node\n if (typeof ref === `function`) {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n\n return (\n <SheetPortal>\n {/* The overlay doubles as a Close trigger: Radix's outside-dismiss\n waits for a `click` after pointerdown, which iOS Safari never\n synthesizes on non-interactive elements — so bottom sheets were\n undismissable by tapping outside on mobile web (EXP-247).\n CAVEAT: this calls onOpenChange(false) on the Root directly, i.e.\n OUTSIDE the DismissableLayer, so a SheetContent's\n `onInteractOutside` + preventDefault no longer blocks an overlay\n tap. Every current consumer wants outside-dismiss, and the one\n guard that matters (issue-editor/dialog-shell.tsx) re-checks at\n the Root — but if you need to veto a dismissal, do it there, not\n with onInteractOutside.\n EXP-687's drag-to-dismiss takes the SAME Root path (it clicks the\n hidden Close below), so it is subject to the same caveat. */}\n <SheetPrimitive.Close asChild>\n <SheetOverlay />\n </SheetPrimitive.Close>\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n data-side={side}\n ref={setPanel}\n className={cn(SHEET_CLASSES.content, SHEET_CLASSES.sides[side], className)}\n // A pointer-down on the typeahead's body portal is not \"outside\"\n // (see DialogContent); the caller's own guard runs first.\n onInteractOutside={(event) => {\n onInteractOutside?.(event)\n if (!event.defaultPrevented && isTypeaheadPortalInteraction(event)) {\n event.preventDefault()\n }\n }}\n {...props}\n >\n <SheetDragProvider value={side === `bottom` ? handleProps : null}>\n {showGrabber && (\n <>\n <SheetGrabber />\n <SheetPrimitive.Close\n ref={dragCloseRef}\n aria-hidden\n tabIndex={-1}\n className={SHEET_CLASSES.dragClose}\n />\n </>\n )}\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className={SHEET_CLASSES.close}>\n <XIcon className={SHEET_CLASSES.closeIcon} />\n <span className={SHEET_CLASSES.srOnly}>Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetDragProvider>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<`div`>) {\n // Inside a bottom sheet the header area drags too, not just the grabber.\n const drag = useSheetDragHandleProps()\n return (\n <div\n data-slot=\"sheet-header\"\n {...drag}\n className={cn(SHEET_CLASSES.header, className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(SHEET_CLASSES.footer, className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(SHEET_CLASSES.title, className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(SHEET_CLASSES.description, className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n",
23
+ "import * as React from \"react\"\n\n// EXP-687 — drag-to-dismiss for mobile bottom sheets.\n//\n// Native sheets close when you flick them down; on mobile web the only exit\n// used to be an ✕ or a tap outside. The gesture lives on the grabber (and the\n// header area, which spreads the same props) rather than the whole panel so a\n// scrolling list inside the sheet keeps its own touch handling.\n//\n// The `< sm` arm of ui/dialog.tsx and ui/sheet.tsx is the ONLY place this is\n// active: the desktop panel is centered with a translate, which the drag\n// transform would fight. The media query is the CSS `sm` breakpoint (640px),\n// deliberately NOT `useIsMobile`'s 768 — this must match the arm that painted\n// the sheet.\nconst SHEET_MEDIA_QUERY = `(max-width: 639px)`\n\n/** Past this many px the sheet closes regardless of speed. */\nconst DISMISS_DISTANCE_PX = 80\n/** A flick: px per ms, over the (much smaller) FLICK_DISTANCE_PX. */\nconst DISMISS_VELOCITY = 0.6\nconst FLICK_DISTANCE_PX = 24\n/** Matches the panel's own slide-out duration: the `standard` motion token\n * (`motion-sheet`'s exit, EXP-1243). The timer needs the number; the CSS\n * reads the live var. */\nconst DISMISS_ANIMATION_MS = 180\nconst DISMISS_TRANSITION = `transform var(--motion-duration-standard, ${DISMISS_ANIMATION_MS}ms) var(--motion-ease-accelerate, cubic-bezier(0.3, 0, 1, 1))`\nconst SNAP_BACK_TRANSITION = `transform var(--motion-duration-standard, ${DISMISS_ANIMATION_MS}ms) var(--motion-ease-decelerate, cubic-bezier(0, 0, 0.2, 1))`\n\n/**\n * Pure decision half of the gesture: did a downward drag of `dy` px over\n * `dtMs` ms earn a dismissal? Upward drags never do (the panel rubber-bands\n * back instead).\n */\nexport function shouldDismissSheet(dy: number, dtMs: number): boolean {\n if (dy > DISMISS_DISTANCE_PX) {\n return true\n }\n if (dy <= FLICK_DISTANCE_PX) {\n return false\n }\n return dtMs > 0 && dy / dtMs > DISMISS_VELOCITY\n}\n\nexport interface SheetDragHandleProps {\n onPointerDown: (event: React.PointerEvent<HTMLElement>) => void\n onPointerMove: (event: React.PointerEvent<HTMLElement>) => void\n onPointerUp: (event: React.PointerEvent<HTMLElement>) => void\n onPointerCancel: (event: React.PointerEvent<HTMLElement>) => void\n style: React.CSSProperties\n}\n\nexport function useSheetDrag({\n panelRef,\n onDismiss,\n}: {\n panelRef: React.RefObject<HTMLElement | null>\n onDismiss: () => void\n}): { handleProps: SheetDragHandleProps } {\n const drag = React.useRef<{ pointerId: number; y: number; at: number } | null>(\n null\n )\n\n const paint = React.useCallback(\n (transform: string, transition: string) => {\n const panel = panelRef.current\n if (!panel) {\n return\n }\n panel.style.transition = transition\n panel.style.transform = transform\n },\n [panelRef]\n )\n\n const release = React.useCallback(() => {\n const panel = panelRef.current\n if (!panel) {\n return\n }\n panel.style.transition = ``\n panel.style.transform = ``\n }, [panelRef])\n\n const handleProps = React.useMemo<SheetDragHandleProps>(\n () => ({\n // The grabber owns the touch, so the page behind never scrolls with it.\n style: { touchAction: `none` },\n onPointerDown: (event) => {\n if (\n typeof window === `undefined` ||\n typeof window.matchMedia !== `function` ||\n !window.matchMedia(SHEET_MEDIA_QUERY).matches\n ) {\n return\n }\n drag.current = {\n pointerId: event.pointerId,\n y: event.clientY,\n at: Date.now(),\n }\n const target = event.currentTarget\n if (typeof target.setPointerCapture === `function`) {\n target.setPointerCapture(event.pointerId)\n }\n },\n onPointerMove: (event) => {\n const started = drag.current\n if (!started || started.pointerId !== event.pointerId) {\n return\n }\n // Upward drags resist (÷4) instead of lifting the sheet off its edge.\n const dy = event.clientY - started.y\n paint(`translateY(${dy > 0 ? dy : dy / 4}px)`, `none`)\n },\n onPointerUp: (event) => {\n const started = drag.current\n if (!started || started.pointerId !== event.pointerId) {\n return\n }\n drag.current = null\n const dy = event.clientY - started.y\n if (shouldDismissSheet(dy, Date.now() - started.at)) {\n paint(`translateY(100%)`, DISMISS_TRANSITION)\n window.setTimeout(() => {\n // Close while the panel is still off-screen: Radix's exit\n // keyframes only carry a `to` frame, so they start from the\n // CURRENT transform. Releasing first would snap the sheet back to\n // y=0 and play the slide-out a second time. Release only if the\n // close was vetoed (the panel is still mounted and open).\n onDismiss()\n window.requestAnimationFrame(() => {\n const panel = panelRef.current\n if (panel && panel.dataset.state === `open`) {\n release()\n }\n })\n }, DISMISS_ANIMATION_MS)\n return\n }\n paint(`translateY(0px)`, SNAP_BACK_TRANSITION)\n window.setTimeout(release, DISMISS_ANIMATION_MS)\n },\n onPointerCancel: (event) => {\n if (!drag.current || drag.current.pointerId !== event.pointerId) {\n return\n }\n drag.current = null\n release()\n },\n }),\n [onDismiss, paint, panelRef, release]\n )\n\n return { handleProps }\n}\n",
24
+ "import { useCallback, useSyncExternalStore } from \"react\"\n\n/** Whether `query` matches right now, following changes. Without a\n * `window` (SSR, static markup) or `matchMedia` it answers `false`. */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === `undefined` || typeof window.matchMedia !== `function`) return () => {}\n const mql = window.matchMedia(query)\n mql.addEventListener(`change`, onChange)\n return () => mql.removeEventListener(`change`, onChange)\n },\n [query]\n )\n const read = () =>\n typeof window !== `undefined` && typeof window.matchMedia === `function` && window.matchMedia(query).matches\n return useSyncExternalStore(subscribe, read, () => false)\n}\n",
25
+ "import * as React from \"react\"\nimport { ChevronDown, ChevronRight } from \"lucide-react\"\nimport { DISCLOSURE_HEADER_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nconst ChevronRightGlyph = ChevronRight\nconst ChevronDownGlyph = ChevronDown\n\nexport function DisclosureHeader({\n open,\n onToggle,\n chevron = `leading`,\n className,\n children,\n ...props\n}: Omit<\n React.ComponentProps<`button`>,\n `onClick` | `type` | `aria-expanded` | `children`\n> & {\n open: boolean\n onToggle: () => void\n chevron?: `leading` | `trailing`\n children: React.ReactNode\n}) {\n const Glyph = open ? ChevronDownGlyph : ChevronRightGlyph\n const glyph = (\n <Glyph\n data-slot=\"disclosure-chevron\"\n className={cn(\n DISCLOSURE_HEADER_CLASSES.chevron,\n chevron === `trailing` && DISCLOSURE_HEADER_CLASSES.chevronTrailing\n )}\n />\n )\n return (\n <button\n type=\"button\"\n data-slot=\"disclosure-header\"\n data-chevron={chevron}\n aria-expanded={open}\n onClick={onToggle}\n className={cn(DISCLOSURE_HEADER_CLASSES.root, className)}\n {...props}\n >\n {chevron === `leading` && glyph}\n {children}\n {chevron === `trailing` && glyph}\n </button>\n )\n}\n",
26
+ "import * as React from \"react\"\nimport { ChevronRight } from \"lucide-react\"\nimport { DOCK_CARD_CLASSES, DOCK_PILE_CLASSES, dockPileGeometry, type DockCardTint } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\n// N-12: THE DockCard and THE Dock pile (the recipe and the geometry in\n// @exponential_app/eui/web/primitives/dock): a one-row floating card (the kind\n// glyph, the tinted label, the muted caption, trailing meta, ONE title line,\n// the open chevron or a trailing action) and the pile several of them make,\n// placed like the toasts (anchored at the bottom: the front card last, the\n// older ones peeking out above it; `expanded` fans them). The Solid twin\n// paints the same markup.\n\ntype Glyph = React.ComponentType<{ className?: string; \"data-slot\"?: string; \"aria-hidden\"?: boolean }>\n\nexport type DockCardProps = Omit<React.ComponentProps<`div`>, `title` | `children`> & {\n tint?: DockCardTint\n /** The kind glyph (a component; the card sizes and tints it). */\n icon?: Glyph\n label: React.ReactNode\n caption?: React.ReactNode\n meta?: React.ReactNode\n title: React.ReactNode\n /** The card opens: the trailing chevron, a button role, Enter / Space. */\n onOpen?: () => void\n /** Without `onOpen`: a trailing node (a banner's action). */\n trailing?: React.ReactNode\n /** A card behind the front one while piled: its chrome peeks, its words do not. */\n hidden?: boolean\n /** The accessible name of a card that opens (default: no override). */\n openLabel?: string\n}\n\nexport function DockCard({\n tint = `muted`,\n icon: Icon,\n label,\n caption,\n meta,\n title,\n onOpen,\n trailing,\n hidden = false,\n openLabel,\n className,\n onKeyDown,\n ...props\n}: DockCardProps) {\n const pressable = onOpen !== undefined\n return (\n <div\n data-slot=\"dock-card\"\n role={pressable ? `button` : undefined}\n tabIndex={pressable && !hidden ? 0 : undefined}\n aria-label={pressable ? openLabel : undefined}\n aria-hidden={hidden ? true : undefined}\n className={cn(DOCK_CARD_CLASSES.root, pressable && DOCK_CARD_CLASSES.pressable, className)}\n onClick={onOpen}\n onKeyDown={(event) => {\n onKeyDown?.(event)\n if (!pressable || event.defaultPrevented) return\n if (event.key === `Enter` || event.key === ` `) {\n event.preventDefault()\n onOpen()\n }\n }}\n {...props}\n >\n <div data-slot=\"dock-card-body\" data-hidden={hidden ? `true` : `false`} className={DOCK_CARD_CLASSES.body}>\n {Icon && <Icon aria-hidden data-slot=\"dock-card-icon\" className={cn(DOCK_CARD_CLASSES.icon, DOCK_CARD_CLASSES.tint[tint])} />}\n <div className={DOCK_CARD_CLASSES.text}>\n <div className={DOCK_CARD_CLASSES.header}>\n <span data-slot=\"dock-card-label\" className={cn(DOCK_CARD_CLASSES.label, DOCK_CARD_CLASSES.tint[tint])}>\n {label}\n </span>\n {caption !== undefined && caption !== null && (\n <span data-slot=\"dock-card-caption\" className={DOCK_CARD_CLASSES.caption}>\n {caption}\n </span>\n )}\n {meta !== undefined && meta !== null && (\n <span data-slot=\"dock-card-meta\" className={DOCK_CARD_CLASSES.meta}>\n {meta}\n </span>\n )}\n </div>\n <div className={DOCK_CARD_CLASSES.row}>\n <span data-slot=\"dock-card-title\" className={DOCK_CARD_CLASSES.title}>\n {title}\n </span>\n {pressable ? (\n <ChevronRight aria-hidden data-slot=\"dock-card-chevron\" className={DOCK_CARD_CLASSES.chevron} />\n ) : trailing !== undefined && trailing !== null ? (\n <span data-slot=\"dock-card-trailing\" className={DOCK_CARD_CLASSES.trailing}>\n {trailing}\n </span>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport interface DockPileItem {\n id: string\n /** The card (a `DockCard`; pass `hidden` for the ones behind the front). */\n node: React.ReactNode\n /** A known height (px) instead of the measured one (specimens, tests). */\n height?: number\n}\n\nexport type DockPileProps = Omit<React.ComponentProps<`div`>, `children`> & {\n /** Oldest first: the LAST item is the front card. */\n items: readonly DockPileItem[]\n /** Fanned: every card at full size, `gap` apart. */\n expanded: boolean\n /** A pointer entering/leaving the pile or the focus moving in/out of it. */\n onExpandedChange?: (expanded: boolean) => void\n}\n\nexport function DockPile({ items, expanded, onExpandedChange, className, style, ...props }: DockPileProps) {\n const [measured, setMeasured] = React.useState<Record<string, number>>({})\n const nodes = React.useRef(new Map<string, HTMLDivElement>())\n React.useLayoutEffect(() => {\n const measure = () => {\n const next: Record<string, number> = {}\n for (const item of items) {\n const el = nodes.current.get(item.id)\n if (item.height === undefined && el) next[item.id] = el.offsetHeight\n }\n setMeasured((prev) =>\n Object.keys(next).length === Object.keys(prev).length && Object.entries(next).every(([k, v]) => prev[k] === v) ? prev : next\n )\n }\n measure()\n if (typeof ResizeObserver === `undefined`) return\n const observer = new ResizeObserver(measure)\n for (const el of nodes.current.values()) observer.observe(el)\n return () => observer.disconnect()\n }, [items])\n const geometry = dockPileGeometry(\n items.map((item) => item.height ?? measured[item.id] ?? 0),\n expanded\n )\n return (\n <div\n data-slot=\"dock-pile\"\n data-expanded={expanded ? `true` : `false`}\n className={cn(DOCK_PILE_CLASSES.root, className)}\n style={{ ...style, height: geometry.height }}\n onPointerEnter={(event) => {\n if (event.pointerType !== `touch`) onExpandedChange?.(true)\n }}\n onPointerLeave={(event) => {\n if (event.pointerType !== `touch`) onExpandedChange?.(false)\n }}\n onFocus={() => onExpandedChange?.(true)}\n onBlur={(event) => {\n const next = event.relatedTarget as Node | null\n if (!next || !event.currentTarget.contains(next)) onExpandedChange?.(false)\n }}\n {...props}\n >\n {items.map((item, i) => {\n const placed = geometry.items[i] ?? { offset: 0, scale: 1, visible: true }\n return (\n <div\n key={item.id}\n ref={(el) => {\n if (el) nodes.current.set(item.id, el)\n else nodes.current.delete(item.id)\n }}\n data-slot=\"dock-pile-item\"\n data-front={i === items.length - 1 ? `true` : `false`}\n data-visible={placed.visible ? `true` : `false`}\n className={DOCK_PILE_CLASSES.item}\n style={{ \"--offset\": `${placed.offset}px`, \"--scale\": `${placed.scale}`, zIndex: i + 1 } as React.CSSProperties}\n >\n {item.node}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport { DOCK_CARD_CLASSES, DOCK_PILE_CLASSES, DOCK_PILE_CONSTANTS, dockPileGeometry } from \"@exponential_app/eui/web/primitives\"\nexport type { DockCardTint } from \"@exponential_app/eui/web/primitives\"\n",
27
+ "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\nimport { DROPDOWN_MENU_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(DROPDOWN_MENU_CLASSES.content, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = `default`,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: `default` | `destructive`\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(DROPDOWN_MENU_CLASSES.item, className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(DROPDOWN_MENU_CLASSES.checkItem, className)}\n checked={checked}\n {...props}\n >\n <span className={DROPDOWN_MENU_CLASSES.itemIndicator}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className={DROPDOWN_MENU_CLASSES.checkIcon} />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(DROPDOWN_MENU_CLASSES.checkItem, className)}\n {...props}\n >\n <span className={DROPDOWN_MENU_CLASSES.itemIndicator}>\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className={DROPDOWN_MENU_CLASSES.radioIcon} />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(DROPDOWN_MENU_CLASSES.label, className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(DROPDOWN_MENU_CLASSES.separator, className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<`span`>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(DROPDOWN_MENU_CLASSES.shortcut, className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n // EXP-687: a submenu that opens a destructive action reads red like the\n // item it leads to — same tokens as DropdownMenuItem's destructive variant.\n variant = `default`,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n variant?: `default` | `destructive`\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n data-variant={variant}\n className={cn(DROPDOWN_MENU_CLASSES.subTrigger, className)}\n {...props}\n >\n {children}\n <ChevronRightIcon className={DROPDOWN_MENU_CLASSES.subChevron} />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(DROPDOWN_MENU_CLASSES.subContent, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n",
28
+ "import type { ComponentProps } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\nimport { EMPTY_STATE_CLASSES, type EmptyStateSize } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { IconDisc } from \"./icon-disc\"\n\nexport { EMPTY_STATE_SIZES } from \"@exponential_app/eui/web/primitives\"\nexport type { EmptyStateSize } from \"@exponential_app/eui/web/primitives\"\n\nexport function EmptyState({\n icon: Icon,\n title,\n description,\n size = `page`,\n className,\n children,\n}: {\n icon?: LucideIcon\n title: string\n description?: string\n size?: EmptyStateSize\n className?: string\n children?: React.ReactNode\n}) {\n if (size === `list`) {\n return (\n <div\n data-slot=\"empty-state\"\n data-size=\"list\"\n role=\"status\"\n className={cn(EMPTY_STATE_CLASSES.list, className)}\n >\n {Icon && (\n <Icon\n aria-hidden=\"true\"\n focusable=\"false\"\n className={EMPTY_STATE_CLASSES.listIcon}\n />\n )}\n <span>{title}</span>\n </div>\n )\n }\n return (\n <div\n data-slot=\"empty-state\"\n data-size=\"page\"\n role=\"status\"\n className={cn(EMPTY_STATE_CLASSES.page, className)}\n >\n {Icon && <IconDisc icon={Icon} />}\n <h2 className={EMPTY_STATE_CLASSES.pageTitle}>{title}</h2>\n {description && (\n <p className={EMPTY_STATE_CLASSES.pageDescription}>{description}</p>\n )}\n {children && (\n <div className={EMPTY_STATE_CLASSES.pageActions}>\n {children}\n </div>\n )}\n </div>\n )\n}\n\nexport function ListEmpty({\n className,\n children,\n ...props\n}: Omit<ComponentProps<`p`>, `title`>) {\n return (\n <p\n data-slot=\"list-empty\"\n role=\"status\"\n className={cn(EMPTY_STATE_CLASSES.listEmpty, className)}\n {...props}\n >\n {children}\n </p>\n )\n}\n\nexport function EmptyCta({\n icon: Icon,\n title,\n description,\n className,\n type,\n ...props\n}: Omit<ComponentProps<`button`>, `children` | `title`> & {\n icon: LucideIcon\n title: string\n description: string\n}) {\n return (\n <button\n type={type ?? `button`}\n data-slot=\"empty-cta\"\n className={cn(EMPTY_STATE_CLASSES.cta, className)}\n {...props}\n >\n <span className={EMPTY_STATE_CLASSES.ctaTitle}>\n <Icon className={EMPTY_STATE_CLASSES.ctaIcon} />\n {title}\n </span>\n <span className={EMPTY_STATE_CLASSES.ctaDescription}>{description}</span>\n </button>\n )\n}\n",
29
+ "import type { LucideIcon } from \"lucide-react\"\nimport { ICON_DISC_CLASSES, type IconDiscTone } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { ICON_DISC_TONES } from \"@exponential_app/eui/web/primitives\"\nexport type { IconDiscTone } from \"@exponential_app/eui/web/primitives\"\n\nexport function IconDisc({\n icon: Icon,\n tone = `primary`,\n strokeWidth,\n className,\n}: {\n icon: LucideIcon\n tone?: IconDiscTone\n strokeWidth?: number\n className?: string\n}) {\n return (\n <div\n data-slot=\"icon-disc\"\n className={cn(ICON_DISC_CLASSES.root, ICON_DISC_CLASSES.tones[tone], className)}\n >\n {/* Decorative: the disc always sits beside a title that names it. */}\n <Icon\n className={ICON_DISC_CLASSES.icon}\n strokeWidth={strokeWidth}\n aria-hidden=\"true\"\n focusable=\"false\"\n />\n </div>\n )\n}\n",
30
+ "import * as React from \"react\"\nimport { GLASS_CARD_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { GLASS_CARD_CLASS, GLASS_CARD_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nexport function GlassCard({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"glass-card\"\n className={cn(GLASS_CARD_CLASSES.root, className)}\n {...props}\n />\n )\n}\n",
31
+ "import * as React from \"react\"\nimport { HoverCard as HoverCardPrimitive } from \"radix-ui\"\nimport { HOVER_CARD_CLASSES, HOVER_CARD_DELAYS } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction HoverCard({\n openDelay = HOVER_CARD_DELAYS.openDelay,\n closeDelay = HOVER_CARD_DELAYS.closeDelay,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return (\n <HoverCardPrimitive.Root\n data-slot=\"hover-card\"\n openDelay={openDelay}\n closeDelay={closeDelay}\n {...props}\n />\n )\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return (\n <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n align = `start`,\n sideOffset = 6,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(HOVER_CARD_CLASSES.content, className)}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n",
32
+ "import * as React from \"react\"\nimport { INPUT_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { BARE_FIELD_CLASS, FIELD_CHROME_CLASS } from \"@exponential_app/eui/web/primitives\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<`input`>>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(INPUT_CLASSES.root, className)}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = `Input`\n\nexport { Input }\n",
33
+ "import * as React from \"react\"\nimport { KBD_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Kbd({ className, ...props }: React.ComponentProps<`kbd`>) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(KBD_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<`span`>) {\n return <span data-slot=\"kbd-group\" className={cn(KBD_CLASSES.group, className)} {...props} />\n}\n\nexport { Kbd, KbdGroup }\n",
34
+ "import * as React from \"react\"\nimport { Label as LabelPrimitive } from \"radix-ui\"\nimport { LABEL_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(LABEL_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nexport { Label }\n",
35
+ "export { MENU_CHECK_ITEM_CLASS, MENU_CHEVRON_CLASS, MENU_CONTENT_CLASS, MENU_ITEM_CLASS, MENU_LABEL_CLASS, MENU_SEPARATOR_CLASS, MENU_SHORTCUT_CLASS, MENU_SUB_TRIGGER_CLASS, MENU_SURFACE_CLASS, MENU_VALUE_CLASS } from \"@exponential_app/eui/web/primitives\"\n",
36
+ "import * as React from \"react\"\nimport { METER_CLASSES, type MeterTone } from \"@exponential_app/eui/web/primitives\"\n\nimport { Progress } from \"./progress\"\nimport { cn } from \"./cn\"\n\nexport type { MeterTone } from \"@exponential_app/eui/web/primitives\"\n\nexport function Meter({\n value,\n tone = `normal`,\n className,\n ...props\n}: Omit<React.ComponentProps<typeof Progress>, `value`> & {\n /** 0-100, the caller clamps (`parseWindow` already does). `null` =\n * indeterminate: work with a duration but no measurable progress. */\n value: number | null\n tone?: MeterTone\n}) {\n return (\n <Progress\n data-slot=\"meter\"\n data-tone={tone}\n value={value}\n className={cn(METER_CLASSES.root, METER_CLASSES.tones[tone], className)}\n {...props}\n />\n )\n}\n",
37
+ "import * as React from \"react\"\nimport { Progress as ProgressPrimitive } from \"radix-ui\"\nimport { PROGRESS_CLASSES, progressIndicatorTransform } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n const indeterminate = value === null || value === undefined\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n value={value}\n className={cn(PROGRESS_CLASSES.root, className)}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className={cn(\n PROGRESS_CLASSES.indicator,\n indeterminate\n ? PROGRESS_CLASSES.indicatorIndeterminate\n : PROGRESS_CLASSES.indicatorDeterminate\n )}\n style={\n indeterminate\n ? undefined\n : { transform: progressIndicatorTransform(value) }\n }\n />\n </ProgressPrimitive.Root>\n )\n}\n\nexport { Progress }\n",
38
+ "import * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\nimport { POPOVER_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = `center`,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(POPOVER_CLASSES.content, className)}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n",
39
+ "import { PROGRESS_RING_CLASSES, RING_RADIUS, RING_SIZE, RING_STROKE, progressRingPercent, ringGeometry } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { progressRingPercent } from \"@exponential_app/eui/web/primitives\"\n\nexport function ProgressRing({\n done,\n total,\n size = 14,\n colorClass,\n colorHex,\n className,\n}: {\n done: number\n total: number\n /** Rendered box in px. */\n size?: number\n /** A `text-*` token class — the builtin completed status. */\n colorClass?: string\n /** A synced hex — a custom completed row. Wins over `colorClass`. */\n colorHex?: string\n className?: string\n}) {\n const { circumference, dashOffset } = ringGeometry(\n progressRingPercent(done, total)\n )\n const centre = RING_SIZE / 2\n return (\n <svg\n viewBox={`0 0 ${RING_SIZE} ${RING_SIZE}`}\n width={size}\n height={size}\n aria-hidden\n data-slot=\"progress-ring\"\n data-done={done}\n data-total={total}\n className={cn(PROGRESS_RING_CLASSES.root, colorClass, className)}\n style={colorHex ? { color: colorHex } : undefined}\n >\n <circle\n cx={centre}\n cy={centre}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={RING_STROKE}\n opacity={0.2}\n />\n {done > 0 && (\n <circle\n data-slot=\"progress-ring-arc\"\n cx={centre}\n cy={centre}\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={RING_STROKE}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n />\n )}\n </svg>\n )\n}\n",
40
+ "import * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\nimport { SCROLL_AREA_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root data-slot=\"scroll-area\" className={cn(SCROLL_AREA_CLASSES.root, className)} {...props}>\n <ScrollAreaPrimitive.Viewport data-slot=\"scroll-area-viewport\" className={SCROLL_AREA_CLASSES.viewport}>\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({ className, orientation = `vertical`, ...props }: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(SCROLL_AREA_CLASSES.scrollbar, SCROLL_AREA_CLASSES.orientations[orientation], className)}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb data-slot=\"scroll-area-thumb\" className={SCROLL_AREA_CLASSES.thumb} />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n",
41
+ "import * as React from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\nimport { SEGMENTED_CONTROL_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { Tabs, TabsList, TabsTrigger } from \"./tabs\"\n\ninterface SegmentedOption<TValue extends string> {\n value: TValue\n label: React.ReactNode\n /** A leading glyph. A concept icon, never a raw lucide import. */\n icon?: LucideIcon\n disabled?: boolean\n}\n\ninterface SegmentedControlProps<TValue extends string> {\n value: TValue\n onValueChange: (value: TValue) => void\n options: readonly SegmentedOption<TValue>[]\n /** Span the container instead of the capsule's natural `w-fit`, so the\n * segments (already `flex-1`) share it equally. For narrow slots — a side\n * panel — where the natural width overflows and clips the last label. */\n fill?: boolean\n /** Disables every segment. */\n disabled?: boolean\n /** Extra classes on the strip (the `TabsList`). */\n className?: string\n}\n\nfunction SegmentedControl<TValue extends string>({\n value,\n onValueChange,\n options,\n fill = false,\n disabled = false,\n className,\n}: SegmentedControlProps<TValue>) {\n const triggers = options.map((option) => {\n const Glyph = option.icon\n return (\n <TabsTrigger\n key={option.value}\n value={option.value}\n disabled={disabled || option.disabled}\n className={SEGMENTED_CONTROL_CLASSES.trigger}\n >\n {Glyph ? <Glyph aria-hidden /> : null}\n {option.label}\n </TabsTrigger>\n )\n })\n\n return (\n <Tabs\n data-slot=\"segmented-control\"\n value={value}\n onValueChange={(next) => onValueChange(next as TValue)}\n >\n <TabsList className={cn(fill && SEGMENTED_CONTROL_CLASSES.fill, className)}>{triggers}</TabsList>\n </Tabs>\n )\n}\n\nexport { SegmentedControl }\nexport type { SegmentedControlProps, SegmentedOption }\n",
42
+ "import * as React from \"react\"\nimport { Tabs as TabsPrimitive } from \"radix-ui\"\nimport { TABS_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nexport { SEGMENTED_ITEM, SEGMENTED_LIST, SEGMENTED_ROW, SEGMENTED_ROW_COMPACT, SEGMENTED_TAB } from \"@exponential_app/eui/web/primitives\"\n\nfunction Tabs({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(TABS_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(TABS_CLASSES.list, className)}\n {...props}\n />\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(TABS_CLASSES.trigger, className)}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(TABS_CLASSES.content, className)}\n {...props}\n />\n )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n",
43
+ "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\nimport { Select as SelectPrimitive } from \"radix-ui\"\nimport { SELECT_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = `default`,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: `sm` | `default`\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(SELECT_CLASSES.trigger, className)}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className={SELECT_CLASSES.triggerIcon} />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = `item-aligned`,\n align = `center`,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n SELECT_CLASSES.content,\n position === `popper` && SELECT_CLASSES.contentPopper,\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n SELECT_CLASSES.viewport,\n position === `popper` && SELECT_CLASSES.viewportPopper\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(SELECT_CLASSES.label, className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(SELECT_CLASSES.item, className)}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className={SELECT_CLASSES.itemIndicator}\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className={SELECT_CLASSES.itemCheck} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(SELECT_CLASSES.separator, className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(SELECT_CLASSES.scrollButton, className)}\n {...props}\n >\n <ChevronUpIcon className={SELECT_CLASSES.scrollIcon} />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(SELECT_CLASSES.scrollButton, className)}\n {...props}\n >\n <ChevronDownIcon className={SELECT_CLASSES.scrollIcon} />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n",
44
+ "\"use client\"\n\nimport * as React from \"react\"\nimport { Separator as SeparatorPrimitive } from \"radix-ui\"\nimport { SEPARATOR_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Separator({\n className,\n orientation = `horizontal`,\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(SEPARATOR_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nexport { Separator }\n",
45
+ "import * as React from \"react\"\nimport { SKELETON_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<`div`>) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(SKELETON_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n",
46
+ "import type * as React from \"react\"\nimport { LoaderCircle } from \"lucide-react\"\nimport { SPINNER_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Spinner({\n size = 10,\n label = `Loading`,\n className,\n ...props\n}: Omit<React.ComponentProps<`svg`>, `children`> & {\n size?: number\n /** The accessible name; the glyph itself never carries words. */\n label?: string\n className?: string\n}) {\n return (\n <LoaderCircle\n data-slot=\"spinner\"\n data-testid=\"feedback-spinner\"\n aria-label={label}\n width={size}\n height={size}\n style={{ width: size, height: size }}\n className={cn(SPINNER_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nexport { Spinner }\n",
47
+ "import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"radix-ui\"\nimport { SWITCH_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Switch({\n className,\n size = `default`,\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: `sm` | `default`\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(SWITCH_CLASSES.root, className)}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(SWITCH_CLASSES.thumb)}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n",
48
+ "import * as React from \"react\"\nimport { TABLE_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Table({ className, ...props }: React.ComponentProps<`table`>) {\n return (\n <div data-slot=\"table-container\" className={TABLE_CLASSES.container}>\n <table data-slot=\"table\" className={cn(TABLE_CLASSES.root, className)} {...props} />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<`thead`>) {\n return <thead data-slot=\"table-header\" className={cn(TABLE_CLASSES.header, className)} {...props} />\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<`tbody`>) {\n return <tbody data-slot=\"table-body\" className={cn(TABLE_CLASSES.body, className)} {...props} />\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<`tfoot`>) {\n return <tfoot data-slot=\"table-footer\" className={cn(TABLE_CLASSES.footer, className)} {...props} />\n}\n\n/** A selected row says so with `data-state=\"selected\"` (shadcn's convention). */\nfunction TableRow({ className, ...props }: React.ComponentProps<`tr`>) {\n return <tr data-slot=\"table-row\" className={cn(TABLE_CLASSES.row, className)} {...props} />\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<`th`>) {\n return <th data-slot=\"table-head\" className={cn(TABLE_CLASSES.head, className)} {...props} />\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<`td`>) {\n return <td data-slot=\"table-cell\" className={cn(TABLE_CLASSES.cell, className)} {...props} />\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<`caption`>) {\n return <caption data-slot=\"table-caption\" className={cn(TABLE_CLASSES.caption, className)} {...props} />\n}\n\nexport { Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption }\n",
49
+ "import * as React from \"react\"\nimport { TEXTAREA_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<`textarea`>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(TEXTAREA_CLASSES.root, className)}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n",
50
+ "import * as React from \"react\"\nimport { CircleCheck, CircleX, Info, TriangleAlert, XIcon } from \"lucide-react\"\nimport {\n TOAST_CLASSES,\n TOAST_TOUCH_QUERY,\n createToastStore,\n layoutSize,\n toastPlacement,\n toastStackGeometry,\n type ToastKind,\n type ToastRecord,\n type ToastStore,\n} from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { useMediaQuery } from \"./use-media-query\"\n\n// FEED-131: THE toast without sonner: the stack of fixtures/toast-stack.json\n// (the engine in @exponential_app/eui/web/primitives/toast) painted on plain\n// elements. A region `<section>` holds the stack box `<ol>`, one `<li>` per\n// toast placed by `--offset`/`--scale`; hover (pointer) or a tap (touch)\n// expands the stack and pauses every clock. The Solid twin paints the same.\n\nconst KIND_ICONS: Record<ToastKind, React.ComponentType<React.SVGProps<SVGSVGElement>>> = {\n success: CircleCheck,\n error: CircleX,\n info: Info,\n warning: TriangleAlert,\n}\n\n/** The default store `toast` writes to and `<Toaster />` reads. */\nexport const toastStore: ToastStore = createToastStore()\n\n/** `toast(\"…\")`, `toast.success(\"…\", { description, action })`, … on the default store. */\nexport const toast = toastStore.toast\n\nexport type ToasterProps = Omit<React.ComponentProps<`section`>, `children`> & {\n store?: ToastStore\n /** The placement input (default: the `touchMaxWidth` media query). */\n touch?: boolean\n /** The close glyph's label. */\n closeLabel?: string\n}\n\nfunction useToasts(store: ToastStore): readonly ToastRecord[] {\n return React.useSyncExternalStore(store.subscribe, store.toasts, store.toasts)\n}\n\nexport function Toaster({ store = toastStore, touch, closeLabel = `Close`, className, ...props }: ToasterProps) {\n const toasts = useToasts(store)\n const touchQuery = useMediaQuery(TOAST_TOUCH_QUERY)\n const { placement, anchoredBottom } = toastPlacement(touch ?? touchQuery)\n const [expanded, setExpanded] = React.useState(false)\n const [measured, setMeasured] = React.useState<Record<string, number>>({})\n const items = React.useRef(new Map<string, HTMLLIElement>())\n const open = expanded && toasts.length > 0\n\n React.useEffect(() => {\n if (open) store.pauseAll()\n else store.resumeAll()\n }, [open, store])\n\n React.useLayoutEffect(() => {\n const next: Record<string, number> = {}\n for (const t of toasts) {\n const el = items.current.get(t.id)\n if (t.height === undefined && el) next[t.id] = layoutSize(el).height\n }\n setMeasured((prev) => (Object.keys(next).length === Object.keys(prev).length && Object.entries(next).every(([k, v]) => prev[k] === v) ? prev : next))\n }, [toasts])\n\n const geometry = toastStackGeometry(\n toasts.map((t) => t.height ?? measured[t.id] ?? 0),\n open,\n anchoredBottom\n )\n\n return (\n <section\n aria-label=\"Notifications\"\n data-slot=\"toaster\"\n data-placement={placement}\n className={cn(TOAST_CLASSES.region, TOAST_CLASSES.regionPlacement[placement], className)}\n {...props}\n >\n <ol\n data-slot=\"toast-list\"\n data-expanded={open ? `true` : `false`}\n className={cn(TOAST_CLASSES.list, TOAST_CLASSES.listPlacement[placement])}\n style={{ height: geometry.height }}\n onPointerEnter={(event) => {\n if (event.pointerType !== `touch`) setExpanded(true)\n }}\n onPointerLeave={(event) => {\n if (event.pointerType !== `touch`) setExpanded(false)\n }}\n onPointerDown={(event) => {\n if (event.pointerType === `touch`) setExpanded((was) => !was)\n }}\n >\n {toasts.map((t, i) => {\n const item = geometry.items[i]!\n const rank = toasts.length - 1 - i\n const Icon = t.kind ? KIND_ICONS[t.kind] : null\n return (\n <li\n key={t.id}\n ref={(el) => {\n if (el) items.current.set(t.id, el)\n else items.current.delete(t.id)\n }}\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n data-slot=\"toast\"\n data-kind={t.kind ?? `default`}\n data-front={rank === 0 ? `true` : `false`}\n data-expanded={open ? `true` : `false`}\n data-visible={item.visible ? `true` : `false`}\n data-index={rank}\n className={cn(TOAST_CLASSES.toast, TOAST_CLASSES.toastOrigin[anchoredBottom ? `bottom` : `top`])}\n style={{ \"--offset\": `${item.offset}px`, \"--scale\": `${item.scale}`, zIndex: i + 1 } as React.CSSProperties}\n >\n {Icon && (\n <div className={TOAST_CLASSES.iconSlot}>\n <Icon data-toast-kind={t.kind} className={cn(TOAST_CLASSES.icon, TOAST_CLASSES.kindIcon[t.kind!])} />\n </div>\n )}\n <div className={TOAST_CLASSES.content}>\n <div data-slot=\"toast-title\" className={TOAST_CLASSES.title}>\n {t.title}\n </div>\n {t.description !== undefined && (\n <div data-slot=\"toast-description\" className={TOAST_CLASSES.description}>\n {t.description}\n </div>\n )}\n </div>\n {t.action && (\n <button\n type=\"button\"\n data-slot=\"toast-action\"\n className={TOAST_CLASSES.action}\n onClick={(event) => {\n t.action?.onClick?.(event.nativeEvent)\n store.dismiss(t.id)\n }}\n >\n {t.action.label}\n </button>\n )}\n <button type=\"button\" data-slot=\"toast-close\" aria-label={closeLabel} className={TOAST_CLASSES.close} onClick={() => store.dismiss(t.id)}>\n <XIcon />\n </button>\n </li>\n )\n })}\n </ol>\n </section>\n )\n}\n\nexport { createToastStore, toastStackGeometry, toastPlacement, TOAST_CONSTANTS, TOAST_KINDS, TOAST_TOUCH_QUERY } from \"@exponential_app/eui/web/primitives\"\nexport type { ToastKind, ToastOptions, ToastRecord, ToastStore, ToastAction, ToastPlacement } from \"@exponential_app/eui/web/primitives\"\n",
51
+ "import * as React from \"react\"\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\"\nimport { TOOLTIP_CLASSES } from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(TOOLTIP_CLASSES.content, className)}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n",
52
+ "export { middleTruncate } from \"@exponential_app/eui/web/primitives\"\n",
53
+ "import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n // Synchronous initial read: the app is client-only (`defaultSsr: false`),\n // so starting from the real viewport width avoids a first-render flash of\n // the desktop layout (e.g. the fixed-width issue properties panel) on\n // mobile viewports.\n const [isMobile, setIsMobile] = React.useState<boolean>(\n () =>\n typeof window !== `undefined` &&\n window.innerWidth < MOBILE_BREAKPOINT\n )\n\n React.useEffect(() => {\n if (typeof window.matchMedia !== `function`) {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return\n }\n\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(`change`, onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(`change`, onChange)\n }, [])\n\n return isMobile\n}\n",
54
+ "import { useEffect, useLayoutEffect, useRef, type ReactNode } from \"react\"\nimport { voiceWave, voiceWaveChildBox, voiceWavePath } from \"@exponential_app/eui\"\nimport {\n VOICE_WAVE_CLASSES,\n VOICE_WAVE_SIZE_PX,\n voiceWaveAnimates,\n voiceWaveClock,\n voiceWaveFitChild,\n voiceWaveName,\n voiceWaveQuiet,\n type VoiceWaveActivity,\n type VoiceWaveSize,\n} from \"@exponential_app/eui/web/primitives\"\n\nimport { cn } from \"./cn\"\nimport { useMediaQuery } from \"./use-media-query\"\n\nexport type { VoiceWaveActivity, VoiceWaveSize } from \"@exponential_app/eui/web/primitives\"\n\nexport interface VoiceWaveProps {\n activity?: VoiceWaveActivity\n /** Loudness 0..1. */\n level?: number\n /** Up to 8 band levels 0..1. */\n bands?: readonly number[]\n size?: VoiceWaveSize\n /** The accessible name (the activity is appended); none = decorative. */\n label?: string\n className?: string\n /** The centre, at its own size, drawn scaled down to the wave's child\n * box (never up; kept but not painted at `sm`). */\n children?: ReactNode\n}\n\nconst hasChild = (c: ReactNode) => c !== undefined && c !== null && c !== false && !(Array.isArray(c) && c.length === 0)\n\n/** NEW-77: the Exponential UI `VoiceWave` native as a primitive: three\n * closed waves (the core's `voiceWave`) around an optional centre child,\n * moving while listening, thinking or speaking (not under reduced motion).\n * The frames write the paths' `d` directly, never a re-render. */\nexport function VoiceWave({ activity = `idle`, level = 0, bands, size = `md`, label, className, children }: VoiceWaveProps) {\n const px = VOICE_WAVE_SIZE_PX[size] ?? VOICE_WAVE_SIZE_PX.md\n const reducedMotion = useMediaQuery(`(prefers-reduced-motion: reduce)`)\n const input = { size: px, activity, level, bands, reducedMotion }\n const latest = useRef(input)\n latest.current = input\n const elapsed = useRef(0)\n const paths = useRef<(SVGPathElement | null)[]>([])\n const animates = voiceWaveAnimates(activity) && !reducedMotion\n useEffect(() => {\n if (!animates) {\n elapsed.current = 0\n return\n }\n return voiceWaveClock((t) => {\n elapsed.current = t\n voiceWave({ ...latest.current, elapsed: t }).rings.forEach((ring, k) => paths.current[k]?.setAttribute(`d`, voiceWavePath(ring)))\n })\n }, [animates])\n const childEl = useRef<HTMLSpanElement | null>(null)\n const present = hasChild(children)\n useLayoutEffect(() => (present && childEl.current ? voiceWaveFitChild(childEl.current, (c) => voiceWaveChildBox(px, c).scale) : undefined), [present, px])\n const wave = voiceWave({ ...input, elapsed: elapsed.current })\n const quiet = voiceWaveQuiet(activity)\n const name = voiceWaveName(label, activity)\n return (\n <span\n data-slot=\"voice-wave\"\n data-activity={activity}\n data-size={size}\n role={name ? `img` : undefined}\n aria-label={name}\n aria-hidden={name ? undefined : true}\n className={cn(VOICE_WAVE_CLASSES.root, VOICE_WAVE_CLASSES.size[size], quiet && VOICE_WAVE_CLASSES.quiet, className)}\n >\n <svg viewBox={`0 0 ${px} ${px}`} width={px} height={px} aria-hidden className={VOICE_WAVE_CLASSES.svg}>\n {wave.rings.map((ring, k) => (\n <path\n key={ring.part}\n ref={(el) => {\n paths.current[k] = el\n }}\n data-slot=\"voice-wave-ring\"\n data-ring={ring.part}\n className={quiet ? VOICE_WAVE_CLASSES.ringQuiet : VOICE_WAVE_CLASSES.ring[ring.part]}\n d={voiceWavePath(ring)}\n fill=\"currentColor\"\n fillOpacity={ring.fillAlpha}\n stroke=\"currentColor\"\n strokeOpacity={ring.strokeAlpha}\n strokeWidth={ring.strokeWidth}\n strokeLinejoin=\"round\"\n />\n ))}\n </svg>\n {present ? (\n <span\n ref={childEl}\n data-slot=\"voice-wave-child\"\n aria-hidden={wave.childSize > 0 ? undefined : true}\n className={cn(VOICE_WAVE_CLASSES.child, activity === `muted` && VOICE_WAVE_CLASSES.childMuted, wave.childSize > 0 ? undefined : VOICE_WAVE_CLASSES.childHidden)}\n >\n {children}\n </span>\n ) : null}\n </span>\n )\n}\n"
55
+ ],
56
+ "mappings": "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",
57
+ "debugId": "F72B037A10E5B0A264756E2164756E21",
58
+ "names": []
59
+ }
@@ -0,0 +1,96 @@
1
+ import type { ExtensionDef, Formatter, ModeName, ResolvedTheme, ScrollAlign, TemplateBudget, UiNode } from "@exponential_app/eui";
2
+ import type { CompiledTheme } from "@exponential_app/eui/web";
3
+ import type { HostPlugin } from "./host.js";
4
+ import type { ReactExtension } from "./extensions.js";
5
+ import type { ClientFunction, DataModel, ResolveContext } from "@exponential_app/eui/web";
6
+ export interface SurfaceContextValue {
7
+ surfaceId: string;
8
+ compiled: CompiledTheme;
9
+ /** The theme the surface runs with (density + contrast applied). */
10
+ theme: ResolvedTheme;
11
+ /** The RESOLVED mode (`system` already followed). */
12
+ mode: ModeName;
13
+ host: HostPlugin;
14
+ extensions: readonly ReactExtension[];
15
+ extensionDefs: readonly ExtensionDef[];
16
+ data: DataModel;
17
+ setData: (pointer: string, value: unknown) => void;
18
+ /** A template component id → its node (round 2: the reducer's LIFTED
19
+ * `templates`); `undefined` when absent. */
20
+ templateNode: (componentId: string) => UiNode | undefined;
21
+ /** VAPP-103: the surface's template items counted against
22
+ * `maxTemplateItems` (`templateBudget`); absent = every item renders. */
23
+ templateBudget?: TemplateBudget;
24
+ /** Interaction states forced on every node (the recipe sheet). */
25
+ states: readonly string[];
26
+ /** Geometry mode: every leaf becomes a fixed box of this size. */
27
+ measure?: (node: UiNode) => {
28
+ w: number;
29
+ h: number;
30
+ } | null;
31
+ /** Where overlays portal: the overlay LAYER inside the `xui` container
32
+ * (so container breakpoints still match in a Dialog, audit bug C). */
33
+ portal: HTMLElement | null;
34
+ /** The toast layer (above dialogs). */
35
+ toastLayer: HTMLElement | null;
36
+ /** The direction of the node being painted (round 2 §2: `direction` on
37
+ * ANY node, inherited; the surface's at the root). */
38
+ direction: `ltr` | `rtl`;
39
+ functions: Record<string, ClientFunction>;
40
+ openUrl: (url: string) => void;
41
+ /** Round 1 §4: the surface locale (BCP 47). */
42
+ locale: string;
43
+ /** Round 2 §3: the surface Formatter (Intl in `locale` + the time zone). */
44
+ formatter: Formatter;
45
+ /** The surface clock (epoch ms) `formatRelativeTime` reads without `now`;
46
+ * ticks once a minute while the tree uses it. */
47
+ now: () => number;
48
+ /** Round 2: a windowed List/Table registers its `scrollToIndex` under its
49
+ * painted id (the host command); returns the unregister. */
50
+ registerScroller: (id: string, scroll: (index: number, align?: ScrollAlign) => void) => () => void;
51
+ /** VAPP-103: the painted ids whose painter failed → their props as they
52
+ * failed (reported once until the props change; an entry leaves when
53
+ * the node paints or unmounts, so it never outgrows the mounted tree). */
54
+ paintFailures?: Map<string, string>;
55
+ /** The built-in string table (defaults + host overrides). */
56
+ strings: Readonly<Record<string, string>>;
57
+ /** A built-in string by id with `{name}` placeholders filled. */
58
+ t: (id: string, params?: Record<string, unknown>) => string;
59
+ /** `activeBreakpoint(surface width, theme.tokens.breakpoint)`; null =
60
+ * base. (The raw box is NOT in the context, nor in React state: the
61
+ * surface keeps it in a ref and re-renders only when the breakpoint or
62
+ * the matching height/orientation conditions (`data-xq`) change; nodes
63
+ * are memoized, so a surface re-render does not cascade by itself.) */
64
+ breakpoint: string | null;
65
+ /** The surface's matching JS-evaluated conditions (`data-xq` tokens):
66
+ * a `@media` block's `direction` reads it. */
67
+ xq?: string;
68
+ /** The platform asks for reduced motion. */
69
+ reducedMotion: boolean;
70
+ /** A hover-capable pointer. */
71
+ hover: boolean;
72
+ /** Speak a message through the surface's live regions. */
73
+ announce: (text: string, live?: `polite` | `assertive`) => void;
74
+ /** VAPP-141: `data`, `breakpoint`, `xq` and `mode` are LIVE (the surface's
75
+ * latest render; the context object keeps its identity when only they
76
+ * change): a listener hears every change, and a node re-renders when a
77
+ * value it reads is new (`live.ts`). Returns the unsubscribe. */
78
+ subscribe: (listener: () => void) => () => void;
79
+ }
80
+ export declare const SurfaceContext: import("react").Context<SurfaceContextValue | null>;
81
+ export declare function useSurfaceContext(): SurfaceContextValue;
82
+ /** A context with some members replaced, the live getters (`data`,
83
+ * `breakpoint`, `xq`, `mode`) kept live (a plain spread would freeze them);
84
+ * `data` may be a getter of its own (a read view over the live model). */
85
+ export declare function deriveContext(ctx: SurfaceContextValue, values: Partial<SurfaceContextValue>, data?: () => DataModel): SurfaceContextValue;
86
+ /** The live model with `value` mounted at `pointer` (a literal scope's
87
+ * read view), rebuilt only when the live model is a new object. */
88
+ export declare function readView(ctx: SurfaceContextValue, pointer: string, value: unknown): () => DataModel;
89
+ /** The data scope of a template item (relative paths resolve here). */
90
+ export declare const ScopeContext: import("react").Context<string>;
91
+ /** The INSTANCE suffix of a template item (`.0`, `.alice`): appended to the
92
+ * ids of the nodes it renders (`data-xui-id`) while their CSS class stays
93
+ * the template node's own, so every item wears the node sheet's rules. */
94
+ export declare const InstanceContext: import("react").Context<string>;
95
+ /** The resolve context of one render (bindings + calls + `$string`). */
96
+ export declare function resolveContextOf(ctx: SurfaceContextValue, scope: string): ResolveContext;
@@ -0,0 +1,25 @@
1
+ import type { ExtensionDef } from "@exponential_app/eui";
2
+ import type { ComponentType } from "react";
3
+ import type { ExtensionComponentProps } from "./host.js";
4
+ export type ExtensionComponent = ComponentType<ExtensionComponentProps>;
5
+ export interface ReactExtension {
6
+ /** The extension catalog (validated). `null` for a pure painter override. */
7
+ catalog: ExtensionDef | null;
8
+ components: Record<string, ExtensionComponent>;
9
+ }
10
+ export interface RegisterExtensionOptions {
11
+ catalog?: ExtensionDef;
12
+ components?: Record<string, ExtensionComponent>;
13
+ }
14
+ /** Register an extension for every surface on the page. Returns an
15
+ * unregister function. */
16
+ export declare function registerExtension(options: RegisterExtensionOptions): () => void;
17
+ /** A per-surface extension (the `extensions` prop), validated once. */
18
+ export declare function defineReactExtension(options: RegisterExtensionOptions): ReactExtension;
19
+ export declare function registeredExtensions(): readonly ReactExtension[];
20
+ export declare function subscribeExtensions(listener: () => void): () => void;
21
+ /** The catalog defs of a list of React extensions (for the reducer). */
22
+ export declare function extensionCatalogs(extensions: readonly ReactExtension[]): ExtensionDef[];
23
+ /** The macro names extensions add (their parts live in the `xui-part` layer). */
24
+ export declare function extensionMacroNames(extensions: readonly ReactExtension[]): Set<string>;
25
+ export declare function extensionComponent(extensions: readonly ReactExtension[], component: string): ExtensionComponent | undefined;