@optimum-intelligence/opti-ui 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/components/app-shell/AppShell.js +139 -121
  2. package/dist/components/app-shell/AppShell.js.map +1 -1
  3. package/dist/components/badge/Badge.d.ts +4 -2
  4. package/dist/components/badge/Badge.js.map +1 -1
  5. package/dist/components/button/Button.d.ts +6 -1
  6. package/dist/components/button/Button.js +31 -26
  7. package/dist/components/button/Button.js.map +1 -1
  8. package/dist/components/data-table/DataTable.d.ts +14 -2
  9. package/dist/components/data-table/DataTable.js +113 -98
  10. package/dist/components/data-table/DataTable.js.map +1 -1
  11. package/dist/components/data-table/DataTableFilters.d.ts +1 -1
  12. package/dist/components/data-table/DataTableFilters.js +85 -44
  13. package/dist/components/data-table/DataTableFilters.js.map +1 -1
  14. package/dist/components/data-table/export.d.ts +3 -0
  15. package/dist/components/data-table/export.js +31 -0
  16. package/dist/components/data-table/export.js.map +1 -0
  17. package/dist/components/data-table/types.d.ts +32 -5
  18. package/dist/components/data-table/useDataTable.js +18 -4
  19. package/dist/components/data-table/useDataTable.js.map +1 -1
  20. package/dist/components/description-list/DescriptionList.d.ts +29 -0
  21. package/dist/components/description-list/DescriptionList.js +125 -0
  22. package/dist/components/description-list/DescriptionList.js.map +1 -0
  23. package/dist/components/dialog/ConfirmDialog.d.ts +59 -0
  24. package/dist/components/dialog/ConfirmDialog.js +165 -0
  25. package/dist/components/dialog/ConfirmDialog.js.map +1 -0
  26. package/dist/components/dialog/Dialog.d.ts +15 -2
  27. package/dist/components/dialog/Dialog.js +115 -86
  28. package/dist/components/dialog/Dialog.js.map +1 -1
  29. package/dist/components/drawer/Drawer.d.ts +6 -1
  30. package/dist/components/drawer/Drawer.js +139 -132
  31. package/dist/components/drawer/Drawer.js.map +1 -1
  32. package/dist/components/select/Select.d.ts +6 -1
  33. package/dist/components/select/Select.js +110 -92
  34. package/dist/components/select/Select.js.map +1 -1
  35. package/dist/components.json +298 -20
  36. package/dist/icons/index.d.ts +4 -0
  37. package/dist/icons/index.js +6 -1
  38. package/dist/icons/index.js.map +1 -1
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.js +5 -3
  41. package/dist/llms-full.txt +106 -5
  42. package/dist/llms.txt +3 -0
  43. package/dist/opti-ui.css +445 -20
  44. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useDataTable.js","names":["React","normalizeText","datePart","pad","DateRange","DataTableColumn","DataTableEntry","DataTableFilter","DataTableFilterValue","DataTableFilterValues","DataTableInstance","DataTableResolvedFilter","DataTableResolvedLabels","UseDataTableOptions","defaultLabels","Omit","search","clearSearch","selectAll","selectRow","label","count","selected","emptyTitle","emptyDescription","noMatchTitle","noMatchDescription","loading","errorTitle","retry","filters","filterAll","clearFilters","actions","edit","save","cancel","delete","useControlled","value","initial","onChange","$","_c","inner","setInner","useState","t0","next","set","t1","undefined","t2","const","getColumnValue","column","T","row","accessor","Record","id","isEmpty","hasValue","cell","isOn","Boolean","includes","trim","toLowerCase","dayOf","date","Date","Number","isNaN","getTime","getFullYear","getMonth","getDate","WORD_CHARACTER","hasWord","text","term","from","indexOf","before","after","length","test","matchesTerms","columns","terms","values","map","exact","searchMode","every","some","resolveFilter","filter","read","data","collator","Intl","Collator","type","match","options","get","presets","min","max","day","range","start","end","items","Array","isArray","item","String","Set","flatMap","sort","compare","useDataTable","mode","total","error","onRetry","getRowId","locale","searchable","t3","searchProp","defaultSearch","t4","onSearchChange","searchDebounce","filtersProp","filterValues","filterValuesProp","defaultFilterValues","onFilterValuesChange","sortProp","defaultSort","t5","onSortChange","paginated","t6","page","pageProp","onPageChange","pageSize","pageSizeProp","defaultPageSize","t7","onPageSizeChange","selection","selectionProp","onSelectionChange","onRowClick","rowLabel","rowActions","rowTone","rowProps","onRowSave","onRowDelete","labels","setSearchState","t8","setFilterValues","setSort","setPage","setPageSizeState","setEdit","saving","setSaving","server","activeFilters","currentPage","entries","isSortable","matchCount","pageCount","pageRows","query","rows","t9","numeric","sensitivity","t10","matches","all","createElement","Fragment","t11","t12","filteredCount","noFilterMatchDescription","config","own","header","definition","definition_0","row_0","t13","t14","row_1","index","idOf","t15","row_2","index_0","t16","row_3","t17","id_0","searchColumns","_temp","split","row_4","_temp2","sortColumn","find","candidate","direction","a","b","av","bv","Math","ceil","slice","t18","t19","id_1","has","selectedInView","allSelected","setSearch","next_0","changeFilters","id_2","others","Object","key","fromEntries","setFilterValue","entry","id_3","Promise","resolve","then","draft","_temp3","saveEdit","_temp4","t20","t21","t22","t23","id_4","t24","size","t25","t26","id_5","t27","id_6","checked","item_0","t28","checked_0","ids","_temp5","kept","id_8","t29","t30","t31","t32","t33","t34","Symbol","for","id_9","t35","row_5","field","t36","field_0","value_0","current","t37","row_6","t38","visibleColumns","allRows","totalCount","filtered","reset","pending","activeFilterCount","toggleSort","setPageSize","selectable","isSelected","toggleRow","toggleAll","someSelected","editable","deletable","editingId","startEdit","cancelEdit","editValue","setEditValue","deleteRow","id_7","column_2","hidden","column_1","sortable","column_0","_c"],"sources":["../../../src/components/data-table/useDataTable.ts"],"sourcesContent":["import * as React from 'react';\nimport { normalizeText } from '../../utils/search';\nimport { datePart, pad, type DateRange } from '../calendar/date-utils';\nimport type {\n DataTableColumn,\n DataTableEntry,\n DataTableFilter,\n DataTableFilterValue,\n DataTableFilterValues,\n DataTableInstance,\n DataTableResolvedFilter,\n DataTableResolvedLabels,\n UseDataTableOptions,\n} from './types';\n\nconst defaultLabels: Omit<DataTableResolvedLabels, 'filteredCount' | 'noFilterMatchDescription'> = {\n search: 'Search…',\n clearSearch: 'Clear search',\n selectAll: 'Select all',\n selectRow: (label) => `Select ${label}`,\n count: (count) => `${count} ${count === 1 ? 'record' : 'records'}`,\n selected: (count) => `${count} selected`,\n emptyTitle: 'No records yet',\n emptyDescription: 'Records will appear here once added.',\n noMatchTitle: 'No matching records',\n noMatchDescription: 'Try a different search.',\n loading: 'Loading',\n errorTitle: 'Could not load records',\n retry: 'Try again',\n filters: 'Filters',\n filterAll: 'All',\n clearFilters: 'Clear filters',\n actions: 'Actions',\n edit: 'Edit',\n save: 'Save',\n cancel: 'Cancel',\n delete: 'Delete',\n};\n\nfunction useControlled<V>(value: V | undefined, initial: V, onChange?: (value: V) => void) {\n const [inner, setInner] = React.useState(initial);\n const set = (next: V) => {\n setInner(next);\n onChange?.(next);\n };\n return [value === undefined ? inner : value, set] as const;\n}\n\n/** The value a column sorts, searches and filters by. */\nexport function getColumnValue<T>(column: DataTableColumn<T>, row: T): unknown {\n return column.accessor ? column.accessor(row) : (row as Record<string, unknown>)[column.id];\n}\n\n// Empty values sort last in both directions.\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction hasValue<T>(column: DataTableColumn<T>) {\n return column.accessor !== undefined || column.cell === undefined;\n}\n\n/** A toggle filter without `match` reads the value as a flag; \"No\", \"false\" and \"0\" count as off. */\nfunction isOn(value: unknown): boolean {\n if (typeof value !== 'string') return Boolean(value);\n return !['', 'no', 'false', '0'].includes(value.trim().toLowerCase());\n}\n\n/** Local calendar day of a row's date, as `\"2026-03-09\"`. */\nfunction dayOf(value: unknown): string | null {\n if (isEmpty(value)) return null;\n if (typeof value === 'string' && datePart(value)) return datePart(value);\n const date = value instanceof Date ? value : new Date(value as string | number);\n if (Number.isNaN(date.getTime())) return null;\n return `${pad(date.getFullYear(), 4)}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n}\n\nconst WORD_CHARACTER = /[\\p{L}\\p{N}]/u;\n\n/** True when `term` occurs in `text` as a whole word (or run of words). */\nfunction hasWord(text: string, term: string): boolean {\n for (let from = text.indexOf(term); from !== -1; from = text.indexOf(term, from + 1)) {\n const before = text[from - 1];\n const after = text[from + term.length];\n if (!(before && WORD_CHARACTER.test(before)) && !(after && WORD_CHARACTER.test(after))) return true;\n }\n return false;\n}\n\n/** Every term has to occur in one of the columns. */\nfunction matchesTerms<T>(columns: DataTableColumn<T>[], row: T, terms: string[]): boolean {\n const values = columns.map((column) => ({\n exact: column.searchMode === 'exact',\n text: normalizeText(getColumnValue(column, row)),\n }));\n return terms.every((term) => values.some(({ exact, text }) => (exact ? hasWord(text, term) : text.includes(term))));\n}\n\nfunction resolveFilter<T>(\n filter: DataTableFilter<T>,\n read: (row: T) => unknown,\n data: T[],\n collator: Intl.Collator,\n): DataTableResolvedFilter<T> {\n const { id, label } = filter;\n if (filter.type === 'toggle') {\n const match = filter.match ?? ((row: T) => isOn(read(row)));\n return { id, label, type: 'toggle', options: [], test: (row) => match(row) };\n }\n const get = filter.value ?? read;\n if (filter.type === 'dateRange') {\n const { presets, min, max } = filter;\n return {\n id,\n label,\n type: 'dateRange',\n options: [],\n presets,\n min,\n max,\n test: (row, value) => {\n const day = dayOf(get(row));\n const range = value as DateRange;\n return day !== null && day >= range.start && day <= range.end;\n },\n };\n }\n const items = (row: T) => {\n const value = get(row);\n return (Array.isArray(value) ? value : [value]).filter((item) => !isEmpty(item)).map(String);\n };\n const options =\n filter.options ??\n [...new Set(data.flatMap(items))].sort(collator.compare).map((value) => ({ value, label: value }));\n return { id, label, type: 'select', options, test: (row, value) => items(row).includes(value as string) };\n}\n\n/**\n * State and row processing of a `DataTable`, without any markup. Pass the\n * result to `DataTable.Root` to lay the parts out yourself, or read `rows`,\n * `filterValues` and the rest to drive something else (an export, a chart).\n */\nexport function useDataTable<T>({\n data,\n columns,\n mode = 'client',\n total,\n loading = false,\n error,\n onRetry,\n getRowId,\n locale,\n searchable = true,\n search: searchProp,\n defaultSearch = '',\n onSearchChange,\n searchDebounce,\n filter,\n filters: filtersProp,\n filterValues: filterValuesProp,\n defaultFilterValues,\n onFilterValuesChange,\n sort: sortProp,\n defaultSort = null,\n onSortChange,\n paginated = true,\n page: pageProp,\n onPageChange,\n pageSize: pageSizeProp,\n defaultPageSize = 10,\n onPageSizeChange,\n selection: selectionProp,\n onSelectionChange,\n onRowClick,\n rowLabel,\n rowActions,\n rowTone,\n rowProps,\n onRowSave,\n onRowDelete,\n labels,\n}: UseDataTableOptions<T>): DataTableInstance<T> {\n const [search, setSearchState] = useControlled(searchProp, defaultSearch, onSearchChange);\n const [filterValues, setFilterValues] = useControlled(filterValuesProp, defaultFilterValues ?? {}, onFilterValuesChange);\n const [sort, setSort] = useControlled(sortProp, defaultSort, onSortChange);\n const [page, setPage] = useControlled(pageProp, 1, onPageChange);\n const [pageSize, setPageSizeState] = useControlled(pageSizeProp, defaultPageSize, onPageSizeChange);\n const [edit, setEdit] = React.useState<{ id: string; draft: Record<string, unknown> } | null>(null);\n const [saving, setSaving] = React.useState(false);\n\n const server = mode === 'server';\n const collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n const count = (labels?.count ?? defaultLabels.count) as DataTableResolvedLabels['count'];\n const text: DataTableResolvedLabels = {\n ...defaultLabels,\n // Built from `count`, so a table translated before this label existed stays in its language.\n filteredCount: (matches, all) => React.createElement(React.Fragment, null, matches, ' / ', count(all)),\n noFilterMatchDescription: labels?.noMatchDescription ?? 'Try different filters, or clear them.',\n ...labels,\n };\n\n const filters = [\n ...columns.flatMap((column) => {\n if (!column.filter) return [];\n const config = typeof column.filter === 'string' ? { type: column.filter } : column.filter;\n const own = 'label' in config ? config.label : undefined;\n const label = own ?? column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n const definition = { ...config, id: column.id, label } as DataTableFilter<T>;\n return [resolveFilter(definition, (row) => getColumnValue(column, row), data, collator)];\n }),\n ...(filtersProp ?? []).map((definition) =>\n resolveFilter(definition, (row) => (row as Record<string, unknown>)[definition.id], data, collator),\n ),\n ];\n const activeFilters = filters.filter(({ id }) => filterValues[id] !== undefined);\n\n const idOf = (row: T, index: number) => getRowId?.(row, index) ?? String((row as { id?: unknown }).id ?? index);\n const entries: DataTableEntry<T>[] = data.map((row, index) => ({ row, id: idOf(row, index) }));\n let rows = entries;\n\n if (!server && activeFilters.length) {\n rows = rows.filter(({ row }) => activeFilters.every(({ id, test }) => test(row, filterValues[id])));\n }\n\n const query = search.trim();\n if (!server && query) {\n const searchColumns = columns.filter((column) => column.searchable ?? hasValue(column));\n const terms = normalizeText(query).split(/\\s+/).filter(Boolean);\n rows = rows.filter(({ row }) => (filter ? filter(row, search) : matchesTerms(searchColumns, row, terms)));\n }\n\n const isSortable = (column: DataTableColumn<T>) => column.sortable ?? hasValue(column);\n const sortColumn = sort && columns.find((candidate) => candidate.id === sort.id);\n if (!server && sort && sortColumn) {\n const direction = sort.direction === 'asc' ? 1 : -1;\n rows = [...rows].sort((a, b) => {\n if (sortColumn.compare) return direction * sortColumn.compare(a.row, b.row);\n const [av, bv] = [getColumnValue(sortColumn, a.row), getColumnValue(sortColumn, b.row)];\n if (isEmpty(av) || isEmpty(bv)) return Number(isEmpty(av)) - Number(isEmpty(bv));\n if (typeof av === 'number' && typeof bv === 'number') return direction * (av - bv);\n if (av instanceof Date && bv instanceof Date) return direction * (av.getTime() - bv.getTime());\n if (typeof av === 'boolean' && typeof bv === 'boolean') return direction * (Number(av) - Number(bv));\n return direction * collator.compare(String(av), String(bv));\n });\n }\n\n const matchCount = server ? (total ?? rows.length) : rows.length;\n const pageCount = Math.max(1, Math.ceil(matchCount / pageSize));\n const currentPage = Math.min(Math.max(1, page), pageCount);\n const pageRows = paginated && !server ? rows.slice((currentPage - 1) * pageSize, currentPage * pageSize) : rows;\n\n const selection = selectionProp ?? [];\n const selected = new Set(selection);\n const selectedInView = rows.filter(({ id }) => selected.has(id)).length;\n const allSelected = rows.length > 0 && selectedInView === rows.length;\n\n const setSearch = (next: string) => {\n setSearchState(next);\n setPage(1);\n };\n\n const changeFilters = (next: DataTableFilterValues) => {\n setFilterValues(next);\n setPage(1);\n };\n\n const setFilterValue = (id: string, value: DataTableFilterValue | undefined) => {\n const others = Object.entries(filterValues).filter(([key]) => key !== id);\n changeFilters(Object.fromEntries(value === undefined ? others : [...others, [id, value]]));\n };\n\n const saveEdit = () => {\n const entry = edit && entries.find(({ id }) => id === edit.id);\n if (!entry || !onRowSave || saving) return;\n setSaving(true);\n // A rejected save keeps the row open, so the values can be corrected or the save retried.\n Promise.resolve()\n .then(() => onRowSave({ ...entry.row, ...edit.draft }, entry.row))\n .then(\n () => setEdit(null),\n () => undefined,\n )\n .then(() => setSaving(false));\n };\n\n return {\n mode,\n columns,\n visibleColumns: columns.filter((column) => !column.hidden),\n labels: text,\n locale,\n\n allRows: entries,\n rows,\n pageRows,\n count: matchCount,\n totalCount: server ? matchCount : data.length,\n filtered: Boolean(query) || activeFilters.length > 0,\n reset: () => {\n setSearchState('');\n changeFilters({});\n },\n\n loading,\n pending: loading && !rows.length && !error,\n error,\n onRetry,\n\n searchable,\n search,\n setSearch,\n searchDebounce: searchDebounce ?? (server ? 300 : 0),\n\n filters,\n filterValues,\n setFilterValue,\n clearFilters: () => changeFilters({}),\n activeFilterCount: activeFilters.length,\n\n sort,\n setSort,\n toggleSort: (id) =>\n setSort(sort?.id !== id ? { id, direction: 'asc' } : sort.direction === 'asc' ? { id, direction: 'desc' } : null),\n isSortable,\n\n paginated,\n page: currentPage,\n pageCount,\n pageSize,\n setPage,\n setPageSize: (size) => {\n setPageSizeState(size);\n setPage(1);\n },\n\n selectable: Boolean(onSelectionChange),\n selection,\n isSelected: (id) => selected.has(id),\n toggleRow: (id, checked) =>\n onSelectionChange?.(checked ? [...selection.filter((item) => item !== id), id] : selection.filter((item) => item !== id)),\n toggleAll: (checked) => {\n const ids = new Set(rows.map(({ id }) => id));\n const kept = selection.filter((id) => !ids.has(id));\n onSelectionChange?.(checked ? [...kept, ...ids] : kept);\n },\n allSelected,\n someSelected: selectedInView > 0 && !allSelected,\n\n editable: Boolean(onRowSave),\n deletable: Boolean(onRowDelete),\n editingId: edit?.id ?? null,\n saving,\n startEdit: (id) => setEdit({ id, draft: {} }),\n cancelEdit: () => setEdit(null),\n editValue: (row, field) => (edit && field in edit.draft ? edit.draft[field] : (row as Record<string, unknown>)[field]),\n setEditValue: (field, value) => setEdit((current) => current && { ...current, draft: { ...current.draft, [field]: value } }),\n saveEdit,\n deleteRow: (row) => {\n onRowDelete?.(row);\n setEdit(null);\n },\n\n onRowClick,\n rowLabel,\n rowActions,\n rowTone,\n rowProps,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useDataTable.js","names":["React","normalizeText","datePart","pad","DateRange","DataTableColumn","DataTableEntry","DataTableFilter","DataTableFilterValue","DataTableFilterValues","DataTableInstance","DataTableResolvedFilter","DataTableResolvedLabels","UseDataTableOptions","defaultLabels","Omit","search","clearSearch","selectAll","selectRow","label","count","selected","emptyTitle","emptyDescription","noMatchTitle","noMatchDescription","loading","errorTitle","retry","filters","filterAll","clearFilters","actions","export","edit","save","cancel","delete","useControlled","value","initial","onChange","$","_c","inner","setInner","useState","t0","next","set","t1","undefined","t2","const","getColumnValue","column","T","row","accessor","Record","id","isEmpty","hasValue","cell","isOn","Boolean","includes","trim","toLowerCase","dayOf","date","Date","Number","isNaN","getTime","getFullYear","getMonth","getDate","WORD_CHARACTER","hasWord","text","term","from","indexOf","before","after","length","test","matchesTerms","columns","terms","values","map","exact","searchMode","every","some","resolveFilter","filter","read","data","collator","Intl","Collator","type","match","options","get","presets","min","max","day","range","start","end","items","Array","isArray","item","String","Set","flatMap","sort","compare","counts","useDataTable","mode","total","error","onRetry","getRowId","locale","searchable","t3","searchProp","defaultSearch","t4","onSearchChange","searchDebounce","filtersProp","filterValues","filterValuesProp","defaultFilterValues","onFilterValuesChange","sortProp","defaultSort","t5","onSortChange","paginated","t6","page","pageProp","onPageChange","pageSize","pageSizeProp","defaultPageSize","t7","onPageSizeChange","selection","selectionProp","onSelectionChange","onRowClick","rowLabel","rowActions","rowTone","rowProps","onRowSave","onRowDelete","labels","setSearchState","t8","setFilterValues","setSort","setPage","setPageSizeState","setEdit","saving","setSaving","server","activeFilters","currentPage","entries","isSortable","matchCount","pageCount","pageRows","query","rows","t9","numeric","sensitivity","t10","matches","all","createElement","Fragment","t11","t12","filteredCount","noFilterMatchDescription","config","own","header","definition","definition_0","row_0","t13","t14","row_1","index","idOf","t15","row_2","index_0","t16","row_3","t17","id_0","searchColumns","_temp","split","row_4","_temp2","sortColumn","find","candidate","direction","a","b","av","bv","Math","ceil","slice","t18","t19","id_1","has","selectedInView","allSelected","setSearch","next_0","changeFilters","id_2","others","Object","key","fromEntries","setFilterValue","entry","id_3","Promise","resolve","then","draft","_temp3","saveEdit","_temp4","t20","t21","t22","t23","id_4","t24","size","t25","t26","id_5","t27","id_6","checked","item_0","t28","checked_0","ids","_temp5","kept","id_8","t29","t30","t31","t32","t33","t34","Symbol","for","id_9","t35","row_5","field","t36","field_0","value_0","current","t37","row_6","t38","visibleColumns","allRows","totalCount","filtered","reset","pending","activeFilterCount","toggleSort","setPageSize","selectable","isSelected","toggleRow","toggleAll","someSelected","editable","deletable","editingId","startEdit","cancelEdit","editValue","setEditValue","deleteRow","id_7","column_2","hidden","column_1","sortable","column_0","_c"],"sources":["../../../src/components/data-table/useDataTable.ts"],"sourcesContent":["import * as React from 'react';\nimport { normalizeText } from '../../utils/search';\nimport { datePart, pad, type DateRange } from '../calendar/date-utils';\nimport type {\n DataTableColumn,\n DataTableEntry,\n DataTableFilter,\n DataTableFilterValue,\n DataTableFilterValues,\n DataTableInstance,\n DataTableResolvedFilter,\n DataTableResolvedLabels,\n UseDataTableOptions,\n} from './types';\n\nconst defaultLabels: Omit<DataTableResolvedLabels, 'filteredCount' | 'noFilterMatchDescription'> = {\n search: 'Search…',\n clearSearch: 'Clear search',\n selectAll: 'Select all',\n selectRow: (label) => `Select ${label}`,\n count: (count) => `${count} ${count === 1 ? 'record' : 'records'}`,\n selected: (count) => `${count} selected`,\n emptyTitle: 'No records yet',\n emptyDescription: 'Records will appear here once added.',\n noMatchTitle: 'No matching records',\n noMatchDescription: 'Try a different search.',\n loading: 'Loading',\n errorTitle: 'Could not load records',\n retry: 'Try again',\n filters: 'Filters',\n filterAll: 'All',\n clearFilters: 'Clear filters',\n actions: 'Actions',\n export: 'Export',\n edit: 'Edit',\n save: 'Save',\n cancel: 'Cancel',\n delete: 'Delete',\n};\n\nfunction useControlled<V>(value: V | undefined, initial: V, onChange?: (value: V) => void) {\n const [inner, setInner] = React.useState(initial);\n const set = (next: V) => {\n setInner(next);\n onChange?.(next);\n };\n return [value === undefined ? inner : value, set] as const;\n}\n\n/** The value a column sorts, searches and filters by. */\nexport function getColumnValue<T>(column: DataTableColumn<T>, row: T): unknown {\n return column.accessor ? column.accessor(row) : (row as Record<string, unknown>)[column.id];\n}\n\n// Empty values sort last in both directions.\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction hasValue<T>(column: DataTableColumn<T>) {\n return column.accessor !== undefined || column.cell === undefined;\n}\n\n/** A toggle filter without `match` reads the value as a flag; \"No\", \"false\" and \"0\" count as off. */\nfunction isOn(value: unknown): boolean {\n if (typeof value !== 'string') return Boolean(value);\n return !['', 'no', 'false', '0'].includes(value.trim().toLowerCase());\n}\n\n/** Local calendar day of a row's date, as `\"2026-03-09\"`. */\nfunction dayOf(value: unknown): string | null {\n if (isEmpty(value)) return null;\n if (typeof value === 'string' && datePart(value)) return datePart(value);\n const date = value instanceof Date ? value : new Date(value as string | number);\n if (Number.isNaN(date.getTime())) return null;\n return `${pad(date.getFullYear(), 4)}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n}\n\nconst WORD_CHARACTER = /[\\p{L}\\p{N}]/u;\n\n/** True when `term` occurs in `text` as a whole word (or run of words). */\nfunction hasWord(text: string, term: string): boolean {\n for (let from = text.indexOf(term); from !== -1; from = text.indexOf(term, from + 1)) {\n const before = text[from - 1];\n const after = text[from + term.length];\n if (!(before && WORD_CHARACTER.test(before)) && !(after && WORD_CHARACTER.test(after))) return true;\n }\n return false;\n}\n\n/** Every term has to occur in one of the columns. */\nfunction matchesTerms<T>(columns: DataTableColumn<T>[], row: T, terms: string[]): boolean {\n const values = columns.map((column) => ({\n exact: column.searchMode === 'exact',\n text: normalizeText(getColumnValue(column, row)),\n }));\n return terms.every((term) => values.some(({ exact, text }) => (exact ? hasWord(text, term) : text.includes(term))));\n}\n\nfunction resolveFilter<T>(\n filter: DataTableFilter<T>,\n read: (row: T) => unknown,\n data: T[],\n collator: Intl.Collator,\n): DataTableResolvedFilter<T> {\n const { id, label } = filter;\n if (filter.type === 'toggle') {\n const match = filter.match ?? ((row: T) => isOn(read(row)));\n return { id, label, type: 'toggle', options: [], test: (row) => match(row) };\n }\n const get = filter.value ?? read;\n if (filter.type === 'dateRange') {\n const { presets, min, max } = filter;\n return {\n id,\n label,\n type: 'dateRange',\n options: [],\n presets,\n min,\n max,\n test: (row, value) => {\n const day = dayOf(get(row));\n const range = value as DateRange;\n return day !== null && day >= range.start && day <= range.end;\n },\n };\n }\n const items = (row: T) => {\n const value = get(row);\n return (Array.isArray(value) ? value : [value]).filter((item) => !isEmpty(item)).map(String);\n };\n const options =\n filter.options ??\n [...new Set(data.flatMap(items))].sort(collator.compare).map((value) => ({ value, label: value }));\n if (filter.type === 'chips') {\n const counts: Record<string, number> = {};\n if (filter.counts !== false) for (const row of data) for (const item of items(row)) counts[item] = (counts[item] ?? 0) + 1;\n return {\n id,\n label,\n type: 'chips',\n options,\n counts: filter.counts === false ? undefined : counts,\n test: (row, value) => items(row).some((item) => (value as string[]).includes(item)),\n };\n }\n return { id, label, type: 'select', options, test: (row, value) => items(row).includes(value as string) };\n}\n\n/**\n * State and row processing of a `DataTable`, without any markup. Pass the\n * result to `DataTable.Root` to lay the parts out yourself, or read `rows`,\n * `filterValues` and the rest to drive something else (an export, a chart).\n */\nexport function useDataTable<T>({\n data,\n columns,\n mode = 'client',\n total,\n loading = false,\n error,\n onRetry,\n getRowId,\n locale,\n searchable = true,\n search: searchProp,\n defaultSearch = '',\n onSearchChange,\n searchDebounce,\n filter,\n filters: filtersProp,\n filterValues: filterValuesProp,\n defaultFilterValues,\n onFilterValuesChange,\n sort: sortProp,\n defaultSort = null,\n onSortChange,\n paginated = true,\n page: pageProp,\n onPageChange,\n pageSize: pageSizeProp,\n defaultPageSize = 10,\n onPageSizeChange,\n selection: selectionProp,\n onSelectionChange,\n onRowClick,\n rowLabel,\n rowActions,\n rowTone,\n rowProps,\n onRowSave,\n onRowDelete,\n labels,\n}: UseDataTableOptions<T>): DataTableInstance<T> {\n const [search, setSearchState] = useControlled(searchProp, defaultSearch, onSearchChange);\n const [filterValues, setFilterValues] = useControlled(filterValuesProp, defaultFilterValues ?? {}, onFilterValuesChange);\n const [sort, setSort] = useControlled(sortProp, defaultSort, onSortChange);\n const [page, setPage] = useControlled(pageProp, 1, onPageChange);\n const [pageSize, setPageSizeState] = useControlled(pageSizeProp, defaultPageSize, onPageSizeChange);\n const [edit, setEdit] = React.useState<{ id: string; draft: Record<string, unknown> } | null>(null);\n const [saving, setSaving] = React.useState(false);\n\n const server = mode === 'server';\n const collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n const count = (labels?.count ?? defaultLabels.count) as DataTableResolvedLabels['count'];\n const text: DataTableResolvedLabels = {\n ...defaultLabels,\n // Built from `count`, so a table translated before this label existed stays in its language.\n filteredCount: (matches, all) => React.createElement(React.Fragment, null, matches, ' / ', count(all)),\n noFilterMatchDescription: labels?.noMatchDescription ?? 'Try different filters, or clear them.',\n ...labels,\n };\n\n const filters = [\n ...columns.flatMap((column) => {\n if (!column.filter) return [];\n const config = typeof column.filter === 'string' ? { type: column.filter } : column.filter;\n const own = 'label' in config ? config.label : undefined;\n const label = own ?? column.label ?? (typeof column.header === 'string' ? column.header : column.id);\n const definition = { ...config, id: column.id, label } as DataTableFilter<T>;\n return [resolveFilter(definition, (row) => getColumnValue(column, row), data, collator)];\n }),\n ...(filtersProp ?? []).map((definition) =>\n resolveFilter(definition, (row) => (row as Record<string, unknown>)[definition.id], data, collator),\n ),\n ];\n const activeFilters = filters.filter(({ id }) => filterValues[id] !== undefined);\n\n const idOf = (row: T, index: number) => getRowId?.(row, index) ?? String((row as { id?: unknown }).id ?? index);\n const entries: DataTableEntry<T>[] = data.map((row, index) => ({ row, id: idOf(row, index) }));\n let rows = entries;\n\n if (!server && activeFilters.length) {\n rows = rows.filter(({ row }) => activeFilters.every(({ id, test }) => test(row, filterValues[id])));\n }\n\n const query = search.trim();\n if (!server && query) {\n const searchColumns = columns.filter((column) => column.searchable ?? hasValue(column));\n const terms = normalizeText(query).split(/\\s+/).filter(Boolean);\n rows = rows.filter(({ row }) => (filter ? filter(row, search) : matchesTerms(searchColumns, row, terms)));\n }\n\n const isSortable = (column: DataTableColumn<T>) => column.sortable ?? hasValue(column);\n const sortColumn = sort && columns.find((candidate) => candidate.id === sort.id);\n if (!server && sort && sortColumn) {\n const direction = sort.direction === 'asc' ? 1 : -1;\n rows = [...rows].sort((a, b) => {\n if (sortColumn.compare) return direction * sortColumn.compare(a.row, b.row);\n const [av, bv] = [getColumnValue(sortColumn, a.row), getColumnValue(sortColumn, b.row)];\n if (isEmpty(av) || isEmpty(bv)) return Number(isEmpty(av)) - Number(isEmpty(bv));\n if (typeof av === 'number' && typeof bv === 'number') return direction * (av - bv);\n if (av instanceof Date && bv instanceof Date) return direction * (av.getTime() - bv.getTime());\n if (typeof av === 'boolean' && typeof bv === 'boolean') return direction * (Number(av) - Number(bv));\n return direction * collator.compare(String(av), String(bv));\n });\n }\n\n const matchCount = server ? (total ?? rows.length) : rows.length;\n const pageCount = Math.max(1, Math.ceil(matchCount / pageSize));\n const currentPage = Math.min(Math.max(1, page), pageCount);\n const pageRows = paginated && !server ? rows.slice((currentPage - 1) * pageSize, currentPage * pageSize) : rows;\n\n const selection = selectionProp ?? [];\n const selected = new Set(selection);\n const selectedInView = rows.filter(({ id }) => selected.has(id)).length;\n const allSelected = rows.length > 0 && selectedInView === rows.length;\n\n const setSearch = (next: string) => {\n setSearchState(next);\n setPage(1);\n };\n\n const changeFilters = (next: DataTableFilterValues) => {\n setFilterValues(next);\n setPage(1);\n };\n\n const setFilterValue = (id: string, value: DataTableFilterValue | undefined) => {\n const others = Object.entries(filterValues).filter(([key]) => key !== id);\n changeFilters(Object.fromEntries(value === undefined ? others : [...others, [id, value]]));\n };\n\n const saveEdit = () => {\n const entry = edit && entries.find(({ id }) => id === edit.id);\n if (!entry || !onRowSave || saving) return;\n setSaving(true);\n // A rejected save keeps the row open, so the values can be corrected or the save retried.\n Promise.resolve()\n .then(() => onRowSave({ ...entry.row, ...edit.draft }, entry.row))\n .then(\n () => setEdit(null),\n () => undefined,\n )\n .then(() => setSaving(false));\n };\n\n return {\n mode,\n columns,\n visibleColumns: columns.filter((column) => !column.hidden),\n labels: text,\n locale,\n\n allRows: entries,\n rows,\n pageRows,\n count: matchCount,\n totalCount: server ? matchCount : data.length,\n filtered: Boolean(query) || activeFilters.length > 0,\n reset: () => {\n setSearchState('');\n changeFilters({});\n },\n\n loading,\n pending: loading && !rows.length && !error,\n error,\n onRetry,\n\n searchable,\n search,\n setSearch,\n searchDebounce: searchDebounce ?? (server ? 300 : 0),\n\n filters,\n filterValues,\n setFilterValue,\n clearFilters: () => changeFilters({}),\n activeFilterCount: activeFilters.length,\n\n sort,\n setSort,\n toggleSort: (id) =>\n setSort(sort?.id !== id ? { id, direction: 'asc' } : sort.direction === 'asc' ? { id, direction: 'desc' } : null),\n isSortable,\n\n paginated,\n page: currentPage,\n pageCount,\n pageSize,\n setPage,\n setPageSize: (size) => {\n setPageSizeState(size);\n setPage(1);\n },\n\n selectable: Boolean(onSelectionChange),\n selection,\n isSelected: (id) => selected.has(id),\n toggleRow: (id, checked) =>\n onSelectionChange?.(checked ? [...selection.filter((item) => item !== id), id] : selection.filter((item) => item !== id)),\n toggleAll: (checked) => {\n const ids = new Set(rows.map(({ id }) => id));\n const kept = selection.filter((id) => !ids.has(id));\n onSelectionChange?.(checked ? [...kept, ...ids] : kept);\n },\n allSelected,\n someSelected: selectedInView > 0 && !allSelected,\n\n editable: Boolean(onRowSave),\n deletable: Boolean(onRowDelete),\n editingId: edit?.id ?? null,\n saving,\n startEdit: (id) => setEdit({ id, draft: {} }),\n cancelEdit: () => setEdit(null),\n editValue: (row, field) => (edit && field in edit.draft ? edit.draft[field] : (row as Record<string, unknown>)[field]),\n setEditValue: (field, value) => setEdit((current) => current && { ...current, draft: { ...current.draft, [field]: value } }),\n saveEdit,\n deleteRow: (row) => {\n onRowDelete?.(row);\n setEdit(null);\n },\n\n onRowClick,\n rowLabel,\n rowActions,\n rowTone,\n rowProps,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ /** `rows`: label and value side by side, one pair per line. `grid`: pairs flow into columns, label above value. */
