@epilot/zenith-react 0.1.0-next.1 → 0.2.0-next.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 (121) hide show
  1. package/README.md +79 -10
  2. package/dist/components/alert-dialog/alert-dialog.js +48 -47
  3. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  4. package/dist/components/appearance-boundary/appearance-boundary.js +32 -34
  5. package/dist/components/appearance-boundary/appearance-boundary.js.map +1 -1
  6. package/dist/components/badge/badge.js +1 -1
  7. package/dist/components/badge/badge.js.map +1 -1
  8. package/dist/components/breadcrumb/breadcrumb.js +10 -10
  9. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  10. package/dist/components/button/button.js +28 -28
  11. package/dist/components/button/button.js.map +1 -1
  12. package/dist/components/callout/callout.js +42 -40
  13. package/dist/components/callout/callout.js.map +1 -1
  14. package/dist/components/checkbox/checkbox.js +13 -13
  15. package/dist/components/checkbox/checkbox.js.map +1 -1
  16. package/dist/components/code-block/code-block.js +6 -6
  17. package/dist/components/code-block/code-block.js.map +1 -1
  18. package/dist/components/code-editor/code-editor.js +1 -1
  19. package/dist/components/code-editor/code-editor.js.map +1 -1
  20. package/dist/components/command/command.js +6 -6
  21. package/dist/components/command/command.js.map +1 -1
  22. package/dist/components/data-table/data-table-body.js +120 -66
  23. package/dist/components/data-table/data-table-body.js.map +1 -1
  24. package/dist/components/data-table/data-table-column-header.js +7 -7
  25. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  26. package/dist/components/data-table/data-table-column-order.js +277 -0
  27. package/dist/components/data-table/data-table-column-order.js.map +1 -0
  28. package/dist/components/data-table/data-table-content.js +72 -58
  29. package/dist/components/data-table/data-table-content.js.map +1 -1
  30. package/dist/components/data-table/data-table-context.js +8 -4
  31. package/dist/components/data-table/data-table-context.js.map +1 -1
  32. package/dist/components/data-table/data-table-footer.js +31 -0
  33. package/dist/components/data-table/data-table-footer.js.map +1 -0
  34. package/dist/components/data-table/data-table-header-draggable.js +151 -0
  35. package/dist/components/data-table/data-table-header-draggable.js.map +1 -0
  36. package/dist/components/data-table/data-table-header.js +130 -57
  37. package/dist/components/data-table/data-table-header.js.map +1 -1
  38. package/dist/components/data-table/data-table-resize-handle.js +137 -0
  39. package/dist/components/data-table/data-table-resize-handle.js.map +1 -0
  40. package/dist/components/data-table/data-table.js +184 -156
  41. package/dist/components/data-table/data-table.js.map +1 -1
  42. package/dist/components/data-table/hooks/use-data-table-virtualizer.js +9 -0
  43. package/dist/components/data-table/hooks/use-data-table-virtualizer.js.map +1 -0
  44. package/dist/components/date-range-picker/date-range-picker.js +196 -179
  45. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  46. package/dist/components/date-time-picker/calendar.js +29 -29
  47. package/dist/components/date-time-picker/calendar.js.map +1 -1
  48. package/dist/components/date-time-picker/date-time-picker-input.js +127 -114
  49. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  50. package/dist/components/date-time-picker/date-time-picker.js +91 -88
  51. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  52. package/dist/components/date-time-picker/time-picker.js +55 -55
  53. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  54. package/dist/components/dialog/dialog.js +74 -72
  55. package/dist/components/dialog/dialog.js.map +1 -1
  56. package/dist/components/drawer/drawer.js +69 -67
  57. package/dist/components/drawer/drawer.js.map +1 -1
  58. package/dist/components/dropdown-menu/dropdown-menu.js +36 -36
  59. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  60. package/dist/components/field/field-combobox.js +4 -4
  61. package/dist/components/field/field-combobox.js.map +1 -1
  62. package/dist/components/field/field.js +207 -176
  63. package/dist/components/field/field.js.map +1 -1
  64. package/dist/components/list/list.js +40 -40
  65. package/dist/components/list/list.js.map +1 -1
  66. package/dist/components/option-card/option-card.js +27 -25
  67. package/dist/components/option-card/option-card.js.map +1 -1
  68. package/dist/components/pill/pill.js +9 -9
  69. package/dist/components/pill/pill.js.map +1 -1
  70. package/dist/components/radio/radio.js +14 -14
  71. package/dist/components/radio/radio.js.map +1 -1
  72. package/dist/components/scroll-area/scroll-area.js +9 -9
  73. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  74. package/dist/components/segmented-control/segmented-control.js +1 -1
  75. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  76. package/dist/components/select/select.js +11 -11
  77. package/dist/components/select/select.js.map +1 -1
  78. package/dist/components/spinner/spinner.js.map +1 -1
  79. package/dist/components/switch/switch.js +11 -11
  80. package/dist/components/switch/switch.js.map +1 -1
  81. package/dist/components/table/table-pagination.js +1 -1
  82. package/dist/components/table/table-pagination.js.map +1 -1
  83. package/dist/components/table/table.js +15 -15
  84. package/dist/components/table/table.js.map +1 -1
  85. package/dist/components/tabs/tabs.js +131 -76
  86. package/dist/components/tabs/tabs.js.map +1 -1
  87. package/dist/components/text/text.js +10 -1
  88. package/dist/components/text/text.js.map +1 -1
  89. package/dist/components/toast/toast.js +26 -26
  90. package/dist/components/toast/toast.js.map +1 -1
  91. package/dist/components/toggle/toggle.js +20 -20
  92. package/dist/components/toggle/toggle.js.map +1 -1
  93. package/dist/index.d.ts +1940 -1867
  94. package/dist/index.js +133 -121
  95. package/dist/index.js.map +1 -1
  96. package/dist/packages/tokens/dist/generated/core.generated.js +13 -22
  97. package/dist/packages/tokens/dist/generated/core.generated.js.map +1 -1
  98. package/dist/packages/tokens/dist/generated/palette.generated.js +5 -5
  99. package/dist/packages/tokens/dist/generated/palette.generated.js.map +1 -1
  100. package/dist/packages/tokens/dist/install.js +5 -5
  101. package/dist/packages/tokens/dist/install.js.map +1 -1
  102. package/dist/tokens/core.meta.generated.js +2 -2
  103. package/dist/tokens/core.meta.generated.js.map +1 -1
  104. package/dist/tokens/index.d.ts +1029 -1104
  105. package/dist/tokens/index.js +1031 -1106
  106. package/dist/tokens/index.js.map +1 -1
  107. package/dist/tokens/palette.generated.js +2 -2
  108. package/dist/tokens/palette.generated.js.map +1 -1
  109. package/dist/tokens.json +605 -755
  110. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js +385 -340
  111. package/dist/vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js.map +1 -1
  112. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js +344 -229
  113. package/dist/vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js.map +1 -1
  114. package/dist/vendor/.bun/@dnd-kit_utilities@3.2.2_62547eec5a2188e3/vendor/@dnd-kit/utilities/dist/utilities.esm.js +1 -1
  115. package/dist/vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js +36 -0
  116. package/dist/vendor/.bun/@tanstack_react-virtual@3.11.2_6f4b9a1cfb20c0ae/vendor/@tanstack/react-virtual/dist/esm/index.js.map +1 -0
  117. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/index.js +450 -0
  118. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/index.js.map +1 -0
  119. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/utils.js +50 -0
  120. package/dist/vendor/.bun/@tanstack_virtual-core@3.11.2/vendor/@tanstack/virtual-core/dist/esm/utils.js.map +1 -0
  121. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sources":["../../../src/components/field/field.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 * as tokens from \"../../tokens\"\n\n/**\n * Plain elements, not a primitive. v1's Field uses no Radix primitive at all — it is a custom\n * implementation with its own context, and v2 already had the same context (`FieldContext`,\n * carrying `inputRef`).\n */\nconst FieldRootBase = \"div\" as const\nconst FieldLabelBase = \"label\" as const\nconst FieldControlBase = \"input\" as const\nconst FieldDescriptionBase = \"p\" as const\nconst FieldErrorBase = \"div\" as const\n\nexport type FieldInputRef =\n | HTMLInputElement\n | HTMLTextAreaElement\n | HTMLSelectElement\n | HTMLButtonElement\n | null\n\nexport interface FieldContextValue {\n inputRef: React.RefObject<FieldInputRef>\n}\n\nconst FieldContext = React.createContext<FieldContextValue | null>(null)\n\nexport const useFieldContext = () => {\n const context = React.useContext(FieldContext)\n if (!context) {\n throw new Error(\"FieldInput must be used within a Field component\")\n }\n return context\n}\n\n/**\n * Field context when there is one, `null` otherwise — for parts that work both inside and outside\n * a Field.\n */\nexport const useOptionalFieldContext = (): FieldContextValue | null =>\n React.useContext(FieldContext)\n\nexport type FieldVariant = \"default\" | \"highlight\" | \"readonly\" | \"destructive\"\n\nconst useStyles = makeZenithStyles({\n root: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n // Density-bound (DENSITY-SPEC.md §2.3, WP9B1-ACCEPTANCE-WP9B2A): normal resolves to the same\n // spacingElement2/spacingElement3 values this used before binding — `spacingGroup1` (0.5rem)\n // is a half-step short of the 0.75rem v1 actually uses, which three components got wrong by\n // reaching for it directly; that pitfall is why fieldPaddingX's normal tier aliases\n // spacingElement3, not spacingGroup1 (packages/tokens/spec/density.yaml).\n paddingTop: tokens.fieldPaddingY,\n paddingBottom: tokens.fieldPaddingY,\n paddingLeft: tokens.fieldPaddingX,\n paddingRight: tokens.fieldPaddingX,\n ...shorthands.gap(tokens.spacingElement1),\n ...shorthands.borderRadius(tokens.radiusLg),\n transitionProperty: \"all\",\n transitionDuration: \"75ms\",\n outlineOffset: \"2px\",\n outlineWidth: \"2px\",\n outlineStyle: \"none\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n \"&[data-focused='true'], &[data-focus-visible]\": {\n outlineStyle: \"solid\",\n outlineColor: tokens.semFocusRing,\n },\n \"&[data-invalid]\": {\n backgroundColor: tokens.semErrorSoft,\n },\n\n // Label's disabled styling, declared here because Field owns the elements these selectors are\n // rooted at. On Label they were written as \"[data-disabled] &\", \":disabled ~ &\" and\n // \"[data-disabled] ~ &\"; Griffel does not substitute `&` in that position and emits\n // `.hash<selector> .hash`, which never matches, so a label in a disabled field never dimmed.\n // See src/ancestor-selector.test.ts.\n [`&[data-disabled] [${SLOT_ATTR}=\"label\"]`]: {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n [`& :disabled ~ [${SLOT_ATTR}=\"label\"]`]: {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n [`& [data-disabled] ~ [${SLOT_ATTR}=\"label\"]`]: {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n rootDefault: {\n backgroundColor: tokens.grayA3,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n },\n rootHighlight: {\n backgroundColor: tokens.accentA3,\n \":hover\": {\n backgroundColor: tokens.accentA4,\n },\n },\n rootReadonly: {\n backgroundColor: tokens.grayA3,\n },\n rootDestructive: {\n backgroundColor: tokens.semErrorSoft,\n \":hover\": {\n backgroundColor: tokens.errorA4,\n },\n },\n fieldSet: {\n display: \"flex\",\n flexDirection: \"column\",\n // Density-bound (DENSITY-SPEC.md §2.3): normal resolves to the same spacingLayout2 (32px)\n // this used before binding.\n ...shorthands.gap(tokens.fieldSetGap),\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n ...shorthands.margin(0),\n },\n fieldGroup: {\n display: \"flex\",\n width: \"100%\",\n ...shorthands.gap(tokens.spacingElement2),\n },\n fieldGroupColumn: {\n flexDirection: \"column\",\n },\n fieldGroupRow: {\n flexDirection: \"row\",\n },\n fieldContent: {\n display: \"flex\",\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingElement2),\n lineHeight: \"1.375\",\n },\n label: {\n minHeight: \"1rem\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n display: \"flex\",\n width: \"fit-content\",\n ...shorthands.gap(tokens.spacingElement2),\n cursor: \"default\",\n color: tokens.grayA12,\n \"&[data-disabled]\": {\n opacity: 0.5,\n },\n },\n labelContent: {\n display: \"inline-flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n },\n labelContentHover: {\n width: 0,\n height: 0,\n overflowX: \"visible\",\n overflowY: \"visible\",\n opacity: 0,\n pointerEvents: \"none\",\n },\n description: {\n fontSize: tokens.textXs,\n lineHeight: \"1.5\",\n fontWeight: tokens.fontWeightNormal,\n ...shorthands.margin(0),\n \"& a\": {\n textDecorationLine: \"underline\",\n textUnderlineOffset: \"4px\",\n },\n },\n descriptionDefault: {\n color: tokens.grayA12,\n },\n descriptionHelper: {\n color: tokens.grayA11,\n },\n error: {\n color: tokens.semErrorOnSoft,\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n },\n errorList: {\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.margin(0),\n paddingLeft: \"1.25rem\",\n listStyleType: \"disc\",\n },\n errorListItem: {\n color: tokens.semErrorOnSoft,\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n marginTop: \"0.25rem\",\n marginBottom: \"0.25rem\",\n },\n input: {\n width: \"100%\",\n // Density-bound (DENSITY-SPEC.md §2.3): normal resolves to the same \"1.5rem\" this used before\n // binding. FieldComboboxInput (field-combobox.tsx) has its OWN separate makeZenithStyles call\n // and its own unrelated \"input\" key (width: \"100%\" only, no height) — this binding does not\n // reach it; review corrected an earlier claim that it did.\n height: tokens.fieldInputHeight,\n outlineStyle: \"none\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n \"::placeholder\": {\n color: tokens.grayA8,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n },\n },\n inputGroup: {\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n width: \"100%\",\n },\n textarea: {\n width: \"100%\",\n outlineStyle: \"none\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n \"::placeholder\": {\n color: tokens.grayA8,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n },\n },\n resizeNone: {\n resize: \"none\",\n },\n resizeVertical: {\n resize: \"vertical\",\n },\n resizeHorizontal: {\n resize: \"horizontal\",\n },\n addon: {\n color: tokens.grayA11,\n display: \"flex\",\n height: \"auto\",\n cursor: \"text\",\n whiteSpace: \"nowrap\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightNormal,\n userSelect: \"none\",\n },\n addonStart: {\n order: -1,\n },\n addonEnd: {\n order: 1,\n },\n})\n\n// fieldVariants helper for v1 API compatibility\nexport const fieldVariants = ({\n variant = \"default\",\n}: { variant?: FieldVariant } = {}) => {\n return variant\n}\n\nexport type FieldProps = Omit<React.ComponentProps<\"div\">, \"className\"> & {\n className?: string\n variant?: FieldVariant\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(\n {\n className,\n variant = \"default\",\n children,\n onFocusCapture,\n onBlurCapture,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const inputRef = React.useRef<FieldInputRef>(null)\n const [isFocused, setIsFocused] = React.useState(false)\n\n const handleFocusCapture: React.ComponentProps<\"div\">[\"onFocusCapture\"] = (\n event\n ) => {\n setIsFocused(true)\n onFocusCapture?.(event)\n }\n\n const handleBlurCapture: React.ComponentProps<\"div\">[\"onBlurCapture\"] = (\n event\n ) => {\n setIsFocused(false)\n onBlurCapture?.(event)\n }\n\n const variantStyle =\n variant === \"highlight\"\n ? styles.rootHighlight\n : variant === \"readonly\"\n ? styles.rootReadonly\n : variant === \"destructive\"\n ? styles.rootDestructive\n : styles.rootDefault\n\n return (\n <FieldContext.Provider value={{ inputRef }}>\n <FieldRootBase\n ref={ref}\n role=\"group\"\n data-slot=\"field\"\n {...{ [SLOT_ATTR]: \"field\" }}\n data-focused={isFocused ? \"true\" : \"false\"}\n className={mergeClasses(styles.root, variantStyle, className)}\n onFocusCapture={handleFocusCapture}\n onBlurCapture={handleBlurCapture}\n {...props}\n >\n {children}\n </FieldRootBase>\n </FieldContext.Provider>\n )\n }\n)\n\nexport type FieldSetProps = React.ComponentProps<\"fieldset\">\n\nexport const FieldSet = React.forwardRef<HTMLFieldSetElement, FieldSetProps>(\n function FieldSet({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <fieldset\n ref={ref}\n data-slot=\"field-set\"\n {...{ [SLOT_ATTR]: \"field-set\" }}\n className={mergeClasses(styles.fieldSet, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldGroupProps = React.ComponentProps<\"div\"> & {\n direction?: \"column\" | \"row\"\n}\n\nexport const FieldGroup = React.forwardRef<HTMLDivElement, FieldGroupProps>(\n function FieldGroup({ className, direction = \"column\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-group\"\n {...{ [SLOT_ATTR]: \"field-group\" }}\n className={mergeClasses(\n styles.fieldGroup,\n direction === \"row\" ? styles.fieldGroupRow : styles.fieldGroupColumn,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type FieldContentProps = React.ComponentProps<\"div\">\n\nexport const FieldContent = React.forwardRef<HTMLDivElement, FieldContentProps>(\n function FieldContent({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-content\"\n {...{ [SLOT_ATTR]: \"field-content\" }}\n className={mergeClasses(styles.fieldContent, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldLabelProps = Omit<\n React.ComponentProps<\"label\">,\n \"className\"\n> & {\n className?: string\n}\n\nexport const FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <FieldLabelBase\n ref={ref}\n data-slot=\"field-label\"\n {...{ [SLOT_ATTR]: \"field-label\" }}\n className={mergeClasses(styles.label, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldLabelContentProps = React.ComponentProps<\"div\"> & {\n showOnHover?: boolean\n}\n\nexport const FieldLabelContent = React.forwardRef<\n HTMLDivElement,\n FieldLabelContentProps\n>(function FieldLabelContent({ className, showOnHover = true, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-label-content\"\n {...{ [SLOT_ATTR]: \"field-label-content\" }}\n className={mergeClasses(\n styles.labelContent,\n showOnHover && styles.labelContentHover,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type FieldDescriptionVariant = \"default\" | \"helper\"\n\nexport const fieldDescriptionVariants = ({\n variant = \"default\",\n}: { variant?: FieldDescriptionVariant } = {}) => {\n return variant\n}\n\nexport type FieldDescriptionProps = Omit<\n React.ComponentProps<\"p\">,\n \"className\"\n> & {\n className?: string\n variant?: FieldDescriptionVariant\n}\n\nexport const FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(function FieldDescription({ className, variant = \"default\", ...props }, ref) {\n const styles = useStyles()\n\n const variantStyle =\n variant === \"helper\" ? styles.descriptionHelper : styles.descriptionDefault\n\n return (\n <FieldDescriptionBase\n ref={ref}\n data-slot=\"field-description\"\n {...{ [SLOT_ATTR]: \"field-description\" }}\n className={mergeClasses(styles.description, variantStyle, className)}\n {...props}\n />\n )\n})\n\nexport type FieldErrorProps = Omit<React.ComponentProps<\"div\">, \"className\"> & {\n className?: string\n errors?: Array<{ message?: string } | undefined>\n}\n\nexport const FieldError = React.forwardRef<HTMLDivElement, FieldErrorProps>(\n function FieldError({ className, children, errors, ...props }, ref) {\n const styles = useStyles()\n\n const content = React.useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors.length === 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className={styles.errorList}>\n {uniqueErrors.map(\n (error, index) =>\n error?.message && (\n <li className={styles.errorListItem} key={index}>\n {error.message}\n </li>\n )\n )}\n </ul>\n )\n }, [children, errors, styles.errorList, styles.errorListItem])\n\n if (!content) {\n return null\n }\n\n return (\n <FieldErrorBase\n ref={ref}\n role=\"alert\"\n data-slot=\"field-error\"\n {...{ [SLOT_ATTR]: \"field-error\" }}\n className={mergeClasses(styles.error, className)}\n {...props}\n >\n {content}\n </FieldErrorBase>\n )\n }\n)\n\nexport type FieldInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"className\"\n> & {\n className?: string\n}\n\nexport const FieldInput = React.forwardRef<HTMLInputElement, FieldInputProps>(\n function FieldInput({ className, ...props }, forwardedRef) {\n const styles = useStyles()\n const { inputRef } = useFieldContext()\n\n return (\n <FieldControlBase\n ref={(el: HTMLElement | null) => {\n inputRef.current = el as HTMLInputElement | null\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el as HTMLInputElement)\n } else if (forwardedRef) {\n forwardedRef.current = el as HTMLInputElement | null\n }\n }}\n data-readonly={props.readOnly}\n data-slot=\"field-input\"\n {...{ [SLOT_ATTR]: \"field-input\" }}\n className={mergeClasses(styles.input, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldInputGroupProps = React.ComponentProps<\"div\">\n\nexport const FieldInputGroup = React.forwardRef<\n HTMLDivElement,\n FieldInputGroupProps\n>(function FieldInputGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-input-group\"\n {...{ [SLOT_ATTR]: \"field-input-group\" }}\n className={mergeClasses(styles.inputGroup, className)}\n {...props}\n />\n )\n})\n\nexport type FieldTextareaResize = \"none\" | \"vertical\" | \"horizontal\"\n\nexport type FieldTextareaProps = React.ComponentProps<\"textarea\"> & {\n resize?: FieldTextareaResize\n}\n\nexport const FieldTextarea = React.forwardRef<\n HTMLTextAreaElement,\n FieldTextareaProps\n>(function FieldTextarea(\n { className, resize = \"none\", ...props },\n forwardedRef\n) {\n const styles = useStyles()\n const { inputRef } = useFieldContext()\n\n const resizeStyle =\n resize === \"vertical\"\n ? styles.resizeVertical\n : resize === \"horizontal\"\n ? styles.resizeHorizontal\n : styles.resizeNone\n\n return (\n <textarea\n {...props}\n ref={(el: HTMLTextAreaElement | null) => {\n inputRef.current = el\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el)\n } else if (forwardedRef) {\n forwardedRef.current = el\n }\n }}\n data-readonly={props.readOnly}\n data-slot=\"field-textarea\"\n {...{ [SLOT_ATTR]: \"field-textarea\" }}\n data-resize={resize}\n className={mergeClasses(styles.textarea, resizeStyle, className)}\n />\n )\n})\n\nexport type FieldGroupAddonAlign = \"start\" | \"end\"\n\nexport const inputGroupAddonVariants = ({\n align = \"start\",\n}: { align?: FieldGroupAddonAlign } = {}) => {\n return align\n}\n\nexport type FieldGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: FieldGroupAddonAlign\n}\n\nexport const FieldGroupAddon = React.forwardRef<\n HTMLDivElement,\n FieldGroupAddonProps\n>(function FieldGroupAddon({ className, align = \"start\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n {...{ [SLOT_ATTR]: \"input-group-addon\" }}\n data-align={align}\n className={mergeClasses(\n styles.addon,\n align === \"end\" ? styles.addonEnd : styles.addonStart,\n className\n )}\n {...props}\n />\n )\n})\n"],"names":["FieldRootBase","FieldLabelBase","FieldControlBase","FieldDescriptionBase","FieldErrorBase","FieldContext","React","useFieldContext","context","useOptionalFieldContext","useStyles","makeZenithStyles","tokens.fieldPaddingY","tokens.fieldPaddingX","shorthands","tokens.spacingElement1","tokens.radiusLg","tokens.semFocusRing","tokens.semErrorSoft","SLOT_ATTR","tokens.grayA3","tokens.grayA4","tokens.accentA3","tokens.accentA4","tokens.errorA4","tokens.fieldSetGap","tokens.spacingElement2","tokens.textXs","tokens.leadingXs","tokens.grayA12","tokens.fontWeightNormal","tokens.grayA11","tokens.semErrorOnSoft","tokens.fieldInputHeight","tokens.textSm","tokens.leadingSm","tokens.grayA8","fieldVariants","variant","Field","className","children","onFocusCapture","onBlurCapture","props","ref","styles","inputRef","isFocused","setIsFocused","handleFocusCapture","event","handleBlurCapture","variantStyle","jsx","mergeClasses","FieldSet","FieldGroup","direction","FieldContent","FieldLabel","FieldLabelContent","showOnHover","fieldDescriptionVariants","FieldDescription","FieldError","errors","content","uniqueErrors","error","_a","index","FieldInput","forwardedRef","el","FieldInputGroup","FieldTextarea","resize","resizeStyle","inputGroupAddonVariants","align","FieldGroupAddon"],"mappings":"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"}
