@pstdio/ui 0.43.0 → 0.43.1-nightly.20261013030813

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 (65) hide show
  1. package/README.md +11 -0
  2. package/dist/{MermaidComponent-X7N-8w2S.js → MermaidComponent-CJCip-GB.js} +3 -3
  3. package/dist/{MermaidComponent-X7N-8w2S.js.map → MermaidComponent-CJCip-GB.js.map} +1 -1
  4. package/dist/chat-ui.d.ts +1 -1
  5. package/dist/chat-ui.js +621 -640
  6. package/dist/chat-ui.js.map +1 -1
  7. package/dist/{collection-view-grouping-DnuJ1U4R.js → collection-view-grouping-Bm7Hlt5w.js} +2 -2
  8. package/dist/{collection-view-grouping-DnuJ1U4R.js.map → collection-view-grouping-Bm7Hlt5w.js.map} +1 -1
  9. package/dist/{collection-view-search-D_7Qvz7p.js → collection-view-search-BqYMZQ4q.js} +166 -156
  10. package/dist/collection-view-search-BqYMZQ4q.js.map +1 -0
  11. package/dist/collection-view.d.ts +3 -90
  12. package/dist/collection-view.js +2 -2
  13. package/dist/{data-table-stats-row-C8CtvdDt.js → data-table-stats-row-RwLXF9EW.js} +2 -2
  14. package/dist/{data-table-stats-row-C8CtvdDt.js.map → data-table-stats-row-RwLXF9EW.js.map} +1 -1
  15. package/dist/data-table.d.ts +1 -0
  16. package/dist/data-table.js +8 -8
  17. package/dist/{diff-drawer-BGQhxyOh.js → diff-drawer-BMl0zobj.js} +2 -2
  18. package/dist/{diff-drawer-BGQhxyOh.js.map → diff-drawer-BMl0zobj.js.map} +1 -1
  19. package/dist/{diff-viewer-DYcswG6O.js → diff-viewer-BD2PQ4SS.js} +5 -5
  20. package/dist/{diff-viewer-DYcswG6O.js.map → diff-viewer-BD2PQ4SS.js.map} +1 -1
  21. package/dist/diff.js +2 -2
  22. package/dist/{display-sort-control-n3L5WvkJ.js → display-sort-control-BSFhWHgn.js} +194 -183
  23. package/dist/display-sort-control-BSFhWHgn.js.map +1 -0
  24. package/dist/{edit-mode-data-table-BclZ-pWe.js → edit-mode-data-table-TdIRPVU1.js} +8 -8
  25. package/dist/{edit-mode-data-table-BclZ-pWe.js.map → edit-mode-data-table-TdIRPVU1.js.map} +1 -1
  26. package/dist/{index-5Lw7YMKy.d.ts → index-Bc2BsdD1.d.ts} +6 -0
  27. package/dist/index-r6SFPkUI.d.ts +91 -0
  28. package/dist/index.js +6 -6
  29. package/dist/kanban-renderer.js +8 -8
  30. package/dist/{list-row-CmFG_jCC.js → list-row-DCHZXCVH.js} +2 -2
  31. package/dist/{list-row-CmFG_jCC.js.map → list-row-DCHZXCVH.js.map} +1 -1
  32. package/dist/{markdown-editor-CN4qOKky.js → markdown-editor-6jAy_E3r.js} +6 -6
  33. package/dist/{markdown-editor-CN4qOKky.js.map → markdown-editor-6jAy_E3r.js.map} +1 -1
  34. package/dist/{mermaid-renderer-DybQ_2Cp.js → mermaid-renderer-BtW_13Sz.js} +2 -2
  35. package/dist/{mermaid-renderer-DybQ_2Cp.js.map → mermaid-renderer-BtW_13Sz.js.map} +1 -1
  36. package/dist/mermaid.js +1 -1
  37. package/dist/{number-input-CyrMrDxB.js → number-input-QDqWYzTR.js} +2 -2
  38. package/dist/{number-input-CyrMrDxB.js.map → number-input-QDqWYzTR.js.map} +1 -1
  39. package/dist/{param-editor-28dBRSV4.js → param-editor-f57ea8V9.js} +2 -2
  40. package/dist/{param-editor-28dBRSV4.js.map → param-editor-f57ea8V9.js.map} +1 -1
  41. package/dist/{param-editor-field-GxhFb86w.js → param-editor-field-CePT5hCj.js} +5 -5
  42. package/dist/{param-editor-field-GxhFb86w.js.map → param-editor-field-CePT5hCj.js.map} +1 -1
  43. package/dist/param-editor.js +3 -3
  44. package/dist/{prism-CnkSh-ZG.js → prism-EZSmZh-a.js} +2 -2
  45. package/dist/{prism-CnkSh-ZG.js.map → prism-EZSmZh-a.js.map} +1 -1
  46. package/dist/{rich-text-DOK4dDeb.js → rich-text-bKBLAco5.js} +384 -363
  47. package/dist/rich-text-bKBLAco5.js.map +1 -0
  48. package/dist/rich-text.d.ts +1 -1
  49. package/dist/rich-text.js +3 -3
  50. package/dist/{scroll-area-crJfiiuF.js → scroll-area-IeoRS73V.js} +3 -5
  51. package/dist/scroll-area-IeoRS73V.js.map +1 -0
  52. package/dist/terminal.js +1 -1
  53. package/dist/{theme-Bd_a7sU8.js → theme-bxwJIMKe.js} +22 -2
  54. package/dist/theme-bxwJIMKe.js.map +1 -0
  55. package/dist/theme.js +1 -1
  56. package/dist/{tree-list-B_qqiIoM.js → tree-list-nFNO7MV4.js} +2 -2
  57. package/dist/{tree-list-B_qqiIoM.js.map → tree-list-nFNO7MV4.js.map} +1 -1
  58. package/dist/{workspace-badge-BfSkiGP_.js → workspace-badge-BgiTennO.js} +2 -2
  59. package/dist/{workspace-badge-BfSkiGP_.js.map → workspace-badge-BgiTennO.js.map} +1 -1
  60. package/package.json +2 -2
  61. package/dist/collection-view-search-D_7Qvz7p.js.map +0 -1
  62. package/dist/display-sort-control-n3L5WvkJ.js.map +0 -1
  63. package/dist/rich-text-DOK4dDeb.js.map +0 -1
  64. package/dist/scroll-area-crJfiiuF.js.map +0 -1
  65. package/dist/theme-Bd_a7sU8.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-sort-control-BSFhWHgn.js","names":["Badge","Icon","Text","LucideIcon","lucideIcons","CollectionBadgeProps","label","icon","onClick","toPascalCase","value","split","filter","Boolean","map","part","charAt","toUpperCase","slice","join","resolveIcon","name","undefined","pascalName","candidate","component","Record","CollectionBadge","props","$","_c","t0","BadgeIcon","t1","t2","t3","content","t4","Symbol","for","display","gap","alignItems","minW","maxW","variant","bg","_light","_dark","color","textStyle","sharedProps","const","t5","event","stopPropagation","t6","_c","_Fragment","enumOptionLabel","findEnumOption","getEnumOptions","toTitleCase","AttributeDescriptor","AttributeType","EnumOption","summarizeMultiEnum","values","type","length","map","value","join","AttributeBadge","attributeId","attributeLabel","label","color","icon","options","isEditable","getAttributeBadgeColorPalette","_badge","renderEnumBadge","descriptor","kind","stringValue","editable","id","undefined","option","renderMultiEnumBadge","Array","isArray","filter","entry","summary","firstOption","ViewFilterGroup","createElement","ReactNode","getAttributeStringValues","getAttributeValue","filterRowsByView","emptyGroupKey","groupKey","CollectionBadge","AttributeBadge","renderEnumBadge","renderMultiEnumBadge","getEnumOptions","toTitleCase","AttributeDescriptor","CollectionBadgeItem","KanbanRendererRow","findAttribute","NO_GROUPING","getAttributeBadgeColorPalette","enumOptionLabel","findEnumOption","formatDateValue","value","date","Date","Number","isNaN","getTime","toLocaleDateString","formatNumberValue","isFinite","String","formatStringValue","undefined","formatUserValue","isRenderableNode","isRecord","Record","Array","isArray","textValue","trim","isCollectionResource","NonNullable","type","id","normalizeCollectionBadgeItems","flatMap","item","label","icon","resource","renderBadgeListDisplay","descriptor","row","openResource","display","kind","items","attributes","itemsAttributeId","length","selectedId","selectedItem","find","orderedItems","filter","map","key","onClick","renderAttributeBadge","render","formatted","attributeId","color","collectDisplayBadges","displayProperties","badges","displayable","badge","push","collectDisplayCustomSlots","slots","slot","collectValuesFromRows","rows","values","Set","add","FilterCategoryView","selectionMode","options","buildFilterCategories","categories","filterable","declared","auto","declaredValues","option","undeclared","has","sort","a","b","localeCompare","numeric","MenuOption","buildGroupingOptions","groupable","buildDisplayPropertyOptions","resolveSubGroupingOptions","columnGrouping","resolveListDropTargetColumnKey","placement","columnKey","resolveKnownColumnKeys","structureRows","keys","empty","some","conjunction","candidates","title","rules","rule","Button","HStack","Icon","IconButton","Menu","Popover","Portal","Text","Check","ChevronDown","List","Settings2","SquareKanban","Fragment","ReactNode","useEffect","useRef","useState","ScrollArea","Tooltip","MenuOption","resolveSubGroupingOptions","KanbanRendererSettings","DisplayMenuProps","settings","sortControl","groupingOptions","displayPropertyOptions","onViewModeChange","value","onColumnGroupingChange","onRowGroupingChange","onDisplayPropertyToggle","property","SectionLabel","props","$","_c","t0","children","DisplayMenuSelectProps","label","options","onSelect","DisplayMenuSelect","find","option","selectedLabel","hasNoneFirst","t1","Symbol","for","strategy","hideWhenDetached","t2","t3","t4","t5","t6","overscrollBehavior","t7","map","option_0","index","t8","t9","DisplayMenu","triggerRef","contentRef","open","setOpen","closeOnOutsidePointerDown","event","target","Node","current","contains","document","addEventListener","removeEventListener","placement","offset","mainAxis","getAnchorElement","details","viewMode","t10","t11","t12","t13","t14","t15","rowGrouping","t16","columnGrouping","t17","t18","t19","t20","t21","t22","displayProperties","t23","active","includes","t24","t25","_c","Fragment","ScrollArea","Tooltip","Button","Icon","SearchX","X","EmptyState","CollectionViewEmptyStateProps","search","onClearSearch","CollectionViewEmptyState","props","$","_c","t0","Symbol","for","t1","trim","t2","t3","t4","t5","_c","EmptyState","HStack","Stack","Text","ViewSort","AttributeDescriptor","fieldIcon","canSortField","findField","sortDirectionLabel","RuleSelect","DisplaySortControlProps","fields","sorts","onSortsChange","DisplaySortControl","props","$","_c","sort","t0","field","attributeId","undefined","t1","Symbol","for","t2","t3","value","label","t4","filter","map","_temp","t5","direction","choice","slice","t6","entry","id","icon","_c","Tooltip$1","EmptyState$1","getAttributeValue","findEnumOption","enumOptionLabel","findAttribute","getEnumOptions","getAttributeStringValues","findField","fieldIcon","NO_GROUPING","toTitleCase","RuleSelect","sortDirectionLabel","filterRowsByView","canSortField","groupKey","emptyGroupKey","Fragment$1","lucideIcons","toPascalCase","value","part","resolveIcon","name","pascalName","candidate","component","CollectionBadge","$","c","props","t0","icon","BadgeIcon","t1","Icon","t2","label","Text","t3","Fragment","content","t4","sharedProps","onClick","t5","event","t6","Badge","summarizeMultiEnum","values","type","renderEnumBadge","stringValue","editable","descriptor","option","renderMultiEnumBadge","entry","summary","firstOption","formatDateValue","date","formatNumberValue","formatStringValue","formatUserValue","isRenderableNode","isRecord","textValue","isCollectionResource","normalizeCollectionBadgeItems","item","id","resource","renderBadgeListDisplay","items","row","selectedId","selectedItem","createElement","openResource","renderAttributeBadge","formatted","collectDisplayBadges","badges","displayProperties","attributes","badge","collectDisplayCustomSlots","slots","slot","collectValuesFromRows","rows","buildFilterCategories","categories","declared","auto","declaredValues","undeclared","a","b","buildGroupingOptions","options","buildDisplayPropertyOptions","resolveSubGroupingOptions","columnGrouping","resolveListDropTargetColumnKey","placement","resolveKnownColumnKeys","keys","empty","structureRows","filter","candidates","key","rule","SectionLabel","DisplayMenuSelect","selectedLabel","hasNoneFirst","HStack","ChevronDown","Menu","Button","t7","index","option_0","Check","t8","ScrollArea$1","t9","DisplayMenu","triggerRef","useRef","contentRef","open","setOpen","useState","closeOnOutsidePointerDown","target","useEffect","details","Popover","IconButton","Settings2","settings","onViewModeChange","List","t10","t11","t12","SquareKanban","t13","t14","t15","onColumnGroupingChange","onRowGroupingChange","t16","groupingOptions","t17","t18","t19","t20","t21","t22","displayPropertyOptions","onDisplayPropertyToggle","t23","active","t24","Portal","t25","CollectionViewEmptyState","SearchX","search","X","onClearSearch","DisplaySortControl","sort","sorts","fields","onSortsChange","field","_temp","choice","Stack"],"sources":["../src/components/kanban-renderer/collection-badge.tsx","../src/components/kanban-renderer/kanban-renderer-badge-helpers.ts","../src/components/kanban-renderer/kanban-renderer-helpers.ts","../src/components/kanban-renderer/display-menu.tsx","../src/components/collection-view/collection-view-empty-state.tsx","../src/components/collection-view/display-sort-control.tsx"],"sourcesContent":["import { Badge, Icon, Text } from \"@chakra-ui/react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport * as lucideIcons from \"lucide-react\";\n\ninterface CollectionBadgeProps {\n label: string;\n icon?: string;\n onClick?: () => void;\n}\n\nconst toPascalCase = (value: string) =>\n value\n .split(/[^a-zA-Z0-9]+/)\n .filter(Boolean)\n .map((part) => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\n .join(\"\");\n\nconst resolveIcon = (name: string | undefined) => {\n if (!name) return undefined;\n const pascalName = toPascalCase(name);\n for (const candidate of [name, pascalName, `${pascalName}Icon`]) {\n const component = (lucideIcons as Record<string, unknown>)[candidate];\n if (component && (typeof component === \"function\" || typeof component === \"object\")) {\n return component as LucideIcon;\n }\n }\n return undefined;\n};\n\nexport const CollectionBadge = (props: CollectionBadgeProps) => {\n const { label, icon, onClick } = props;\n const BadgeIcon = resolveIcon(icon);\n\n const content = (\n <>\n {BadgeIcon ? <Icon as={BadgeIcon} boxSize=\"3.5\" flexShrink={0} aria-hidden=\"true\" /> : null}\n <Text as=\"span\" textStyle=\"label/XS/medium\" color=\"fg.muted\" minW=\"0\" maxW=\"10rem\" truncate>\n {label}\n </Text>\n </>\n );\n\n const sharedProps = {\n display: \"inline-flex\",\n gap: \"2xs\",\n alignItems: \"center\",\n minW: \"0\",\n maxW: \"100%\",\n variant: \"subtle\",\n bg: { _light: \"bg.muted\", _dark: \"bg.subtle\" },\n color: \"fg.muted\",\n textStyle: \"label/XS/medium\",\n \"data-testid\": \"collection-badge\",\n } as const;\n\n if (onClick) {\n return (\n <Badge asChild {...sharedProps} cursor=\"pointer\">\n <button\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onClick();\n }}\n >\n {content}\n </button>\n </Badge>\n );\n }\n\n return (\n <Badge as=\"span\" {...sharedProps} cursor=\"default\">\n {content}\n </Badge>\n );\n};\n","import { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\nimport type { AttributeDescriptor, AttributeType, EnumOption } from \"./types\";\n\nconst summarizeMultiEnum = (values: string[], type: AttributeType) => {\n if (values.length === 0) return null;\n if (values.length <= 2) return values.map((value) => enumOptionLabel(type, value)).join(\", \");\n return `${enumOptionLabel(type, values[0]!)}, ${enumOptionLabel(type, values[1]!)} +${values.length - 2}`;\n};\n\nexport interface AttributeBadge {\n attributeId: string;\n attributeLabel?: string;\n label: string;\n color?: string;\n icon?: string | null;\n value?: string | string[];\n options?: EnumOption[];\n isEditable?: boolean;\n}\n\nexport const getAttributeBadgeColorPalette = (_badge: AttributeBadge) => \"gray\";\n\nexport const renderEnumBadge = (descriptor: AttributeDescriptor, type: AttributeType, value: unknown) => {\n if (type.kind !== \"enum\") return null;\n const stringValue = typeof value === \"string\" ? value : null;\n const editable = descriptor.editable === true;\n if (!stringValue) {\n return editable\n ? {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: descriptor.label,\n value: stringValue ?? undefined,\n options: getEnumOptions(type),\n isEditable: true,\n }\n : null;\n }\n const option = findEnumOption(type, stringValue);\n return {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: option?.label ?? toTitleCase(stringValue),\n color: option?.color,\n icon: option?.icon,\n ...(editable ? { value: stringValue, options: getEnumOptions(type), isEditable: true } : {}),\n };\n};\n\nexport const renderMultiEnumBadge = (descriptor: AttributeDescriptor, type: AttributeType, value: unknown) => {\n if (type.kind !== \"enum-multi\") return null;\n const values = Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === \"string\") : [];\n const summary = summarizeMultiEnum(values, type);\n const editable = descriptor.editable === true;\n if (!summary) {\n return editable\n ? {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: descriptor.label,\n value: values,\n options: getEnumOptions(type),\n isEditable: true,\n }\n : null;\n }\n const firstOption = values[0] ? findEnumOption(type, values[0]) : undefined;\n return {\n attributeId: descriptor.id,\n attributeLabel: descriptor.label,\n label: summary,\n color: firstOption?.color,\n icon: firstOption?.icon,\n ...(editable ? { value: values, options: getEnumOptions(type), isEditable: true } : {}),\n };\n};\n","import type { ViewFilterGroup } from \"@pstdio/sdk/extensions\";\nimport { createElement, type ReactNode } from \"react\";\nimport { getAttributeStringValues, getAttributeValue } from \"../collection-view/collection-view-fields\";\nimport { filterRowsByView } from \"../collection-view/collection-view-filter\";\nimport { emptyGroupKey, groupKey } from \"../collection-view/collection-view-grouping\";\nimport { CollectionBadge } from \"./collection-badge\";\nimport type { AttributeBadge } from \"./kanban-renderer-badge-helpers\";\nimport { renderEnumBadge, renderMultiEnumBadge } from \"./kanban-renderer-badge-helpers\";\nimport { getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\nimport type { AttributeDescriptor, CollectionBadgeItem, KanbanRendererRow } from \"./types\";\nimport { findAttribute, NO_GROUPING } from \"./types\";\n\nexport type { AttributeBadge } from \"./kanban-renderer-badge-helpers\";\nexport { getAttributeBadgeColorPalette } from \"./kanban-renderer-badge-helpers\";\nexport { enumOptionLabel, findEnumOption, getEnumOptions, toTitleCase } from \"./kanban-renderer-enum-helpers\";\n\nconst formatDateValue = (value: unknown) => {\n if (typeof value !== \"string\" || value === \"\") return null;\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return null;\n return date.toLocaleDateString();\n};\n\nconst formatNumberValue = (value: unknown) => {\n if (typeof value === \"number\" && Number.isFinite(value)) return String(value);\n if (typeof value === \"string\" && value !== \"\" && !Number.isNaN(Number(value))) return value;\n return null;\n};\n\nconst formatStringValue = (value: unknown) => {\n if (value === null || value === undefined) return null;\n if (typeof value === \"string\") return value === \"\" ? null : value;\n return String(value);\n};\n\nconst formatUserValue = (value: unknown) => formatStringValue(value);\n\nconst isRenderableNode = (value: unknown) => value !== null && value !== undefined && value !== false;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst textValue = (value: unknown) => (typeof value === \"string\" && value.trim() ? value.trim() : undefined);\n\nconst isCollectionResource = (value: unknown): value is NonNullable<CollectionBadgeItem[\"resource\"]> =>\n isRecord(value) && typeof value.type === \"string\" && typeof value.id === \"string\";\n\nconst normalizeCollectionBadgeItems = (value: unknown): CollectionBadgeItem[] => {\n if (!Array.isArray(value)) return [];\n\n return value.flatMap((item) => {\n if (!isRecord(item)) return [];\n const id = textValue(item.id);\n if (!id) return [];\n const label = textValue(item.label) ?? id;\n const icon = textValue(item.icon);\n const resource = isCollectionResource(item.resource) ? item.resource : undefined;\n return [{ id, label, ...(icon ? { icon } : {}), ...(resource ? { resource } : {}) }];\n });\n};\n\nexport const renderBadgeListDisplay = (\n descriptor: AttributeDescriptor,\n value: unknown,\n row: KanbanRendererRow,\n openResource?: (resource: NonNullable<CollectionBadgeItem[\"resource\"]>) => void,\n): ReactNode => {\n if (descriptor.display?.kind !== \"badge-list\") return null;\n const items = normalizeCollectionBadgeItems(row.attributes[descriptor.display.itemsAttributeId]);\n if (items.length === 0) return null;\n\n const selectedId = typeof value === \"string\" ? value : undefined;\n const selectedItem = items.find((item) => item.id === selectedId) ?? items[0];\n if (!selectedItem) return null;\n\n const orderedItems = [selectedItem, ...items.filter((item) => item.id !== selectedItem.id)];\n return orderedItems.map((item) =>\n createElement(CollectionBadge, {\n key: item.id,\n label: item.label,\n icon: item.icon,\n onClick: item.resource && openResource ? () => openResource(item.resource!) : undefined,\n }),\n );\n};\n\n/**\n * Per-type default cell summary used by the card / list end-content. Returns\n * null when the attribute has no displayable value.\n */\nexport const renderAttributeBadge = (\n descriptor: AttributeDescriptor,\n row: KanbanRendererRow,\n): AttributeBadge | null => {\n const type = descriptor.type;\n const value = getAttributeValue(row, descriptor);\n\n if (descriptor.render || descriptor.display) return null;\n\n if (type.kind === \"enum\") return renderEnumBadge(descriptor, type, value);\n if (type.kind === \"enum-multi\") return renderMultiEnumBadge(descriptor, type, value);\n\n if (type.kind === \"date\") {\n const formatted = formatDateValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n }\n\n if (type.kind === \"number\") {\n const formatted = formatNumberValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n }\n\n if (type.kind === \"user\") {\n const formatted = formatUserValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted, color: \"blue\" } : null;\n }\n\n const formatted = formatStringValue(value);\n return formatted ? { attributeId: descriptor.id, label: formatted } : null;\n};\n\nexport const collectDisplayBadges = (\n row: KanbanRendererRow,\n attributes: AttributeDescriptor[],\n displayProperties: string[],\n): AttributeBadge[] => {\n const badges: AttributeBadge[] = [];\n for (const id of displayProperties) {\n const descriptor = findAttribute(attributes, id);\n if (!descriptor || descriptor.displayable === false) continue;\n const badge = renderAttributeBadge(descriptor, row);\n if (badge) badges.push(badge);\n }\n return badges;\n};\n\nexport const collectDisplayCustomSlots = (\n row: KanbanRendererRow,\n attributes: AttributeDescriptor[],\n displayProperties: string[],\n): ReactNode[] => {\n const slots: ReactNode[] = [];\n for (const id of displayProperties) {\n const descriptor = findAttribute(attributes, id);\n if (!descriptor || descriptor.displayable === false) continue;\n\n const value = getAttributeValue(row, descriptor);\n const slot = descriptor.render ? descriptor.render(value, row) : renderBadgeListDisplay(descriptor, value, row);\n if (isRenderableNode(slot)) slots.push(slot);\n }\n return slots;\n};\n\nconst collectValuesFromRows = (rows: KanbanRendererRow[], descriptor: AttributeDescriptor) => {\n const values = new Set<string>();\n for (const row of rows) {\n for (const value of getAttributeStringValues(row, descriptor)) values.add(value);\n }\n return values;\n};\n\nexport interface FilterCategoryView {\n id: string;\n label: string;\n selectionMode: \"multiple\";\n options: { value: string; label: string; color?: string; icon?: string | null }[];\n}\n\n/**\n * Build the filter menu's category list from the declared attributes. Enum\n * descriptors expose their declared options first; auto-derived values from\n * the data fill in the gaps for string / date / number / user attributes (so\n * filter chips for free-form fields don't require declaring every option).\n */\nexport const buildFilterCategories = (\n attributes: AttributeDescriptor[],\n rows: KanbanRendererRow[],\n): FilterCategoryView[] => {\n const categories: FilterCategoryView[] = [];\n for (const descriptor of attributes) {\n if (!descriptor.filterable) continue;\n\n if (descriptor.type.kind === \"enum\" || descriptor.type.kind === \"enum-multi\") {\n const declared = getEnumOptions(descriptor.type);\n const auto = collectValuesFromRows(rows, descriptor);\n const declaredValues = new Set(declared.map((option) => option.value));\n const undeclared = [...auto]\n .filter((value) => !declaredValues.has(value))\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n\n categories.push({\n id: descriptor.id,\n label: descriptor.label,\n selectionMode: \"multiple\",\n options: [\n ...declared.map((option) => ({\n value: option.value,\n label: option.label,\n color: option.color,\n icon: option.icon,\n })),\n ...undeclared,\n ],\n });\n continue;\n }\n\n const auto = [...collectValuesFromRows(rows, descriptor)]\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n categories.push({ id: descriptor.id, label: descriptor.label, selectionMode: \"multiple\", options: auto });\n }\n return categories;\n};\n\nexport interface MenuOption {\n value: string;\n label: string;\n}\n\nexport const buildGroupingOptions = (attributes: AttributeDescriptor[]): MenuOption[] => {\n const options: MenuOption[] = [{ value: NO_GROUPING, label: \"None\" }];\n for (const descriptor of attributes) {\n if (!descriptor.groupable) continue;\n // enum-multi is intentionally not offered for grouping (one row can hold\n // multiple values; we don't double-render).\n if (descriptor.type.kind === \"enum-multi\") continue;\n options.push({ value: descriptor.id, label: descriptor.label });\n }\n return options;\n};\n\nexport const buildDisplayPropertyOptions = (attributes: AttributeDescriptor[]): MenuOption[] => {\n const options: MenuOption[] = [];\n for (const descriptor of attributes) {\n if (!descriptor.displayable) continue;\n options.push({ value: descriptor.id, label: descriptor.label });\n }\n return options;\n};\n\nexport const resolveSubGroupingOptions = (options: MenuOption[], columnGrouping: string) => {\n if (columnGrouping === NO_GROUPING) return options.filter((option) => option.value === NO_GROUPING);\n return options.filter((option) => option.value === NO_GROUPING || option.value !== columnGrouping);\n};\n\nexport const resolveListDropTargetColumnKey = (columnGrouping: string, placement?: { columnKey?: string }) => {\n if (columnGrouping === NO_GROUPING) return \"all\";\n return placement?.columnKey;\n};\n\n/**\n * Source rows keep the unassigned column visible. Only rules on the grouping field\n * limit which columns the filter can still show.\n */\nexport const resolveKnownColumnKeys = (\n columnGrouping: string,\n attributes: AttributeDescriptor[],\n filter?: ViewFilterGroup,\n structureRows: KanbanRendererRow[] = [],\n) => {\n if (columnGrouping === NO_GROUPING) return undefined;\n const descriptor = findAttribute(attributes, columnGrouping);\n if (!descriptor || descriptor.type.kind !== \"enum\") return undefined;\n const keys = getEnumOptions(descriptor.type).map((option) => option.value);\n const empty = emptyGroupKey(descriptor);\n if (structureRows.some((row) => groupKey(row, descriptor) === empty)) keys.push(empty);\n if (filter?.conjunction !== \"and\") return keys;\n const candidates = keys.map((key) => ({\n id: key,\n title: key,\n attributes: key === empty ? {} : { [columnGrouping]: key },\n }));\n return filterRowsByView(\n candidates,\n { conjunction: \"and\", rules: filter.rules.filter((rule) => rule.attributeId === columnGrouping) },\n [descriptor],\n ).map((row) => row.id);\n};\n","import { Button, HStack, Icon, IconButton, Menu, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, List, Settings2, SquareKanban } from \"lucide-react\";\nimport { Fragment, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { type MenuOption, resolveSubGroupingOptions } from \"./kanban-renderer-helpers\";\nimport type { KanbanRendererSettings } from \"./types\";\n\ninterface DisplayMenuProps {\n settings: KanbanRendererSettings;\n sortControl?: ReactNode;\n groupingOptions: MenuOption[];\n displayPropertyOptions: MenuOption[];\n onViewModeChange: (value: KanbanRendererSettings[\"viewMode\"]) => void;\n onColumnGroupingChange: (value: string) => void;\n onRowGroupingChange: (value: string) => void;\n onDisplayPropertyToggle: (property: string) => void;\n}\n\nconst SectionLabel = (props: { children: string }) => (\n <Text paddingX=\"xs\" paddingTop=\"xs\" paddingBottom=\"2xs\" textStyle=\"label/XS/medium\" color=\"fg.muted\">\n {props.children}\n </Text>\n);\n\nexport interface DisplayMenuSelectProps {\n label: string;\n value: string;\n options: MenuOption[];\n onSelect: (value: string) => void;\n}\n\n/** A Display menu row: the setting's name on the left, its value and a menu on the right. */\nexport const DisplayMenuSelect = (props: DisplayMenuSelectProps) => {\n const selectedLabel = props.options.find((option) => option.value === props.value)?.label ?? props.label;\n const hasNoneFirst = props.options[0]?.value === \"none\";\n\n return (\n <Menu.Root positioning={{ strategy: \"fixed\", hideWhenDetached: true }}>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"ghost\" width=\"full\" justifyContent=\"flex-start\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\">{props.label}</Text>\n <HStack marginLeft=\"auto\" minW=\"0\" gap=\"2xs\" color=\"fg.muted\">\n <Text textStyle=\"label/S/regular\" truncate>\n {selectedLabel}\n </Text>\n </HStack>\n <ChevronDown size={12} />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content overflow=\"hidden\" overflowY=\"hidden\">\n <ScrollArea maxH=\"var(--available-height)\" minH=\"0\" viewportProps={{ overscrollBehavior: \"contain\" }}>\n {props.options.map((option, index) => (\n <Fragment key={option.value}>\n {hasNoneFirst && index === 1 ? <Menu.Separator /> : null}\n <Menu.Item value={option.value} onClick={() => props.onSelect(option.value)}>\n <HStack width=\"full\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n {option.value === props.value ? <Icon as={Check} marginLeft=\"auto\" boxSize=\"0.875rem\" /> : null}\n </HStack>\n </Menu.Item>\n </Fragment>\n ))}\n </ScrollArea>\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const DisplayMenu = (props: DisplayMenuProps) => {\n const {\n settings,\n groupingOptions,\n displayPropertyOptions,\n onViewModeChange,\n onColumnGroupingChange,\n onRowGroupingChange,\n onDisplayPropertyToggle,\n } = props;\n const triggerRef = useRef<HTMLButtonElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (!open) return;\n const closeOnOutsidePointerDown = (event: PointerEvent) => {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (contentRef.current?.contains(target) || triggerRef.current?.contains(target)) return;\n setOpen(false);\n };\n document.addEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n return () => document.removeEventListener(\"pointerdown\", closeOnOutsidePointerDown);\n }, [open]);\n\n return (\n <Popover.Root\n open={open}\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-end\",\n offset: { mainAxis: 8 },\n getAnchorElement: () => triggerRef.current,\n }}\n onOpenChange={(details) => setOpen(details.open)}\n >\n <Tooltip content=\"Display\">\n <Popover.Trigger asChild>\n <IconButton ref={triggerRef} aria-label=\"Display settings\" variant=\"ghost\" size=\"2xs\">\n <Icon as={Settings2} />\n </IconButton>\n </Popover.Trigger>\n </Tooltip>\n <Portal>\n <Popover.Positioner>\n <Popover.Content ref={contentRef} width=\"18.75rem\" padding=\"xs\" gap=\"1px\">\n <SectionLabel>DISPLAY</SectionLabel>\n <HStack borderRadius=\"sm\" bg=\"bg.subtle\" padding=\"2xs\" gap=\"2xs\">\n <Button\n flex=\"1\"\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={settings.viewMode === \"list\"}\n onClick={() => onViewModeChange(\"list\")}\n >\n <List />\n List\n </Button>\n <Button\n flex=\"1\"\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={settings.viewMode === \"board\"}\n onClick={() => onViewModeChange(\"board\")}\n >\n <SquareKanban />\n Board\n </Button>\n </HStack>\n\n <DisplayMenuSelect\n label=\"Grouping\"\n value={settings.columnGrouping}\n options={groupingOptions}\n onSelect={(value) => {\n onColumnGroupingChange(value);\n if (value === \"none\" || value === settings.rowGrouping) onRowGroupingChange(\"none\");\n }}\n />\n <DisplayMenuSelect\n label=\"Sub-grouping\"\n value={settings.rowGrouping}\n options={resolveSubGroupingOptions(groupingOptions, settings.columnGrouping)}\n onSelect={onRowGroupingChange}\n />\n\n {props.sortControl}\n <SectionLabel>PROPERTIES</SectionLabel>\n <HStack paddingX=\"xs\" paddingBottom=\"xs\" flexWrap=\"wrap\" gap=\"2xs\">\n {displayPropertyOptions.map((option) => {\n const active = settings.displayProperties.includes(option.value);\n return (\n <Button\n key={option.value}\n size=\"2xs\"\n variant=\"ghost\"\n aria-pressed={active}\n onClick={() => onDisplayPropertyToggle(option.value)}\n >\n {option.label}\n </Button>\n );\n })}\n </HStack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Button, Icon } from \"@chakra-ui/react\";\nimport { SearchX, X } from \"lucide-react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\n\nexport interface CollectionViewEmptyStateProps {\n search: string;\n onClearSearch: () => void;\n}\n\n/** Search feedback offers a direct way back to the collection. */\nexport const CollectionViewEmptyState = (props: CollectionViewEmptyStateProps) => {\n const { search, onClearSearch } = props;\n return (\n <EmptyState\n h=\"full\"\n icon={<Icon as={SearchX} />}\n title={`No results for “${search.trim()}”`}\n description=\"Search looks at the titles and properties this view shows.\"\n >\n <Button size=\"2xs\" variant=\"outline\" onClick={onClearSearch}>\n <X /> Clear search\n </Button>\n </EmptyState>\n );\n};\n","import { HStack, Stack, Text } from \"@chakra-ui/react\";\nimport type { ViewSort } from \"@pstdio/sdk/extensions\";\nimport type { AttributeDescriptor } from \"../kanban-renderer/types\";\nimport { fieldIcon } from \"./collection-view-field-icon\";\nimport { canSortField, findField } from \"./collection-view-fields\";\nimport { sortDirectionLabel } from \"./collection-view-labels\";\nimport { RuleSelect } from \"./rule-select\";\n\nexport interface DisplaySortControlProps {\n fields: AttributeDescriptor[];\n sorts: ViewSort[];\n onSortsChange: (sorts: ViewSort[]) => void;\n}\n\n/** Display settings and table headers edit the same single sort. */\nexport const DisplaySortControl = (props: DisplaySortControlProps) => {\n const { fields, sorts, onSortsChange } = props;\n const sort = sorts[0];\n const field = sort ? findField(fields, sort.attributeId) : undefined;\n return (\n <Stack data-testid=\"display-sort-control\" gap=\"1px\">\n <HStack paddingX=\"xs\" minH=\"7\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\" flex=\"1\">\n Ordering\n </Text>\n <RuleSelect\n aria-label=\"Ordering\"\n width=\"9rem\"\n value={sort ? `field:${sort.attributeId}` : \"none\"}\n options={[\n { value: \"none\", label: \"None\" },\n ...fields\n .filter(canSortField)\n .map((entry) => ({ value: `field:${entry.id}`, label: entry.label, icon: fieldIcon(entry) })),\n ]}\n onSelect={(choice) =>\n onSortsChange(\n choice === \"none\" ? [] : [{ attributeId: choice.slice(6), direction: sort?.direction ?? \"asc\" }],\n )\n }\n />\n </HStack>\n {sort ? (\n <HStack paddingX=\"xs\" minH=\"7\" gap=\"xs\">\n <Text textStyle=\"label/S/regular\" flex=\"1\">\n Direction\n </Text>\n <RuleSelect\n aria-label=\"Sort direction\"\n width=\"9rem\"\n value={sort.direction}\n options={[\n { value: \"asc\", label: sortDirectionLabel(field, \"asc\") },\n { value: \"desc\", label: sortDirectionLabel(field, \"desc\") },\n ]}\n onSelect={(direction) => onSortsChange([{ ...sort, direction: direction as ViewSort[\"direction\"] }])}\n />\n </HStack>\n ) : null}\n </Stack>\n );\n};\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { n as e, t } from "./scroll-area-crJfiiuF.js";