3
+ export type DescriptionListLayout = 'rows' | 'grid';
4
+ export interface DescriptionListProps extends React.HTMLAttributes<HTMLDListElement> {
5
+ /** Ref to the `<dl>` element. */
6
+ ref?: React.Ref<HTMLDListElement>;
7
+ /** How the label and value pairs are laid out. */
8
+ layout?: DescriptionListLayout;
9
+ }
10
+ /**
11
+ * Label and value pairs, such as a record's details. Holds `DescriptionItem`s.
12
+ *
13
+ * @example
14
+ * <DescriptionList>
15
+ * <DescriptionItem label="Plate">ABC-123</DescriptionItem>
16
+ * <DescriptionItem label="Depot">North</DescriptionItem>
17
+ * </DescriptionList>
18
+ */
19
+ export declare function DescriptionList({ layout, className, ref, ...props }: DescriptionListProps): React.JSX.Element;
20
+ export interface DescriptionItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
21
+ /** Ref to the item's wrapper. */
22
+ ref?: React.Ref<HTMLDivElement>;
23
+ /** The term, e.g. "Plate". */
24
+ label: React.ReactNode;
25
+ /** The value. Line breaks in text are kept. */
26
+ children?: React.ReactNode;
27
+ }
28
+ /** One label and value pair inside a `DescriptionList`. */
29
+ export declare function DescriptionItem({ label, children, className, ref, ...props }: DescriptionItemProps): React.JSX.Element;
@@ -0,0 +1,125 @@
1
+ "use client";
2
+ import { cx } from "../../utils/cx.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/description-list/DescriptionList.tsx
7
+ /**
8
+ * Label and value pairs, such as a record's details. Holds `DescriptionItem`s.
9
+ *
10
+ * @example
11
+ * <DescriptionList>
12
+ * <DescriptionItem label="Plate">ABC-123</DescriptionItem>
13
+ * <DescriptionItem label="Depot">North</DescriptionItem>
14
+ * </DescriptionList>
15
+ */
16
+ function DescriptionList(t0) {
17
+ const $ = c(12);
18
+ let className;
19
+ let props;
20
+ let ref;
21
+ let t1;
22
+ if ($[0] !== t0) {
23
+ ({layout: t1, className, ref, ...props} = t0);
24
+ $[0] = t0;
25
+ $[1] = className;
26
+ $[2] = props;
27
+ $[3] = ref;
28
+ $[4] = t1;
29
+ } else {
30
+ className = $[1];
31
+ props = $[2];
32
+ ref = $[3];
33
+ t1 = $[4];
34
+ }
35
+ const layout = t1 === void 0 ? "rows" : t1;
36
+ let t2;
37
+ if ($[5] !== className) {
38
+ t2 = cx("oui-description-list", className);
39
+ $[5] = className;
40
+ $[6] = t2;
41
+ } else t2 = $[6];
42
+ let t3;
43
+ if ($[7] !== layout || $[8] !== props || $[9] !== ref || $[10] !== t2) {
44
+ t3 = /* @__PURE__ */ jsx("dl", {
45
+ ref,
46
+ className: t2,
47
+ "data-layout": layout,
48
+ ...props
49
+ });
50
+ $[7] = layout;
51
+ $[8] = props;
52
+ $[9] = ref;
53
+ $[10] = t2;
54
+ $[11] = t3;
55
+ } else t3 = $[11];
56
+ return t3;
57
+ }
58
+ /** One label and value pair inside a `DescriptionList`. */
59
+ function DescriptionItem(t0) {
60
+ const $ = c(18);
61
+ let children;
62
+ let className;
63
+ let label;
64
+ let props;
65
+ let ref;
66
+ if ($[0] !== t0) {
67
+ ({label, children, className, ref, ...props} = t0);
68
+ $[0] = t0;
69
+ $[1] = children;
70
+ $[2] = className;
71
+ $[3] = label;
72
+ $[4] = props;
73
+ $[5] = ref;
74
+ } else {
75
+ children = $[1];
76
+ className = $[2];
77
+ label = $[3];
78
+ props = $[4];
79
+ ref = $[5];
80
+ }
81
+ let t1;
82
+ if ($[6] !== className) {
83
+ t1 = cx("oui-description-list__item", className);
84
+ $[6] = className;
85
+ $[7] = t1;
86
+ } else t1 = $[7];
87
+ let t2;
88
+ if ($[8] !== label) {
89
+ t2 = /* @__PURE__ */ jsx("dt", {
90
+ className: "oui-description-list__label",
91
+ children: label
92
+ });
93
+ $[8] = label;
94
+ $[9] = t2;
95
+ } else t2 = $[9];
96
+ let t3;
97
+ if ($[10] !== children) {
98
+ t3 = /* @__PURE__ */ jsx("dd", {
99
+ className: "oui-description-list__value",
100
+ children
101
+ });
102
+ $[10] = children;
103
+ $[11] = t3;
104
+ } else t3 = $[11];
105
+ let t4;
106
+ if ($[12] !== props || $[13] !== ref || $[14] !== t1 || $[15] !== t2 || $[16] !== t3) {
107
+ t4 = /* @__PURE__ */ jsxs("div", {
108
+ ref,
109
+ className: t1,
110
+ ...props,
111
+ children: [t2, t3]
112
+ });
113
+ $[12] = props;
114
+ $[13] = ref;
115
+ $[14] = t1;
116
+ $[15] = t2;
117
+ $[16] = t3;
118
+ $[17] = t4;
119
+ } else t4 = $[17];
120
+ return t4;
121
+ }
122
+ //#endregion
123
+ export { DescriptionItem, DescriptionList };
124
+
125
+ //# sourceMappingURL=DescriptionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescriptionList.js","names":["React","cx","DescriptionListLayout","DescriptionListProps","HTMLAttributes","HTMLDListElement","ref","Ref","layout","DescriptionList","t0","$","_c","className","props","t1","undefined","t2","t3","DescriptionItemProps","Omit","HTMLDivElement","label","ReactNode","children","DescriptionItem","t4","_c"],"sources":["../../../src/components/description-list/DescriptionList.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\n\n/** `rows`: label and value side by side, one pair per line. `grid`: pairs flow into columns, label above value. */\nexport type DescriptionListLayout = 'rows' | 'grid';\n\nexport interface DescriptionListProps extends React.HTMLAttributes<HTMLDListElement> {\n /** Ref to the `<dl>` element. */\n ref?: React.Ref<HTMLDListElement>;\n /** How the label and value pairs are laid out. */\n layout?: DescriptionListLayout;\n}\n\n/**\n * Label and value pairs, such as a record's details. Holds `DescriptionItem`s.\n *\n * @example\n * <DescriptionList>\n * <DescriptionItem label=\"Plate\">ABC-123</DescriptionItem>\n * <DescriptionItem label=\"Depot\">North</DescriptionItem>\n * </DescriptionList>\n */\nexport function DescriptionList({ layout = 'rows', className, ref, ...props }: DescriptionListProps) {\n return <dl ref={ref} className={cx('oui-description-list', className)} data-layout={layout} {...props} />;\n}\n\nexport interface DescriptionItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Ref to the item's wrapper. */\n ref?: React.Ref<HTMLDivElement>;\n /** The term, e.g. \"Plate\". */\n label: React.ReactNode;\n /** The value. Line breaks in text are kept. */\n children?: React.ReactNode;\n}\n\n/** One label and value pair inside a `DescriptionList`. */\nexport function DescriptionItem({ label, children, className, ref, ...props }: DescriptionItemProps) {\n return (\n <div ref={ref} className={cx('oui-description-list__item', className)} {...props}>\n <dt className=\"oui-description-list__label\">{label}</dt>\n <dd className=\"oui-description-list__value\">{children}</dd>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAsBA,SAAOS,gBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAR;CAAA,IAAAS;CAAA,IAAAJ,EAAA,OAAAD,IAAA;EAAyB,CAAA,CAAAF,QAAAO,IAAAF,WAAAP,KAAA,GAAAQ,SAAAJ;EAAmEC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,KAAAI;CAAA,OAAA;EAAAF,YAAAF,EAAA;EAAAG,QAAAH,EAAA;EAAAL,MAAAK,EAAA;EAAAI,KAAAJ,EAAA;CAAA;CAAjE,MAAAH,SAAAO,OAAAC,KAAAA,IAAA,SAAAD;CAAe,IAAAE;CAAA,IAAAN,EAAA,OAAAE,WAAA;EACfI,KAAAhB,GAAG,wBAAwBY,SAAS;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAH,UAAAG,EAAA,OAAAG,SAAAH,EAAA,OAAAL,OAAAK,EAAA,QAAAM,IAAA;EAA9DC,KAAA,oBAAA,MAAA;GAASZ;GAAgB,WAAAW;GAAoDT,eAAAA;GAAM,GAAMM;EAAK,CAAA;EAAIH,EAAA,KAAAH;EAAAG,EAAA,KAAAG;EAAAH,EAAA,KAAAL;EAAAK,EAAA,MAAAM;EAAAN,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,OAAlGO;AAAkG;;AAa3G,SAAOO,gBAAAf,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAY;CAAA,IAAAX;CAAA,IAAAS;CAAA,IAAAR;CAAA,IAAAR;CAAA,IAAAK,EAAA,OAAAD,IAAA;EAAyB,CAAA,CAAAY,OAAAE,UAAAX,WAAAP,KAAA,GAAAQ,SAAAJ;EAAmEC,EAAA,KAAAD;EAAAC,EAAA,KAAAa;EAAAb,EAAA,KAAAE;EAAAF,EAAA,KAAAW;EAAAX,EAAA,KAAAG;EAAAH,EAAA,KAAAL;CAAA,OAAA;EAAAkB,WAAAb,EAAA;EAAAE,YAAAF,EAAA;EAAAW,QAAAX,EAAA;EAAAG,QAAAH,EAAA;EAAAL,MAAAK,EAAA;CAAA;CAAA,IAAAI;CAAA,IAAAJ,EAAA,OAAAE,WAAA;EAErEE,KAAAd,GAAG,8BAA8BY,SAAS;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAW,OAAA;EACnEL,KAAA,oBAAA,MAAA;GAAc,WAAA;GAA+BK,UAAAA;EAAW,CAAA;EAAAX,EAAA,KAAAW;EAAAX,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,QAAAa,UAAA;EACxDN,KAAA,oBAAA,MAAA;GAAc,WAAA;GAA+BM;EAAc,CAAA;EAAAb,EAAA,MAAAa;EAAAb,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,QAAAG,SAAAH,EAAA,QAAAL,OAAAK,EAAA,QAAAI,MAAAJ,EAAA,QAAAM,MAAAN,EAAA,QAAAO,IAAA;EAF7DQ,KAAA,qBAAA,OAAA;GAAUpB;GAAgB,WAAAS;GAA2C,GAAMD;GAA3E,UAAA,CACEG,IACAC,EACI;;EAAAP,EAAA,MAAAG;EAAAH,EAAA,MAAAL;EAAAK,EAAA,MAAAI;EAAAJ,EAAA,MAAAM;EAAAN,EAAA,MAAAO;EAAAP,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,OAHNe;AAGM"}
@@ -0,0 +1,59 @@
1
+ import * as React from 'react';
2
+ import { type DialogBackdropBlur } from './Dialog';
3
+ export interface ConfirmDialogProps {
4
+ /** Ref to the dialog popup. */
5
+ ref?: React.Ref<HTMLDivElement>;
6
+ /** Whether the dialog is open (controlled). */
7
+ open?: boolean;
8
+ /** Initial state when uncontrolled. */
9
+ defaultOpen?: boolean;
10
+ /** Called when the dialog opens or closes. Not called to close while `pending`. */
11
+ onOpenChange?: (open: boolean) => void;
12
+ /** Called once the open or close transition has finished, e.g. to unmount the dialog. */
13
+ onOpenChangeComplete?: (open: boolean) => void;
14
+ /** Element that opens the dialog, e.g. `<Button>Delete</Button>`. Omit when `open` is controlled. */
15
+ trigger?: React.ReactElement;
16
+ /** The question, e.g. "Delete this truck?". */
17
+ title: React.ReactNode;
18
+ /** What happens when confirmed. */
19
+ description?: React.ReactNode;
20
+ /** Extra content between the description and the buttons. */
21
+ children?: React.ReactNode;
22
+ /** Text of the confirm button. */
23
+ confirmLabel: React.ReactNode;
24
+ /** Text of the cancel button. */
25
+ cancelLabel?: React.ReactNode;
26
+ /** Called by the confirm button. The dialog stays open; close it when the action succeeds. */
27
+ onConfirm: () => void;
28
+ /** Red confirm button, for actions that delete or cannot be undone. */
29
+ destructive?: boolean;
30
+ /** The action is running: the confirm button spins and the dialog cannot be closed. */
31
+ pending?: boolean;
32
+ /** Why the action failed, shown above the buttons. */
33
+ error?: React.ReactNode;
34
+ /** Dialog width. */
35
+ size?: 'sm' | 'md' | 'lg';
36
+ /** How strongly the page behind the dialog is blurred. */
37
+ backdropBlur?: DialogBackdropBlur;
38
+ /** Blur the dialog or drawer this one opens from, instead of showing no backdrop. */
39
+ nestedBackdrop?: boolean;
40
+ }
41
+ /**
42
+ * Asks before an action runs: title, description, cancel and confirm buttons,
43
+ * a pending state that keeps the dialog open, and room for the error.
44
+ * For other layouts compose `AlertDialog`.
45
+ *
46
+ * @example
47
+ * <ConfirmDialog
48
+ * open={deleting}
49
+ * onOpenChange={setDeleting}
50
+ * title="Delete this truck?"
51
+ * description="Its trips stay, without a truck."
52
+ * confirmLabel="Delete"
53
+ * destructive
54
+ * pending={mutation.isPending}
55
+ * error={mutation.error?.message}
56
+ * onConfirm={() => mutation.mutate()}
57
+ * />
58
+ */
59
+ export declare function ConfirmDialog({ open, defaultOpen, onOpenChange, onOpenChangeComplete, trigger, title, description, children, confirmLabel, cancelLabel, onConfirm, destructive, pending, error, size, backdropBlur, nestedBackdrop, ref, }: ConfirmDialogProps): React.JSX.Element;
@@ -0,0 +1,165 @@
1
+ "use client";
2
+ import { Button } from "../button/Button.js";
3
+ import { AlertDialog } from "./Dialog.js";
4
+ import { Alert } from "../alert/Alert.js";
5
+ import { c } from "react/compiler-runtime";
6
+ import "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/components/dialog/ConfirmDialog.tsx
9
+ /**
10
+ * Asks before an action runs: title, description, cancel and confirm buttons,
11
+ * a pending state that keeps the dialog open, and room for the error.
12
+ * For other layouts compose `AlertDialog`.
13
+ *
14
+ * @example
15
+ * <ConfirmDialog
16
+ * open={deleting}
17
+ * onOpenChange={setDeleting}
18
+ * title="Delete this truck?"
19
+ * description="Its trips stay, without a truck."
20
+ * confirmLabel="Delete"
21
+ * destructive
22
+ * pending={mutation.isPending}
23
+ * error={mutation.error?.message}
24
+ * onConfirm={() => mutation.mutate()}
25
+ * />
26
+ */
27
+ function ConfirmDialog(t0) {
28
+ const $ = c(43);
29
+ const { open, defaultOpen, onOpenChange, onOpenChangeComplete, trigger, title, description, children, confirmLabel, cancelLabel: t1, onConfirm, destructive: t2, pending: t3, error, size: t4, backdropBlur, nestedBackdrop, ref } = t0;
30
+ const cancelLabel = t1 === void 0 ? "Cancel" : t1;
31
+ const destructive = t2 === void 0 ? false : t2;
32
+ const pending = t3 === void 0 ? false : t3;
33
+ const size = t4 === void 0 ? "sm" : t4;
34
+ let t5;
35
+ if ($[0] !== onOpenChange || $[1] !== pending) {
36
+ t5 = (next) => {
37
+ if (!next && pending) return;
38
+ onOpenChange?.(next);
39
+ };
40
+ $[0] = onOpenChange;
41
+ $[1] = pending;
42
+ $[2] = t5;
43
+ } else t5 = $[2];
44
+ let t6;
45
+ if ($[3] !== trigger) {
46
+ t6 = trigger && /* @__PURE__ */ jsx(AlertDialog.Trigger, { render: trigger });
47
+ $[3] = trigger;
48
+ $[4] = t6;
49
+ } else t6 = $[4];
50
+ let t7;
51
+ if ($[5] !== title) {
52
+ t7 = /* @__PURE__ */ jsx(AlertDialog.Title, { children: title });
53
+ $[5] = title;
54
+ $[6] = t7;
55
+ } else t7 = $[6];
56
+ let t8;
57
+ if ($[7] !== description) {
58
+ t8 = description && /* @__PURE__ */ jsx(AlertDialog.Description, { children: description });
59
+ $[7] = description;
60
+ $[8] = t8;
61
+ } else t8 = $[8];
62
+ let t9;
63
+ if ($[9] !== t7 || $[10] !== t8) {
64
+ t9 = /* @__PURE__ */ jsxs(AlertDialog.Header, { children: [t7, t8] });
65
+ $[9] = t7;
66
+ $[10] = t8;
67
+ $[11] = t9;
68
+ } else t9 = $[11];
69
+ let t10;
70
+ if ($[12] !== error) {
71
+ t10 = error && /* @__PURE__ */ jsx(Alert, {
72
+ tone: "danger",
73
+ children: error
74
+ });
75
+ $[12] = error;
76
+ $[13] = t10;
77
+ } else t10 = $[13];
78
+ let t11;
79
+ if ($[14] !== pending) {
80
+ t11 = /* @__PURE__ */ jsx(Button, {
81
+ variant: "secondary",
82
+ disabled: pending
83
+ });
84
+ $[14] = pending;
85
+ $[15] = t11;
86
+ } else t11 = $[15];
87
+ let t12;
88
+ if ($[16] !== cancelLabel || $[17] !== t11) {
89
+ t12 = /* @__PURE__ */ jsx(AlertDialog.Close, {
90
+ render: t11,
91
+ children: cancelLabel
92
+ });
93
+ $[16] = cancelLabel;
94
+ $[17] = t11;
95
+ $[18] = t12;
96
+ } else t12 = $[18];
97
+ const t13 = destructive ? "danger" : "primary";
98
+ let t14;
99
+ if ($[19] !== confirmLabel || $[20] !== onConfirm || $[21] !== pending || $[22] !== t13) {
100
+ t14 = /* @__PURE__ */ jsx(Button, {
101
+ variant: t13,
102
+ loading: pending,
103
+ onClick: onConfirm,
104
+ children: confirmLabel
105
+ });
106
+ $[19] = confirmLabel;
107
+ $[20] = onConfirm;
108
+ $[21] = pending;
109
+ $[22] = t13;
110
+ $[23] = t14;
111
+ } else t14 = $[23];
112
+ let t15;
113
+ if ($[24] !== t12 || $[25] !== t14) {
114
+ t15 = /* @__PURE__ */ jsxs(AlertDialog.Footer, { children: [t12, t14] });
115
+ $[24] = t12;
116
+ $[25] = t14;
117
+ $[26] = t15;
118
+ } else t15 = $[26];
119
+ let t16;
120
+ if ($[27] !== backdropBlur || $[28] !== children || $[29] !== nestedBackdrop || $[30] !== ref || $[31] !== size || $[32] !== t10 || $[33] !== t15 || $[34] !== t9) {
121
+ t16 = /* @__PURE__ */ jsxs(AlertDialog.Content, {
122
+ ref,
123
+ size,
124
+ backdropBlur,
125
+ nestedBackdrop,
126
+ children: [
127
+ t9,
128
+ children,
129
+ t10,
130
+ t15
131
+ ]
132
+ });
133
+ $[27] = backdropBlur;
134
+ $[28] = children;
135
+ $[29] = nestedBackdrop;
136
+ $[30] = ref;
137
+ $[31] = size;
138
+ $[32] = t10;
139
+ $[33] = t15;
140
+ $[34] = t9;
141
+ $[35] = t16;
142
+ } else t16 = $[35];
143
+ let t17;
144
+ if ($[36] !== defaultOpen || $[37] !== onOpenChangeComplete || $[38] !== open || $[39] !== t16 || $[40] !== t5 || $[41] !== t6) {
145
+ t17 = /* @__PURE__ */ jsxs(AlertDialog.Root, {
146
+ open,
147
+ defaultOpen,
148
+ onOpenChange: t5,
149
+ onOpenChangeComplete,
150
+ children: [t6, t16]
151
+ });
152
+ $[36] = defaultOpen;
153
+ $[37] = onOpenChangeComplete;
154
+ $[38] = open;
155
+ $[39] = t16;
156
+ $[40] = t5;
157
+ $[41] = t6;
158
+ $[42] = t17;
159
+ } else t17 = $[42];
160
+ return t17;
161
+ }
162
+ //#endregion
163
+ export { ConfirmDialog };
164
+
165
+ //# sourceMappingURL=ConfirmDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDialog.js","names":["React","Alert","Button","AlertDialog","DialogBackdropBlur","ConfirmDialogProps","ref","Ref","HTMLDivElement","open","defaultOpen","onOpenChange","onOpenChangeComplete","trigger","ReactElement","title","ReactNode","description","children","confirmLabel","cancelLabel","onConfirm","destructive","pending","error","size","backdropBlur","nestedBackdrop","ConfirmDialog","t0","$","_c","t1","t2","t3","t4","undefined","t5","next","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","_c"],"sources":["../../../src/components/dialog/ConfirmDialog.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Alert } from '../alert/Alert';\nimport { Button } from '../button/Button';\nimport { AlertDialog, type DialogBackdropBlur } from './Dialog';\n\nexport interface ConfirmDialogProps {\n /** Ref to the dialog popup. */\n ref?: React.Ref<HTMLDivElement>;\n /** Whether the dialog is open (controlled). */\n open?: boolean;\n /** Initial state when uncontrolled. */\n defaultOpen?: boolean;\n /** Called when the dialog opens or closes. Not called to close while `pending`. */\n onOpenChange?: (open: boolean) => void;\n /** Called once the open or close transition has finished, e.g. to unmount the dialog. */\n onOpenChangeComplete?: (open: boolean) => void;\n /** Element that opens the dialog, e.g. `<Button>Delete</Button>`. Omit when `open` is controlled. */\n trigger?: React.ReactElement;\n /** The question, e.g. \"Delete this truck?\". */\n title: React.ReactNode;\n /** What happens when confirmed. */\n description?: React.ReactNode;\n /** Extra content between the description and the buttons. */\n children?: React.ReactNode;\n /** Text of the confirm button. */\n confirmLabel: React.ReactNode;\n /** Text of the cancel button. */\n cancelLabel?: React.ReactNode;\n /** Called by the confirm button. The dialog stays open; close it when the action succeeds. */\n onConfirm: () => void;\n /** Red confirm button, for actions that delete or cannot be undone. */\n destructive?: boolean;\n /** The action is running: the confirm button spins and the dialog cannot be closed. */\n pending?: boolean;\n /** Why the action failed, shown above the buttons. */\n error?: React.ReactNode;\n /** Dialog width. */\n size?: 'sm' | 'md' | 'lg';\n /** How strongly the page behind the dialog is blurred. */\n backdropBlur?: DialogBackdropBlur;\n /** Blur the dialog or drawer this one opens from, instead of showing no backdrop. */\n nestedBackdrop?: boolean;\n}\n\n/**\n * Asks before an action runs: title, description, cancel and confirm buttons,\n * a pending state that keeps the dialog open, and room for the error.\n * For other layouts compose `AlertDialog`.\n *\n * @example\n * <ConfirmDialog\n * open={deleting}\n * onOpenChange={setDeleting}\n * title=\"Delete this truck?\"\n * description=\"Its trips stay, without a truck.\"\n * confirmLabel=\"Delete\"\n * destructive\n * pending={mutation.isPending}\n * error={mutation.error?.message}\n * onConfirm={() => mutation.mutate()}\n * />\n */\nexport function ConfirmDialog({\n open,\n defaultOpen,\n onOpenChange,\n onOpenChangeComplete,\n trigger,\n title,\n description,\n children,\n confirmLabel,\n cancelLabel = 'Cancel',\n onConfirm,\n destructive = false,\n pending = false,\n error,\n size = 'sm',\n backdropBlur,\n nestedBackdrop,\n ref,\n}: ConfirmDialogProps) {\n return (\n <AlertDialog.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={(next) => {\n if (!next && pending) return;\n onOpenChange?.(next);\n }}\n onOpenChangeComplete={onOpenChangeComplete}\n >\n {trigger && <AlertDialog.Trigger render={trigger} />}\n <AlertDialog.Content ref={ref} size={size} backdropBlur={backdropBlur} nestedBackdrop={nestedBackdrop}>\n <AlertDialog.Header>\n <AlertDialog.Title>{title}</AlertDialog.Title>\n {description && <AlertDialog.Description>{description}</AlertDialog.Description>}\n </AlertDialog.Header>\n {children}\n {error && <Alert tone=\"danger\">{error}</Alert>}\n <AlertDialog.Footer>\n <AlertDialog.Close render={<Button variant=\"secondary\" disabled={pending} />}>{cancelLabel}</AlertDialog.Close>\n <Button variant={destructive ? 'danger' : 'primary'} loading={pending} onClick={onConfirm}>\n {confirmLabel}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n );\n}\n"],"mappings":"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"}
@@ -3,6 +3,8 @@ import { AlertDialog as BaseAlertDialog } from '@base-ui/react/alert-dialog';
3
3
  export type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
