@epilot/volt-ui-experimental-griffel 0.2.3 → 0.3.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/ADOPTING.md +416 -0
- package/README.md +32 -31
- package/dist/components/alert-dialog/alert-dialog.js +61 -59
- package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/components/avatar/avatar.js +6 -6
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/badge/badge.js +47 -39
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/button/button.js +71 -68
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +23 -20
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/command/command.js +50 -35
- package/dist/components/command/command.js.map +1 -1
- package/dist/components/data-table/data-table.js +89 -88
- package/dist/components/data-table/data-table.js.map +1 -1
- package/dist/components/density-provider/density-provider.js +28 -0
- package/dist/components/density-provider/density-provider.js.map +1 -0
- package/dist/components/dialog/dialog.js +122 -100
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/drawer/drawer.js +61 -59
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.js +88 -85
- package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/components/field/field-combobox.js +121 -106
- package/dist/components/field/field-combobox.js.map +1 -1
- package/dist/components/field/field.js +105 -104
- package/dist/components/field/field.js.map +1 -1
- package/dist/components/list/list.js +282 -308
- package/dist/components/list/list.js.map +1 -1
- package/dist/components/pill/pill.js +58 -56
- package/dist/components/pill/pill.js.map +1 -1
- package/dist/components/popover/popover.js +47 -38
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/radio/radio.js +21 -18
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/select/select.js +185 -156
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/skeleton/skeleton.js +2 -2
- package/dist/components/skeleton/skeleton.js.map +1 -1
- package/dist/components/switch/switch.js +34 -29
- package/dist/components/switch/switch.js.map +1 -1
- package/dist/components/table/table-pagination.js +92 -90
- package/dist/components/table/table-pagination.js.map +1 -1
- package/dist/components/table/table.js +109 -121
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/toggle/toggle.js +29 -29
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/tooltip/tooltip.js +36 -34
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/index.d.ts +600 -427
- package/dist/index.js +215 -212
- package/dist/index.js.map +1 -1
- package/dist/packages/volt-runtime/dist/sheet.js +27 -10
- package/dist/packages/volt-runtime/dist/sheet.js.map +1 -1
- package/dist/packages/volt-runtime/dist/styles/recipe.js +76 -0
- package/dist/packages/volt-runtime/dist/styles/recipe.js.map +1 -0
- package/dist/styles/document-context.js +12 -0
- package/dist/styles/document-context.js.map +1 -0
- package/dist/styles/make-styles.js +18 -10
- package/dist/styles/make-styles.js.map +1 -1
- package/dist/tokens/core.generated.js +1238 -1166
- package/dist/tokens/core.generated.js.map +1 -1
- package/dist/tokens/index.d.ts +442 -415
- package/dist/tokens/index.js +1105 -1078
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/install.js +9 -5
- package/dist/tokens/install.js.map +1 -1
- package/dist/tokens/use-palette-tokens.js +20 -0
- package/dist/tokens/use-palette-tokens.js.map +1 -0
- package/dist/tokens.json +83 -2
- package/package.json +13 -5
- package/scripts/migration-diagnostics-core.mjs +859 -0
- package/scripts/migration-diagnostics.mjs +353 -0
- package/scripts/migration-sweep.mjs +179 -0
- package/AGENTS.md +0 -153
- package/AUTHORING.md +0 -292
- package/dist/packages/volt-runtime/dist/styles/make-styles.js +0 -22
- package/dist/packages/volt-runtime/dist/styles/make-styles.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { TableDensityContext, type TableDensity } from \"../table/table\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /** Cell density: compact, normal, or comfortable. Default: normal */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n density = \"normal\",\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n }),\n [\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <TableDensityContext.Provider value={density}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n >\n {children}\n </div>\n </TableDensityContext.Provider>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsx","DataTableColumnHeader","_a","useStyles","makeVoltStyles","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newSizing","newPinning","getPaginationRowModel","contextValue","DataTableContext","TableDensityContext","SLOT_ATTR","mergeClasses","DataTable","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-table.js","sources":["../../../src/components/data-table/data-table.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { useState, useRef, useEffect, useCallback, useMemo } from \"react\"\nimport type { ReactNode, MouseEvent } from \"react\"\nimport {\n useReactTable,\n getCoreRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n type SortingState,\n type RowSelectionState,\n type PaginationState,\n type ColumnFiltersState,\n type VisibilityState,\n type ColumnDef,\n type Row,\n type ColumnSizingState,\n type ColumnPinningState,\n type HeaderContext,\n} from \"@tanstack/react-table\"\nimport { mergeClasses } from \"@epilot/volt-ui-runtime\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeVoltStyles } from \"../../styles/make-styles\"\nimport { Checkbox } from \"../checkbox/checkbox\"\nimport { type TableDensity } from \"../table/table\"\nimport {\n canonicalDensity,\n DensityContextBoundary,\n} from \"../density-provider/density-provider\"\nimport {\n DataTableContext,\n type DataTablePaginationConfig,\n type DataTableCellOverflow,\n} from \"./data-table-context\"\nimport { DataTableColumnHeader } from \"./data-table-column-header\"\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type DataTableProps<TData> = {\n /** Column definitions */\n columns: ColumnDef<TData, unknown>[]\n /** Data array */\n data: TData[]\n /** Children rendered inside the context (DataTableContent, DataTablePagination, etc.) */\n children?: ReactNode\n /** Unique key accessor for each row */\n getRowId?: (row: TData) => string\n /** Enable row selection with checkboxes */\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n /** Enable column sorting */\n enableSorting?: boolean\n /** Skip client-side sorting (for server-side sorting). When true, sorting state is tracked but rows are not sorted client-side. */\n manualSorting?: boolean\n /** Enable column filtering */\n enableFiltering?: boolean\n /** Skip client-side filtering (for server-side filtering). When true, filter state is tracked but rows are not filtered client-side. */\n manualFiltering?: boolean\n /** Enable global search/filter */\n enableGlobalFilter?: boolean\n /** Pagination configuration */\n pagination?: DataTablePaginationConfig\n /** Controlled sorting state */\n sorting?: SortingState\n /** Callback when sorting changes */\n onSortingChange?: (sorting: SortingState) => void\n /** Default sorting state */\n defaultSorting?: SortingState\n /** Controlled row selection state */\n rowSelection?: RowSelectionState\n /** Callback when row selection changes */\n onRowSelectionChange?: (selection: RowSelectionState) => void\n /** Default row selection state */\n defaultRowSelection?: RowSelectionState\n /** Controlled column filters state */\n columnFilters?: ColumnFiltersState\n /** Callback when column filters change */\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void\n /** Controlled column visibility state */\n columnVisibility?: VisibilityState\n /** Callback when column visibility changes */\n onColumnVisibilityChange?: (visibility: VisibilityState) => void\n /** Controlled global filter value */\n globalFilter?: string\n /** Callback when global filter changes */\n onGlobalFilterChange?: (value: string) => void\n /** Handler called when a row is clicked. Enables clickable row mode. */\n onRowClick?: (row: Row<TData>, event: MouseEvent<HTMLTableRowElement>) => void\n /** Custom hover class for clickable rows. Default: 'hover:bg-accent-a3' */\n clickableRowClassName?: string\n /** Custom class for selected rows. Default: 'data-[state=selected]:bg-accent-a3' */\n selectedRowClassName?: string\n /** Controls how cell content handles overflow. 'grow' expands cells (default), 'wrap' wraps text, 'truncate' shows ellipsis. Can be overridden per-column via column meta. */\n cellOverflow?: DataTableCellOverflow\n /** Disable column width resizing (enabled by default) */\n disableColumnResizing?: boolean\n /** Resize mode: 'onChange' updates during drag, 'onEnd' updates when drag finishes. Default: 'onChange' */\n columnResizeMode?: \"onChange\" | \"onEnd\"\n /** Controlled column sizing state */\n columnSizing?: ColumnSizingState\n /** Callback when column sizing changes */\n onColumnSizingChange?: (sizing: ColumnSizingState) => void\n /** Default column sizing for uncontrolled mode */\n defaultColumnSizing?: ColumnSizingState\n /** Controlled column pinning state */\n columnPinning?: ColumnPinningState\n /** Callback when column pinning changes */\n onColumnPinningChange?: (pinning: ColumnPinningState) => void\n /** Default column pinning for uncontrolled mode */\n defaultColumnPinning?: ColumnPinningState\n /** Auto-pin selection column to left when rows are selected. Default: false */\n autoPinSelection?: boolean\n /** Show bottom border on header row. Default: true */\n showHeaderBorder?: boolean\n /** Show bottom borders on data rows. Default: true */\n showRowBorders?: boolean\n /** Ensure columns have minimum width to fit header content (prevents hover clipping on sortable headers). Default: false */\n fitHeaderWidth?: boolean\n /**\n * Cell density: compact, normal, or comfortable. Omitted inherits ambient CSS density (shell or\n * an outer `DensityProvider`) with no default-normal stamp — explicit only when passed.\n */\n density?: TableDensity\n /** Additional class name */\n className?: string\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Transforms columns to auto-wrap string headers with DataTableColumnHeader\n * when sorting is enabled at the table level.\n */\nfunction wrapSortableHeaders<TData>(\n columns: ColumnDef<TData, unknown>[],\n enableSorting: boolean | undefined\n): ColumnDef<TData, unknown>[] {\n if (!enableSorting) {\n return columns\n }\n\n return columns.map((column) => {\n // Skip if column explicitly disables sorting\n if (column.enableSorting === false) {\n return column\n }\n\n // Skip if header is not a string (already a function/component)\n if (typeof column.header !== \"string\") {\n return column\n }\n\n const headerTitle = column.header\n\n return {\n ...column,\n header: ({ column: col }: HeaderContext<TData, unknown>) => (\n <DataTableColumnHeader column={col} title={headerTitle} />\n ),\n meta: {\n ...column.meta,\n // Preserve original header for visibility dropdown fallback\n visibilityLabel:\n (column.meta as { visibilityLabel?: string } | undefined)\n ?.visibilityLabel ?? headerTitle,\n // Flag to indicate this header was auto-wrapped with DataTableColumnHeader\n _sortableHeaderWrapped: true,\n },\n } as ColumnDef<TData, unknown>\n })\n}\n\nconst useStyles = makeVoltStyles({\n root: {\n width: \"100%\",\n maxWidth: \"100%\",\n },\n})\n\n// =============================================================================\n// Component\n// =============================================================================\n\nfunction DataTableInner<TData>(\n {\n columns,\n data,\n children,\n getRowId,\n enableRowSelection = false,\n enableSorting = false,\n manualSorting = false,\n enableFiltering = false,\n manualFiltering = false,\n enableGlobalFilter = false,\n pagination,\n sorting: controlledSorting,\n onSortingChange,\n defaultSorting = [],\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n defaultRowSelection = {},\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n globalFilter: controlledGlobalFilter,\n onGlobalFilterChange,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow = \"truncate\",\n disableColumnResizing = false,\n columnResizeMode = \"onChange\",\n columnSizing: controlledColumnSizing,\n onColumnSizingChange,\n defaultColumnSizing = {},\n columnPinning: controlledColumnPinning,\n onColumnPinningChange,\n defaultColumnPinning = { left: [], right: [] },\n autoPinSelection,\n showHeaderBorder = true,\n showRowBorders = true,\n fitHeaderWidth = false,\n density,\n className,\n }: DataTableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const styles = useStyles()\n\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] =\n useState<SortingState>(defaultSorting)\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>(defaultRowSelection)\n const [internalColumnFilters, setInternalColumnFilters] =\n useState<ColumnFiltersState>([])\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<VisibilityState>({})\n const [internalGlobalFilter, setInternalGlobalFilter] = useState<string>(\"\")\n const [internalColumnSizing, setInternalColumnSizing] =\n useState<ColumnSizingState>(defaultColumnSizing)\n const [internalColumnPinning, setInternalColumnPinning] =\n useState<ColumnPinningState>(defaultColumnPinning)\n\n const initialPagination = {\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? 10,\n }\n const [internalPagination, setInternalPagination] =\n useState<PaginationState>(initialPagination)\n const isInternalPaginationChange = useRef(false)\n\n useEffect(() => {\n if (pagination?.pageIndex === undefined) {\n return\n }\n const pageIndex = pagination.pageIndex\n setInternalPagination((prev) =>\n prev.pageIndex === pageIndex ? prev : { ...prev, pageIndex }\n )\n }, [pagination?.pageIndex])\n\n useEffect(() => {\n if (pagination?.pageSize === undefined) {\n return\n }\n const pageSize = pagination.pageSize\n setInternalPagination((prev) =>\n prev.pageSize === pageSize ? prev : { ...prev, pageSize }\n )\n }, [pagination?.pageSize])\n\n // Derive enableColumnResizing from disableColumnResizing (enabled by default)\n const enableColumnResizing = !disableColumnResizing\n\n // Use controlled or internal state\n const sorting = controlledSorting ?? internalSorting\n const rowSelection = controlledRowSelection ?? internalRowSelection\n const columnFilters = controlledColumnFilters ?? internalColumnFilters\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility\n const globalFilter = controlledGlobalFilter ?? internalGlobalFilter\n const columnSizing = controlledColumnSizing ?? internalColumnSizing\n const columnPinning = controlledColumnPinning ?? internalColumnPinning\n\n // Compute effective pinning with auto-pin selection\n const effectiveColumnPinning = useMemo(() => {\n const shouldAutoPinSelection =\n enableRowSelection &&\n autoPinSelection &&\n Object.keys(rowSelection).length > 0\n\n if (!shouldAutoPinSelection) {\n return columnPinning\n }\n\n // Add \"select\" to left pinned if not already present\n const leftPinned = columnPinning.left ?? []\n if (leftPinned.includes(\"select\")) {\n return columnPinning\n }\n\n return {\n ...columnPinning,\n left: [\"select\", ...leftPinned],\n }\n }, [columnPinning, rowSelection, enableRowSelection, autoPinSelection])\n\n // Build selection column if enabled\n const selectionColumn: ColumnDef<TData, unknown> = useMemo(\n () => ({\n id: \"select\",\n header: ({ table }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectAll\"\n checked={\n table.getIsAllPageRowsSelected() ||\n (table.getIsSomePageRowsSelected() && \"indeterminate\")\n }\n onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n data-fs-element=\"DataTable-SelectRow\"\n checked={row.getIsSelected()}\n onCheckedChange={(value) => row.toggleSelected(!!value)}\n disabled={!row.getCanSelect()}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableHiding: false,\n enableResizing: false,\n size: 40,\n }),\n []\n )\n\n // Transform columns to auto-wrap sortable headers\n const processedColumns = useMemo(() => {\n return wrapSortableHeaders(columns, enableSorting)\n }, [columns, enableSorting])\n\n // Prepend selection column if enabled\n const allColumns = useMemo(() => {\n if (enableRowSelection) {\n return [selectionColumn, ...processedColumns]\n }\n return processedColumns\n }, [processedColumns, enableRowSelection, selectionColumn])\n\n const usePagination = Boolean(pagination)\n const isServerSidePagination =\n usePagination &&\n (pagination?.totalItems !== undefined ||\n pagination?.pageCount !== undefined)\n\n const handlePaginationChange = useCallback(\n (\n updater: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => {\n isInternalPaginationChange.current = true\n setInternalPagination((prev) => {\n const next = typeof updater === \"function\" ? updater(prev) : updater\n return next\n })\n },\n []\n )\n\n // Call user's pagination callback after render completes\n useEffect(() => {\n if (isInternalPaginationChange.current) {\n pagination?.onPaginationChange?.(internalPagination)\n isInternalPaginationChange.current = false\n }\n }, [internalPagination, pagination])\n\n // Create table instance\n const table = useReactTable({\n data,\n columns: allColumns,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n\n // Default column configuration\n defaultColumn: {\n minSize: 50,\n },\n\n // Sorting\n ...(enableSorting &&\n !manualSorting && {\n getSortedRowModel: getSortedRowModel(),\n }),\n ...(manualSorting && {\n manualSorting: true,\n }),\n state: {\n sorting,\n rowSelection,\n columnFilters,\n columnVisibility,\n globalFilter,\n columnPinning: effectiveColumnPinning,\n ...(usePagination && {\n pagination: internalPagination,\n }),\n ...(enableColumnResizing && {\n columnSizing,\n }),\n },\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater\n setInternalSorting(newSorting)\n onSortingChange?.(newSorting)\n },\n\n // Row selection\n enableRowSelection:\n typeof enableRowSelection === \"function\"\n ? (row: Row<TData>) => enableRowSelection(row)\n : enableRowSelection,\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater\n setInternalRowSelection(newSelection)\n onRowSelectionChange?.(newSelection)\n },\n\n // Filtering\n ...((enableFiltering || enableGlobalFilter) &&\n !manualFiltering && {\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(manualFiltering && {\n manualFiltering: true,\n }),\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === \"function\" ? updater(columnFilters) : updater\n setInternalColumnFilters(newFilters)\n onColumnFiltersChange?.(newFilters)\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater\n setInternalColumnVisibility(newVisibility)\n onColumnVisibilityChange?.(newVisibility)\n },\n onGlobalFilterChange: (updater) => {\n const newGlobalFilter =\n typeof updater === \"function\" ? updater(globalFilter) : updater\n setInternalGlobalFilter(newGlobalFilter)\n onGlobalFilterChange?.(newGlobalFilter)\n },\n\n // Column resizing\n enableColumnResizing,\n columnResizeMode,\n onColumnSizingChange: (updater) => {\n const newSizing =\n typeof updater === \"function\" ? updater(columnSizing) : updater\n setInternalColumnSizing(newSizing)\n onColumnSizingChange?.(newSizing)\n },\n\n // Column pinning\n onColumnPinningChange: (updater) => {\n const newPinning =\n typeof updater === \"function\" ? updater(columnPinning) : updater\n setInternalColumnPinning(newPinning)\n onColumnPinningChange?.(newPinning)\n },\n\n // Pagination\n ...(usePagination &&\n !isServerSidePagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n ...(isServerSidePagination && {\n manualPagination: true,\n pageCount: pagination?.pageCount,\n rowCount: pagination?.totalItems,\n }),\n ...(usePagination && {\n onPaginationChange: handlePaginationChange,\n }),\n })\n\n const contextValue = useMemo(\n () => ({\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n }),\n [\n table,\n pagination,\n onRowClick,\n clickableRowClassName,\n selectedRowClassName,\n cellOverflow,\n disableColumnResizing,\n showHeaderBorder,\n showRowBorders,\n fitHeaderWidth,\n ]\n )\n\n return (\n <DataTableContext.Provider value={contextValue}>\n <div\n ref={ref}\n data-slot=\"data-table\"\n {...{ [SLOT_ATTR]: \"data-table\" }}\n data-fs-element=\"DataTable\"\n className={mergeClasses(styles.root, className)}\n // Authoritative, normalized, spread last: a raw caller data-density prop must never win\n // over the normalized density prop — same invariant DensityProvider/Table enforce.\n // canonicalDensity is the SAME normalization DensityContextBoundary below applies to the\n // context value, so an invalid density can never make DOM and context disagree\n // (TABLE-DENSITY-REVIEW-1.md #2).\n {...(density !== undefined\n ? { \"data-density\": canonicalDensity(density) }\n : {})}\n >\n <DensityContextBoundary density={density}>\n {children}\n </DensityContextBoundary>\n </div>\n </DataTableContext.Provider>\n )\n}\n\nexport const DataTable = React.forwardRef(DataTableInner) as <TData>(\n props: DataTableProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement | null\n"],"names":["wrapSortableHeaders","columns","enableSorting","column","headerTitle","col","jsx","DataTableColumnHeader","_a","useStyles","makeVoltStyles","DataTableInner","data","children","getRowId","enableRowSelection","manualSorting","enableFiltering","manualFiltering","enableGlobalFilter","pagination","controlledSorting","onSortingChange","defaultSorting","controlledRowSelection","onRowSelectionChange","defaultRowSelection","controlledColumnFilters","onColumnFiltersChange","controlledColumnVisibility","onColumnVisibilityChange","controlledGlobalFilter","onGlobalFilterChange","onRowClick","clickableRowClassName","selectedRowClassName","cellOverflow","disableColumnResizing","columnResizeMode","controlledColumnSizing","onColumnSizingChange","defaultColumnSizing","controlledColumnPinning","onColumnPinningChange","defaultColumnPinning","autoPinSelection","showHeaderBorder","showRowBorders","fitHeaderWidth","density","className","ref","styles","internalSorting","setInternalSorting","useState","internalRowSelection","setInternalRowSelection","internalColumnFilters","setInternalColumnFilters","internalColumnVisibility","setInternalColumnVisibility","internalGlobalFilter","setInternalGlobalFilter","internalColumnSizing","setInternalColumnSizing","internalColumnPinning","setInternalColumnPinning","initialPagination","internalPagination","setInternalPagination","isInternalPaginationChange","useRef","useEffect","pageIndex","prev","pageSize","enableColumnResizing","sorting","rowSelection","columnFilters","columnVisibility","globalFilter","columnSizing","columnPinning","effectiveColumnPinning","useMemo","leftPinned","selectionColumn","table","Checkbox","value","row","processedColumns","allColumns","usePagination","isServerSidePagination","handlePaginationChange","useCallback","updater","useReactTable","getCoreRowModel","getSortedRowModel","newSorting","newSelection","getFilteredRowModel","newFilters","newVisibility","newGlobalFilter","newSizing","newPinning","getPaginationRowModel","contextValue","DataTableContext","SLOT_ATTR","mergeClasses","canonicalDensity","DensityContextBoundary","DataTable","React"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as r, Fragment as v } from "react/jsx-runtime";
|
|
2
|
+
import * as e from "react";
|
|
3
|
+
import { SLOT_ATTR as u } from "../../packages/volt-runtime/dist/renderer/contract.js";
|
|
4
|
+
const f = ["compact", "normal", "comfortable"], s = (t) => f.includes(t) ? t : "normal", n = e.createContext(void 0), p = e.forwardRef(function({ density: o, className: a, children: c, ...d }, m) {
|
|
5
|
+
const i = s(o);
|
|
6
|
+
return /* @__PURE__ */ r(
|
|
7
|
+
"div",
|
|
8
|
+
{
|
|
9
|
+
ref: m,
|
|
10
|
+
"data-slot": "density-provider",
|
|
11
|
+
[u]: "density-provider",
|
|
12
|
+
className: a,
|
|
13
|
+
...d,
|
|
14
|
+
"data-density": i,
|
|
15
|
+
children: /* @__PURE__ */ r(n.Provider, { value: i, children: c })
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
}), D = () => e.useContext(n), x = ({
|
|
19
|
+
density: t,
|
|
20
|
+
children: o
|
|
21
|
+
}) => t === void 0 ? /* @__PURE__ */ r(v, { children: o }) : /* @__PURE__ */ r(n.Provider, { value: s(t), children: o });
|
|
22
|
+
export {
|
|
23
|
+
x as DensityContextBoundary,
|
|
24
|
+
p as DensityProvider,
|
|
25
|
+
s as canonicalDensity,
|
|
26
|
+
D as useDensity
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=density-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"density-provider.js","sources":["../../../src/components/density-provider/density-provider.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\n\n/**\n * DENSITY-SPEC.md §4.4 — the two density mechanisms, and why this component is the only one that\n * does both:\n *\n * - CSS custom-property inheritance (no JavaScript) already delivers the shell's AMBIENT default\n * to every element, portalled or not — a Radix portal root is still an ordinary DOM descendant\n * of `<html>`, so it inherits `<html data-density=\"...\">` with zero wiring. No provider needed\n * for that common case.\n * - A bare `data-density` DOM attribute alone never reaches a portal that ISN'T a DOM descendant of\n * it — setting a DOM attribute runs no React code, so `useDensity()` inside such a subtree (or a\n * sibling-in-DOM, descendant-in-React-tree portal) sees nothing from it.\n *\n * `DensityProvider` sets both at once: a real DOM `data-density` boundary for ordinary (non-portal)\n * CSS inheritance, and a React context value that portal-content components (`SelectContent`,\n * `PopoverContent`, `DialogContent`, etc.) read via `useDensity()` to re-stamp themselves — since\n * portalled content is a React-tree descendant but a DOM sibling, only the context path reaches it.\n */\n\nexport type Density = \"compact\" | \"normal\" | \"comfortable\"\n\nconst CANONICAL_DENSITIES: readonly Density[] = [\"compact\", \"normal\", \"comfortable\"]\n\n/**\n * Invalid runtime input (a bad string slipping past TypeScript) normalizes to \"normal\". Exported\n * (package-internal — NOT added to `src/index.ts`, no new public export) so `Table`/`DataTable`/\n * `TableHead`/`TableCell` can apply the exact same normalization to their own DOM `data-density`\n * stamp that `DensityContextBoundary` already applies to the context value — one function, so the\n * two can never independently disagree on what an invalid input normalizes to\n * (TABLE-DENSITY-REVIEW-1.md #2).\n */\nexport const canonicalDensity = (density: Density): Density =>\n CANONICAL_DENSITIES.includes(density) ? density : \"normal\"\n\n/**\n * Unexported by design, same as `ListContext` — read only through `useDensity()`. Default\n * `undefined`: a component nested with no `DensityProvider` ancestor gets `undefined`, never a\n * fabricated \"normal\" — that would be a JS reading of ambient CSS this hook explicitly does not do.\n */\nconst DensityContext = React.createContext<Density | undefined>(undefined)\n\nexport type DensityProviderProps = React.ComponentProps<\"div\"> & {\n /** The explicit density boundary for this subtree. No default — always a real caller choice. */\n density: Density\n}\n\n/**\n * Ordinary HTML div semantics: forwards `ref`/`className`/`style`/every other div prop, no\n * polymorphic `asChild`. Renders one real DOM node (the boundary) wrapping a React context\n * provider around `children` — not two independent trees, so context and DOM boundary can never\n * disagree about which density is active.\n */\nexport const DensityProvider = React.forwardRef<\n HTMLDivElement,\n DensityProviderProps\n>(function DensityProvider({ density, className, children, ...props }, ref) {\n const value = canonicalDensity(density)\n\n return (\n <div\n ref={ref}\n data-slot=\"density-provider\"\n {...{ [SLOT_ATTR]: \"density-provider\" }}\n className={className}\n {...props}\n // Authoritative, spread LAST: a raw caller `data-density` prop (part of `...props`, since\n // `DensityProviderProps` extends every native div prop) must never win over the normalized\n // `density` prop — the DOM attribute and the context value below both derive from the same\n // `value`, and this ordering is what keeps that invariant true even when a caller passes a\n // conflicting literal `data-density` alongside `density` (finish-line integration fix).\n data-density={value}\n >\n <DensityContext.Provider value={value}>\n {children}\n </DensityContext.Provider>\n </div>\n )\n})\n\n/**\n * Returns the nearest explicit `DensityProvider` value, or `undefined` if none exists. Never reads\n * `getComputedStyle`/CSS custom properties — an `undefined` result means \"no explicit override in\n * the React tree,\" not \"ambient density is unknown\"; the caller's job (portal content components)\n * is to stamp nothing in that case and let ordinary CSS inheritance supply the ambient value.\n */\nexport const useDensity = (): Density | undefined => React.useContext(DensityContext)\n\n/**\n * Internal, package-private — NOT exported from `src/index.ts`. `DensityProvider` is the only\n * public density-boundary API; this is a context-only variant for a component that already owns a\n * real DOM boundary of its own (e.g. `Table`, whose root is a `<table>` and cannot safely have\n * `DensityProvider`'s wrapping `<div>` injected into its child structure without breaking table\n * semantics) and just needs the same context so its own descendant portals (e.g.\n * `table-pagination.tsx`'s inline Select) can read an explicit override via `useDensity()`.\n *\n * Renders no DOM node. Provides nothing (passes `children` through untouched, leaving whatever\n * outer `DensityContext` value already exists) when `density` is `undefined` — omitted density\n * must not fabricate a boundary any more than `DensityProvider` fabricates a DOM stamp.\n *\n * @no-host-element A pure context provider — it renders no host element (a `React.Context.Provider`\n * is not one), so there is no DOM node for a forwarded ref to ever reach.\n */\nexport const DensityContextBoundary = ({\n density,\n children,\n}: {\n density: Density | undefined\n children: React.ReactNode\n}): React.ReactElement => {\n if (density === undefined) return <>{children}</>\n return (\n <DensityContext.Provider value={canonicalDensity(density)}>\n {children}\n </DensityContext.Provider>\n )\n}\n"],"names":["CANONICAL_DENSITIES","canonicalDensity","density","DensityContext","React","DensityProvider","className","children","props","ref","value","jsx","SLOT_ATTR","useDensity","DensityContextBoundary","Fragment"],"mappings":";;;AAwBA,MAAMA,IAA0C,CAAC,WAAW,UAAU,aAAa,GAUtEC,IAAmB,CAACC,MAC/BF,EAAoB,SAASE,CAAO,IAAIA,IAAU,UAO9CC,IAAiBC,EAAM,cAAmC,MAAS,GAa5DC,IAAkBD,EAAM,WAGnC,SAAyB,EAAE,SAAAF,GAAS,WAAAI,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,GAAK;AAC1E,QAAMC,IAAQT,EAAiBC,CAAO;AAEtC,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,aAAU;AAAA,MACJ,CAACG,CAAS,GAAG;AAAA,MACnB,WAAAN;AAAA,MACC,GAAGE;AAAA,MAMJ,gBAAcE;AAAA,MAEd,UAAA,gBAAAC,EAACR,EAAe,UAAf,EAAwB,OAAAO,GACtB,UAAAH,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC,GAQYM,IAAa,MAA2BT,EAAM,WAAWD,CAAc,GAiBvEW,IAAyB,CAAC;AAAA,EACrC,SAAAZ;AAAA,EACA,UAAAK;AACF,MAIML,MAAY,SAAkB,gBAAAS,EAAAI,GAAA,EAAG,UAAAR,GAAS,IAE5C,gBAAAI,EAACR,EAAe,UAAf,EAAwB,OAAOF,EAAiBC,CAAO,GACrD,UAAAK,GACH;"}
|
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
1
|
+
import { jsx as e, jsxs as x } from "react/jsx-runtime";
|
|
2
2
|
import * as n from "react";
|
|
3
|
-
import { Root as
|
|
3
|
+
import { Root as w, Close as y, Content as b, Description as v, Overlay as z, Portal as R, Title as S, Trigger as W } from "../../vendor/@radix-ui/react-dialog/dist/index.js";
|
|
4
4
|
import { shorthands as s } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/index.js";
|
|
5
5
|
import { SLOT_ATTR as l } from "../../packages/volt-runtime/dist/renderer/contract.js";
|
|
6
6
|
import { mergeClasses as d } from "../../packages/volt-runtime/dist/vendor/@griffel/core/src/mergeClasses.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
7
|
+
import { useDensity as L } from "../density-provider/density-provider.js";
|
|
8
|
+
import { makeVoltStyles as N } from "../../styles/make-styles.js";
|
|
9
|
+
import { spacingElement2 as f, spacingGroup2 as u, grayA1 as T, radiusXl as O, spacingLayout1 as A, leadingSm as F, textSm as I, grayA11 as k, grayA12 as P, fontWeightSemibold as H, leadingLg as X, textLg as j, semFocusRing as h, semAccentSoft as B, accentA11 as E, container5xl as _, container4xl as M, container3xl as G, container2xl as Q, containerXl as V, containerLg as Z, containerMd as q, containerSm as J, body as K } from "../../tokens/index.js";
|
|
10
|
+
const c = N({
|
|
10
11
|
overlay: {
|
|
11
12
|
position: "fixed",
|
|
12
13
|
...s.inset(0),
|
|
13
14
|
// v1's z-1300 is the overlay tier; no z-index token exists in this package.
|
|
14
15
|
zIndex: 1300,
|
|
15
16
|
backgroundColor: "rgb(0 0 0 / 50%)",
|
|
17
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
18
|
+
animationDuration: "0.01ms",
|
|
19
|
+
animationIterationCount: "1",
|
|
20
|
+
"&[data-state='open']": {
|
|
21
|
+
animationDuration: "0.01ms"
|
|
22
|
+
},
|
|
23
|
+
"&[data-state='closed']": {
|
|
24
|
+
animationDuration: "0.01ms"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
16
27
|
"&[data-state='open']": {
|
|
17
28
|
animationName: {
|
|
18
29
|
from: { opacity: 0 },
|
|
@@ -31,7 +42,7 @@ const c = W({
|
|
|
31
42
|
}
|
|
32
43
|
},
|
|
33
44
|
content: {
|
|
34
|
-
backgroundColor:
|
|
45
|
+
backgroundColor: K,
|
|
35
46
|
position: "fixed",
|
|
36
47
|
top: "50%",
|
|
37
48
|
left: "50%",
|
|
@@ -41,11 +52,21 @@ const c = W({
|
|
|
41
52
|
width: "100%",
|
|
42
53
|
maxWidth: "calc(100% - 2rem)",
|
|
43
54
|
transform: "translate(-50%, -50%)",
|
|
44
|
-
...s.gap(
|
|
45
|
-
...s.borderRadius(
|
|
46
|
-
...s.border("1px", "solid",
|
|
55
|
+
...s.gap(A),
|
|
56
|
+
...s.borderRadius(O),
|
|
57
|
+
...s.border("1px", "solid", T),
|
|
47
58
|
// v1 shadow-lg; elevation has no token in this package.
|
|
48
59
|
boxShadow: "0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a",
|
|
60
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
61
|
+
animationDuration: "0.01ms",
|
|
62
|
+
animationIterationCount: "1",
|
|
63
|
+
"&[data-state='open']": {
|
|
64
|
+
animationDuration: "0.01ms"
|
|
65
|
+
},
|
|
66
|
+
"&[data-state='closed']": {
|
|
67
|
+
animationDuration: "0.01ms"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
49
70
|
"&[data-state='open']": {
|
|
50
71
|
animationName: {
|
|
51
72
|
from: {
|
|
@@ -74,44 +95,44 @@ const c = W({
|
|
|
74
95
|
animationDuration: "150ms",
|
|
75
96
|
animationTimingFunction: "cubic-bezier(0.4, 0, 1, 1)"
|
|
76
97
|
},
|
|
77
|
-
"&[data-size='sm']": { maxWidth:
|
|
78
|
-
"&[data-size='md']": { maxWidth:
|
|
79
|
-
"&[data-size='lg']": { maxWidth:
|
|
80
|
-
"&[data-size='xl']": { maxWidth:
|
|
81
|
-
"&[data-size='2xl']": { maxWidth:
|
|
82
|
-
"&[data-size='3xl']": { maxWidth:
|
|
83
|
-
"&[data-size='4xl']": { maxWidth:
|
|
84
|
-
"&[data-size='5xl']": { maxWidth:
|
|
98
|
+
"&[data-size='sm']": { maxWidth: J },
|
|
99
|
+
"&[data-size='md']": { maxWidth: q },
|
|
100
|
+
"&[data-size='lg']": { maxWidth: Z },
|
|
101
|
+
"&[data-size='xl']": { maxWidth: V },
|
|
102
|
+
"&[data-size='2xl']": { maxWidth: Q },
|
|
103
|
+
"&[data-size='3xl']": { maxWidth: G },
|
|
104
|
+
"&[data-size='4xl']": { maxWidth: M },
|
|
105
|
+
"&[data-size='5xl']": { maxWidth: _ },
|
|
85
106
|
"&[data-size='full-width']": { maxWidth: "100%" }
|
|
86
107
|
},
|
|
87
108
|
contentPadding: {
|
|
88
|
-
...s.padding(
|
|
109
|
+
...s.padding(u)
|
|
89
110
|
},
|
|
90
111
|
close: {
|
|
91
112
|
":focus-visible": {
|
|
92
113
|
outlineWidth: "2px",
|
|
93
114
|
outlineStyle: "solid",
|
|
94
115
|
outlineOffset: "2px",
|
|
95
|
-
outlineColor:
|
|
116
|
+
outlineColor: h
|
|
96
117
|
}
|
|
97
118
|
},
|
|
98
119
|
closeButton: {
|
|
99
120
|
position: "absolute",
|
|
100
|
-
top:
|
|
101
|
-
right:
|
|
121
|
+
top: u,
|
|
122
|
+
right: u,
|
|
102
123
|
...s.padding(f),
|
|
103
124
|
// v1 rounded-full; no full-radius token exists in this package.
|
|
104
125
|
borderRadius: "9999px",
|
|
105
126
|
cursor: "pointer",
|
|
106
|
-
color:
|
|
127
|
+
color: E,
|
|
107
128
|
":hover": {
|
|
108
|
-
backgroundColor:
|
|
129
|
+
backgroundColor: B
|
|
109
130
|
},
|
|
110
131
|
":focus-visible": {
|
|
111
132
|
outlineWidth: "2px",
|
|
112
133
|
outlineStyle: "solid",
|
|
113
134
|
outlineOffset: "2px",
|
|
114
|
-
outlineColor:
|
|
135
|
+
outlineColor: h
|
|
115
136
|
},
|
|
116
137
|
":disabled": {
|
|
117
138
|
pointerEvents: "none"
|
|
@@ -135,15 +156,15 @@ const c = W({
|
|
|
135
156
|
justifyContent: "flex-end"
|
|
136
157
|
},
|
|
137
158
|
title: {
|
|
138
|
-
fontSize:
|
|
139
|
-
lineHeight:
|
|
140
|
-
fontWeight:
|
|
141
|
-
color:
|
|
159
|
+
fontSize: j,
|
|
160
|
+
lineHeight: X,
|
|
161
|
+
fontWeight: H,
|
|
162
|
+
color: P
|
|
142
163
|
},
|
|
143
164
|
description: {
|
|
144
|
-
color:
|
|
145
|
-
fontSize:
|
|
146
|
-
lineHeight:
|
|
165
|
+
color: k,
|
|
166
|
+
fontSize: I,
|
|
167
|
+
lineHeight: F
|
|
147
168
|
},
|
|
148
169
|
srOnly: {
|
|
149
170
|
position: "absolute",
|
|
@@ -155,18 +176,18 @@ const c = W({
|
|
|
155
176
|
clip: "rect(0, 0, 0, 0)",
|
|
156
177
|
whiteSpace: "nowrap"
|
|
157
178
|
}
|
|
158
|
-
}),
|
|
159
|
-
function(
|
|
179
|
+
}), U = n.forwardRef(
|
|
180
|
+
function(t, o) {
|
|
160
181
|
return /* @__PURE__ */ e(
|
|
161
182
|
"svg",
|
|
162
183
|
{
|
|
163
|
-
ref:
|
|
184
|
+
ref: o,
|
|
164
185
|
width: "12",
|
|
165
186
|
height: "12",
|
|
166
187
|
viewBox: "0 0 9 9",
|
|
167
188
|
fill: "none",
|
|
168
189
|
xmlns: "http://www.w3.org/2000/svg",
|
|
169
|
-
...
|
|
190
|
+
...t,
|
|
170
191
|
children: /* @__PURE__ */ e(
|
|
171
192
|
"path",
|
|
172
193
|
{
|
|
@@ -177,98 +198,99 @@ const c = W({
|
|
|
177
198
|
}
|
|
178
199
|
);
|
|
179
200
|
}
|
|
180
|
-
),
|
|
181
|
-
function(
|
|
182
|
-
return /* @__PURE__ */ e(
|
|
201
|
+
), rt = n.forwardRef(
|
|
202
|
+
function(t, o) {
|
|
203
|
+
return /* @__PURE__ */ e(w, { "data-slot": "dialog", ...t });
|
|
183
204
|
}
|
|
184
|
-
),
|
|
205
|
+
), lt = n.forwardRef(function({ className: t, ...o }, a) {
|
|
185
206
|
return /* @__PURE__ */ e(
|
|
186
|
-
|
|
207
|
+
W,
|
|
187
208
|
{
|
|
188
209
|
ref: a,
|
|
189
210
|
"data-slot": "dialog-trigger",
|
|
190
211
|
[l]: "dialog-trigger",
|
|
191
|
-
className:
|
|
192
|
-
...
|
|
212
|
+
className: t,
|
|
213
|
+
...o
|
|
193
214
|
}
|
|
194
215
|
);
|
|
195
|
-
}),
|
|
196
|
-
function(
|
|
216
|
+
}), st = n.forwardRef(
|
|
217
|
+
function(t, o) {
|
|
197
218
|
return /* @__PURE__ */ e(
|
|
198
|
-
|
|
219
|
+
R,
|
|
199
220
|
{
|
|
200
221
|
"data-slot": "dialog-portal",
|
|
201
222
|
[l]: "dialog-portal",
|
|
202
|
-
...
|
|
223
|
+
...t
|
|
203
224
|
}
|
|
204
225
|
);
|
|
205
226
|
}
|
|
206
|
-
),
|
|
227
|
+
), dt = n.forwardRef(function({ className: t, ...o }, a) {
|
|
207
228
|
const i = c();
|
|
208
229
|
return /* @__PURE__ */ e(
|
|
209
|
-
|
|
230
|
+
z,
|
|
210
231
|
{
|
|
211
232
|
ref: a,
|
|
212
233
|
"data-slot": "dialog-overlay",
|
|
213
234
|
[l]: "dialog-overlay",
|
|
214
|
-
className: d(i.overlay,
|
|
215
|
-
...
|
|
235
|
+
className: d(i.overlay, t),
|
|
236
|
+
...o
|
|
216
237
|
}
|
|
217
238
|
);
|
|
218
|
-
}),
|
|
219
|
-
className:
|
|
220
|
-
children:
|
|
239
|
+
}), ct = n.forwardRef(function({
|
|
240
|
+
className: t,
|
|
241
|
+
children: o,
|
|
221
242
|
showCloseButton: a = !0,
|
|
222
243
|
flush: i = !1,
|
|
223
|
-
size:
|
|
224
|
-
...
|
|
244
|
+
size: g = "lg",
|
|
245
|
+
...D
|
|
225
246
|
}, C) {
|
|
226
|
-
const
|
|
227
|
-
return /* @__PURE__ */
|
|
228
|
-
|
|
247
|
+
const m = c(), p = L();
|
|
248
|
+
return /* @__PURE__ */ x(
|
|
249
|
+
b,
|
|
229
250
|
{
|
|
230
251
|
ref: C,
|
|
231
252
|
"data-slot": "dialog-content",
|
|
232
253
|
[l]: "dialog-content",
|
|
233
|
-
"data-
|
|
254
|
+
...p !== void 0 ? { "data-density": p } : {},
|
|
255
|
+
"data-size": g,
|
|
234
256
|
className: d(
|
|
235
|
-
|
|
236
|
-
!i &&
|
|
237
|
-
|
|
257
|
+
m.content,
|
|
258
|
+
!i && m.contentPadding,
|
|
259
|
+
t
|
|
238
260
|
),
|
|
239
|
-
...
|
|
261
|
+
...D,
|
|
240
262
|
children: [
|
|
241
|
-
|
|
242
|
-
a && /* @__PURE__ */
|
|
243
|
-
|
|
263
|
+
o,
|
|
264
|
+
a && /* @__PURE__ */ x(
|
|
265
|
+
y,
|
|
244
266
|
{
|
|
245
267
|
"data-slot": "dialog-close",
|
|
246
268
|
[l]: "dialog-close",
|
|
247
|
-
className:
|
|
269
|
+
className: m.closeButton,
|
|
248
270
|
children: [
|
|
249
|
-
/* @__PURE__ */ e(
|
|
250
|
-
/* @__PURE__ */ e("span", { className:
|
|
271
|
+
/* @__PURE__ */ e(U, {}),
|
|
272
|
+
/* @__PURE__ */ e("span", { className: m.srOnly, children: "Close" })
|
|
251
273
|
]
|
|
252
274
|
}
|
|
253
275
|
)
|
|
254
276
|
]
|
|
255
277
|
}
|
|
256
278
|
);
|
|
257
|
-
}),
|
|
258
|
-
const
|
|
279
|
+
}), mt = n.forwardRef(function({ className: t, children: o, ...a }, i) {
|
|
280
|
+
const g = c();
|
|
259
281
|
return /* @__PURE__ */ e(
|
|
260
|
-
|
|
282
|
+
y,
|
|
261
283
|
{
|
|
262
284
|
ref: i,
|
|
263
285
|
"data-slot": "dialog-close",
|
|
264
286
|
[l]: "dialog-close",
|
|
265
|
-
className: d(
|
|
287
|
+
className: d(g.close, t),
|
|
266
288
|
...a,
|
|
267
|
-
children:
|
|
289
|
+
children: o
|
|
268
290
|
}
|
|
269
291
|
);
|
|
270
|
-
}),
|
|
271
|
-
function({ className:
|
|
292
|
+
}), gt = n.forwardRef(
|
|
293
|
+
function({ className: t, ...o }, a) {
|
|
272
294
|
const i = c();
|
|
273
295
|
return /* @__PURE__ */ e(
|
|
274
296
|
"div",
|
|
@@ -276,13 +298,13 @@ const c = W({
|
|
|
276
298
|
ref: a,
|
|
277
299
|
"data-slot": "dialog-header",
|
|
278
300
|
[l]: "dialog-header",
|
|
279
|
-
className: d(i.header,
|
|
280
|
-
...
|
|
301
|
+
className: d(i.header, t),
|
|
302
|
+
...o
|
|
281
303
|
}
|
|
282
304
|
);
|
|
283
305
|
}
|
|
284
|
-
),
|
|
285
|
-
function({ className:
|
|
306
|
+
), ft = n.forwardRef(
|
|
307
|
+
function({ className: t, ...o }, a) {
|
|
286
308
|
const i = c();
|
|
287
309
|
return /* @__PURE__ */ e(
|
|
288
310
|
"div",
|
|
@@ -290,46 +312,46 @@ const c = W({
|
|
|
290
312
|
ref: a,
|
|
291
313
|
"data-slot": "dialog-footer",
|
|
292
314
|
[l]: "dialog-footer",
|
|
293
|
-
className: d(i.footer,
|
|
294
|
-
...
|
|
315
|
+
className: d(i.footer, t),
|
|
316
|
+
...o
|
|
295
317
|
}
|
|
296
318
|
);
|
|
297
319
|
}
|
|
298
|
-
),
|
|
320
|
+
), ut = n.forwardRef(function({ className: t, ...o }, a) {
|
|
299
321
|
const i = c();
|
|
300
322
|
return /* @__PURE__ */ e(
|
|
301
|
-
|
|
323
|
+
S,
|
|
302
324
|
{
|
|
303
325
|
ref: a,
|
|
304
326
|
"data-slot": "dialog-title",
|
|
305
327
|
[l]: "dialog-title",
|
|
306
|
-
className: d(i.title,
|
|
307
|
-
...
|
|
328
|
+
className: d(i.title, t),
|
|
329
|
+
...o
|
|
308
330
|
}
|
|
309
331
|
);
|
|
310
|
-
}),
|
|
332
|
+
}), pt = n.forwardRef(function({ className: t, ...o }, a) {
|
|
311
333
|
const i = c();
|
|
312
334
|
return /* @__PURE__ */ e(
|
|
313
|
-
|
|
335
|
+
v,
|
|
314
336
|
{
|
|
315
337
|
ref: a,
|
|
316
338
|
"data-slot": "dialog-description",
|
|
317
339
|
[l]: "dialog-description",
|
|
318
|
-
className: d(i.description,
|
|
319
|
-
...
|
|
340
|
+
className: d(i.description, t),
|
|
341
|
+
...o
|
|
320
342
|
}
|
|
321
343
|
);
|
|
322
344
|
});
|
|
323
345
|
export {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
346
|
+
rt as Dialog,
|
|
347
|
+
mt as DialogClose,
|
|
348
|
+
ct as DialogContent,
|
|
349
|
+
pt as DialogDescription,
|
|
350
|
+
ft as DialogFooter,
|
|
351
|
+
gt as DialogHeader,
|
|
352
|
+
dt as DialogOverlay,
|
|
353
|
+
st as DialogPortal,
|
|
354
|
+
ut as DialogTitle,
|
|
355
|
+
lt as DialogTrigger
|
|
334
356
|
};
|
|
335
357
|
//# sourceMappingURL=dialog.js.map
|