2
- import { a as n, t as r, u as i } from "./list-row-CmFG_jCC.js";
3
- import { n as a } from "./prism-CnkSh-ZG.js";
4
- import { a as o, b as s, i as c, n as l, r as u, u as d } from "./collection-view-search-D_7Qvz7p.js";
5
- import { n as f, t as p } from "./number-input-CyrMrDxB.js";
6
- import { a as m, i as h, r as g } from "./collection-view-grouping-DnuJ1U4R.js";
7
- import { n as _ } from "./param-editor-28dBRSV4.js";
1
+ import { n as e, t } from "./scroll-area-IeoRS73V.js";
2
+ import { a as n, t as r, u as i } from "./list-row-DCHZXCVH.js";
3
+ import { n as a } from "./prism-EZSmZh-a.js";
4
+ import { a as o, b as s, i as c, n as l, r as u, u as d } from "./collection-view-search-BqYMZQ4q.js";
5
+ import { n as f, t as p } from "./number-input-QDqWYzTR.js";
6
+ import { a as m, i as h, r as g } from "./collection-view-grouping-Bm7Hlt5w.js";
7
+ import { n as _ } from "./param-editor-f57ea8V9.js";
8
8
  import { Box as v, Button as y, Flex as b, Icon as x, IconButton as S, Menu as C, Popover as w, Portal as T, Stack as E, Table as D, Text as O, chakra as k } from "@chakra-ui/react";
9
9
  import { c as A } from "react/compiler-runtime";
10
10
  import { jsx as j, jsxs as M } from "react/jsx-runtime";
@@ -1452,4 +1452,4 @@ function At(e) {
1452
1452
  //#endregion
1453
1453
  export { de as C, fe as S, oe as T, ke as _, dt as a, Ce as b, ze as c, Ue as d, Ye as f, Ae as g, Fe as h, ft as i, Ve as l, Ie as m, ht as n, Be as o, Le as p, mt as r, Qe as s, yt as t, He as u, xe as v, le as w, Se as x, Ee as y };
1454
1454
 
1455
- //# sourceMappingURL=edit-mode-data-table-BclZ-pWe.js.map
1455
+ //# sourceMappingURL=edit-mode-data-table-TdIRPVU1.js.map