@epilot/zenith-react 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -152,7 +152,7 @@ page in the documentation's setup section has the steps for each agent.
152
152
  ## Which version you get
153
153
 
154
154
  `npm install @epilot/zenith-react` resolves the `latest` dist-tag, which points
155
- at `0.2.0` — published to `next`, verified, then promoted by hand.
155
+ at `0.2.1`, released by hand; the automatic `next` builds never move `latest`.
156
156
 
157
157
  Unproven builds stay on `next` with a prerelease version:
158
158
 
@@ -528,7 +528,10 @@ function expressionArity(
528
528
  scope,
529
529
  expression.name
530
530
  )
531
- if (j.TSAsExpression.check(expression))
531
+ if (
532
+ j.TSAsExpression.check(expression) ||
533
+ j.TSSatisfiesExpression.check(expression)
534
+ )
532
535
  return (
533
536
  typeArity(lookup, expression.typeAnnotation) ??
534
537
  expressionArity(lookup, scope, expression.expression)
@@ -161,7 +161,6 @@ const _ = a.forwardRef(
161
161
  action: {
162
162
  ...c,
163
163
  display: "flex",
164
- width: "100%",
165
164
  gridColumnEnd: "span 3",
166
165
  // mt-2
167
166
  marginTop: I
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","sources":["../../../src/components/callout/callout.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport { NS } from \"../../tokens\"\nimport * as tokens from \"../../tokens\"\nimport { ClearButton } from \"../../lib/clear-button\"\nimport { CloseIcon } from \"../../lib/icons\"\n\n/**\n * Callout — Badge's colour collapse applied to Card's compound pattern, in one makeZenithStyles\n * call. v1 hardcodes two variants per family as class strings (`bg-accent-soft text-accent-a12`,\n * ...).\n */\n\nconst InfoIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function InfoIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M12.0003 16.75C12.2129 16.75 12.391 16.6781 12.5345 16.5343C12.6782 16.3906 12.75 16.2125 12.75 16V11.75C12.75 11.5375 12.6781 11.3593 12.5343 11.2155C12.3904 11.0718 12.2122 11 11.9997 11C11.7871 11 11.609 11.0718 11.4655 11.2155C11.3218 11.3593 11.25 11.5375 11.25 11.75V16C11.25 16.2125 11.3219 16.3906 11.4658 16.5343C11.6096 16.6781 11.7878 16.75 12.0003 16.75ZM12 9.2885C12.2288 9.2885 12.4207 9.21108 12.5755 9.05625C12.7303 8.90142 12.8077 8.70958 12.8077 8.48075C12.8077 8.25192 12.7303 8.06008 12.5755 7.90525C12.4207 7.75058 12.2288 7.67325 12 7.67325C11.7712 7.67325 11.5793 7.75058 11.4245 7.90525C11.2697 8.06008 11.1923 8.25192 11.1923 8.48075C11.1923 8.70958 11.2697 8.90142 11.4245 9.05625C11.5793 9.21108 11.7712 9.2885 12 9.2885ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nconst WarningIcon = React.forwardRef<\n SVGSVGElement,\n React.ComponentProps<\"svg\">\n>(function WarningIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M3.4255 20.5C3.256 20.5 3.10375 20.4586 2.96875 20.3757C2.83375 20.2929 2.72883 20.1837 2.654 20.048C2.576 19.9133 2.53308 19.7675 2.52525 19.6105C2.51742 19.4535 2.55975 19.298 2.65225 19.144L11.213 4.356C11.3057 4.202 11.4215 4.08817 11.5605 4.0145C11.6997 3.94083 11.8462 3.904 12 3.904C12.1538 3.904 12.3003 3.94083 12.4395 4.0145C12.5785 4.08817 12.6943 4.202 12.787 4.356L21.3477 19.144C21.4402 19.298 21.4826 19.4535 21.4747 19.6105C21.4669 19.7675 21.424 19.9133 21.346 20.048C21.2712 20.1837 21.1663 20.2929 21.0313 20.3757C20.8963 20.4586 20.744 20.5 20.5745 20.5H3.4255ZM12 17.8077C12.2288 17.8077 12.4207 17.7303 12.5755 17.5755C12.7303 17.4207 12.8078 17.2288 12.8078 17C12.8078 16.7712 12.7303 16.5793 12.5755 16.4245C12.4207 16.2697 12.2288 16.1923 12 16.1923C11.7712 16.1923 11.5793 16.2697 11.4245 16.4245C11.2697 16.5793 11.1923 16.7712 11.1923 17C11.1923 17.2288 11.2697 17.4207 11.4245 17.5755C11.5793 17.7303 11.7712 17.8077 12 17.8077ZM12.0003 15.1923C12.2129 15.1923 12.391 15.1204 12.5345 14.9768C12.6782 14.8329 12.75 14.6548 12.75 14.4423V10.9423C12.75 10.7298 12.6781 10.5517 12.5342 10.408C12.3904 10.2642 12.2122 10.1923 11.9997 10.1923C11.7871 10.1923 11.609 10.2642 11.4655 10.408C11.3218 10.5517 11.25 10.7298 11.25 10.9423V14.4423C11.25 14.6548 11.3219 14.8329 11.4658 14.9768C11.6096 15.1204 11.7878 15.1923 12.0003 15.1923Z\" />\n </svg>\n )\n})\n\nconst CheckIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function CheckIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M10.5808 14.1463L8.25775 11.823C8.11925 11.6847 7.94517 11.6138 7.7355 11.6105C7.526 11.6073 7.34875 11.6782 7.20375 11.823C7.05892 11.968 6.9865 12.1437 6.9865 12.35C6.9865 12.5563 7.05892 12.732 7.20375 12.877L9.948 15.6212C10.1288 15.8019 10.3398 15.8922 10.5808 15.8922C10.8218 15.8922 11.0327 15.8019 11.2135 15.6212L16.777 10.0577C16.9153 9.91925 16.9862 9.74517 16.9895 9.5355C16.9927 9.326 16.9218 9.14875 16.777 9.00375C16.632 8.85892 16.4563 8.7865 16.25 8.7865C16.0437 8.7865 15.868 8.85892 15.723 9.00375L10.5808 14.1463ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nconst ErrorIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function ErrorIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M12 16.7307C12.2288 16.7307 12.4207 16.6533 12.5755 16.4985C12.7303 16.3437 12.8077 16.1518 12.8077 15.923C12.8077 15.6942 12.7303 15.5023 12.5755 15.3475C12.4207 15.1928 12.2288 15.1155 12 15.1155C11.7712 15.1155 11.5793 15.1928 11.4245 15.3475C11.2697 15.5023 11.1923 15.6942 11.1923 15.923C11.1923 16.1518 11.2697 16.3437 11.4245 16.4985C11.5793 16.6533 11.7712 16.7307 12 16.7307ZM12.0003 13.077C12.2129 13.077 12.391 13.0051 12.5345 12.8613C12.6782 12.7176 12.75 12.5395 12.75 12.327V7.827C12.75 7.6145 12.6781 7.43633 12.5343 7.2925C12.3904 7.14883 12.2122 7.077 11.9997 7.077C11.7871 7.077 11.609 7.14883 11.4655 7.2925C11.3218 7.43633 11.25 7.6145 11.25 7.827V12.327C11.25 12.5395 11.3219 12.7176 11.4658 12.8613C11.6096 13.0051 11.7878 13.077 12.0003 13.077ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nexport type CalloutVariant =\n \"info\" | \"gray\" | \"success\" | \"warning\" | \"destructive\"\n\ntype CalloutContextValue = {\n variant: CalloutVariant\n hideIcon: boolean\n}\n\nconst CalloutContext = React.createContext<CalloutContextValue>({\n variant: \"info\",\n hideIcon: false,\n})\n\n/**\n * The two slots a variant paints. Set inline; read by the root's atoms. Every variant is the same\n * style shape (soft background, default-graded text), so the five entries are data about five\n * families, not five class strings.\n */\nconst BG = \"--zenith-callout-bg\"\nconst FG = \"--zenith-callout-fg\"\n\nconst semantic = (family: string, slot: string): string =>\n `var(--zenith-${NS}-${family}-${slot})`\n\nconst VARIANT_SLOTS: Record<CalloutVariant, () => Record<string, string>> = {\n info: () => ({\n [BG]: semantic(\"accent\", \"soft\"),\n [FG]: semantic(\"accent\", \"default\"),\n }),\n gray: () => ({\n [BG]: semantic(\"gray\", \"soft\"),\n [FG]: semantic(\"gray\", \"default\"),\n }),\n success: () => ({\n [BG]: semantic(\"success\", \"soft\"),\n [FG]: semantic(\"success\", \"default\"),\n }),\n warning: () => ({\n [BG]: semantic(\"warning\", \"soft\"),\n [FG]: semantic(\"warning\", \"default\"),\n }),\n destructive: () => ({\n [BG]: semantic(\"error\", \"soft\"),\n [FG]: semantic(\"error\", \"default\"),\n }),\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n position: \"relative\",\n width: \"100%\",\n // The container radius, the same as Card so the two agree side by side (#25).\n ...shorthands.borderRadius(tokens.surfaceRadiusContainer),\n // p-3 — no token for 0.75rem.\n paddingTop: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n paddingLeft: tokens.spacingElement3,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n backgroundColor: `var(${BG})`,\n color: `var(${FG})`,\n // `items-center`: present in every state, like v1's base string.\n alignItems: \"center\",\n // v1's `data-[hide-icon=false]:` block — the icon grid kicks in only when an icon renders.\n \"&[data-hide-icon='false']\": {\n display: \"grid\",\n gridTemplateColumns: \"0 1fr auto\",\n // gap-y-0.5 — no token for 0.125rem.\n rowGap: \"0.125rem\",\n // `has-[>svg]` and `has-data-[slot=callout-icon]` collapse to the same re-laid-out grid.\n \"&:has(>svg)\": {\n gridTemplateColumns: \"1rem 1fr\",\n // gap-x-3 — no token for 0.75rem.\n columnGap: tokens.spacingElement3,\n },\n [`&:has([${SLOT_ATTR}=\"callout-icon\"])`]: {\n gridTemplateColumns: \"1rem 1fr\",\n columnGap: tokens.spacingElement3,\n },\n },\n // v1 `[&>[data-slot=callout-icon]]` — SLOT_ATTR, never data-slot (CONVENTIONS rule 4).\n [`& > [${SLOT_ATTR}=\"callout-icon\"]`]: {\n // size-5 — no token for 1.25rem.\n width: \"1.25rem\",\n height: \"1.25rem\",\n flexShrink: 0,\n },\n },\n dismissible: {\n ...boxModel,\n // pr-10 — no token for 2.5rem.\n paddingRight: \"2.5rem\",\n },\n title: {\n ...boxModel,\n gridColumnStart: 2,\n ...shorthands.overflow(\"hidden\"),\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 1,\n // min-h-4\n minHeight: tokens.spacingGroup2,\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightSemibold,\n },\n description: {\n gridColumnStart: 2,\n display: \"grid\",\n justifyItems: \"start\",\n ...shorthands.gap(tokens.spacingElement1),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n \"& p\": {\n // leading-relaxed — no token for a 1.625 line-height.\n lineHeight: 1.625,\n },\n },\n action: {\n ...boxModel,\n display: \"flex\",\n width: \"100%\",\n gridColumnEnd: \"span 3\",\n // mt-2\n marginTop: tokens.spacingElement2,\n },\n actionStart: {\n justifyContent: \"flex-start\",\n },\n actionStartIcon: {\n justifyContent: \"flex-start\",\n // ml-8\n marginLeft: tokens.spacingLayout2,\n },\n actionEnd: {\n justifyContent: \"flex-end\",\n },\n dismiss: {\n ...boxModel,\n position: \"absolute\",\n // top-2 right-2\n top: tokens.spacingElement2,\n right: tokens.spacingElement2,\n // size-6 — the ClearButton itself supplies centering, rounding, hover and focus.\n width: tokens.spacingLayout1,\n height: tokens.spacingLayout1,\n },\n dismissIcon: {\n ...boxModel,\n // size-4\n width: tokens.spacingGroup2,\n height: tokens.spacingGroup2,\n },\n})\n\nexport type CalloutProps = React.ComponentProps<\"div\"> & {\n variant?: CalloutVariant\n hideIcon?: boolean\n customIcon?: React.ReactNode\n /** Shows a top-right close button that dismisses the callout. */\n dismissible?: boolean\n /** Called when the close button is clicked, after the callout hides itself. */\n onDismiss?: () => void\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n function Callout(\n {\n className,\n variant = \"info\",\n hideIcon = false,\n customIcon,\n dismissible = false,\n onDismiss,\n style,\n children,\n ...props\n },\n ref\n ) {\n const [open, setOpen] = React.useState(true)\n const styles = useStyles()\n\n if (!open) {\n return null\n }\n\n const handleDismiss = () => {\n setOpen(false)\n onDismiss?.()\n }\n\n return (\n <CalloutContext.Provider value={{ variant, hideIcon }}>\n <div\n ref={ref}\n data-callout-variant={variant}\n data-slot=\"callout\"\n data-hide-icon={hideIcon ? \"true\" : \"false\"}\n data-dismissible={dismissible ? \"true\" : \"false\"}\n role=\"alert\"\n {...{ [SLOT_ATTR]: \"callout\" }}\n className={mergeClasses(\n styles.root,\n dismissible && styles.dismissible,\n className\n )}\n style={\n { ...VARIANT_SLOTS[variant](), ...style } as React.CSSProperties\n }\n {...props}\n >\n {!hideIcon && <CalloutIcon customIcon={customIcon} />}\n {children}\n {dismissible && (\n <ClearButton\n label=\"Dismiss\"\n onClick={handleDismiss}\n className={styles.dismiss}\n >\n <CloseIcon className={styles.dismissIcon} />\n </ClearButton>\n )}\n </div>\n </CalloutContext.Provider>\n )\n }\n)\n\nexport type CalloutTitleProps = React.ComponentProps<\"div\">\n\nexport const CalloutTitle = React.forwardRef<HTMLDivElement, CalloutTitleProps>(\n function CalloutTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-title\"\n {...{ [SLOT_ATTR]: \"callout-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CalloutDescriptionProps = React.ComponentProps<\"div\">\n\nexport const CalloutDescription = React.forwardRef<\n HTMLDivElement,\n CalloutDescriptionProps\n>(function CalloutDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-description\"\n {...{ [SLOT_ATTR]: \"callout-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n\nexport type CalloutActionProps = React.ComponentProps<\"div\"> & {\n align?: \"start\" | \"end\"\n}\n\nexport const CalloutAction = React.forwardRef<\n HTMLDivElement,\n CalloutActionProps\n>(function CalloutAction({ className, align = \"start\", ...props }, ref) {\n const { hideIcon } = React.useContext(CalloutContext)\n const styles = useStyles()\n\n const alignment =\n align === \"end\"\n ? styles.actionEnd\n : hideIcon\n ? styles.actionStart\n : styles.actionStartIcon\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-action\"\n data-align={align}\n {...{ [SLOT_ATTR]: \"callout-action\" }}\n className={mergeClasses(styles.action, alignment, className)}\n {...props}\n />\n )\n})\n\ntype CalloutVariantIconProps = React.ComponentProps<\"svg\"> & {\n customIcon?: React.ReactNode\n}\n\nconst CalloutVariantIcon = React.forwardRef<\n SVGSVGElement,\n CalloutVariantIconProps\n>(function CalloutVariantIcon({ customIcon, ...props }, ref) {\n const { variant } = React.useContext(CalloutContext)\n\n if (customIcon) {\n return customIcon\n }\n\n switch (variant) {\n case \"info\":\n return <InfoIcon ref={ref} {...props} />\n case \"success\":\n return <CheckIcon ref={ref} {...props} />\n case \"warning\":\n return <WarningIcon ref={ref} {...props} />\n case \"destructive\":\n return <ErrorIcon ref={ref} {...props} />\n }\n\n // gray has no default icon; v1 renders nothing for it.\n return null\n})\n\nexport type CalloutIconProps = React.ComponentProps<\"svg\"> & {\n customIcon?: React.ReactNode\n}\n\nconst CalloutIcon = React.forwardRef<SVGSVGElement, CalloutIconProps>(\n function CalloutIcon({ className, customIcon, ...props }, ref) {\n return (\n <CalloutVariantIcon\n ref={ref}\n data-slot=\"callout-icon\"\n {...{ [SLOT_ATTR]: \"callout-icon\" }}\n customIcon={customIcon}\n className={className}\n {...props}\n />\n )\n }\n)\n"],"names":["InfoIcon","React","props","ref","jsx","WarningIcon","CheckIcon","ErrorIcon","CalloutContext","BG","FG","semantic","family","slot","NS","VARIANT_SLOTS","useStyles","makeZenithStyles","boxModel","shorthands","tokens.surfaceRadiusContainer","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","SLOT_ATTR","tokens.spacingGroup2","tokens.textBase","tokens.leadingBase","tokens.fontWeightSemibold","tokens.spacingElement1","tokens.spacingElement2","tokens.spacingLayout2","tokens.spacingLayout1","Callout","className","variant","hideIcon","customIcon","dismissible","onDismiss","style","children","open","setOpen","styles","handleDismiss","jsxs","mergeClasses","CalloutIcon","ClearButton","CloseIcon","CalloutTitle","CalloutDescription","CalloutAction","align","alignment","CalloutVariantIcon"],"mappings":"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"}
1
+ {"version":3,"file":"callout.js","sources":["../../../src/components/callout/callout.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport { NS } from \"../../tokens\"\nimport * as tokens from \"../../tokens\"\nimport { ClearButton } from \"../../lib/clear-button\"\nimport { CloseIcon } from \"../../lib/icons\"\n\n/**\n * Callout — Badge's colour collapse applied to Card's compound pattern, in one makeZenithStyles\n * call. v1 hardcodes two variants per family as class strings (`bg-accent-soft text-accent-a12`,\n * ...).\n */\n\nconst InfoIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function InfoIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M12.0003 16.75C12.2129 16.75 12.391 16.6781 12.5345 16.5343C12.6782 16.3906 12.75 16.2125 12.75 16V11.75C12.75 11.5375 12.6781 11.3593 12.5343 11.2155C12.3904 11.0718 12.2122 11 11.9997 11C11.7871 11 11.609 11.0718 11.4655 11.2155C11.3218 11.3593 11.25 11.5375 11.25 11.75V16C11.25 16.2125 11.3219 16.3906 11.4658 16.5343C11.6096 16.6781 11.7878 16.75 12.0003 16.75ZM12 9.2885C12.2288 9.2885 12.4207 9.21108 12.5755 9.05625C12.7303 8.90142 12.8077 8.70958 12.8077 8.48075C12.8077 8.25192 12.7303 8.06008 12.5755 7.90525C12.4207 7.75058 12.2288 7.67325 12 7.67325C11.7712 7.67325 11.5793 7.75058 11.4245 7.90525C11.2697 8.06008 11.1923 8.25192 11.1923 8.48075C11.1923 8.70958 11.2697 8.90142 11.4245 9.05625C11.5793 9.21108 11.7712 9.2885 12 9.2885ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nconst WarningIcon = React.forwardRef<\n SVGSVGElement,\n React.ComponentProps<\"svg\">\n>(function WarningIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M3.4255 20.5C3.256 20.5 3.10375 20.4586 2.96875 20.3757C2.83375 20.2929 2.72883 20.1837 2.654 20.048C2.576 19.9133 2.53308 19.7675 2.52525 19.6105C2.51742 19.4535 2.55975 19.298 2.65225 19.144L11.213 4.356C11.3057 4.202 11.4215 4.08817 11.5605 4.0145C11.6997 3.94083 11.8462 3.904 12 3.904C12.1538 3.904 12.3003 3.94083 12.4395 4.0145C12.5785 4.08817 12.6943 4.202 12.787 4.356L21.3477 19.144C21.4402 19.298 21.4826 19.4535 21.4747 19.6105C21.4669 19.7675 21.424 19.9133 21.346 20.048C21.2712 20.1837 21.1663 20.2929 21.0313 20.3757C20.8963 20.4586 20.744 20.5 20.5745 20.5H3.4255ZM12 17.8077C12.2288 17.8077 12.4207 17.7303 12.5755 17.5755C12.7303 17.4207 12.8078 17.2288 12.8078 17C12.8078 16.7712 12.7303 16.5793 12.5755 16.4245C12.4207 16.2697 12.2288 16.1923 12 16.1923C11.7712 16.1923 11.5793 16.2697 11.4245 16.4245C11.2697 16.5793 11.1923 16.7712 11.1923 17C11.1923 17.2288 11.2697 17.4207 11.4245 17.5755C11.5793 17.7303 11.7712 17.8077 12 17.8077ZM12.0003 15.1923C12.2129 15.1923 12.391 15.1204 12.5345 14.9768C12.6782 14.8329 12.75 14.6548 12.75 14.4423V10.9423C12.75 10.7298 12.6781 10.5517 12.5342 10.408C12.3904 10.2642 12.2122 10.1923 11.9997 10.1923C11.7871 10.1923 11.609 10.2642 11.4655 10.408C11.3218 10.5517 11.25 10.7298 11.25 10.9423V14.4423C11.25 14.6548 11.3219 14.8329 11.4658 14.9768C11.6096 15.1204 11.7878 15.1923 12.0003 15.1923Z\" />\n </svg>\n )\n})\n\nconst CheckIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function CheckIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M10.5808 14.1463L8.25775 11.823C8.11925 11.6847 7.94517 11.6138 7.7355 11.6105C7.526 11.6073 7.34875 11.6782 7.20375 11.823C7.05892 11.968 6.9865 12.1437 6.9865 12.35C6.9865 12.5563 7.05892 12.732 7.20375 12.877L9.948 15.6212C10.1288 15.8019 10.3398 15.8922 10.5808 15.8922C10.8218 15.8922 11.0327 15.8019 11.2135 15.6212L16.777 10.0577C16.9153 9.91925 16.9862 9.74517 16.9895 9.5355C16.9927 9.326 16.9218 9.14875 16.777 9.00375C16.632 8.85892 16.4563 8.7865 16.25 8.7865C16.0437 8.7865 15.868 8.85892 15.723 9.00375L10.5808 14.1463ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nconst ErrorIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function ErrorIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M12 16.7307C12.2288 16.7307 12.4207 16.6533 12.5755 16.4985C12.7303 16.3437 12.8077 16.1518 12.8077 15.923C12.8077 15.6942 12.7303 15.5023 12.5755 15.3475C12.4207 15.1928 12.2288 15.1155 12 15.1155C11.7712 15.1155 11.5793 15.1928 11.4245 15.3475C11.2697 15.5023 11.1923 15.6942 11.1923 15.923C11.1923 16.1518 11.2697 16.3437 11.4245 16.4985C11.5793 16.6533 11.7712 16.7307 12 16.7307ZM12.0003 13.077C12.2129 13.077 12.391 13.0051 12.5345 12.8613C12.6782 12.7176 12.75 12.5395 12.75 12.327V7.827C12.75 7.6145 12.6781 7.43633 12.5343 7.2925C12.3904 7.14883 12.2122 7.077 11.9997 7.077C11.7871 7.077 11.609 7.14883 11.4655 7.2925C11.3218 7.43633 11.25 7.6145 11.25 7.827V12.327C11.25 12.5395 11.3219 12.7176 11.4658 12.8613C11.6096 13.0051 11.7878 13.077 12.0003 13.077ZM12.0017 21.5C10.6877 21.5 9.45267 21.2507 8.2965 20.752C7.14033 20.2533 6.13467 19.5766 5.2795 18.7218C4.42433 17.8669 3.74725 16.8617 3.24825 15.706C2.74942 14.5503 2.5 13.3156 2.5 12.0017C2.5 10.6877 2.74933 9.45267 3.248 8.2965C3.74667 7.14033 4.42342 6.13467 5.27825 5.2795C6.13308 4.42433 7.13833 3.74725 8.294 3.24825C9.44967 2.74942 10.6844 2.5 11.9982 2.5C13.3122 2.5 14.5473 2.74933 15.7035 3.248C16.8597 3.74667 17.8653 4.42342 18.7205 5.27825C19.5757 6.13308 20.2528 7.13833 20.7518 8.294C21.2506 9.44967 21.5 10.6844 21.5 11.9982C21.5 13.3122 21.2507 14.5473 20.752 15.7035C20.2533 16.8597 19.5766 17.8653 18.7218 18.7205C17.8669 19.5757 16.8617 20.2528 15.706 20.7518C14.5503 21.2506 13.3156 21.5 12.0017 21.5Z\" />\n </svg>\n )\n }\n)\n\nexport type CalloutVariant =\n \"info\" | \"gray\" | \"success\" | \"warning\" | \"destructive\"\n\ntype CalloutContextValue = {\n variant: CalloutVariant\n hideIcon: boolean\n}\n\nconst CalloutContext = React.createContext<CalloutContextValue>({\n variant: \"info\",\n hideIcon: false,\n})\n\n/**\n * The two slots a variant paints. Set inline; read by the root's atoms. Every variant is the same\n * style shape (soft background, default-graded text), so the five entries are data about five\n * families, not five class strings.\n */\nconst BG = \"--zenith-callout-bg\"\nconst FG = \"--zenith-callout-fg\"\n\nconst semantic = (family: string, slot: string): string =>\n `var(--zenith-${NS}-${family}-${slot})`\n\nconst VARIANT_SLOTS: Record<CalloutVariant, () => Record<string, string>> = {\n info: () => ({\n [BG]: semantic(\"accent\", \"soft\"),\n [FG]: semantic(\"accent\", \"default\"),\n }),\n gray: () => ({\n [BG]: semantic(\"gray\", \"soft\"),\n [FG]: semantic(\"gray\", \"default\"),\n }),\n success: () => ({\n [BG]: semantic(\"success\", \"soft\"),\n [FG]: semantic(\"success\", \"default\"),\n }),\n warning: () => ({\n [BG]: semantic(\"warning\", \"soft\"),\n [FG]: semantic(\"warning\", \"default\"),\n }),\n destructive: () => ({\n [BG]: semantic(\"error\", \"soft\"),\n [FG]: semantic(\"error\", \"default\"),\n }),\n}\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n position: \"relative\",\n width: \"100%\",\n // The container radius, the same as Card so the two agree side by side (#25).\n ...shorthands.borderRadius(tokens.surfaceRadiusContainer),\n // p-3 — no token for 0.75rem.\n paddingTop: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n paddingBottom: tokens.spacingElement3,\n paddingLeft: tokens.spacingElement3,\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n backgroundColor: `var(${BG})`,\n color: `var(${FG})`,\n // `items-center`: present in every state, like v1's base string.\n alignItems: \"center\",\n // v1's `data-[hide-icon=false]:` block — the icon grid kicks in only when an icon renders.\n \"&[data-hide-icon='false']\": {\n display: \"grid\",\n gridTemplateColumns: \"0 1fr auto\",\n // gap-y-0.5 — no token for 0.125rem.\n rowGap: \"0.125rem\",\n // `has-[>svg]` and `has-data-[slot=callout-icon]` collapse to the same re-laid-out grid.\n \"&:has(>svg)\": {\n gridTemplateColumns: \"1rem 1fr\",\n // gap-x-3 — no token for 0.75rem.\n columnGap: tokens.spacingElement3,\n },\n [`&:has([${SLOT_ATTR}=\"callout-icon\"])`]: {\n gridTemplateColumns: \"1rem 1fr\",\n columnGap: tokens.spacingElement3,\n },\n },\n // v1 `[&>[data-slot=callout-icon]]` — SLOT_ATTR, never data-slot (CONVENTIONS rule 4).\n [`& > [${SLOT_ATTR}=\"callout-icon\"]`]: {\n // size-5 — no token for 1.25rem.\n width: \"1.25rem\",\n height: \"1.25rem\",\n flexShrink: 0,\n },\n },\n dismissible: {\n ...boxModel,\n // pr-10 — no token for 2.5rem.\n paddingRight: \"2.5rem\",\n },\n title: {\n ...boxModel,\n gridColumnStart: 2,\n ...shorthands.overflow(\"hidden\"),\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 1,\n // min-h-4\n minHeight: tokens.spacingGroup2,\n fontSize: tokens.textBase,\n lineHeight: tokens.leadingBase,\n fontWeight: tokens.fontWeightSemibold,\n },\n description: {\n gridColumnStart: 2,\n display: \"grid\",\n justifyItems: \"start\",\n ...shorthands.gap(tokens.spacingElement1),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n \"& p\": {\n // leading-relaxed — no token for a 1.625 line-height.\n lineHeight: 1.625,\n },\n },\n action: {\n ...boxModel,\n display: \"flex\",\n gridColumnEnd: \"span 3\",\n // mt-2\n marginTop: tokens.spacingElement2,\n },\n actionStart: {\n justifyContent: \"flex-start\",\n },\n actionStartIcon: {\n justifyContent: \"flex-start\",\n // ml-8\n marginLeft: tokens.spacingLayout2,\n },\n actionEnd: {\n justifyContent: \"flex-end\",\n },\n dismiss: {\n ...boxModel,\n position: \"absolute\",\n // top-2 right-2\n top: tokens.spacingElement2,\n right: tokens.spacingElement2,\n // size-6 — the ClearButton itself supplies centering, rounding, hover and focus.\n width: tokens.spacingLayout1,\n height: tokens.spacingLayout1,\n },\n dismissIcon: {\n ...boxModel,\n // size-4\n width: tokens.spacingGroup2,\n height: tokens.spacingGroup2,\n },\n})\n\nexport type CalloutProps = React.ComponentProps<\"div\"> & {\n variant?: CalloutVariant\n hideIcon?: boolean\n customIcon?: React.ReactNode\n /** Shows a top-right close button that dismisses the callout. */\n dismissible?: boolean\n /** Called when the close button is clicked, after the callout hides itself. */\n onDismiss?: () => void\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n function Callout(\n {\n className,\n variant = \"info\",\n hideIcon = false,\n customIcon,\n dismissible = false,\n onDismiss,\n style,\n children,\n ...props\n },\n ref\n ) {\n const [open, setOpen] = React.useState(true)\n const styles = useStyles()\n\n if (!open) {\n return null\n }\n\n const handleDismiss = () => {\n setOpen(false)\n onDismiss?.()\n }\n\n return (\n <CalloutContext.Provider value={{ variant, hideIcon }}>\n <div\n ref={ref}\n data-callout-variant={variant}\n data-slot=\"callout\"\n data-hide-icon={hideIcon ? \"true\" : \"false\"}\n data-dismissible={dismissible ? \"true\" : \"false\"}\n role=\"alert\"\n {...{ [SLOT_ATTR]: \"callout\" }}\n className={mergeClasses(\n styles.root,\n dismissible && styles.dismissible,\n className\n )}\n style={\n { ...VARIANT_SLOTS[variant](), ...style } as React.CSSProperties\n }\n {...props}\n >\n {!hideIcon && <CalloutIcon customIcon={customIcon} />}\n {children}\n {dismissible && (\n <ClearButton\n label=\"Dismiss\"\n onClick={handleDismiss}\n className={styles.dismiss}\n >\n <CloseIcon className={styles.dismissIcon} />\n </ClearButton>\n )}\n </div>\n </CalloutContext.Provider>\n )\n }\n)\n\nexport type CalloutTitleProps = React.ComponentProps<\"div\">\n\nexport const CalloutTitle = React.forwardRef<HTMLDivElement, CalloutTitleProps>(\n function CalloutTitle({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-title\"\n {...{ [SLOT_ATTR]: \"callout-title\" }}\n className={mergeClasses(styles.title, className)}\n {...props}\n />\n )\n }\n)\n\nexport type CalloutDescriptionProps = React.ComponentProps<\"div\">\n\nexport const CalloutDescription = React.forwardRef<\n HTMLDivElement,\n CalloutDescriptionProps\n>(function CalloutDescription({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-description\"\n {...{ [SLOT_ATTR]: \"callout-description\" }}\n className={mergeClasses(styles.description, className)}\n {...props}\n />\n )\n})\n\nexport type CalloutActionProps = React.ComponentProps<\"div\"> & {\n align?: \"start\" | \"end\"\n}\n\nexport const CalloutAction = React.forwardRef<\n HTMLDivElement,\n CalloutActionProps\n>(function CalloutAction({ className, align = \"start\", ...props }, ref) {\n const { hideIcon } = React.useContext(CalloutContext)\n const styles = useStyles()\n\n const alignment =\n align === \"end\"\n ? styles.actionEnd\n : hideIcon\n ? styles.actionStart\n : styles.actionStartIcon\n\n return (\n <div\n ref={ref}\n data-slot=\"callout-action\"\n data-align={align}\n {...{ [SLOT_ATTR]: \"callout-action\" }}\n className={mergeClasses(styles.action, alignment, className)}\n {...props}\n />\n )\n})\n\ntype CalloutVariantIconProps = React.ComponentProps<\"svg\"> & {\n customIcon?: React.ReactNode\n}\n\nconst CalloutVariantIcon = React.forwardRef<\n SVGSVGElement,\n CalloutVariantIconProps\n>(function CalloutVariantIcon({ customIcon, ...props }, ref) {\n const { variant } = React.useContext(CalloutContext)\n\n if (customIcon) {\n return customIcon\n }\n\n switch (variant) {\n case \"info\":\n return <InfoIcon ref={ref} {...props} />\n case \"success\":\n return <CheckIcon ref={ref} {...props} />\n case \"warning\":\n return <WarningIcon ref={ref} {...props} />\n case \"destructive\":\n return <ErrorIcon ref={ref} {...props} />\n }\n\n // gray has no default icon; v1 renders nothing for it.\n return null\n})\n\nexport type CalloutIconProps = React.ComponentProps<\"svg\"> & {\n customIcon?: React.ReactNode\n}\n\nconst CalloutIcon = React.forwardRef<SVGSVGElement, CalloutIconProps>(\n function CalloutIcon({ className, customIcon, ...props }, ref) {\n return (\n <CalloutVariantIcon\n ref={ref}\n data-slot=\"callout-icon\"\n {...{ [SLOT_ATTR]: \"callout-icon\" }}\n customIcon={customIcon}\n className={className}\n {...props}\n />\n )\n }\n)\n"],"names":["InfoIcon","React","props","ref","jsx","WarningIcon","CheckIcon","ErrorIcon","CalloutContext","BG","FG","semantic","family","slot","NS","VARIANT_SLOTS","useStyles","makeZenithStyles","boxModel","shorthands","tokens.surfaceRadiusContainer","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","SLOT_ATTR","tokens.spacingGroup2","tokens.textBase","tokens.leadingBase","tokens.fontWeightSemibold","tokens.spacingElement1","tokens.spacingElement2","tokens.spacingLayout2","tokens.spacingLayout1","Callout","className","variant","hideIcon","customIcon","dismissible","onDismiss","style","children","open","setOpen","styles","handleDismiss","jsxs","mergeClasses","CalloutIcon","ClearButton","CloseIcon","CalloutTitle","CalloutDescription","CalloutAction","align","alignment","CalloutVariantIcon"],"mappings":"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"}
@@ -1,95 +1,109 @@
1
- import { jsx as s, jsxs as N } from "react/jsx-runtime";
2
- import * as o from "react";
3
- import { useSensors as A, useSensor as D, DndContext as R, closestCenter as j, DragOverlay as G, KeyboardSensor as K, PointerSensor as P } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
4
- import { SortableContext as V, verticalListSortingStrategy as k, useSortable as q, arrayMove as B, sortableKeyboardCoordinates as M } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
5
- import { useListStyles as _, ListItem as z, listContext as F, ListRoot as H, ListItemBody as L, canonicalDomDensity as J } from "./list.js";
6
- const Q = o.forwardRef(
7
- function(n, f) {
8
- const i = o.useId();
9
- process.env.NODE_ENV !== "production" && n.value === void 0 && console.warn(
1
+ import { jsx as r, jsxs as B } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { useSensors as F, useSensor as O, DndContext as P, closestCenter as j, DragOverlay as G, KeyboardSensor as K, PointerSensor as T } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
4
+ import { SortableContext as _, verticalListSortingStrategy as k, useSortable as q, arrayMove as H, sortableKeyboardCoordinates as M } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
5
+ import { useListStyles as z, ListItem as J, listContext as Q, ListRoot as U, ListItemBody as C, canonicalDomDensity as W } from "./list.js";
6
+ const X = i.forwardRef(
7
+ function(e, a) {
8
+ const s = i.useId();
9
+ process.env.NODE_ENV !== "production" && e.value === void 0 && console.warn(
10
10
  "SortableList: a `ListItem` is missing a `value`. Give each item a unique `value` so it can be reordered — items without one are excluded from `onReorder`."
11
11
  );
12
12
  const {
13
- attributes: r,
14
- listeners: a,
15
- setNodeRef: I,
16
- setActivatorNodeRef: p,
17
- isDragging: l,
18
- isOver: d,
19
- activeIndex: c,
20
- overIndex: u
13
+ attributes: d,
14
+ listeners: u,
15
+ setNodeRef: y,
16
+ setActivatorNodeRef: g,
17
+ isDragging: v,
18
+ isOver: f,
19
+ activeIndex: m,
20
+ overIndex: n
21
21
  } = q({
22
- id: n.value ?? i,
22
+ id: e.value ?? s,
23
23
  animateLayoutChanges: () => !1
24
- }), e = d && !l && c !== -1 ? c < u ? "bottom" : "top" : null;
25
- return /* @__PURE__ */ s(
26
- L,
24
+ }), p = f && !v && m !== -1 ? m < n ? "bottom" : "top" : null;
25
+ return /* @__PURE__ */ r(
26
+ C,
27
27
  {
28
- ref: f,
29
- ...n,
30
- setNodeRef: I,
31
- setActivatorNodeRef: p,
32
- isDragging: l,
33
- dropEdge: e,
34
- listeners: a,
35
- attributes: r
28
+ ref: a,
29
+ ...e,
30
+ setNodeRef: y,
31
+ setActivatorNodeRef: g,
32
+ isDragging: v,
33
+ dropEdge: p,
34
+ listeners: u,
35
+ attributes: d
36
36
  }
37
37
  );
38
38
  }
39
- ), Y = o.forwardRef(function({
40
- striped: n = !1,
41
- showIndex: f = !1,
42
- onReorder: i,
43
- density: r,
44
- children: a,
45
- ...I
46
- }, p) {
47
- const l = _(), d = J(r), c = o.useId(), u = o.Children.toArray(a).filter(
48
- o.isValidElement
49
- ).filter((t) => t.type === z), e = u.map((t) => t.props.value).filter((t) => typeof t == "string"), [v, S] = o.useState(null), C = v ? e.indexOf(v) : -1, m = v != null ? u.find((t) => t.props.value === v) : void 0, O = A(
50
- D(P, { activationConstraint: { distance: 3 } }),
39
+ ), L = { x: 0, y: 0 }, Y = (o) => {
40
+ const e = o.ownerDocument.createElement("div");
41
+ e.style.cssText = "position:fixed;top:0;left:0;width:0;height:0;visibility:hidden", o.after(e);
42
+ const { left: a, top: s } = e.getBoundingClientRect();
43
+ return e.remove(), { x: a, y: s };
44
+ }, Z = (o) => ({ transform: e }) => ({
45
+ ...e,
46
+ x: e.x - o.x,
47
+ y: e.y - o.y
48
+ }), oe = i.forwardRef(function({
49
+ striped: e = !1,
50
+ showIndex: a = !1,
51
+ onReorder: s,
52
+ density: d,
53
+ children: u,
54
+ ...y
55
+ }, g) {
56
+ const v = z(), f = W(d), m = i.useId(), n = i.useRef(null);
57
+ i.useImperativeHandle(g, () => n.current, []);
58
+ const p = i.Children.toArray(u).filter(
59
+ i.isValidElement
60
+ ).filter((t) => t.type === J), l = p.map((t) => t.props.value).filter((t) => typeof t == "string"), [x, I] = i.useState(null), [E, w] = i.useState(L), N = x ? l.indexOf(x) : -1, c = x != null ? p.find((t) => t.props.value === x) : void 0, R = F(
61
+ O(T, { activationConstraint: { distance: 3 } }),
51
62
  // Without the sortable coordinate getter each arrow press moves a fixed 25px, not one row.
52
- D(K, {
63
+ O(K, {
53
64
  coordinateGetter: M
54
65
  })
55
- ), E = (t) => {
56
- S(t.active.id);
57
- }, w = (t) => {
58
- S(null);
59
- const { active: b, over: g } = t;
60
- if (!g || b.id === g.id) return;
61
- const x = e.indexOf(b.id), y = e.indexOf(g.id);
62
- x === -1 || y === -1 || i == null || i(B(e, x, y));
66
+ ), V = (t) => {
67
+ I(t.active.id), w(
68
+ n.current ? Y(n.current) : L
69
+ );
70
+ }, A = (t) => {
71
+ I(null);
72
+ const { active: b, over: S } = t;
73
+ if (!S || b.id === S.id) return;
74
+ const h = l.indexOf(b.id), D = l.indexOf(S.id);
75
+ h === -1 || D === -1 || s == null || s(H(l, h, D));
63
76
  };
64
- return /* @__PURE__ */ s(
65
- F.Provider,
77
+ return /* @__PURE__ */ r(
78
+ Q.Provider,
66
79
  {
67
80
  value: {
68
- striped: n,
69
- showIndex: f,
81
+ striped: e,
82
+ showIndex: a,
70
83
  sortable: !0,
71
- SortableItem: Q
84
+ SortableItem: X
72
85
  },
73
- children: /* @__PURE__ */ N(
74
- R,
86
+ children: /* @__PURE__ */ B(
87
+ P,
75
88
  {
76
- id: c,
77
- sensors: O,
89
+ id: m,
90
+ sensors: R,
78
91
  collisionDetection: j,
79
- onDragStart: E,
80
- onDragEnd: w,
81
- onDragCancel: () => S(null),
92
+ onDragStart: V,
93
+ onDragEnd: A,
94
+ onDragCancel: () => I(null),
82
95
  children: [
83
- /* @__PURE__ */ s(V, { items: e, strategy: k, children: /* @__PURE__ */ s(H, { ref: p, density: r, ...I, children: a }) }),
84
- /* @__PURE__ */ s(G, { children: m ? /* @__PURE__ */ s(
85
- L,
96
+ /* @__PURE__ */ r(_, { items: l, strategy: k, children: /* @__PURE__ */ r(U, { ref: n, density: d, ...y, children: u }) }),
97
+ /* @__PURE__ */ r(G, { modifiers: [Z(E)], children: c ? /* @__PURE__ */ r(
98
+ C,
86
99
  {
87
- value: m.props.value,
88
- status: m.props.status,
89
- index: C,
90
- className: l.dragOverlayItem,
91
- ...d !== void 0 ? { "data-density": d } : {},
92
- children: m.props.children
100
+ value: c.props.value,
101
+ textValue: c.props.textValue,
102
+ status: c.props.status,
103
+ index: N,
104
+ className: v.dragOverlayItem,
105
+ ...f !== void 0 ? { "data-density": f } : {},
106
+ children: c.props.children
93
107
  }
94
108
  ) : null })
95
109
  ]
@@ -99,6 +113,6 @@ const Q = o.forwardRef(
99
113
  );
100
114
  });
101
115
  export {
102
- Y as SortableList
116
+ oe as SortableList
103
117
  };
104
118
  //# sourceMappingURL=list-sortable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-sortable.js","sources":["../../../src/components/list/list-sortable.tsx"],"sourcesContent":["import * as React from \"react\"\nimport {\n DndContext,\n DragOverlay,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\n\nimport {\n listContext,\n ListItem,\n ListItemBody,\n ListRoot,\n canonicalDomDensity,\n useListStyles,\n type ListItemDragListeners,\n type ListItemProps,\n type ListProps,\n} from \"./list\"\n\n// ── SortableListItem ───────────────────────────────────────────────────────\n\nconst SortableListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n function SortableListItem(props, ref) {\n const fallbackId = React.useId()\n\n if (process.env.NODE_ENV !== \"production\" && props.value === undefined) {\n console.warn(\n \"SortableList: a `ListItem` is missing a `value`. \" +\n \"Give each item a unique `value` so it can be reordered — \" +\n \"items without one are excluded from `onReorder`.\"\n )\n }\n\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n isDragging,\n isOver,\n activeIndex,\n overIndex,\n } = useSortable({\n id: props.value ?? fallbackId,\n animateLayoutChanges: () => false,\n })\n\n const dropEdge: \"top\" | \"bottom\" | null =\n isOver && !isDragging && activeIndex !== -1\n ? activeIndex < overIndex\n ? \"bottom\"\n : \"top\"\n : null\n\n return (\n <ListItemBody\n ref={ref}\n {...props}\n setNodeRef={setNodeRef}\n setActivatorNodeRef={setActivatorNodeRef}\n isDragging={isDragging}\n dropEdge={dropEdge}\n listeners={listeners as ListItemDragListeners | undefined}\n attributes={attributes}\n />\n )\n }\n)\n\n// ── SortableList ───────────────────────────────────────────────────────────\n\nexport type SortableListProps = ListProps & {\n /** Called with the new order of `ListItem` values after a drag. */\n onReorder?: (values: string[]) => void\n}\n\nexport const SortableList = React.forwardRef<\n HTMLOListElement,\n SortableListProps\n>(function SortableList(\n {\n striped = false,\n showIndex = false,\n onReorder,\n density,\n children,\n ...props\n },\n ref\n) {\n const styles = useListStyles()\n const domDensity = canonicalDomDensity(density)\n // dnd-kit otherwise numbers its describedby/live-region ids from a module counter, which the\n // server and the client advance separately, so the handles' aria-describedby failed hydration.\n const dndId = React.useId()\n\n const listItems = (\n React.Children.toArray(children).filter(\n React.isValidElement\n ) as React.ReactElement<ListItemProps>[]\n ).filter((child) => child.type === ListItem)\n const values = listItems\n .map((child) => child.props.value)\n .filter((v): v is string => typeof v === \"string\")\n\n const [activeId, setActiveId] = React.useState<string | null>(null)\n const activeIndex = activeId ? values.indexOf(activeId) : -1\n const activeItem =\n activeId != null\n ? listItems.find((child) => child.props.value === activeId)\n : undefined\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } }),\n // Without the sortable coordinate getter each arrow press moves a fixed 25px, not one row.\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = (event: DragStartEvent) => {\n setActiveId(event.active.id as string)\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setActiveId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = values.indexOf(active.id as string)\n const newIndex = values.indexOf(over.id as string)\n if (oldIndex === -1 || newIndex === -1) return\n\n onReorder?.(arrayMove(values, oldIndex, newIndex))\n }\n\n return (\n <listContext.Provider\n value={{\n striped,\n showIndex,\n sortable: true,\n SortableItem: SortableListItem,\n }}\n >\n <DndContext\n id={dndId}\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext items={values} strategy={verticalListSortingStrategy}>\n <ListRoot ref={ref} density={density} {...props}>\n {children}\n </ListRoot>\n </SortableContext>\n <DragOverlay>\n {activeItem ? (\n <ListItemBody\n value={activeItem.props.value}\n status={activeItem.props.status}\n index={activeIndex}\n className={styles.dragOverlayItem}\n // Reasserted only for an EXPLICIT density: DragOverlay is an ordinary DOM sibling\n // of the `<ol>`, not a portal (dnd-kit's `PositionedOverlay` renders in place —\n // confirmed from the installed source), so an omitted/ambient density already\n // reaches it correctly through the real DOM tree with no stamp at all.\n {...(domDensity !== undefined\n ? { \"data-density\": domDensity }\n : {})}\n >\n {activeItem.props.children}\n </ListItemBody>\n ) : null}\n </DragOverlay>\n </DndContext>\n </listContext.Provider>\n )\n})\n"],"names":["SortableListItem","React","props","ref","fallbackId","attributes","listeners","setNodeRef","setActivatorNodeRef","isDragging","isOver","activeIndex","overIndex","useSortable","dropEdge","jsx","ListItemBody","SortableList","striped","showIndex","onReorder","density","children","styles","useListStyles","domDensity","canonicalDomDensity","dndId","listItems","child","ListItem","values","v","activeId","setActiveId","activeItem","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragStart","event","handleDragEnd","active","over","oldIndex","newIndex","arrayMove","listContext","jsxs","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","ListRoot","DragOverlay"],"mappings":"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"}
1
+ {"version":3,"file":"list-sortable.js","sources":["../../../src/components/list/list-sortable.tsx"],"sourcesContent":["import * as React from \"react\"\nimport {\n DndContext,\n DragOverlay,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n type Modifier,\n} from \"@dnd-kit/core\"\nimport {\n SortableContext,\n verticalListSortingStrategy,\n arrayMove,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\"\n\nimport {\n listContext,\n ListItem,\n ListItemBody,\n ListRoot,\n canonicalDomDensity,\n useListStyles,\n type ListItemDragListeners,\n type ListItemProps,\n type ListProps,\n} from \"./list\"\n\n// ── SortableListItem ───────────────────────────────────────────────────────\n\nconst SortableListItem = React.forwardRef<HTMLLIElement, ListItemProps>(\n function SortableListItem(props, ref) {\n const fallbackId = React.useId()\n\n if (process.env.NODE_ENV !== \"production\" && props.value === undefined) {\n console.warn(\n \"SortableList: a `ListItem` is missing a `value`. \" +\n \"Give each item a unique `value` so it can be reordered — \" +\n \"items without one are excluded from `onReorder`.\"\n )\n }\n\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n isDragging,\n isOver,\n activeIndex,\n overIndex,\n } = useSortable({\n id: props.value ?? fallbackId,\n animateLayoutChanges: () => false,\n })\n\n const dropEdge: \"top\" | \"bottom\" | null =\n isOver && !isDragging && activeIndex !== -1\n ? activeIndex < overIndex\n ? \"bottom\"\n : \"top\"\n : null\n\n return (\n <ListItemBody\n ref={ref}\n {...props}\n setNodeRef={setNodeRef}\n setActivatorNodeRef={setActivatorNodeRef}\n isDragging={isDragging}\n dropEdge={dropEdge}\n listeners={listeners as ListItemDragListeners | undefined}\n attributes={attributes}\n />\n )\n }\n)\n\n// ── SortableList ───────────────────────────────────────────────────────────\n\ntype Offset = { x: number; y: number }\n\nconst NO_OFFSET: Offset = { x: 0, y: 0 }\n\n/**\n * Where a fixed-position box placed beside `node` lands, which a transformed ancestor such as a Popover moves off the viewport's origin.\n */\nconst getFixedPositionOrigin = (node: Element): Offset => {\n const probe = node.ownerDocument.createElement(\"div\")\n probe.style.cssText =\n \"position:fixed;top:0;left:0;width:0;height:0;visibility:hidden\"\n node.after(probe)\n const { left, top } = probe.getBoundingClientRect()\n probe.remove()\n return { x: left, y: top }\n}\n\n/**\n * Moves the drag overlay back by `offset`.\n */\nconst shiftBy =\n (offset: Offset): Modifier =>\n ({ transform }) => ({\n ...transform,\n x: transform.x - offset.x,\n y: transform.y - offset.y,\n })\n\nexport type SortableListProps = ListProps & {\n /** Called with the new order of `ListItem` values after a drag. */\n onReorder?: (values: string[]) => void\n}\n\nexport const SortableList = React.forwardRef<\n HTMLOListElement,\n SortableListProps\n>(function SortableList(\n {\n striped = false,\n showIndex = false,\n onReorder,\n density,\n children,\n ...props\n },\n ref\n) {\n const styles = useListStyles()\n const domDensity = canonicalDomDensity(density)\n // dnd-kit otherwise numbers its describedby/live-region ids from a module counter, which the\n // server and the client advance separately, so the handles' aria-describedby failed hydration.\n const dndId = React.useId()\n const listRef = React.useRef<HTMLOListElement>(null)\n React.useImperativeHandle(ref, () => listRef.current as HTMLOListElement, [])\n\n const listItems = (\n React.Children.toArray(children).filter(\n React.isValidElement\n ) as React.ReactElement<ListItemProps>[]\n ).filter((child) => child.type === ListItem)\n const values = listItems\n .map((child) => child.props.value)\n .filter((v): v is string => typeof v === \"string\")\n\n const [activeId, setActiveId] = React.useState<string | null>(null)\n const [overlayOrigin, setOverlayOrigin] = React.useState(NO_OFFSET)\n const activeIndex = activeId ? values.indexOf(activeId) : -1\n const activeItem =\n activeId != null\n ? listItems.find((child) => child.props.value === activeId)\n : undefined\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 3 } }),\n // Without the sortable coordinate getter each arrow press moves a fixed 25px, not one row.\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragStart = (event: DragStartEvent) => {\n setActiveId(event.active.id as string)\n setOverlayOrigin(\n listRef.current ? getFixedPositionOrigin(listRef.current) : NO_OFFSET\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setActiveId(null)\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = values.indexOf(active.id as string)\n const newIndex = values.indexOf(over.id as string)\n if (oldIndex === -1 || newIndex === -1) return\n\n onReorder?.(arrayMove(values, oldIndex, newIndex))\n }\n\n return (\n <listContext.Provider\n value={{\n striped,\n showIndex,\n sortable: true,\n SortableItem: SortableListItem,\n }}\n >\n <DndContext\n id={dndId}\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={() => setActiveId(null)}\n >\n <SortableContext items={values} strategy={verticalListSortingStrategy}>\n <ListRoot ref={listRef} density={density} {...props}>\n {children}\n </ListRoot>\n </SortableContext>\n {/* The overlay stays beside the list so density and appearance reach it through the DOM;\n under a transformed ancestor its fixed position starts from that ancestor, not the\n viewport, so it is shifted back to stay under the pointer. */}\n <DragOverlay modifiers={[shiftBy(overlayOrigin)]}>\n {activeItem ? (\n <ListItemBody\n value={activeItem.props.value}\n textValue={activeItem.props.textValue}\n status={activeItem.props.status}\n index={activeIndex}\n className={styles.dragOverlayItem}\n // Reasserted only for an EXPLICIT density: DragOverlay is an ordinary DOM sibling\n // of the `<ol>`, not a portal (dnd-kit's `PositionedOverlay` renders in place —\n // confirmed from the installed source), so an omitted/ambient density already\n // reaches it correctly through the real DOM tree with no stamp at all.\n {...(domDensity !== undefined\n ? { \"data-density\": domDensity }\n : {})}\n >\n {activeItem.props.children}\n </ListItemBody>\n ) : null}\n </DragOverlay>\n </DndContext>\n </listContext.Provider>\n )\n})\n"],"names":["SortableListItem","React","props","ref","fallbackId","attributes","listeners","setNodeRef","setActivatorNodeRef","isDragging","isOver","activeIndex","overIndex","useSortable","dropEdge","jsx","ListItemBody","NO_OFFSET","getFixedPositionOrigin","node","probe","left","top","shiftBy","offset","transform","SortableList","striped","showIndex","onReorder","density","children","styles","useListStyles","domDensity","canonicalDomDensity","dndId","listRef","listItems","child","ListItem","values","v","activeId","setActiveId","overlayOrigin","setOverlayOrigin","activeItem","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","handleDragStart","event","handleDragEnd","active","over","oldIndex","newIndex","arrayMove","listContext","jsxs","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","ListRoot","DragOverlay"],"mappings":"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"}