1
+ {"version":3,"file":"field.js","sources":["../../../src/components/field/field.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 * as tokens from \"../../tokens\"\n\n/**\n * Plain elements, not a primitive. v1's Field uses no Radix primitive at all — it is a custom\n * implementation with its own context, and v2 already had the same context (`FieldContext`,\n * carrying `inputRef`).\n */\nconst FieldRootBase = \"div\" as const\nconst FieldLabelBase = \"label\" as const\nconst FieldControlBase = \"input\" as const\nconst FieldDescriptionBase = \"p\" as const\nconst FieldErrorBase = \"div\" as const\n\nexport type FieldInputRef =\n | HTMLInputElement\n | HTMLTextAreaElement\n | HTMLSelectElement\n | HTMLButtonElement\n | null\n\nexport interface FieldContextValue {\n inputRef: React.RefObject<FieldInputRef>\n}\n\nconst FieldContext = React.createContext<FieldContextValue | null>(null)\n\nexport const useFieldContext = () => {\n const context = React.useContext(FieldContext)\n if (!context) {\n throw new Error(\"FieldInput must be used within a Field component\")\n }\n return context\n}\n\n/**\n * Field context when there is one, `null` otherwise — for parts that work both inside and outside\n * a Field.\n */\nexport const useOptionalFieldContext = (): FieldContextValue | null =>\n React.useContext(FieldContext)\n\nexport type FieldVariant = \"default\" | \"highlight\" | \"readonly\" | \"destructive\"\n\n/** The controls a Field wraps; their `:disabled` is what makes the field disabled. */\nconst FIELD_CONTROL_SLOTS = [\"field-input\", \"field-textarea\", \"select-trigger\"]\n/** FieldLabel, and the standalone Label when a caller uses it inside a Field. */\nconst FIELD_LABEL_SLOTS = [\"field-label\", \"label\"]\nconst DISABLED_LABEL = { cursor: \"not-allowed\", opacity: 0.5 }\n\n/**\n * One rule per (disabled condition, label slot). Each `:has()` names a single control rather than\n * any `:disabled` descendant, so an unrelated disabled button beside an enabled control (a clear\n * button with nothing to clear) does not dim the label. One key per selector: no comma lists.\n */\nconst disabledLabelRules = () =>\n Object.fromEntries(\n [\n \"&[data-disabled]\",\n ...FIELD_CONTROL_SLOTS.map(\n (slot) => `&:has([${SLOT_ATTR}=\"${slot}\"]:disabled)`\n ),\n ].flatMap((condition) =>\n FIELD_LABEL_SLOTS.map((label) => [\n `${condition} [${SLOT_ATTR}=\"${label}\"]`,\n DISABLED_LABEL,\n ])\n )\n )\n\n/**\n * Password managers (1Password, NordPass) inject a button next to the control, sometimes inline. In\n * a column the injection became a new row and the field grew (#5). It is placed in a second column\n * beside the control instead, centred on the control's row, with negative block margins as deep as\n * the field's padding so a button taller than the control does not stretch the row either.\n * Recognised as an element directly after a control that is not one of Zenith's own parts.\n */\nconst BESIDE_CONTROL = {\n alignSelf: \"center\",\n marginTop: `calc(-1 * ${tokens.fieldPaddingY})`,\n marginBottom: `calc(-1 * ${tokens.fieldPaddingY})`,\n}\n\n/** The parts that sit in the control's row: the controls, or a group holding one. */\nconst CONTROL_ROW_SLOTS = [...FIELD_CONTROL_SLOTS, \"field-input-group\"]\n\n/** Every part spans both columns, as it stacked before; a control takes the first column. */\nconst controlRowRules = () =>\n Object.fromEntries([\n [\"& > *\", { gridColumnStart: 1, gridColumnEnd: -1 }],\n ...CONTROL_ROW_SLOTS.flatMap((slot) => [\n [\n `& > [${SLOT_ATTR}=\"${slot}\"]`,\n { gridColumnStart: 1, gridColumnEnd: 2 },\n ],\n [\n `& > [${SLOT_ATTR}=\"${slot}\"] + :not([${SLOT_ATTR}])`,\n {\n gridColumnStart: 2,\n gridColumnEnd: 3,\n marginLeft: tokens.spacingElement1,\n ...BESIDE_CONTROL,\n },\n ],\n ]),\n ])\n\nconst useStyles = makeZenithStyles({\n root: {\n position: \"relative\",\n // A grid, not a column, so an injected button can sit beside the control (see BESIDE_CONTROL).\n // The second column is empty and zero-wide unless something is injected.\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) auto\",\n width: \"100%\",\n // Density-bound (DENSITY-SPEC.md §2.3, WP9B1-ACCEPTANCE-WP9B2A): normal resolves to the same\n // spacingElement2/spacingElement3 values this used before binding — `spacingGroup1` (0.5rem)\n // is a half-step short of the 0.75rem v1 actually uses, which three components got wrong by\n // reaching for it directly; that pitfall is why fieldPaddingX's normal tier aliases\n // spacingElement3, not spacingGroup1 (packages/tokens/spec/density.yaml).\n paddingTop: tokens.fieldPaddingY,\n paddingBottom: tokens.fieldPaddingY,\n paddingLeft: tokens.fieldPaddingX,\n paddingRight: tokens.fieldPaddingX,\n // Row gap only: a column gap would narrow the control even while the second column is empty.\n rowGap: tokens.spacingElement1,\n ...shorthands.borderRadius(tokens.radiusLg),\n transitionProperty: \"all\",\n transitionDuration: \"75ms\",\n outlineOffset: \"2px\",\n outlineWidth: \"2px\",\n outlineStyle: \"none\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n \"&[data-focused='true'], &[data-focus-visible]\": {\n outlineStyle: \"solid\",\n outlineColor: tokens.focusRing,\n },\n \"&[data-invalid]\": {\n backgroundColor: tokens.errorSoft,\n },\n\n // Label's disabled styling, declared here because Field owns the elements these selectors are\n // rooted at. On Label they were written as \"[data-disabled] &\", \":disabled ~ &\" and\n // \"[data-disabled] ~ &\"; Griffel does not substitute `&` in that position and emits\n // `.hash<selector> .hash`, which never matches, so a label in a disabled field never dimmed.\n // See src/ancestor-selector.test.ts. The port of those rules still missed: they named the\n // `label` slot while FieldLabel emits `field-label`, and the `~` forms needed the label AFTER\n // the control, but it comes first. `:has()` reaches the control wherever it sits.\n ...disabledLabelRules(),\n ...controlRowRules(),\n },\n rootDefault: {\n backgroundColor: tokens.grayA3,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n },\n rootHighlight: {\n backgroundColor: tokens.accentA3,\n \":hover\": {\n backgroundColor: tokens.accentA4,\n },\n },\n rootReadonly: {\n backgroundColor: tokens.grayA3,\n },\n rootDestructive: {\n backgroundColor: tokens.errorSoft,\n \":hover\": {\n backgroundColor: tokens.errorA4,\n },\n },\n fieldSet: {\n display: \"flex\",\n flexDirection: \"column\",\n // Density-bound (DENSITY-SPEC.md §2.3): normal resolves to the same spacingLayout2 (32px)\n // this used before binding.\n ...shorthands.gap(tokens.fieldSetGap),\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n ...shorthands.margin(0),\n },\n fieldGroup: {\n display: \"flex\",\n width: \"100%\",\n ...shorthands.gap(tokens.spacingElement2),\n },\n fieldGroupColumn: {\n flexDirection: \"column\",\n },\n fieldGroupRow: {\n flexDirection: \"row\",\n },\n fieldContent: {\n display: \"flex\",\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: \"0%\",\n flexDirection: \"column\",\n ...shorthands.gap(tokens.spacingElement2),\n lineHeight: \"1.375\",\n },\n label: {\n minHeight: \"1rem\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n // No width: the label stretches across the field's column, so the whole label row is a hit\n // area for the control rather than only the text. Field reads as one box and is aimed at as one.\n display: \"flex\",\n ...shorthands.gap(tokens.spacingElement2),\n cursor: \"default\",\n color: tokens.grayA12,\n \"&[data-disabled]\": {\n opacity: 0.5,\n },\n },\n labelContent: {\n display: \"inline-flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n transitionProperty: \"opacity\",\n transitionDuration: \"150ms\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n },\n labelContentHover: {\n width: 0,\n height: 0,\n overflowX: \"visible\",\n overflowY: \"visible\",\n opacity: 0,\n pointerEvents: \"none\",\n },\n description: {\n fontSize: tokens.textXs,\n lineHeight: \"1.5\",\n fontWeight: tokens.fontWeightNormal,\n ...shorthands.margin(0),\n \"& a\": {\n textDecorationLine: \"underline\",\n textUnderlineOffset: \"4px\",\n },\n },\n descriptionDefault: {\n color: tokens.grayA12,\n },\n descriptionHelper: {\n color: tokens.grayA11,\n },\n error: {\n color: tokens.errorOnSoft,\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n },\n errorList: {\n display: \"flex\",\n flexDirection: \"column\",\n ...shorthands.margin(0),\n paddingLeft: \"1.25rem\",\n listStyleType: \"disc\",\n },\n errorListItem: {\n color: tokens.errorOnSoft,\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightNormal,\n marginTop: \"0.25rem\",\n marginBottom: \"0.25rem\",\n },\n input: {\n width: \"100%\",\n // Density-bound (DENSITY-SPEC.md §2.3): normal resolves to the same \"1.5rem\" this used before\n // binding. FieldComboboxInput (field-combobox.tsx) has its OWN separate makeZenithStyles call\n // and its own unrelated \"input\" key (width: \"100%\" only, no height) — this binding does not\n // reach it; review corrected an earlier claim that it did.\n height: tokens.fieldInputHeight,\n outlineStyle: \"none\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n \"::placeholder\": {\n color: tokens.grayA8,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n },\n },\n inputGroup: {\n display: \"flex\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement1),\n width: \"100%\",\n // Already a row, so an injected button lands beside the input; it must not stretch the row.\n [`& > [${SLOT_ATTR}=\"field-input\"] + :not([${SLOT_ATTR}])`]: BESIDE_CONTROL,\n },\n textarea: {\n width: \"100%\",\n outlineStyle: \"none\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA12,\n backgroundColor: \"transparent\",\n ...shorthands.border(\"0\"),\n ...shorthands.padding(0),\n \"::placeholder\": {\n color: tokens.grayA8,\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n },\n },\n resizeNone: {\n resize: \"none\",\n },\n resizeVertical: {\n resize: \"vertical\",\n },\n resizeHorizontal: {\n resize: \"horizontal\",\n },\n addon: {\n color: tokens.grayA11,\n display: \"flex\",\n height: \"auto\",\n cursor: \"text\",\n whiteSpace: \"nowrap\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightNormal,\n userSelect: \"none\",\n },\n addonStart: {\n order: -1,\n },\n addonEnd: {\n order: 1,\n },\n})\n\n// fieldVariants helper for v1 API compatibility\nexport const fieldVariants = ({\n variant = \"default\",\n}: { variant?: FieldVariant } = {}) => {\n return variant\n}\n\nexport type FieldProps = Omit<React.ComponentProps<\"div\">, \"className\"> & {\n className?: string\n variant?: FieldVariant\n}\n\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(\n function Field(\n {\n className,\n variant = \"default\",\n children,\n onFocusCapture,\n onBlurCapture,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const inputRef = React.useRef<FieldInputRef>(null)\n const [isFocused, setIsFocused] = React.useState(false)\n\n const handleFocusCapture: React.ComponentProps<\"div\">[\"onFocusCapture\"] = (\n event\n ) => {\n setIsFocused(true)\n onFocusCapture?.(event)\n }\n\n const handleBlurCapture: React.ComponentProps<\"div\">[\"onBlurCapture\"] = (\n event\n ) => {\n setIsFocused(false)\n onBlurCapture?.(event)\n }\n\n const variantStyle =\n variant === \"highlight\"\n ? styles.rootHighlight\n : variant === \"readonly\"\n ? styles.rootReadonly\n : variant === \"destructive\"\n ? styles.rootDestructive\n : styles.rootDefault\n\n return (\n <FieldContext.Provider value={{ inputRef }}>\n <FieldRootBase\n ref={ref}\n role=\"group\"\n data-slot=\"field\"\n {...{ [SLOT_ATTR]: \"field\" }}\n data-focused={isFocused ? \"true\" : \"false\"}\n className={mergeClasses(styles.root, variantStyle, className)}\n onFocusCapture={handleFocusCapture}\n onBlurCapture={handleBlurCapture}\n {...props}\n >\n {children}\n </FieldRootBase>\n </FieldContext.Provider>\n )\n }\n)\n\nexport type FieldSetProps = React.ComponentProps<\"fieldset\">\n\nexport const FieldSet = React.forwardRef<HTMLFieldSetElement, FieldSetProps>(\n function FieldSet({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <fieldset\n ref={ref}\n data-slot=\"field-set\"\n {...{ [SLOT_ATTR]: \"field-set\" }}\n className={mergeClasses(styles.fieldSet, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldGroupProps = React.ComponentProps<\"div\"> & {\n direction?: \"column\" | \"row\"\n}\n\nexport const FieldGroup = React.forwardRef<HTMLDivElement, FieldGroupProps>(\n function FieldGroup({ className, direction = \"column\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-group\"\n {...{ [SLOT_ATTR]: \"field-group\" }}\n className={mergeClasses(\n styles.fieldGroup,\n direction === \"row\" ? styles.fieldGroupRow : styles.fieldGroupColumn,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type FieldContentProps = React.ComponentProps<\"div\">\n\nexport const FieldContent = React.forwardRef<HTMLDivElement, FieldContentProps>(\n function FieldContent({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-content\"\n {...{ [SLOT_ATTR]: \"field-content\" }}\n className={mergeClasses(styles.fieldContent, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldLabelProps = Omit<\n React.ComponentProps<\"label\">,\n \"className\"\n> & {\n className?: string\n}\n\nexport const FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <FieldLabelBase\n ref={ref}\n data-slot=\"field-label\"\n {...{ [SLOT_ATTR]: \"field-label\" }}\n className={mergeClasses(styles.label, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldLabelContentProps = React.ComponentProps<\"div\"> & {\n showOnHover?: boolean\n}\n\nexport const FieldLabelContent = React.forwardRef<\n HTMLDivElement,\n FieldLabelContentProps\n>(function FieldLabelContent({ className, showOnHover = true, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-label-content\"\n {...{ [SLOT_ATTR]: \"field-label-content\" }}\n className={mergeClasses(\n styles.labelContent,\n showOnHover && styles.labelContentHover,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type FieldDescriptionVariant = \"default\" | \"helper\"\n\nexport const fieldDescriptionVariants = ({\n variant = \"default\",\n}: { variant?: FieldDescriptionVariant } = {}) => {\n return variant\n}\n\nexport type FieldDescriptionProps = Omit<\n React.ComponentProps<\"p\">,\n \"className\"\n> & {\n className?: string\n variant?: FieldDescriptionVariant\n}\n\nexport const FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(function FieldDescription({ className, variant = \"default\", ...props }, ref) {\n const styles = useStyles()\n\n const variantStyle =\n variant === \"helper\" ? styles.descriptionHelper : styles.descriptionDefault\n\n return (\n <FieldDescriptionBase\n ref={ref}\n data-slot=\"field-description\"\n {...{ [SLOT_ATTR]: \"field-description\" }}\n className={mergeClasses(styles.description, variantStyle, className)}\n {...props}\n />\n )\n})\n\nexport type FieldErrorProps = Omit<React.ComponentProps<\"div\">, \"className\"> & {\n className?: string\n errors?: Array<{ message?: string } | undefined>\n}\n\nexport const FieldError = React.forwardRef<HTMLDivElement, FieldErrorProps>(\n function FieldError({ className, children, errors, ...props }, ref) {\n const styles = useStyles()\n\n const content = React.useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors.length === 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className={styles.errorList}>\n {uniqueErrors.map(\n (error, index) =>\n error?.message && (\n <li className={styles.errorListItem} key={index}>\n {error.message}\n </li>\n )\n )}\n </ul>\n )\n }, [children, errors, styles.errorList, styles.errorListItem])\n\n if (!content) {\n return null\n }\n\n return (\n <FieldErrorBase\n ref={ref}\n role=\"alert\"\n data-slot=\"field-error\"\n {...{ [SLOT_ATTR]: \"field-error\" }}\n className={mergeClasses(styles.error, className)}\n {...props}\n >\n {content}\n </FieldErrorBase>\n )\n }\n)\n\nexport type FieldInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"className\"\n> & {\n className?: string\n}\n\nexport const FieldInput = React.forwardRef<HTMLInputElement, FieldInputProps>(\n function FieldInput({ className, ...props }, forwardedRef) {\n const styles = useStyles()\n const { inputRef } = useFieldContext()\n\n return (\n <FieldControlBase\n ref={(el: HTMLElement | null) => {\n inputRef.current = el as HTMLInputElement | null\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el as HTMLInputElement)\n } else if (forwardedRef) {\n forwardedRef.current = el as HTMLInputElement | null\n }\n }}\n data-readonly={props.readOnly}\n data-slot=\"field-input\"\n {...{ [SLOT_ATTR]: \"field-input\" }}\n className={mergeClasses(styles.input, className)}\n {...props}\n />\n )\n }\n)\n\nexport type FieldInputGroupProps = React.ComponentProps<\"div\">\n\nexport const FieldInputGroup = React.forwardRef<\n HTMLDivElement,\n FieldInputGroupProps\n>(function FieldInputGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n data-slot=\"field-input-group\"\n {...{ [SLOT_ATTR]: \"field-input-group\" }}\n className={mergeClasses(styles.inputGroup, className)}\n {...props}\n />\n )\n})\n\nexport type FieldTextareaResize = \"none\" | \"vertical\" | \"horizontal\"\n\nexport type FieldTextareaProps = React.ComponentProps<\"textarea\"> & {\n resize?: FieldTextareaResize\n}\n\nexport const FieldTextarea = React.forwardRef<\n HTMLTextAreaElement,\n FieldTextareaProps\n>(function FieldTextarea(\n { className, resize = \"none\", ...props },\n forwardedRef\n) {\n const styles = useStyles()\n const { inputRef } = useFieldContext()\n\n const resizeStyle =\n resize === \"vertical\"\n ? styles.resizeVertical\n : resize === \"horizontal\"\n ? styles.resizeHorizontal\n : styles.resizeNone\n\n return (\n <textarea\n {...props}\n ref={(el: HTMLTextAreaElement | null) => {\n inputRef.current = el\n if (typeof forwardedRef === \"function\") {\n forwardedRef(el)\n } else if (forwardedRef) {\n forwardedRef.current = el\n }\n }}\n data-readonly={props.readOnly}\n data-slot=\"field-textarea\"\n {...{ [SLOT_ATTR]: \"field-textarea\" }}\n data-resize={resize}\n className={mergeClasses(styles.textarea, resizeStyle, className)}\n />\n )\n})\n\nexport type FieldGroupAddonAlign = \"start\" | \"end\"\n\nexport const inputGroupAddonVariants = ({\n align = \"start\",\n}: { align?: FieldGroupAddonAlign } = {}) => {\n return align\n}\n\nexport type FieldGroupAddonProps = React.ComponentProps<\"div\"> & {\n align?: FieldGroupAddonAlign\n}\n\nexport const FieldGroupAddon = React.forwardRef<\n HTMLDivElement,\n FieldGroupAddonProps\n>(function FieldGroupAddon({ className, align = \"start\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n {...{ [SLOT_ATTR]: \"input-group-addon\" }}\n data-align={align}\n className={mergeClasses(\n styles.addon,\n align === \"end\" ? styles.addonEnd : styles.addonStart,\n className\n )}\n {...props}\n />\n )\n})\n"],"names":["FieldRootBase","FieldLabelBase","FieldControlBase","FieldDescriptionBase","FieldErrorBase","FieldContext","React","useFieldContext","context","useOptionalFieldContext","FIELD_CONTROL_SLOTS","FIELD_LABEL_SLOTS","DISABLED_LABEL","disabledLabelRules","slot","SLOT_ATTR","condition","label","BESIDE_CONTROL","tokens.fieldPaddingY","CONTROL_ROW_SLOTS","controlRowRules","tokens.spacingElement1","useStyles","makeZenithStyles","tokens.fieldPaddingX","shorthands","tokens.radiusLg","tokens.focusRing","tokens.errorSoft","tokens.grayA3","tokens.grayA4","tokens.accentA3","tokens.accentA4","tokens.errorA4","tokens.fieldSetGap","tokens.spacingElement2","tokens.textXs","tokens.leadingXs","tokens.grayA12","tokens.fontWeightNormal","tokens.grayA11","tokens.errorOnSoft","tokens.fieldInputHeight","tokens.textSm","tokens.leadingSm","tokens.grayA8","fieldVariants","variant","Field","className","children","onFocusCapture","onBlurCapture","props","ref","styles","inputRef","isFocused","setIsFocused","handleFocusCapture","event","handleBlurCapture","variantStyle","jsx","mergeClasses","FieldSet","FieldGroup","direction","FieldContent","FieldLabel","FieldLabelContent","showOnHover","fieldDescriptionVariants","FieldDescription","FieldError","errors","content","uniqueErrors","error","_a","index","FieldInput","forwardedRef","el","FieldInputGroup","FieldTextarea","resize","resizeStyle","inputGroupAddonVariants","align","FieldGroupAddon"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { jsx as t, jsxs as D } from "react/jsx-runtime";
2
2
  import * as i from "react";
3
3
  import { useSensors as Q, useSensor as j, DndContext as tt, closestCenter as et, DragOverlay as ot, KeyboardSensor as rt, PointerSensor as nt } from "../../vendor/.bun/@dnd-kit_core@6.3.1_6f4b9a1cfb20c0ae/vendor/@dnd-kit/core/dist/core.esm.js";
4
4
  import { SortableContext as it, verticalListSortingStrategy as st, arrayMove as at, useSortable as lt } from "../../vendor/.bun/@dnd-kit_sortable@10.0.0_1d291640e1250bbe/vendor/@dnd-kit/sortable/dist/sortable.esm.js";
5
- import { mergeClasses as f, SLOT_ATTR as g, shorthands as p } from "@epilot/zenith-runtime/v1";
5
+ import { mergeClasses as f, SLOT_ATTR as m, shorthands as p } from "@epilot/zenith-runtime/v1";
6
6
  import { makeZenithStyles as ct } from "../../styles/make-styles.js";
7
- import { semSuccessLight as dt, semWarningLight as ut, semErrorLight as pt, spacingGroup2 as F, grayA12 as V, fontWeightSemibold as mt, leadingSm as X, textSm as $, grayA10 as gt, fontWeightMedium as ft, semAccentSolid as ht, accentA8 as xt, grayA11 as G, grayA8 as vt, leadingXs as yt, textXs as bt, listIndexPaddingX as K, listItemPaddingX as Z, listItemPaddingY as B, listIndexMinWidth as wt, grayA2 as _, radiusMd as P, semSuccessSoftHover as It, semWarningSoftHover as St, semErrorSoftHover as Lt, semAccentSoft as kt, semSuccessDefault as Ct, semSuccessSoft as Dt, semWarningDefault as Tt, semWarningSoft as Wt, semErrorDefault as Et, semErrorSoft as Nt, listItemMinHeight as At, spacingElement3 as Ot, grayA5 as Gt, spacingElement1 as Bt, spacingElement2 as Pt, listItemGap as Rt } from "../../tokens/index.js";
7
+ import { successLight as dt, warningLight as ut, errorLight as pt, spacingGroup2 as F, grayA12 as V, fontWeightSemibold as gt, leadingSm as X, textSm as $, grayA10 as mt, fontWeightMedium as ft, accentSolid as ht, accentA8 as xt, grayA11 as G, grayA8 as vt, leadingXs as yt, textXs as bt, listIndexPaddingX as K, listItemPaddingX as Z, listItemPaddingY as B, listIndexMinWidth as wt, grayA2 as _, radiusMd as P, successSoftHover as It, warningSoftHover as St, errorSoftHover as Lt, accentSoft as kt, successDefault as Ct, successSoft as Dt, warningDefault as Tt, warningSoft as Wt, errorDefault as Nt, errorSoft as Et, listItemMinHeight as Ot, spacingElement3 as At, grayA5 as Gt, spacingElement1 as Bt, spacingElement2 as Pt, listItemGap as Rt } from "../../tokens/index.js";
8
8
  const Ht = (n) => /* @__PURE__ */ D(
9
9
  "svg",
10
10
  {
@@ -94,7 +94,7 @@ const Ht = (n) => /* @__PURE__ */ D(
94
94
  transitionProperty: "color, background-color, border-color, text-decoration-color, fill, stroke",
95
95
  transitionDuration: "150ms",
96
96
  transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
97
- minHeight: At,
97
+ minHeight: Ot,
98
98
  ...p.gap(Rt),
99
99
  ...p.padding(B, Z),
100
100
  fontSize: $,
@@ -108,8 +108,8 @@ const Ht = (n) => /* @__PURE__ */ D(
108
108
  // Status variants
109
109
  statusDefault: {},
110
110
  statusError: {
111
- backgroundColor: Nt,
112
- color: Et
111
+ backgroundColor: Et,
112
+ color: Nt
113
113
  },
114
114
  statusWarning: {
115
115
  backgroundColor: Wt,
@@ -317,7 +317,7 @@ const Ht = (n) => /* @__PURE__ */ D(
317
317
  width: "1rem",
318
318
  height: "1rem",
319
319
  flexShrink: 0,
320
- color: gt,
320
+ color: mt,
321
321
  transitionProperty: "transform",
322
322
  transitionDuration: "150ms",
323
323
  transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)"
@@ -338,10 +338,10 @@ const Ht = (n) => /* @__PURE__ */ D(
338
338
  marginTop: F,
339
339
  display: "block",
340
340
  listStyleType: "none",
341
- ...p.padding("0.375rem", Ot),
341
+ ...p.padding("0.375rem", At),
342
342
  fontSize: $,
343
343
  lineHeight: X,
344
- fontWeight: mt,
344
+ fontWeight: gt,
345
345
  color: V,
346
346
  "&:first-child": {
347
347
  marginTop: 0
@@ -407,23 +407,23 @@ const Ht = (n) => /* @__PURE__ */ D(
407
407
  i.isValidElement
408
408
  ), T = I.map(
409
409
  (d, C) => d.type === U ? i.cloneElement(d, { index: C }) : d
410
- ), h = I.filter((d) => d.type === U), a = h.map((d) => d.props.value).filter((d) => typeof d == "string"), [S, W] = i.useState(null), L = S ? a.indexOf(S) : -1, k = S != null ? h.find((d) => d.props.value === S) : void 0, E = Q(
410
+ ), h = I.filter((d) => d.type === U), a = h.map((d) => d.props.value).filter((d) => typeof d == "string"), [S, W] = i.useState(null), L = S ? a.indexOf(S) : -1, k = S != null ? h.find((d) => d.props.value === S) : void 0, N = Q(
411
411
  j(nt, { activationConstraint: { distance: 3 } }),
412
412
  j(rt)
413
- ), N = (d) => {
413
+ ), E = (d) => {
414
414
  W(d.active.id);
415
- }, O = (d) => {
415
+ }, A = (d) => {
416
416
  W(null);
417
- const { active: C, over: m } = d;
418
- if (!m || C.id === m.id) return;
419
- const z = a.indexOf(C.id), M = a.indexOf(m.id);
417
+ const { active: C, over: g } = d;
418
+ if (!g || C.id === g.id) return;
419
+ const z = a.indexOf(C.id), M = a.indexOf(g.id);
420
420
  z === -1 || M === -1 || r == null || r(at(a, z, M));
421
- }, A = /* @__PURE__ */ t(
421
+ }, O = /* @__PURE__ */ t(
422
422
  "ol",
423
423
  {
424
424
  ref: w,
425
425
  "data-slot": "list",
426
- [g]: "list",
426
+ [m]: "list",
427
427
  ...u !== void 0 ? { "data-density": u } : {},
428
428
  className: f(v.list, o),
429
429
  ...b,
@@ -433,10 +433,10 @@ const Ht = (n) => /* @__PURE__ */ D(
433
433
  return /* @__PURE__ */ t(Y.Provider, { value: { striped: e, showIndex: c, sortable: s }, children: s ? /* @__PURE__ */ D(
434
434
  tt,
435
435
  {
436
- sensors: E,
436
+ sensors: N,
437
437
  collisionDetection: et,
438
- onDragStart: N,
439
- onDragEnd: O,
438
+ onDragStart: E,
439
+ onDragEnd: A,
440
440
  onDragCancel: () => W(null),
441
441
  children: [
442
442
  /* @__PURE__ */ t(
@@ -444,7 +444,7 @@ const Ht = (n) => /* @__PURE__ */ D(
444
444
  {
445
445
  items: a,
446
446
  strategy: st,
447
- children: A
447
+ children: O
448
448
  }
449
449
  ),
450
450
  /* @__PURE__ */ t(ot, { children: k ? /* @__PURE__ */ t(
@@ -460,7 +460,7 @@ const Ht = (n) => /* @__PURE__ */ D(
460
460
  ) : null })
461
461
  ]
462
462
  }
463
- ) : A });
463
+ ) : O });
464
464
  }), Vt = i.forwardRef(function({ className: o, children: l, ...e }, c) {
465
465
  const s = y();
466
466
  return /* @__PURE__ */ t(
@@ -468,7 +468,7 @@ const Ht = (n) => /* @__PURE__ */ D(
468
468
  {
469
469
  ref: c,
470
470
  "data-slot": "list-item-actions",
471
- [g]: "list-item-actions",
471
+ [m]: "list-item-actions",
472
472
  onPointerDown: (r) => r.stopPropagation(),
473
473
  className: f(s.actions, o),
474
474
  ...e,
@@ -482,7 +482,7 @@ const Ht = (n) => /* @__PURE__ */ D(
482
482
  {
483
483
  ref: e,
484
484
  "data-slot": "list-item-text",
485
- [g]: "list-item-text",
485
+ [m]: "list-item-text",
486
486
  className: f(c.text, o),
487
487
  ...l
488
488
  }
@@ -494,7 +494,7 @@ const Ht = (n) => /* @__PURE__ */ D(
494
494
  {
495
495
  ref: e,
496
496
  "data-slot": "list-item-description",
497
- [g]: "list-item-description",
497
+ [m]: "list-item-description",
498
498
  className: f(c.description, o),
499
499
  ...l
500
500
  }
@@ -515,21 +515,21 @@ const Ht = (n) => /* @__PURE__ */ D(
515
515
  attributes: I,
516
516
  ...T
517
517
  }, h) {
518
- const a = y(), { striped: S, showIndex: W, sortable: L } = J(), k = L && !w, E = i.Children.toArray(s), N = E.find(
519
- (m) => i.isValidElement(m) && m.type === Vt
520
- ), O = E.filter((m) => m !== N), A = i.useCallback(
521
- (m) => {
522
- r == null || r(m), typeof h == "function" ? h(m) : h && (h.current = m);
518
+ const a = y(), { striped: S, showIndex: W, sortable: L } = J(), k = L && !w, N = i.Children.toArray(s), E = N.find(
519
+ (g) => i.isValidElement(g) && g.type === Vt
520
+ ), A = N.filter((g) => g !== E), O = i.useCallback(
521
+ (g) => {
522
+ r == null || r(g), typeof h == "function" ? h(g) : h && (h.current = g);
523
523
  },
524
524
  [r, h]
525
525
  ), d = e === "error" ? a.statusError : e === "warning" ? a.statusWarning : e === "success" ? a.statusSuccess : a.statusDefault, C = k ? e === "error" ? a.interactiveError : e === "warning" ? a.interactiveWarning : e === "success" ? a.interactiveSuccess : a.interactiveDefault : void 0;
526
526
  return /* @__PURE__ */ D(
527
527
  "li",
528
528
  {
529
- ref: A,
529
+ ref: O,
530
530
  style: b,
531
531
  "data-slot": "list-item",
532
- [g]: "list-item",
532
+ [m]: "list-item",
533
533
  "data-status": e,
534
534
  "data-value": l,
535
535
  onPointerDown: L ? u == null ? void 0 : u.onPointerDown : void 0,
@@ -548,7 +548,7 @@ const Ht = (n) => /* @__PURE__ */ D(
548
548
  "span",
549
549
  {
550
550
  "data-slot": "list-drop-indicator",
551
- [g]: "list-drop-indicator",
551
+ [m]: "list-drop-indicator",
552
552
  "aria-hidden": "true",
553
553
  className: f(
554
554
  a.dropIndicator,
@@ -560,7 +560,7 @@ const Ht = (n) => /* @__PURE__ */ D(
560
560
  "span",
561
561
  {
562
562
  "data-slot": "list-item-index",
563
- [g]: "list-item-index",
563
+ [m]: "list-item-index",
564
564
  "aria-hidden": "true",
565
565
  className: a.indexBase,
566
566
  children: (c ?? 0) + 1
@@ -570,13 +570,13 @@ const Ht = (n) => /* @__PURE__ */ D(
570
570
  "span",
571
571
  {
572
572
  "data-slot": "list-item-content",
573
- [g]: "list-item-content",
573
+ [m]: "list-item-content",
574
574
  className: a.content,
575
- children: O
575
+ children: A
576
576
  }
577
577
  ),
578
578
  /* @__PURE__ */ t(jt, { status: e }),
579
- N,
579
+ E,
580
580
  L && /* @__PURE__ */ t(
581
581
  "button",
582
582
  {
@@ -648,7 +648,7 @@ const Ht = (n) => /* @__PURE__ */ D(
648
648
  {
649
649
  ref: x,
650
650
  "data-slot": "list-group",
651
- [g]: "list-group",
651
+ [m]: "list-group",
652
652
  "data-state": u ? "open" : "closed",
653
653
  className: f(b.group, c),
654
654
  ...r,
@@ -664,7 +664,7 @@ const Ht = (n) => /* @__PURE__ */ D(
664
664
  ref: c,
665
665
  type: "button",
666
666
  "data-slot": "list-group-trigger",
667
- [g]: "list-group-trigger",
667
+ [m]: "list-group-trigger",
668
668
  "aria-expanded": r.open,
669
669
  "aria-controls": r.contentId,
670
670
  onClick: () => r.setOpen(!r.open),
@@ -693,7 +693,7 @@ const Ht = (n) => /* @__PURE__ */ D(
693
693
  {
694
694
  ref: c,
695
695
  "data-slot": "list-group-label",
696
- [g]: "list-group-label",
696
+ [m]: "list-group-label",
697
697
  className: f(s.standaloneGroupLabel, o),
698
698
  children: l
699
699
  }
@@ -704,7 +704,7 @@ const Ht = (n) => /* @__PURE__ */ D(
704
704
  {
705
705
  ref: c,
706
706
  "data-slot": "list-group-content",
707
- [g]: "list-group-content",
707
+ [m]: "list-group-content",
708
708
  className: f(s.list, s.groupContentList, o),
709
709
  ...e,
710
710
  children: l