4
4
  /** `center` is a modal; the edges turn the dialog into a sheet / drawer. */
5
5
  export type DialogPlacement = 'center' | 'right' | 'left' | 'bottom';
6
+ /** Blur applied to the page behind a modal: none, 4px, 8px or 16px. */
7
+ export type DialogBackdropBlur = 'none' | 'sm' | 'md' | 'lg';
6
8
  export interface DialogContentProps extends BaseDialog.Popup.Props {
7
9
  /** Width of a centered dialog, or of a sheet. */
8
10
  size?: DialogSize;
@@ -12,10 +14,17 @@ export interface DialogContentProps extends BaseDialog.Popup.Props {
12
14
  showClose?: boolean;
13
15
  /** Accessible name of the close button. */
14
16
  closeLabel?: string;
17
+ /** How strongly the page behind the dialog is blurred. Override the radius with `--oui-backdrop-blur`. */
18
+ backdropBlur?: DialogBackdropBlur;
15
19
  /** Props for the backdrop behind the dialog. */
16
20
  backdropProps?: BaseDialog.Backdrop.Props;
21
+ /**
22
+ * Blur the dialog or drawer this one opens from. Nested dialogs otherwise
23
+ * show no backdrop, so the parent stays sharp behind them.
24
+ */
25
+ nestedBackdrop?: boolean;
17
26
  }
18
- declare function DialogContent({ size, placement, showClose, closeLabel, backdropProps, className, children, ref, ...props }: DialogContentProps): import("react").JSX.Element;
27
+ declare function DialogContent({ size, placement, showClose, closeLabel, backdropBlur, backdropProps, nestedBackdrop, className, children, ref, ...props }: DialogContentProps): import("react").JSX.Element;
19
28
  declare function DialogTitle({ className, ref, ...props }: BaseDialog.Title.Props): import("react").JSX.Element;
20
29
  declare function DialogDescription({ className, ref, ...props }: BaseDialog.Description.Props): import("react").JSX.Element;
21
30
  /**
@@ -47,8 +56,12 @@ export declare const Dialog: {
47
56
  export interface AlertDialogContentProps extends BaseAlertDialog.Popup.Props {
48
57
  /** Dialog width. */
49
58
  size?: Exclude<DialogSize, 'full'>;
59
+ /** How strongly the page behind the dialog is blurred. Override the radius with `--oui-backdrop-blur`. */
60
+ backdropBlur?: DialogBackdropBlur;
61
+ /** Blur the dialog or drawer this one opens from, instead of showing no backdrop. */
62
+ nestedBackdrop?: boolean;
50
63
  }
51
- declare function AlertDialogContent({ size, className, ref, ...props }: AlertDialogContentProps): import("react").JSX.Element;
64
+ declare function AlertDialogContent({ size, backdropBlur, nestedBackdrop, className, ref, ...props }: AlertDialogContentProps): import("react").JSX.Element;
52
65
  declare function AlertDialogTitle({ className, ref, ...props }: BaseAlertDialog.Title.Props): import("react").JSX.Element;
53
66
  declare function AlertDialogDescription({ className, ref, ...props }: BaseAlertDialog.Description.Props): import("react").JSX.Element;
54
67
  /** Confirmation dialog that requires an explicit choice (no outside-click dismissal). */