@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.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/dist/components/accordion/accordion.js +57 -48
- package/dist/components/accordion/accordion.js.map +1 -1
- package/dist/components/alert-dialog/alert-dialog.js +120 -92
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar-group.js +38 -35
- package/dist/components/avatar/avatar-group.js.map +1 -1
- package/dist/components/avatar/avatar.js +78 -71
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +60 -55
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.js +99 -54
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/components/button/button.js +87 -77
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-group/button-group.js +36 -32
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/callout/callout.js +105 -98
- package/dist/components/callout/callout.js.map +1 -1
- package/dist/components/card/card.js +62 -52
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +22 -19
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/code-block/code-block.js +135 -123
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-editor/code-editor.js +276 -260
- package/dist/components/code-editor/code-editor.js.map +1 -1
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
- package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
- package/dist/components/command/command.js +116 -105
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table-body.js +38 -34
- package/dist/components/data-table/data-table-body.js.map +1 -1
- package/dist/components/data-table/data-table-column-header.js +30 -26
- package/dist/components/data-table/data-table-column-header.js.map +1 -1
- package/dist/components/data-table/data-table-column-order.js +79 -73
- package/dist/components/data-table/data-table-column-order.js.map +1 -1
- package/dist/components/data-table/data-table-column-visibility.js +25 -22
- package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
- package/dist/components/data-table/data-table-content.js +47 -44
- package/dist/components/data-table/data-table-content.js.map +1 -1
- package/dist/components/data-table/data-table-error.js +36 -32
- package/dist/components/data-table/data-table-error.js.map +1 -1
- package/dist/components/data-table/data-table-footer.js +10 -8
- package/dist/components/data-table/data-table-footer.js.map +1 -1
- package/dist/components/data-table/data-table-header-draggable.js +40 -36
- package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
- package/dist/components/data-table/data-table-loading.js +21 -18
- package/dist/components/data-table/data-table-loading.js.map +1 -1
- package/dist/components/data-table/data-table-resize-handle.js +13 -11
- package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
- package/dist/components/data-table/data-table-row.js +47 -44
- package/dist/components/data-table/data-table-row.js.map +1 -1
- package/dist/components/data-table/data-table-toolbar.js +9 -7
- package/dist/components/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data-table/data-table.js +48 -46
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/date-range-picker/date-range-picker.js +173 -164
- package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
- package/dist/components/date-range-picker/range-calendar.js +36 -34
- package/dist/components/date-range-picker/range-calendar.js.map +1 -1
- package/dist/components/date-time-picker/calendar.js +290 -272
- package/dist/components/date-time-picker/calendar.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
- package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
- package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
- package/dist/components/date-time-picker/date-time-picker.js +42 -40
- package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
- package/dist/components/date-time-picker/time-picker.js +95 -87
- package/dist/components/date-time-picker/time-picker.js.map +1 -1
- package/dist/components/dialog/dialog.js +115 -95
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +144 -109
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +196 -176
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +137 -126
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +237 -219
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/option-card/option-card.js +129 -116
- package/dist/components/option-card/option-card.js.map +1 -1
- package/dist/components/pill/pill.js +55 -51
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +53 -36
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +38 -34
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/scroll-area/scroll-area.js +38 -35
- package/dist/components/scroll-area/scroll-area.js.map +1 -1
- package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
- package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
- package/dist/components/segmented-control/segmented-control.js +93 -85
- package/dist/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/select/select.js +149 -128
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/separator/separator.js +19 -16
- package/dist/components/separator/separator.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +34 -30
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/spinner/spinner.js +22 -17
- package/dist/components/spinner/spinner.js.map +1 -1
- package/dist/components/surface/surface.js +25 -22
- package/dist/components/surface/surface.js.map +1 -1
- package/dist/components/switch/switch.js +66 -57
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +139 -129
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +104 -90
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/tabs.js +206 -128
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/toast/toast.js +112 -100
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toggle/toggle.js +32 -30
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +59 -46
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/lib/clear-button.js +18 -17
- package/dist/lib/clear-button.js.map +1 -1
- package/dist/styles/host-reset.js +47 -0
- package/dist/styles/host-reset.js.map +1 -0
- package/dist/styles/overlay-layer.js +5 -0
- package/dist/styles/overlay-layer.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +8 -7
- package/scripts/migration-diagnostics.mjs +42 -7
- package/scripts/migration-sweep.mjs +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-pagination.js","sources":["../../../src/components/table/table-pagination.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps, ComponentProps } from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\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\"\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport {\n calculatePagination,\n clampPage,\n getPageNumbers,\n} from \"../../lib/pagination\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../tooltip/tooltip\"\nimport { Button } from \"../button/button\"\n\n// Navigation icons\nconst IconFirstPage = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M6 6v12\" />\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronLeft = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronRight = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nconst IconLastPage = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n <path d=\"M18 6v12\" />\n </svg>\n)\n\n// Select icons\nconst ChevronDownIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst CheckIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100]\n\nconst useStyles = makeZenithStyles({\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingGroup1,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n left: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement2,\n },\n navButton: {\n backgroundColor: tokens.grayA3,\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":disabled\": {\n backgroundColor: tokens.grayA3,\n color: tokens.accentA8,\n pointerEvents: \"none\",\n },\n },\n pageButtonActive: {\n pointerEvents: \"none\",\n },\n pageButtonInactive: {\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n \":active\": {\n backgroundColor: tokens.grayA4,\n },\n },\n ellipsisButton: {\n letterSpacing: tokens.trackingNormal,\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n },\n right: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup1,\n paddingRight: \"0.125rem\",\n },\n range: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n fontVariantNumeric: \"tabular-nums\",\n },\n selectTrigger: {\n display: \"flex\",\n height: \"2rem\",\n width: \"auto\",\n minWidth: \"4rem\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingElement1,\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.grayA3,\n ...shorthands.paddingInline(\"0.75rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n cursor: \"pointer\",\n ...shorthands.borderWidth(0),\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":focus\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.accent8,\n outlineOffset: \"2px\",\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n selectIcon: {\n display: \"flex\",\n alignItems: \"center\",\n color: tokens.grayA11,\n },\n selectContent: {\n position: \"relative\",\n zIndex: 50,\n ...shorthands.overflow(\"hidden\"),\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA6),\n backgroundColor: tokens.body,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n selectViewport: {\n ...shorthands.padding(\"0.25rem\"),\n },\n selectLabel: {\n ...shorthands.padding(\"0.375rem\", \"0.5rem\"),\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA11,\n },\n selectItem: {\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.padding(\"0.375rem\", \"0.5rem\", \"0.375rem\", \"2rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \":focus\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n selectItemIndicator: {\n position: \"absolute\",\n left: \"0.5rem\",\n display: \"flex\",\n width: \"1rem\",\n height: \"1rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n})\n\nconst DEFAULT_PAGINATION_LABELS = {\n navigation: \"Pagination\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n goToPage: (page: number) => `Page ${page}`,\n jumpToPage: (page: number) => `Jump to page ${page}`,\n pageSizeSelector: (size: number) => `Rows per page: ${size}`,\n} as const satisfies TablePaginationLabels\n\nexport type TablePaginationLabels = {\n /** Label for the pagination navigation region. */\n navigation?: string\n /** Label for first page button. */\n firstPage?: string\n /** Label for previous page button. */\n previousPage?: string\n /** Label for next page button. */\n nextPage?: string\n /** Label for last page button. */\n lastPage?: string\n /** Label generator for page number buttons. Receives 1-indexed page number. */\n goToPage?: (page: number) => string\n /** Label generator for ellipsis jump buttons. Receives target page number. */\n jumpToPage?: (page: number) => string\n /** Label generator for page size selector. Receives current page size. */\n pageSizeSelector?: (pageSize: number) => string\n /** Label for page size dropdown header. */\n resultsPerPage?: string\n /** Label generator for the range display. Receives start, end, and total. */\n rangeDisplay?: (start: number, end: number, total: number) => string\n}\n\nexport type TablePaginationProps = Omit<ComponentProps<\"div\">, \"onChange\"> & {\n /** Current page number (1-indexed) */\n page: number\n /** Total number of items across all pages */\n totalItems: number\n /** Current page size (items per page) */\n pageSize: number\n /** Callback fired when the page changes */\n onPageChange: (page: number) => void\n /** Callback fired when the page size changes */\n onPageSizeChange: (pageSize: number) => void\n /** Available page size options for the dropdown */\n pageSizeOptions?: number[]\n /** Number of sibling pages to show on each side of current page */\n siblingCount?: number\n /** Whether the pagination controls are disabled */\n disabled?: boolean\n /** Labels for i18n. All labels are optional for backwards compatibility but recommended. */\n labels?: TablePaginationLabels\n}\n\nexport const TablePagination = React.forwardRef<\n HTMLDivElement,\n TablePaginationProps\n>(function TablePagination(\n {\n page,\n totalItems,\n pageSize,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,\n siblingCount = 2,\n disabled = false,\n labels: labelsProp,\n className,\n ...props\n },\n ref\n) {\n /**\n * Accessible names for the controls. Every button here is icon-only, so\n * without a name it reaches assistive technology as an unlabelled button --\n * which is what `actions.mdx` forbids, and what this component shipped\n * whenever a caller omitted `labels`. The caller's values still win; these\n * only fill the gaps, so a localised app overrides them exactly as before.\n */\n const labels = { ...DEFAULT_PAGINATION_LABELS, ...labelsProp }\n const styles = useStyles()\n // Closes the previously deferred inline Select portal — stamp\n // an explicit override only when one exists in the React tree (Table/DataTable's own explicit\n // density, via DensityContextBoundary), never a fabricated default; an omitted override still\n // inherits live shell density through ordinary DOM/CSS since the portal container is a\n // descendant of <html>. Same pattern as select.tsx's SelectContent.\n const densityOverride = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n const { totalPages, start, end, isFirstPage, isLastPage } =\n calculatePagination({\n page,\n pageSize,\n totalItems,\n })\n\n const safePage = clampPage(page, totalPages)\n const pageItems = getPageNumbers(safePage, totalPages, siblingCount)\n\n const handlePageSizeChange = (value: string) => {\n const newSize = parseInt(value, 10)\n if (!isNaN(newSize)) {\n onPageSizeChange(newSize)\n }\n }\n\n // Don't render if no items\n if (totalItems === 0) {\n return null\n }\n\n return (\n <TooltipProvider>\n <div\n ref={ref}\n data-slot=\"table-pagination\"\n {...{ [SLOT_ATTR]: \"table-pagination\" }}\n data-fs-element=\"TablePagination\"\n role=\"navigation\"\n aria-label={labels?.navigation}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {/* LEFT SIDE: Navigation and page buttons */}\n <div className={styles.left}>\n {/* First page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(1)}\n aria-label={labels?.firstPage}\n className={styles.navButton}\n >\n <IconFirstPage />\n </Button>\n\n {/* Previous page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(safePage - 1)}\n aria-label={labels?.previousPage}\n className={styles.navButton}\n >\n <IconChevronLeft />\n </Button>\n\n {/* Page number buttons */}\n {pageItems.map((item, index) => {\n const key =\n item.type === \"ellipsis\"\n ? `ellipsis-${index}-${item.targetPage}`\n : `page-${item.page}`\n\n if (item.type === \"ellipsis\") {\n return (\n <Tooltip key={key}>\n <TooltipTrigger asChild>\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.targetPage)}\n aria-label={labels?.jumpToPage?.(item.targetPage)}\n className={styles.ellipsisButton}\n >\n ...\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {labels?.jumpToPage?.(item.targetPage)}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const isCurrentPage = item.page === safePage\n\n return (\n <Button\n key={key}\n variant={isCurrentPage ? \"secondary\" : \"tertiary\"}\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.page)}\n aria-label={labels?.goToPage?.(item.page)}\n aria-current={isCurrentPage ? \"page\" : undefined}\n className={\n isCurrentPage\n ? styles.pageButtonActive\n : styles.pageButtonInactive\n }\n >\n {item.page}\n </Button>\n )\n })}\n\n {/* Next page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(safePage + 1)}\n aria-label={labels?.nextPage}\n className={styles.navButton}\n >\n <IconChevronRight />\n </Button>\n\n {/* Last page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(totalPages)}\n aria-label={labels?.lastPage}\n className={styles.navButton}\n >\n <IconLastPage />\n </Button>\n </div>\n\n {/* RIGHT SIDE: Range display and page size selector */}\n <div className={styles.right}>\n {/* Range display */}\n <span\n data-slot=\"table-pagination-range\"\n className={styles.range}\n aria-live=\"polite\"\n >\n {labels?.rangeDisplay\n ? labels.rangeDisplay(start, end, totalItems)\n : `${start}-${end} / ${totalItems}`}\n </span>\n\n {/* Page size selector */}\n <SelectPrimitive.Root\n value={String(pageSize)}\n onValueChange={handlePageSizeChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n className={styles.selectTrigger}\n aria-label={labels?.pageSizeSelector?.(pageSize)}\n >\n <SelectPrimitive.Value />\n <SelectPrimitive.Icon className={styles.selectIcon}>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={styles.selectContent}\n {...(densityOverride !== undefined\n ? { \"data-density\": densityOverride }\n : {})}\n {...appearance}\n position=\"popper\"\n sideOffset={4}\n >\n <SelectPrimitive.Viewport className={styles.selectViewport}>\n <SelectPrimitive.Group>\n {labels?.resultsPerPage && (\n <SelectPrimitive.Label className={styles.selectLabel}>\n {labels.resultsPerPage}\n </SelectPrimitive.Label>\n )}\n {pageSizeOptions.map((option) => (\n <SelectPrimitive.Item\n key={option}\n value={String(option)}\n className={styles.selectItem}\n >\n <span className={styles.selectItemIndicator}>\n <SelectPrimitive.ItemIndicator>\n <CheckIcon style={{ width: 16, height: 16 }} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Group>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n </div>\n </TooltipProvider>\n )\n})\n"],"names":["IconFirstPage","props","jsxs","jsx","IconChevronLeft","IconChevronRight","IconLastPage","ChevronDownIcon","CheckIcon","DEFAULT_PAGE_SIZE_OPTIONS","useStyles","makeZenithStyles","tokens.spacingGroup1","shorthands","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","tokens.spacingElement2","tokens.grayA3","tokens.accent11","tokens.grayA4","tokens.accentA8","tokens.trackingNormal","tokens.grayA11","tokens.spacingElement1","tokens.radiusLg","tokens.accent8","tokens.grayA6","tokens.body","tokens.textXs","tokens.leadingXs","tokens.fontWeightSemibold","tokens.radiusMd","tokens.accentA3","DEFAULT_PAGINATION_LABELS","page","size","TablePagination","React","totalItems","pageSize","onPageChange","onPageSizeChange","pageSizeOptions","siblingCount","disabled","labelsProp","className","ref","labels","styles","densityOverride","useDensity","appearance","useAppearanceAttributes","totalPages","start","end","isFirstPage","isLastPage","calculatePagination","safePage","clampPage","pageItems","getPageNumbers","handlePageSizeChange","value","newSize","TooltipProvider","SLOT_ATTR","mergeClasses","Button","item","index","key","Tooltip","TooltipTrigger","_a","TooltipContent","_b","isCurrentPage","_c","SelectPrimitive.Root","SelectPrimitive.Trigger","SelectPrimitive.Value","SelectPrimitive.Icon","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Group","SelectPrimitive.Label","option","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table-pagination.js","sources":["../../../src/components/table/table-pagination.tsx"],"sourcesContent":["import * as React from \"react\"\nimport type { SVGProps, ComponentProps } from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport { OVERLAY_Z_INDEX } from \"../../styles/overlay-layer\"\nimport * as tokens from \"../../tokens\"\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport {\n calculatePagination,\n clampPage,\n getPageNumbers,\n} from \"../../lib/pagination\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../tooltip/tooltip\"\nimport { Button } from \"../button/button\"\n\n// Navigation icons\nconst IconFirstPage = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M6 6v12\" />\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronLeft = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n)\n\nconst IconChevronRight = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n)\n\nconst IconLastPage = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m9 18 6-6-6-6\" />\n <path d=\"M18 6v12\" />\n </svg>\n)\n\n// Select icons\nconst ChevronDownIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n)\n\nconst CheckIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n)\n\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100]\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingGroup1,\n ...shorthands.paddingBlock(tokens.spacingElement3),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n left: {\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingElement2,\n },\n navButton: {\n backgroundColor: tokens.grayA3,\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":disabled\": {\n backgroundColor: tokens.grayA3,\n color: tokens.accentA8,\n pointerEvents: \"none\",\n },\n },\n pageButtonActive: {\n pointerEvents: \"none\",\n },\n pageButtonInactive: {\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n \":active\": {\n backgroundColor: tokens.grayA4,\n },\n },\n ellipsisButton: {\n letterSpacing: tokens.trackingNormal,\n backgroundColor: \"transparent\",\n color: tokens.accent11,\n \":hover\": {\n backgroundColor: tokens.grayA3,\n },\n },\n right: {\n ...boxModel,\n display: \"flex\",\n alignItems: \"center\",\n gap: tokens.spacingGroup1,\n paddingRight: \"0.125rem\",\n },\n range: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n fontVariantNumeric: \"tabular-nums\",\n },\n selectTrigger: {\n ...nativeControl,\n display: \"flex\",\n height: \"2rem\",\n width: \"auto\",\n minWidth: \"4rem\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: tokens.spacingElement1,\n ...shorthands.borderRadius(tokens.radiusLg),\n backgroundColor: tokens.grayA3,\n ...shorthands.paddingInline(\"0.75rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n cursor: \"pointer\",\n ...shorthands.borderWidth(0),\n \":hover\": {\n backgroundColor: tokens.grayA4,\n },\n \":focus\": {\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.accent8,\n outlineOffset: \"2px\",\n },\n \":disabled\": {\n cursor: \"not-allowed\",\n opacity: 0.5,\n },\n },\n selectIcon: {\n display: \"flex\",\n alignItems: \"center\",\n color: tokens.grayA11,\n },\n selectContent: {\n ...boxModel,\n position: \"relative\",\n zIndex: OVERLAY_Z_INDEX,\n ...shorthands.overflow(\"hidden\"),\n ...shorthands.borderRadius(tokens.radiusLg),\n ...shorthands.border(\"1px\", \"solid\", tokens.grayA6),\n backgroundColor: tokens.body,\n boxShadow:\n \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n },\n selectViewport: {\n ...boxModel,\n ...shorthands.padding(\"0.25rem\"),\n },\n selectLabel: {\n ...boxModel,\n ...shorthands.padding(\"0.375rem\", \"0.5rem\"),\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n fontWeight: tokens.fontWeightSemibold,\n color: tokens.grayA11,\n },\n selectItem: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.borderRadius(tokens.radiusMd),\n ...shorthands.padding(\"0.375rem\", \"0.5rem\", \"0.375rem\", \"2rem\"),\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n \":focus\": {\n backgroundColor: tokens.accentA3,\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n selectItemIndicator: {\n ...boxModel,\n position: \"absolute\",\n left: \"0.5rem\",\n display: \"flex\",\n width: \"1rem\",\n height: \"1rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n})\n\nconst DEFAULT_PAGINATION_LABELS = {\n navigation: \"Pagination\",\n firstPage: \"First page\",\n previousPage: \"Previous page\",\n nextPage: \"Next page\",\n lastPage: \"Last page\",\n goToPage: (page: number) => `Page ${page}`,\n jumpToPage: (page: number) => `Jump to page ${page}`,\n pageSizeSelector: (size: number) => `Rows per page: ${size}`,\n} as const satisfies TablePaginationLabels\n\nexport type TablePaginationLabels = {\n /** Label for the pagination navigation region. */\n navigation?: string\n /** Label for first page button. */\n firstPage?: string\n /** Label for previous page button. */\n previousPage?: string\n /** Label for next page button. */\n nextPage?: string\n /** Label for last page button. */\n lastPage?: string\n /** Label generator for page number buttons. Receives 1-indexed page number. */\n goToPage?: (page: number) => string\n /** Label generator for ellipsis jump buttons. Receives target page number. */\n jumpToPage?: (page: number) => string\n /** Label generator for page size selector. Receives current page size. */\n pageSizeSelector?: (pageSize: number) => string\n /** Label for page size dropdown header. */\n resultsPerPage?: string\n /** Label generator for the range display. Receives start, end, and total. */\n rangeDisplay?: (start: number, end: number, total: number) => string\n}\n\nexport type TablePaginationProps = Omit<ComponentProps<\"div\">, \"onChange\"> & {\n /** Current page number (1-indexed) */\n page: number\n /** Total number of items across all pages */\n totalItems: number\n /** Current page size (items per page) */\n pageSize: number\n /** Callback fired when the page changes */\n onPageChange: (page: number) => void\n /** Callback fired when the page size changes */\n onPageSizeChange: (pageSize: number) => void\n /** Available page size options for the dropdown */\n pageSizeOptions?: number[]\n /** Number of sibling pages to show on each side of current page */\n siblingCount?: number\n /** Whether the pagination controls are disabled */\n disabled?: boolean\n /** Labels for i18n. All labels are optional for backwards compatibility but recommended. */\n labels?: TablePaginationLabels\n}\n\nexport const TablePagination = React.forwardRef<\n HTMLDivElement,\n TablePaginationProps\n>(function TablePagination(\n {\n page,\n totalItems,\n pageSize,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,\n siblingCount = 2,\n disabled = false,\n labels: labelsProp,\n className,\n ...props\n },\n ref\n) {\n /**\n * Accessible names for the controls. Every button here is icon-only, so\n * without a name it reaches assistive technology as an unlabelled button --\n * which is what `actions.mdx` forbids, and what this component shipped\n * whenever a caller omitted `labels`. The caller's values still win; these\n * only fill the gaps, so a localised app overrides them exactly as before.\n */\n const labels = { ...DEFAULT_PAGINATION_LABELS, ...labelsProp }\n const styles = useStyles()\n // Closes the previously deferred inline Select portal — stamp\n // an explicit override only when one exists in the React tree (Table/DataTable's own explicit\n // density, via DensityContextBoundary), never a fabricated default; an omitted override still\n // inherits live shell density through ordinary DOM/CSS since the portal container is a\n // descendant of <html>. Same pattern as select.tsx's SelectContent.\n const densityOverride = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n const { totalPages, start, end, isFirstPage, isLastPage } =\n calculatePagination({\n page,\n pageSize,\n totalItems,\n })\n\n const safePage = clampPage(page, totalPages)\n const pageItems = getPageNumbers(safePage, totalPages, siblingCount)\n\n const handlePageSizeChange = (value: string) => {\n const newSize = parseInt(value, 10)\n if (!isNaN(newSize)) {\n onPageSizeChange(newSize)\n }\n }\n\n // Don't render if no items\n if (totalItems === 0) {\n return null\n }\n\n return (\n <TooltipProvider>\n <div\n ref={ref}\n data-slot=\"table-pagination\"\n {...{ [SLOT_ATTR]: \"table-pagination\" }}\n data-fs-element=\"TablePagination\"\n role=\"navigation\"\n aria-label={labels?.navigation}\n className={mergeClasses(styles.root, className)}\n {...props}\n >\n {/* LEFT SIDE: Navigation and page buttons */}\n <div className={styles.left}>\n {/* First page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(1)}\n aria-label={labels?.firstPage}\n className={styles.navButton}\n >\n <IconFirstPage />\n </Button>\n\n {/* Previous page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isFirstPage}\n onClick={() => onPageChange(safePage - 1)}\n aria-label={labels?.previousPage}\n className={styles.navButton}\n >\n <IconChevronLeft />\n </Button>\n\n {/* Page number buttons */}\n {pageItems.map((item, index) => {\n const key =\n item.type === \"ellipsis\"\n ? `ellipsis-${index}-${item.targetPage}`\n : `page-${item.page}`\n\n if (item.type === \"ellipsis\") {\n return (\n <Tooltip key={key}>\n <TooltipTrigger asChild>\n <Button\n variant=\"tertiary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.targetPage)}\n aria-label={labels?.jumpToPage?.(item.targetPage)}\n className={styles.ellipsisButton}\n >\n ...\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {labels?.jumpToPage?.(item.targetPage)}\n </TooltipContent>\n </Tooltip>\n )\n }\n\n const isCurrentPage = item.page === safePage\n\n return (\n <Button\n key={key}\n variant={isCurrentPage ? \"secondary\" : \"tertiary\"}\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled}\n onClick={() => onPageChange(item.page)}\n aria-label={labels?.goToPage?.(item.page)}\n aria-current={isCurrentPage ? \"page\" : undefined}\n className={\n isCurrentPage\n ? styles.pageButtonActive\n : styles.pageButtonInactive\n }\n >\n {item.page}\n </Button>\n )\n })}\n\n {/* Next page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(safePage + 1)}\n aria-label={labels?.nextPage}\n className={styles.navButton}\n >\n <IconChevronRight />\n </Button>\n\n {/* Last page button */}\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n shape=\"normal\"\n disabled={disabled || isLastPage}\n onClick={() => onPageChange(totalPages)}\n aria-label={labels?.lastPage}\n className={styles.navButton}\n >\n <IconLastPage />\n </Button>\n </div>\n\n {/* RIGHT SIDE: Range display and page size selector */}\n <div className={styles.right}>\n {/* Range display */}\n <span\n data-slot=\"table-pagination-range\"\n className={styles.range}\n aria-live=\"polite\"\n >\n {labels?.rangeDisplay\n ? labels.rangeDisplay(start, end, totalItems)\n : `${start}-${end} / ${totalItems}`}\n </span>\n\n {/* Page size selector */}\n <SelectPrimitive.Root\n value={String(pageSize)}\n onValueChange={handlePageSizeChange}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n className={styles.selectTrigger}\n aria-label={labels?.pageSizeSelector?.(pageSize)}\n >\n <SelectPrimitive.Value />\n <SelectPrimitive.Icon className={styles.selectIcon}>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={styles.selectContent}\n {...(densityOverride !== undefined\n ? { \"data-density\": densityOverride }\n : {})}\n {...appearance}\n position=\"popper\"\n sideOffset={4}\n >\n <SelectPrimitive.Viewport className={styles.selectViewport}>\n <SelectPrimitive.Group>\n {labels?.resultsPerPage && (\n <SelectPrimitive.Label className={styles.selectLabel}>\n {labels.resultsPerPage}\n </SelectPrimitive.Label>\n )}\n {pageSizeOptions.map((option) => (\n <SelectPrimitive.Item\n key={option}\n value={String(option)}\n className={styles.selectItem}\n >\n <span className={styles.selectItemIndicator}>\n <SelectPrimitive.ItemIndicator>\n <CheckIcon style={{ width: 16, height: 16 }} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>\n {option}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Group>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n </div>\n </TooltipProvider>\n )\n})\n"],"names":["IconFirstPage","props","jsxs","jsx","IconChevronLeft","IconChevronRight","IconLastPage","ChevronDownIcon","CheckIcon","DEFAULT_PAGE_SIZE_OPTIONS","useStyles","makeZenithStyles","boxModel","tokens.spacingGroup1","shorthands","tokens.spacingElement3","tokens.textSm","tokens.leadingSm","tokens.spacingElement2","tokens.grayA3","tokens.accent11","tokens.grayA4","tokens.accentA8","tokens.trackingNormal","tokens.grayA11","nativeControl","tokens.spacingElement1","tokens.radiusLg","tokens.accent8","OVERLAY_Z_INDEX","tokens.grayA6","tokens.body","tokens.textXs","tokens.leadingXs","tokens.fontWeightSemibold","tokens.radiusMd","tokens.accentA3","DEFAULT_PAGINATION_LABELS","page","size","TablePagination","React","totalItems","pageSize","onPageChange","onPageSizeChange","pageSizeOptions","siblingCount","disabled","labelsProp","className","ref","labels","styles","densityOverride","useDensity","appearance","useAppearanceAttributes","totalPages","start","end","isFirstPage","isLastPage","calculatePagination","safePage","clampPage","pageItems","getPageNumbers","handlePageSizeChange","value","newSize","TooltipProvider","SLOT_ATTR","mergeClasses","Button","item","index","key","Tooltip","TooltipTrigger","_a","TooltipContent","_b","isCurrentPage","_c","SelectPrimitive.Root","SelectPrimitive.Trigger","SelectPrimitive.Value","SelectPrimitive.Icon","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Group","SelectPrimitive.Label","option","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText"],"mappings":"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"}
|
|
@@ -1,40 +1,49 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import * as i from "react";
|
|
3
|
-
import { mergeClasses as
|
|
3
|
+
import { mergeClasses as d, SLOT_ATTR as c, shorthands as p } from "@epilot/zenith-runtime/v1";
|
|
4
4
|
import { makeZenithStyles as A } from "../../styles/make-styles.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
5
|
+
import { boxModel as f } from "../../styles/host-reset.js";
|
|
6
|
+
import { spacingGroup2 as x, grayA11 as H, leadingSm as R, textSm as C, grayA12 as N, fontWeightNormal as S, tableCellPaddingY as v, spacingElement3 as m, fontWeightMedium as B, tableHeadHeight as W, accentA3 as k, graySoft as L, grayA5 as T } from "../../tokens/index.js";
|
|
7
|
+
import { DensityContextBoundary as y, canonicalDensity as w } from "../density-provider/density-provider.js";
|
|
8
|
+
const E = i.createContext("normal"), s = A({
|
|
8
9
|
wrapper: {
|
|
10
|
+
...f,
|
|
9
11
|
position: "relative",
|
|
10
12
|
width: "100%",
|
|
11
|
-
...
|
|
13
|
+
...p.overflow("auto")
|
|
12
14
|
},
|
|
13
15
|
root: {
|
|
16
|
+
...f,
|
|
17
|
+
// The UA default is `separate`, which adds the cell spacing and double borders the rows' own
|
|
18
|
+
// bottom borders are drawn against.
|
|
19
|
+
borderCollapse: "collapse",
|
|
20
|
+
textIndent: 0,
|
|
14
21
|
width: "100%",
|
|
15
|
-
fontSize:
|
|
16
|
-
lineHeight:
|
|
22
|
+
fontSize: C,
|
|
23
|
+
lineHeight: R
|
|
17
24
|
},
|
|
18
25
|
header: {
|
|
19
26
|
"& tr": {
|
|
20
|
-
...
|
|
27
|
+
...p.borderBottom("1px", "solid", T)
|
|
21
28
|
}
|
|
22
29
|
},
|
|
23
30
|
body: {
|
|
24
31
|
"& tr:last-child": {
|
|
25
|
-
...
|
|
32
|
+
...p.borderWidth(0)
|
|
26
33
|
}
|
|
27
34
|
},
|
|
28
35
|
footer: {
|
|
29
|
-
...f
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
...f,
|
|
37
|
+
...p.borderTop("1px", "solid", T),
|
|
38
|
+
backgroundColor: L,
|
|
39
|
+
fontWeight: B,
|
|
32
40
|
"& > tr:last-child": {
|
|
33
41
|
borderBottomWidth: 0
|
|
34
42
|
}
|
|
35
43
|
},
|
|
36
44
|
row: {
|
|
37
|
-
...f
|
|
45
|
+
...f,
|
|
46
|
+
...p.borderBottom("1px", "solid", T),
|
|
38
47
|
transitionProperty: "color, background-color, border-color, text-decoration-color, fill, stroke",
|
|
39
48
|
transitionDuration: "150ms",
|
|
40
49
|
transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
@@ -48,15 +57,19 @@ const j = i.createContext("normal"), s = A({
|
|
|
48
57
|
}
|
|
49
58
|
},
|
|
50
59
|
head: {
|
|
60
|
+
...f,
|
|
51
61
|
// px-3
|
|
52
|
-
paddingLeft:
|
|
53
|
-
paddingRight:
|
|
62
|
+
paddingLeft: m,
|
|
63
|
+
paddingRight: m,
|
|
64
|
+
// A browser pads a bare `<th>` by 1px; the fixed height below is the whole box.
|
|
65
|
+
paddingTop: 0,
|
|
66
|
+
paddingBottom: 0,
|
|
54
67
|
// Density-bound: cascades from the nearest [data-density] ancestor — 32/36/40px for
|
|
55
68
|
// compact/normal/comfortable. No JS density switch needed.
|
|
56
|
-
height:
|
|
69
|
+
height: W,
|
|
57
70
|
verticalAlign: "middle",
|
|
58
|
-
fontWeight:
|
|
59
|
-
color:
|
|
71
|
+
fontWeight: B,
|
|
72
|
+
color: N,
|
|
60
73
|
"&:has([role='checkbox'])": {
|
|
61
74
|
paddingRight: 0
|
|
62
75
|
},
|
|
@@ -75,16 +88,17 @@ const j = i.createContext("normal"), s = A({
|
|
|
75
88
|
textAlign: "right"
|
|
76
89
|
},
|
|
77
90
|
cell: {
|
|
91
|
+
...f,
|
|
78
92
|
// px-3
|
|
79
|
-
paddingLeft:
|
|
80
|
-
paddingRight:
|
|
93
|
+
paddingLeft: m,
|
|
94
|
+
paddingRight: m,
|
|
81
95
|
// Density-bound: cascades from the nearest [data-density] ancestor — 6/8/12px for
|
|
82
96
|
// compact/normal/comfortable. No JS density switch needed.
|
|
83
|
-
paddingTop:
|
|
84
|
-
paddingBottom:
|
|
97
|
+
paddingTop: v,
|
|
98
|
+
paddingBottom: v,
|
|
85
99
|
verticalAlign: "middle",
|
|
86
|
-
fontWeight:
|
|
87
|
-
color:
|
|
100
|
+
fontWeight: S,
|
|
101
|
+
color: N,
|
|
88
102
|
"&:has([role='checkbox'])": {
|
|
89
103
|
paddingRight: 0
|
|
90
104
|
},
|
|
@@ -97,154 +111,154 @@ const j = i.createContext("normal"), s = A({
|
|
|
97
111
|
fontVariantNumeric: "tabular-nums"
|
|
98
112
|
},
|
|
99
113
|
caption: {
|
|
100
|
-
fontSize:
|
|
101
|
-
lineHeight:
|
|
102
|
-
color:
|
|
114
|
+
fontSize: C,
|
|
115
|
+
lineHeight: R,
|
|
116
|
+
color: H
|
|
103
117
|
},
|
|
104
118
|
captionTop: {
|
|
105
119
|
captionSide: "top",
|
|
106
120
|
// mb-4
|
|
107
|
-
marginBottom:
|
|
121
|
+
marginBottom: x
|
|
108
122
|
},
|
|
109
123
|
captionBottom: {
|
|
110
124
|
captionSide: "bottom",
|
|
111
125
|
// mt-4
|
|
112
|
-
marginTop:
|
|
126
|
+
marginTop: x
|
|
113
127
|
}
|
|
114
|
-
}),
|
|
115
|
-
function({ className: a, density: t, children:
|
|
128
|
+
}), G = i.forwardRef(
|
|
129
|
+
function({ className: a, density: t, children: o, ...e }, r) {
|
|
116
130
|
const g = s();
|
|
117
131
|
return /* @__PURE__ */ l("div", { className: g.wrapper, children: /* @__PURE__ */ l(
|
|
118
132
|
"table",
|
|
119
133
|
{
|
|
120
134
|
ref: r,
|
|
121
135
|
"data-slot": "table",
|
|
122
|
-
[
|
|
123
|
-
className:
|
|
124
|
-
...
|
|
125
|
-
...t !== void 0 ? { "data-density":
|
|
126
|
-
children: /* @__PURE__ */ l(
|
|
136
|
+
[c]: "table",
|
|
137
|
+
className: d(g.root, a),
|
|
138
|
+
...e,
|
|
139
|
+
...t !== void 0 ? { "data-density": w(t) } : {},
|
|
140
|
+
children: /* @__PURE__ */ l(y, { density: t, children: o })
|
|
127
141
|
}
|
|
128
142
|
) });
|
|
129
143
|
}
|
|
130
|
-
),
|
|
131
|
-
const
|
|
144
|
+
), I = i.forwardRef(function({ className: a, ...t }, o) {
|
|
145
|
+
const e = s();
|
|
132
146
|
return /* @__PURE__ */ l(
|
|
133
147
|
"thead",
|
|
134
148
|
{
|
|
135
|
-
ref:
|
|
149
|
+
ref: o,
|
|
136
150
|
"data-slot": "table-header",
|
|
137
|
-
[
|
|
138
|
-
className:
|
|
151
|
+
[c]: "table-header",
|
|
152
|
+
className: d(e.header, a),
|
|
139
153
|
...t
|
|
140
154
|
}
|
|
141
155
|
);
|
|
142
|
-
}),
|
|
143
|
-
const
|
|
156
|
+
}), O = i.forwardRef(function({ className: a, ...t }, o) {
|
|
157
|
+
const e = s();
|
|
144
158
|
return /* @__PURE__ */ l(
|
|
145
159
|
"tbody",
|
|
146
160
|
{
|
|
147
|
-
ref:
|
|
161
|
+
ref: o,
|
|
148
162
|
"data-slot": "table-body",
|
|
149
|
-
[
|
|
150
|
-
className:
|
|
163
|
+
[c]: "table-body",
|
|
164
|
+
className: d(e.body, a),
|
|
151
165
|
...t
|
|
152
166
|
}
|
|
153
167
|
);
|
|
154
|
-
}),
|
|
155
|
-
const
|
|
168
|
+
}), V = i.forwardRef(function({ className: a, ...t }, o) {
|
|
169
|
+
const e = s();
|
|
156
170
|
return /* @__PURE__ */ l(
|
|
157
171
|
"tfoot",
|
|
158
172
|
{
|
|
159
|
-
ref:
|
|
173
|
+
ref: o,
|
|
160
174
|
"data-slot": "table-footer",
|
|
161
|
-
[
|
|
162
|
-
className:
|
|
175
|
+
[c]: "table-footer",
|
|
176
|
+
className: d(e.footer, a),
|
|
163
177
|
...t
|
|
164
178
|
}
|
|
165
179
|
);
|
|
166
|
-
}),
|
|
167
|
-
function({ className: a, noHover: t, ...
|
|
180
|
+
}), Y = i.forwardRef(
|
|
181
|
+
function({ className: a, noHover: t, ...o }, e) {
|
|
168
182
|
const r = s();
|
|
169
183
|
return /* @__PURE__ */ l(
|
|
170
184
|
"tr",
|
|
171
185
|
{
|
|
172
|
-
ref:
|
|
186
|
+
ref: e,
|
|
173
187
|
"data-slot": "table-row",
|
|
174
|
-
[
|
|
175
|
-
className:
|
|
188
|
+
[c]: "table-row",
|
|
189
|
+
className: d(
|
|
176
190
|
r.row,
|
|
177
191
|
!t && r.rowHover,
|
|
178
192
|
a
|
|
179
193
|
),
|
|
180
|
-
...
|
|
194
|
+
...o
|
|
181
195
|
}
|
|
182
196
|
);
|
|
183
197
|
}
|
|
184
|
-
),
|
|
185
|
-
function({ className: a, align: t = "left", density:
|
|
186
|
-
const n = s(),
|
|
198
|
+
), Z = i.forwardRef(
|
|
199
|
+
function({ className: a, align: t = "left", density: o, scope: e = "col", children: r, ...g }, h) {
|
|
200
|
+
const n = s(), u = t === "center" ? n.alignCenter : t === "right" ? n.alignRight : n.alignLeft;
|
|
187
201
|
return /* @__PURE__ */ l(
|
|
188
202
|
"th",
|
|
189
203
|
{
|
|
190
|
-
ref:
|
|
204
|
+
ref: h,
|
|
191
205
|
"data-slot": "table-head",
|
|
192
|
-
[
|
|
193
|
-
scope:
|
|
194
|
-
className:
|
|
206
|
+
[c]: "table-head",
|
|
207
|
+
scope: e,
|
|
208
|
+
className: d(n.head, u, a),
|
|
195
209
|
...g,
|
|
196
|
-
...
|
|
197
|
-
children: /* @__PURE__ */ l(
|
|
210
|
+
...o !== void 0 ? { "data-density": w(o) } : {},
|
|
211
|
+
children: /* @__PURE__ */ l(y, { density: o, children: r })
|
|
198
212
|
}
|
|
199
213
|
);
|
|
200
214
|
}
|
|
201
|
-
),
|
|
202
|
-
function({ className: a, align: t = "left", numeric:
|
|
203
|
-
const n = s(),
|
|
215
|
+
), _ = i.forwardRef(
|
|
216
|
+
function({ className: a, align: t = "left", numeric: o, density: e, children: r, ...g }, h) {
|
|
217
|
+
const n = s(), u = t === "center" ? n.alignCenter : t === "right" ? n.alignRight : n.alignLeft;
|
|
204
218
|
return /* @__PURE__ */ l(
|
|
205
219
|
"td",
|
|
206
220
|
{
|
|
207
|
-
ref:
|
|
221
|
+
ref: h,
|
|
208
222
|
"data-slot": "table-cell",
|
|
209
|
-
[
|
|
210
|
-
className:
|
|
223
|
+
[c]: "table-cell",
|
|
224
|
+
className: d(
|
|
211
225
|
n.cell,
|
|
212
|
-
|
|
213
|
-
|
|
226
|
+
u,
|
|
227
|
+
o && n.cellNumeric,
|
|
214
228
|
a
|
|
215
229
|
),
|
|
216
230
|
...g,
|
|
217
|
-
...
|
|
218
|
-
children: /* @__PURE__ */ l(
|
|
231
|
+
...e !== void 0 ? { "data-density": w(e) } : {},
|
|
232
|
+
children: /* @__PURE__ */ l(y, { density: e, children: r })
|
|
219
233
|
}
|
|
220
234
|
);
|
|
221
235
|
}
|
|
222
|
-
),
|
|
236
|
+
), q = i.forwardRef(function({ className: a, position: t = "bottom", ...o }, e) {
|
|
223
237
|
const r = s();
|
|
224
238
|
return /* @__PURE__ */ l(
|
|
225
239
|
"caption",
|
|
226
240
|
{
|
|
227
|
-
ref:
|
|
241
|
+
ref: e,
|
|
228
242
|
"data-slot": "table-caption",
|
|
229
|
-
[
|
|
230
|
-
className:
|
|
243
|
+
[c]: "table-caption",
|
|
244
|
+
className: d(
|
|
231
245
|
r.caption,
|
|
232
246
|
t === "top" ? r.captionTop : r.captionBottom,
|
|
233
247
|
a
|
|
234
248
|
),
|
|
235
|
-
...
|
|
249
|
+
...o
|
|
236
250
|
}
|
|
237
251
|
);
|
|
238
252
|
});
|
|
239
253
|
export {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
254
|
+
G as Table,
|
|
255
|
+
O as TableBody,
|
|
256
|
+
q as TableCaption,
|
|
257
|
+
_ as TableCell,
|
|
258
|
+
E as TableDensityContext,
|
|
259
|
+
V as TableFooter,
|
|
260
|
+
Z as TableHead,
|
|
261
|
+
I as TableHeader,
|
|
262
|
+
Y as TableRow
|
|
249
263
|
};
|
|
250
264
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../src/components/table/table.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\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\n\n/**\n * Table — the primitive set (Table, TableHeader, TableBody, TableFooter, TableRow, TableHead,\n * TableCell, TableCaption) in Card's compound pattern: one `makeZenithStyles` call, one slot per\n * sub-component, each reading its own slot.\n */\n\nexport type TableDensity = \"compact\" | \"normal\" | \"comfortable\"\n\n/**\n * 2026-09-09).\n * @deprecated No longer a supported way to control Table/DataTable geometry (approved\n */\nconst TableDensityContext = React.createContext<TableDensity>(\"normal\")\n\nconst useStyles = makeZenithStyles({\n wrapper: {\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n root: {\n width: \"100%\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n header: {\n \"& tr\": {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n },\n },\n body: {\n \"& tr:last-child\": {\n ...shorthands.borderWidth(0),\n },\n },\n footer: {\n ...shorthands.borderTop(\"1px\", \"solid\", tokens.grayA5),\n backgroundColor: tokens.graySoft,\n fontWeight: tokens.fontWeightMedium,\n \"& > tr:last-child\": {\n borderBottomWidth: 0,\n },\n },\n row: {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"&[data-state='selected']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowHover: {\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n head: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // Density-bound: cascades from the nearest [data-density] ancestor — 32/36/40px for\n // compact/normal/comfortable. No JS density switch needed.\n height: tokens.tableHeadHeight,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n alignLeft: {\n textAlign: \"left\",\n },\n alignCenter: {\n textAlign: \"center\",\n },\n alignRight: {\n textAlign: \"right\",\n },\n cell: {\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // Density-bound: cascades from the nearest [data-density] ancestor — 6/8/12px for\n // compact/normal/comfortable. No JS density switch needed.\n paddingTop: tokens.tableCellPaddingY,\n paddingBottom: tokens.tableCellPaddingY,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n cellNumeric: {\n fontVariantNumeric: \"tabular-nums\",\n },\n caption: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n },\n captionTop: {\n captionSide: \"top\",\n // mb-4\n marginBottom: tokens.spacingGroup2,\n },\n captionBottom: {\n captionSide: \"bottom\",\n // mt-4\n marginTop: tokens.spacingGroup2,\n },\n})\n\nexport type TableProps = React.ComponentProps<\"table\"> & {\n density?: TableDensity\n}\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table({ className, density, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div className={styles.wrapper}>\n <table\n ref={ref}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={mergeClasses(styles.root, className)}\n {...props}\n // Authoritative, spread last: a raw caller data-density prop (part of {...props}, since\n // TableProps extends every native table prop) must never win over the normalized density\n // prop — same invariant DensityProvider enforces for its own data-density stamp.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </table>\n </div>\n )\n }\n)\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"thead\">\n>(function TableHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n {...{ [SLOT_ATTR]: \"table-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n})\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tbody\">\n>(function TableBody({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n {...{ [SLOT_ATTR]: \"table-body\" }}\n className={mergeClasses(styles.body, className)}\n {...props}\n />\n )\n})\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tfoot\">\n>(function TableFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n {...{ [SLOT_ATTR]: \"table-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n})\n\nexport type TableRowProps = React.ComponentProps<\"tr\"> & {\n /** Disable hover background effect */\n noHover?: boolean\n}\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n function TableRow({ className, noHover, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n {...{ [SLOT_ATTR]: \"table-row\" }}\n className={mergeClasses(\n styles.row,\n !noHover && styles.rowHover,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type TableHeadProps = React.ComponentProps<\"th\"> & {\n align?: \"left\" | \"center\" | \"right\"\n density?: TableDensity\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n function TableHead(\n { className, align = \"left\", density, scope = \"col\", children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n {...{ [SLOT_ATTR]: \"table-head\" }}\n scope={scope}\n className={mergeClasses(styles.head, alignment, className)}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* Correction 1 above: an explicit per-cell override must also establish the\n context boundary, not just the DOM stamp — a real portal (Select/Popover/etc.) rendered\n inside this cell is a DOM sibling, not a descendant, so only useDensity() reaches it. */}\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </th>\n )\n }\n)\n\nexport type TableCellProps = React.ComponentProps<\"td\"> & {\n align?: \"left\" | \"center\" | \"right\"\n numeric?: boolean\n density?: TableDensity\n}\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell(\n { className, align = \"left\", numeric, density, children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n {...{ [SLOT_ATTR]: \"table-cell\" }}\n className={mergeClasses(\n styles.cell,\n alignment,\n numeric && styles.cellNumeric,\n className\n )}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* Correction 1 above: see the matching comment on TableHead. */}\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </td>\n )\n }\n)\n\nexport type TableCaptionProps = React.ComponentProps<\"caption\"> & {\n position?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(function TableCaption({ className, position = \"bottom\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n {...{ [SLOT_ATTR]: \"table-caption\" }}\n className={mergeClasses(\n styles.caption,\n position === \"top\" ? styles.captionTop : styles.captionBottom,\n className\n )}\n {...props}\n />\n )\n})\n\nexport { TableDensityContext }\n"],"names":["TableDensityContext","React","useStyles","makeZenithStyles","shorthands","tokens.textSm","tokens.leadingSm","tokens.grayA5","tokens.graySoft","tokens.fontWeightMedium","tokens.accentA3","tokens.spacingElement3","tokens.tableHeadHeight","tokens.grayA12","tokens.tableCellPaddingY","tokens.fontWeightNormal","tokens.grayA11","tokens.spacingGroup2","Table","className","density","children","props","ref","styles","jsx","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","TableHeader","TableBody","TableFooter","TableRow","noHover","TableHead","align","scope","alignment","TableCell","numeric","TableCaption","position"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../src/components/table/table.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 * as tokens from \"../../tokens\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\n\n/**\n * Table — the primitive set (Table, TableHeader, TableBody, TableFooter, TableRow, TableHead,\n * TableCell, TableCaption) in Card's compound pattern: one `makeZenithStyles` call, one slot per\n * sub-component, each reading its own slot.\n */\n\nexport type TableDensity = \"compact\" | \"normal\" | \"comfortable\"\n\n/**\n * 2026-09-09).\n * @deprecated No longer a supported way to control Table/DataTable geometry (approved\n */\nconst TableDensityContext = React.createContext<TableDensity>(\"normal\")\n\nconst useStyles = makeZenithStyles({\n wrapper: {\n ...boxModel,\n position: \"relative\",\n width: \"100%\",\n ...shorthands.overflow(\"auto\"),\n },\n root: {\n ...boxModel,\n // The UA default is `separate`, which adds the cell spacing and double borders the rows' own\n // bottom borders are drawn against.\n borderCollapse: \"collapse\",\n textIndent: 0,\n width: \"100%\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n },\n header: {\n \"& tr\": {\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n },\n },\n body: {\n \"& tr:last-child\": {\n ...shorthands.borderWidth(0),\n },\n },\n footer: {\n ...boxModel,\n ...shorthands.borderTop(\"1px\", \"solid\", tokens.grayA5),\n backgroundColor: tokens.graySoft,\n fontWeight: tokens.fontWeightMedium,\n \"& > tr:last-child\": {\n borderBottomWidth: 0,\n },\n },\n row: {\n ...boxModel,\n ...shorthands.borderBottom(\"1px\", \"solid\", tokens.grayA5),\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"&[data-state='selected']\": {\n backgroundColor: tokens.accentA3,\n },\n },\n rowHover: {\n \":hover\": {\n backgroundColor: tokens.accentA3,\n },\n },\n head: {\n ...boxModel,\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // A browser pads a bare `<th>` by 1px; the fixed height below is the whole box.\n paddingTop: 0,\n paddingBottom: 0,\n // Density-bound: cascades from the nearest [data-density] ancestor — 32/36/40px for\n // compact/normal/comfortable. No JS density switch needed.\n height: tokens.tableHeadHeight,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightMedium,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n alignLeft: {\n textAlign: \"left\",\n },\n alignCenter: {\n textAlign: \"center\",\n },\n alignRight: {\n textAlign: \"right\",\n },\n cell: {\n ...boxModel,\n // px-3\n paddingLeft: tokens.spacingElement3,\n paddingRight: tokens.spacingElement3,\n // Density-bound: cascades from the nearest [data-density] ancestor — 6/8/12px for\n // compact/normal/comfortable. No JS density switch needed.\n paddingTop: tokens.tableCellPaddingY,\n paddingBottom: tokens.tableCellPaddingY,\n verticalAlign: \"middle\",\n fontWeight: tokens.fontWeightNormal,\n color: tokens.grayA12,\n \"&:has([role='checkbox'])\": {\n paddingRight: 0,\n },\n \"& > [role='checkbox']\": {\n // v1 `translate-y-[2px]`.\n translate: \"0 2px\",\n },\n },\n cellNumeric: {\n fontVariantNumeric: \"tabular-nums\",\n },\n caption: {\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n color: tokens.grayA11,\n },\n captionTop: {\n captionSide: \"top\",\n // mb-4\n marginBottom: tokens.spacingGroup2,\n },\n captionBottom: {\n captionSide: \"bottom\",\n // mt-4\n marginTop: tokens.spacingGroup2,\n },\n})\n\nexport type TableProps = React.ComponentProps<\"table\"> & {\n density?: TableDensity\n}\n\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table({ className, density, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <div className={styles.wrapper}>\n <table\n ref={ref}\n data-slot=\"table\"\n {...{ [SLOT_ATTR]: \"table\" }}\n className={mergeClasses(styles.root, className)}\n {...props}\n // Authoritative, spread last: a raw caller data-density prop (part of {...props}, since\n // TableProps extends every native table prop) must never win over the normalized density\n // prop — same invariant DensityProvider enforces for its own data-density stamp.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </table>\n </div>\n )\n }\n)\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"thead\">\n>(function TableHeader({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n {...{ [SLOT_ATTR]: \"table-header\" }}\n className={mergeClasses(styles.header, className)}\n {...props}\n />\n )\n})\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tbody\">\n>(function TableBody({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n {...{ [SLOT_ATTR]: \"table-body\" }}\n className={mergeClasses(styles.body, className)}\n {...props}\n />\n )\n})\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentProps<\"tfoot\">\n>(function TableFooter({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n {...{ [SLOT_ATTR]: \"table-footer\" }}\n className={mergeClasses(styles.footer, className)}\n {...props}\n />\n )\n})\n\nexport type TableRowProps = React.ComponentProps<\"tr\"> & {\n /** Disable hover background effect */\n noHover?: boolean\n}\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n function TableRow({ className, noHover, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n {...{ [SLOT_ATTR]: \"table-row\" }}\n className={mergeClasses(\n styles.row,\n !noHover && styles.rowHover,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nexport type TableHeadProps = React.ComponentProps<\"th\"> & {\n align?: \"left\" | \"center\" | \"right\"\n density?: TableDensity\n}\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n function TableHead(\n { className, align = \"left\", density, scope = \"col\", children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <th\n ref={ref}\n data-slot=\"table-head\"\n {...{ [SLOT_ATTR]: \"table-head\" }}\n scope={scope}\n className={mergeClasses(styles.head, alignment, className)}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* Correction 1 above: an explicit per-cell override must also establish the\n context boundary, not just the DOM stamp — a real portal (Select/Popover/etc.) rendered\n inside this cell is a DOM sibling, not a descendant, so only useDensity() reaches it. */}\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </th>\n )\n }\n)\n\nexport type TableCellProps = React.ComponentProps<\"td\"> & {\n align?: \"left\" | \"center\" | \"right\"\n numeric?: boolean\n density?: TableDensity\n}\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n function TableCell(\n { className, align = \"left\", numeric, density, children, ...props },\n ref\n ) {\n const styles = useStyles()\n\n const alignment =\n align === \"center\"\n ? styles.alignCenter\n : align === \"right\"\n ? styles.alignRight\n : styles.alignLeft\n\n return (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n {...{ [SLOT_ATTR]: \"table-cell\" }}\n className={mergeClasses(\n styles.cell,\n alignment,\n numeric && styles.cellNumeric,\n className\n )}\n {...props}\n // Authoritative, normalized, spread last — see the matching comment on Table above.\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n {/* Correction 1 above: see the matching comment on TableHead. */}\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </td>\n )\n }\n)\n\nexport type TableCaptionProps = React.ComponentProps<\"caption\"> & {\n position?: \"top\" | \"bottom\"\n}\n\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(function TableCaption({ className, position = \"bottom\", ...props }, ref) {\n const styles = useStyles()\n\n return (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n {...{ [SLOT_ATTR]: \"table-caption\" }}\n className={mergeClasses(\n styles.caption,\n position === \"top\" ? styles.captionTop : styles.captionBottom,\n className\n )}\n {...props}\n />\n )\n})\n\nexport { TableDensityContext }\n"],"names":["TableDensityContext","React","useStyles","makeZenithStyles","boxModel","shorthands","tokens.textSm","tokens.leadingSm","tokens.grayA5","tokens.graySoft","tokens.fontWeightMedium","tokens.accentA3","tokens.spacingElement3","tokens.tableHeadHeight","tokens.grayA12","tokens.tableCellPaddingY","tokens.fontWeightNormal","tokens.grayA11","tokens.spacingGroup2","Table","className","density","children","props","ref","styles","jsx","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","TableHeader","TableBody","TableFooter","TableRow","noHover","TableHead","align","scope","alignment","TableCell","numeric","TableCaption","position"],"mappings":"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"}
|