cursedbelt 1.0.0 → 2.3.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.
- package/dist/client/index.js +1 -1
- package/dist/core/category/index.d.ts.map +1 -1
- package/dist/core/category/index.js +2 -1
- package/dist/core/category/index.js.map +1 -1
- package/dist/core/category/types.js +1 -1
- package/dist/core/category/types.js.map +1 -1
- package/dist/core/file-tree/fileTreeModel.d.ts +49 -0
- package/dist/core/file-tree/fileTreeModel.d.ts.map +1 -1
- package/dist/core/file-tree/fileTreeModel.js +84 -0
- package/dist/core/file-tree/fileTreeModel.js.map +1 -1
- package/dist/core/layout/index.js +1 -1
- package/dist/core/layout/index.js.map +1 -1
- package/dist/core/media/index.js +1 -1
- package/dist/core/media/index.js.map +1 -1
- package/dist/core/media/types.js +1 -1
- package/dist/core/media/types.js.map +1 -1
- package/dist/core/media/uploadLimits.js +1 -1
- package/dist/core/media/uploadLimits.js.map +1 -1
- package/dist/core/sharing/model.d.ts +1 -1
- package/dist/ctgr/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/activity-bar/ActivityBar.d.ts +17 -0
- package/dist/react/activity-bar/ActivityBar.d.ts.map +1 -1
- package/dist/react/activity-bar/ActivityBar.js.map +1 -1
- package/dist/react/analytics/index.d.ts +1 -1
- package/dist/react/analytics/index.js +1 -1
- package/dist/react/chat/MessageComposer.d.ts.map +1 -1
- package/dist/react/chat/MessageComposer.js +5 -4
- package/dist/react/chat/MessageComposer.js.map +1 -1
- package/dist/react/components/Button.d.ts.map +1 -1
- package/dist/react/components/Button.js +3 -2
- package/dist/react/components/Button.js.map +1 -1
- package/dist/react/components/Checkbox.d.ts +19 -3
- package/dist/react/components/Checkbox.d.ts.map +1 -1
- package/dist/react/components/Checkbox.js +29 -12
- package/dist/react/components/Checkbox.js.map +1 -1
- package/dist/react/components/CodeArea.d.ts.map +1 -1
- package/dist/react/components/CodeArea.js +2 -1
- package/dist/react/components/CodeArea.js.map +1 -1
- package/dist/react/components/Collapsible.d.ts.map +1 -1
- package/dist/react/components/Collapsible.js +2 -1
- package/dist/react/components/Collapsible.js.map +1 -1
- package/dist/react/components/ComboboxField.d.ts.map +1 -1
- package/dist/react/components/ComboboxField.js +3 -2
- package/dist/react/components/ComboboxField.js.map +1 -1
- package/dist/react/components/CopyButton.d.ts.map +1 -1
- package/dist/react/components/CopyButton.js +2 -1
- package/dist/react/components/CopyButton.js.map +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.d.ts.map +1 -1
- package/dist/react/components/DataTable/ColumnChecklist.js +2 -1
- package/dist/react/components/DataTable/ColumnChecklist.js.map +1 -1
- package/dist/react/components/DataTable/Pagination.d.ts.map +1 -1
- package/dist/react/components/DataTable/Pagination.js +2 -1
- package/dist/react/components/DataTable/Pagination.js.map +1 -1
- package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
- package/dist/react/components/DataTable/SortHeader.js +2 -1
- package/dist/react/components/DataTable/SortHeader.js.map +1 -1
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts +61 -0
- package/dist/react/components/DataTable/TableFilterBuilder.d.ts.map +1 -0
- package/dist/react/components/DataTable/{FilterBuilder.js → TableFilterBuilder.js} +26 -3
- package/dist/react/components/DataTable/TableFilterBuilder.js.map +1 -0
- package/dist/react/components/DataTable/Toolbar.d.ts +1 -1
- package/dist/react/components/DataTable/Toolbar.js +3 -3
- package/dist/react/components/DataTable/Toolbar.js.map +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.d.ts.map +1 -1
- package/dist/react/components/DataTable/cells/LinkCell.js +2 -1
- package/dist/react/components/DataTable/cells/LinkCell.js.map +1 -1
- package/dist/react/components/DataTable/index.d.ts +1 -1
- package/dist/react/components/DataTable/index.d.ts.map +1 -1
- package/dist/react/components/DataTable/index.js +4 -1
- package/dist/react/components/DataTable/index.js.map +1 -1
- package/dist/react/components/DragHandle.d.ts.map +1 -1
- package/dist/react/components/DragHandle.js +2 -1
- package/dist/react/components/DragHandle.js.map +1 -1
- package/dist/react/components/EmojiField.d.ts.map +1 -1
- package/dist/react/components/EmojiField.js +2 -1
- package/dist/react/components/EmojiField.js.map +1 -1
- package/dist/react/components/EventTimeline.d.ts +3 -2
- package/dist/react/components/EventTimeline.d.ts.map +1 -1
- package/dist/react/components/EventTimeline.js +3 -2
- package/dist/react/components/EventTimeline.js.map +1 -1
- package/dist/react/components/IconButton.d.ts +1 -1
- package/dist/react/components/IconButton.js +1 -1
- package/dist/react/components/InfoHint.d.ts.map +1 -1
- package/dist/react/components/InfoHint.js +5 -4
- package/dist/react/components/InfoHint.js.map +1 -1
- package/dist/react/components/InheritBadge.js +1 -1
- package/dist/react/components/InheritBadge.js.map +1 -1
- package/dist/react/components/InlineEditableText.d.ts.map +1 -1
- package/dist/react/components/InlineEditableText.js +2 -1
- package/dist/react/components/InlineEditableText.js.map +1 -1
- package/dist/react/components/MeterList.d.ts.map +1 -1
- package/dist/react/components/MeterList.js +2 -1
- package/dist/react/components/MeterList.js.map +1 -1
- package/dist/react/components/PathText.d.ts +2 -2
- package/dist/react/components/PathText.d.ts.map +1 -1
- package/dist/react/components/PathText.js +2 -1
- package/dist/react/components/PathText.js.map +1 -1
- package/dist/react/components/RatingField.d.ts.map +1 -1
- package/dist/react/components/RatingField.js +2 -1
- package/dist/react/components/RatingField.js.map +1 -1
- package/dist/react/components/SecretInput.js +3 -2
- package/dist/react/components/SecretInput.js.map +1 -1
- package/dist/react/components/SegmentedControl.d.ts.map +1 -1
- package/dist/react/components/SegmentedControl.js +2 -1
- package/dist/react/components/SegmentedControl.js.map +1 -1
- package/dist/react/components/StarRating.d.ts.map +1 -1
- package/dist/react/components/StarRating.js +9 -5
- package/dist/react/components/StarRating.js.map +1 -1
- package/dist/react/components/StatStrip.d.ts.map +1 -1
- package/dist/react/components/StatStrip.js +2 -1
- package/dist/react/components/StatStrip.js.map +1 -1
- package/dist/react/components/StatTile.d.ts.map +1 -1
- package/dist/react/components/StatTile.js +3 -2
- package/dist/react/components/StatTile.js.map +1 -1
- package/dist/react/components/Tabs.d.ts.map +1 -1
- package/dist/react/components/Tabs.js +2 -1
- package/dist/react/components/Tabs.js.map +1 -1
- package/dist/react/components/TruncatedText.d.ts +2 -1
- package/dist/react/components/TruncatedText.d.ts.map +1 -1
- package/dist/react/components/TruncatedText.js +2 -1
- package/dist/react/components/TruncatedText.js.map +1 -1
- package/dist/react/components/calendar/MonthGrid.d.ts.map +1 -1
- package/dist/react/components/calendar/MonthGrid.js +2 -1
- package/dist/react/components/calendar/MonthGrid.js.map +1 -1
- package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
- package/dist/react/components/calendar/WeekView.js +2 -1
- package/dist/react/components/calendar/WeekView.js.map +1 -1
- package/dist/react/components/revealOnHover.d.ts.map +1 -1
- package/dist/react/components/revealOnHover.js +2 -1
- package/dist/react/components/revealOnHover.js.map +1 -1
- package/dist/react/file-tree/FileTree.d.ts +50 -1
- package/dist/react/file-tree/FileTree.d.ts.map +1 -1
- package/dist/react/file-tree/FileTree.js +234 -6
- package/dist/react/file-tree/FileTree.js.map +1 -1
- package/dist/react/file-tree/fileTree.css +52 -0
- package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
- package/dist/react/filter-rail/FilterRail.js +5 -4
- package/dist/react/filter-rail/FilterRail.js.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.d.ts.map +1 -1
- package/dist/react/folder-tree/FolderTreeRail.js +2 -1
- package/dist/react/folder-tree/FolderTreeRail.js.map +1 -1
- package/dist/react/index.d.ts +5 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +5 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/layoutEngine/index.js +1 -1
- package/dist/react/layoutEngine/index.js.map +1 -1
- package/dist/react/lib/field.d.ts.map +1 -1
- package/dist/react/lib/field.js +3 -2
- package/dist/react/lib/field.js.map +1 -1
- package/dist/react/lib/floatingStyles.d.ts.map +1 -1
- package/dist/react/lib/floatingStyles.js +2 -1
- package/dist/react/lib/floatingStyles.js.map +1 -1
- package/dist/react/lib/tapTarget.d.ts +96 -0
- package/dist/react/lib/tapTarget.d.ts.map +1 -0
- package/dist/react/lib/tapTarget.js +96 -0
- package/dist/react/lib/tapTarget.js.map +1 -0
- package/dist/react/media/VideoTrimmer.d.ts +1 -1
- package/dist/react/media/VideoTrimmer.js +1 -1
- package/dist/react/media/denseGallery.css +3 -3
- package/dist/react/media/ffmpegWasm.js +2 -2
- package/dist/react/media/ffmpegWasm.js.map +1 -1
- package/dist/react/media/videoPlayer.css +42 -0
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts +2 -2
- package/dist/react/namespace/NamespaceTargetCapsule.d.ts.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.d.ts.map +1 -1
- package/dist/react/nav/BreadcrumbTrail.js +4 -3
- package/dist/react/nav/BreadcrumbTrail.js.map +1 -1
- package/dist/react/nav/HubTileGrid.d.ts.map +1 -1
- package/dist/react/nav/HubTileGrid.js +2 -1
- package/dist/react/nav/HubTileGrid.js.map +1 -1
- package/dist/react/nav/SideNav.d.ts.map +1 -1
- package/dist/react/nav/SideNav.js +4 -3
- package/dist/react/nav/SideNav.js.map +1 -1
- package/dist/react/nav/SideNavCustomize.d.ts.map +1 -1
- package/dist/react/nav/SideNavCustomize.js +2 -1
- package/dist/react/nav/SideNavCustomize.js.map +1 -1
- package/dist/react/palette/CommandPalette.d.ts.map +1 -1
- package/dist/react/palette/CommandPalette.js +3 -2
- package/dist/react/palette/CommandPalette.js.map +1 -1
- package/dist/server/drivers/pooledControlStores.pg.test.js +1 -0
- package/dist/server/drivers/pooledControlStores.pg.test.js.map +1 -1
- package/dist/server/drivers/pooledIdentityStore.pg.test.js +1 -0
- package/dist/server/drivers/pooledIdentityStore.pg.test.js.map +1 -1
- package/dist/server/drivers/retentionPolicy.pg.test.js +1 -0
- package/dist/server/drivers/retentionPolicy.pg.test.js.map +1 -1
- package/dist/server/guard/argon2Binding.d.ts +1 -1
- package/dist/server/guard/argon2Binding.js +1 -1
- package/dist/server/incidents/store.d.ts +3 -3
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/master-lock/masterLock.d.ts +1 -1
- package/dist/server/media-bun/index.js +1 -1
- package/dist/server/media-bun/index.js.map +1 -1
- package/dist/server/paths/appDataHome.d.ts +20 -0
- package/dist/server/paths/appDataHome.d.ts.map +1 -0
- package/dist/server/paths/appDataHome.js +69 -0
- package/dist/server/paths/appDataHome.js.map +1 -0
- package/dist/server/retention/archive.d.ts +3 -4
- package/dist/server/retention/archive.d.ts.map +1 -1
- package/dist/server/retention/archive.js +20 -15
- package/dist/server/retention/archive.js.map +1 -1
- package/dist/server/retention/index.d.ts +1 -1
- package/dist/server/retention/index.js +1 -1
- package/dist/server/retention/policy.d.ts +2 -2
- package/dist/server/retention/policy.d.ts.map +1 -1
- package/dist/server/retention/policy.js +1 -1
- package/dist/server/retention/store.d.ts.map +1 -1
- package/dist/server/retention/store.js +27 -20
- package/dist/server/retention/store.js.map +1 -1
- package/dist/server/runtime/localHost.d.ts +10 -5
- package/dist/server/runtime/localHost.d.ts.map +1 -1
- package/dist/server/runtime/localHost.js +12 -8
- package/dist/server/runtime/localHost.js.map +1 -1
- package/dist/server/runtime/meterRollup.pg.test.js +1 -0
- package/dist/server/runtime/meterRollup.pg.test.js.map +1 -1
- package/dist/server/runtime/recipe.d.ts +4 -4
- package/dist/server/runtime/retentionJob.pg.test.js +1 -0
- package/dist/server/runtime/retentionJob.pg.test.js.map +1 -1
- package/dist/server/search/pgSearchProvider.pg.test.js +1 -0
- package/dist/server/search/pgSearchProvider.pg.test.js.map +1 -1
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +1 -1
- package/dist/styles-static.css +391 -0
- package/dist/styles.css +27 -0
- package/package.json +19 -167
- package/scripts/generateStaticStyles.ts +122 -0
- package/scripts/publicSurface.ts +455 -0
- package/scripts/testTmpRoot.ts +34 -5
- package/src/client/index.ts +1 -1
- package/src/core/category/index.ts +2 -1
- package/src/core/category/types.ts +1 -1
- package/src/core/file-tree/fileTreeModel.spec.ts +134 -0
- package/src/core/file-tree/fileTreeModel.ts +104 -0
- package/src/core/layout/index.ts +1 -1
- package/src/core/media/index.ts +1 -1
- package/src/core/media/types.ts +1 -1
- package/src/core/media/uploadLimits.ts +1 -1
- package/src/core/sharing/model.ts +1 -1
- package/src/ctgr/index.ts +1 -1
- package/src/declaredDepsAreImported.spec.ts +87 -0
- package/src/demoFixture.spec.ts +133 -0
- package/src/index.ts +1 -1
- package/src/lockfileIsTracked.spec.ts +50 -0
- package/src/namedSubpathsResolve.spec.ts +119 -0
- package/src/publicSurface.spec.ts +72 -0
- package/src/react/activity-bar/ActivityBar.tsx +17 -0
- package/src/react/analytics/index.ts +1 -1
- package/src/react/chat/MessageComposer.tsx +5 -4
- package/src/react/components/Button.tsx +3 -2
- package/src/react/components/Checkbox.spec.tsx +51 -0
- package/src/react/components/Checkbox.tsx +68 -26
- package/src/react/components/CodeArea.tsx +2 -1
- package/src/react/components/CodeChip.spec.tsx +2 -2
- package/src/react/components/Collapsible.tsx +2 -1
- package/src/react/components/ComboboxField.tsx +3 -2
- package/src/react/components/CopyButton.tsx +2 -1
- package/src/react/components/CopyableText.spec.tsx +1 -1
- package/src/react/components/DataTable/ColumnChecklist.tsx +2 -1
- package/src/react/components/DataTable/Pagination.tsx +2 -1
- package/src/react/components/DataTable/SortHeader.tsx +2 -1
- package/src/react/components/DataTable/{FilterBuilder.tsx → TableFilterBuilder.tsx} +33 -5
- package/src/react/components/DataTable/Toolbar.tsx +3 -3
- package/src/react/components/DataTable/cells/LinkCell.tsx +2 -1
- package/src/react/components/DataTable/index.ts +8 -1
- package/src/react/components/DragHandle.tsx +2 -1
- package/src/react/components/EmojiField.tsx +2 -1
- package/src/react/components/EventTimeline.tsx +3 -2
- package/src/react/components/FileLocation.spec.tsx +1 -1
- package/src/react/components/IconButton.tsx +1 -1
- package/src/react/components/InfoHint.tsx +5 -4
- package/src/react/components/InheritBadge.tsx +1 -1
- package/src/react/components/InlineEditableText.tsx +2 -1
- package/src/react/components/MeterList.tsx +2 -1
- package/src/react/components/PathText.tsx +4 -3
- package/src/react/components/RatingField.tsx +2 -1
- package/src/react/components/SecretInput.tsx +3 -3
- package/src/react/components/SegmentedControl.tsx +2 -2
- package/src/react/components/StarRating.spec.tsx +2 -2
- package/src/react/components/StarRating.tsx +9 -5
- package/src/react/components/StatStrip.tsx +2 -1
- package/src/react/components/StatTile.tsx +3 -3
- package/src/react/components/Tabs.spec.tsx +3 -2
- package/src/react/components/Tabs.tsx +2 -1
- package/src/react/components/TruncatedText.tsx +2 -1
- package/src/react/components/calendar/MonthGrid.spec.tsx +2 -1
- package/src/react/components/calendar/MonthGrid.tsx +2 -1
- package/src/react/components/calendar/WeekView.tsx +2 -1
- package/src/react/components/revealOnHover.ts +3 -2
- package/src/react/file-tree/FileTree.spec.tsx +248 -0
- package/src/react/file-tree/FileTree.tsx +304 -4
- package/src/react/file-tree/fileTree.css +52 -0
- package/src/react/file-tree/fileTreeGeometry.fixture.json +151 -0
- package/src/react/file-tree/fileTreeGeometry.spec.ts +33 -52
- package/src/react/filter-rail/FilterRail.spec.tsx +2 -1
- package/src/react/filter-rail/FilterRail.tsx +5 -4
- package/src/react/folder-tree/FolderTreeRail.tsx +2 -1
- package/src/react/index.ts +13 -3
- package/src/react/layoutEngine/index.ts +1 -1
- package/src/react/layoutEngine/types.ts +1 -1
- package/src/react/lib/field.ts +4 -2
- package/src/react/lib/floatingStyles.spec.ts +2 -1
- package/src/react/lib/floatingStyles.ts +3 -1
- package/src/react/lib/tapTarget.ts +100 -0
- package/src/react/media/MaskPainter.tsx +2 -2
- package/src/react/media/VideoTrimmer.tsx +1 -1
- package/src/react/media/denseGallery.css +3 -3
- package/src/react/media/ffmpegWasm.ts +2 -2
- package/src/react/media/videoPlayer.css +42 -0
- package/src/react/namespace/NamespaceTargetCapsule.tsx +2 -2
- package/src/react/nav/BreadcrumbTrail.tsx +4 -3
- package/src/react/nav/HubTileGrid.tsx +2 -1
- package/src/react/nav/SideNav.tsx +4 -3
- package/src/react/nav/SideNavCustomize.tsx +2 -1
- package/src/react/palette/CommandPalette.tsx +3 -2
- package/src/server/ctgr.ts +1 -1
- package/src/server/drivers/pooledControlStores.pg.test.ts +1 -0
- package/src/server/drivers/pooledIdentityStore.pg.test.ts +1 -0
- package/src/server/drivers/retentionPolicy.pg.test.ts +1 -0
- package/src/server/guard/argon2Binding.ts +1 -1
- package/src/server/incidents/store.ts +3 -3
- package/src/server/index.ts +1 -1
- package/src/server/master-lock/masterLock.spec.ts +18 -2
- package/src/server/master-lock/masterLock.ts +1 -1
- package/src/server/media-bun/image.spec.ts +1 -0
- package/src/server/media-bun/index.ts +1 -1
- package/src/server/media-bun/video.spec.ts +1 -0
- package/src/server/paths/appDataHome.spec.ts +87 -0
- package/src/server/paths/appDataHome.ts +84 -0
- package/src/server/retention/archive.spec.ts +26 -4
- package/src/server/retention/archive.ts +20 -15
- package/src/server/retention/index.ts +1 -1
- package/src/server/retention/policy.ts +2 -2
- package/src/server/retention/store.spec.ts +38 -10
- package/src/server/retention/store.ts +26 -19
- package/src/server/runtime/localHost.spec.ts +22 -3
- package/src/server/runtime/localHost.ts +12 -9
- package/src/server/runtime/meterRollup.pg.test.ts +1 -0
- package/src/server/runtime/recipe.ts +4 -4
- package/src/server/runtime/retentionJob.pg.test.ts +1 -0
- package/src/server/search/pgSearchProvider.pg.test.ts +1 -0
- package/src/server/storage/binaryServerProcessing.integration.spec.ts +6 -2
- package/src/server/storage/chunked.integration.spec.ts +5 -2
- package/src/server/storage/fileUploadClient-chunked.integration.spec.ts +5 -2
- package/src/server/storage/files/adapter.photo.display.spec.ts +1 -0
- package/src/server/storage/imageThumbnail.spec.ts +1 -0
- package/src/server/storage/transcode.integration.spec.ts +5 -2
- package/src/server/storage/videoProcessor.posterOnly.spec.ts +1 -0
- package/src/shared/errors.ts +1 -1
- package/src/skippedTestsAreAnswered.spec.ts +215 -0
- package/src/styles-static.css +391 -0
- package/src/styles.css +27 -0
- package/src/stylesStaticMatches.spec.ts +134 -0
- package/src/tapTargetStylesheet.spec.ts +150 -0
- package/src/testTmpRoot.spec.ts +102 -0
- package/dist/core/duplicates/index.d.ts +0 -116
- package/dist/core/duplicates/index.d.ts.map +0 -1
- package/dist/core/duplicates/index.js +0 -178
- package/dist/core/duplicates/index.js.map +0 -1
- package/dist/core/namespace/helpers.d.ts +0 -14
- package/dist/core/namespace/helpers.d.ts.map +0 -1
- package/dist/core/namespace/helpers.js +0 -29
- package/dist/core/namespace/helpers.js.map +0 -1
- package/dist/core/namespace/index.d.ts +0 -4
- package/dist/core/namespace/index.d.ts.map +0 -1
- package/dist/core/namespace/index.js +0 -6
- package/dist/core/namespace/index.js.map +0 -1
- package/dist/core/namespace/memoryStore.d.ts +0 -19
- package/dist/core/namespace/memoryStore.d.ts.map +0 -1
- package/dist/core/namespace/memoryStore.js +0 -70
- package/dist/core/namespace/memoryStore.js.map +0 -1
- package/dist/core/namespace/types.d.ts +0 -44
- package/dist/core/namespace/types.d.ts.map +0 -1
- package/dist/core/namespace/types.js +0 -8
- package/dist/core/namespace/types.js.map +0 -1
- package/dist/game/core/DisposeRegistry.d.ts +0 -42
- package/dist/game/core/DisposeRegistry.d.ts.map +0 -1
- package/dist/game/core/DisposeRegistry.js +0 -67
- package/dist/game/core/DisposeRegistry.js.map +0 -1
- package/dist/game/core/drawBudget.d.ts +0 -26
- package/dist/game/core/drawBudget.d.ts.map +0 -1
- package/dist/game/core/drawBudget.js +0 -55
- package/dist/game/core/drawBudget.js.map +0 -1
- package/dist/game/core/fixedTimestep.d.ts +0 -38
- package/dist/game/core/fixedTimestep.d.ts.map +0 -1
- package/dist/game/core/fixedTimestep.js +0 -47
- package/dist/game/core/fixedTimestep.js.map +0 -1
- package/dist/game/core/index.d.ts +0 -9
- package/dist/game/core/index.d.ts.map +0 -1
- package/dist/game/core/index.js +0 -8
- package/dist/game/core/index.js.map +0 -1
- package/dist/game/core/inputCollector.d.ts +0 -82
- package/dist/game/core/inputCollector.d.ts.map +0 -1
- package/dist/game/core/inputCollector.js +0 -176
- package/dist/game/core/inputCollector.js.map +0 -1
- package/dist/game/core/resizeCanvas.d.ts +0 -19
- package/dist/game/core/resizeCanvas.d.ts.map +0 -1
- package/dist/game/core/resizeCanvas.js +0 -29
- package/dist/game/core/resizeCanvas.js.map +0 -1
- package/dist/game/react/index.d.ts +0 -3
- package/dist/game/react/index.d.ts.map +0 -1
- package/dist/game/react/index.js +0 -5
- package/dist/game/react/index.js.map +0 -1
- package/dist/game/react/useGameEngine.d.ts +0 -64
- package/dist/game/react/useGameEngine.d.ts.map +0 -1
- package/dist/game/react/useGameEngine.js +0 -78
- package/dist/game/react/useGameEngine.js.map +0 -1
- package/dist/react/canvas/CanvasNavHUD.d.ts +0 -64
- package/dist/react/canvas/CanvasNavHUD.d.ts.map +0 -1
- package/dist/react/canvas/CanvasNavHUD.js +0 -58
- package/dist/react/canvas/CanvasNavHUD.js.map +0 -1
- package/dist/react/canvas/fitLabel.d.ts +0 -53
- package/dist/react/canvas/fitLabel.d.ts.map +0 -1
- package/dist/react/canvas/fitLabel.js +0 -104
- package/dist/react/canvas/fitLabel.js.map +0 -1
- package/dist/react/canvas/index.d.ts +0 -4
- package/dist/react/canvas/index.d.ts.map +0 -1
- package/dist/react/canvas/index.js +0 -4
- package/dist/react/canvas/index.js.map +0 -1
- package/dist/react/canvas/lod.d.ts +0 -40
- package/dist/react/canvas/lod.d.ts.map +0 -1
- package/dist/react/canvas/lod.js +0 -37
- package/dist/react/canvas/lod.js.map +0 -1
- package/dist/react/components/DataTable/FilterBuilder.d.ts +0 -38
- package/dist/react/components/DataTable/FilterBuilder.d.ts.map +0 -1
- package/dist/react/components/DataTable/FilterBuilder.js.map +0 -1
- package/dist/react/seo/HeadProvider.d.ts +0 -14
- package/dist/react/seo/HeadProvider.d.ts.map +0 -1
- package/dist/react/seo/HeadProvider.js +0 -44
- package/dist/react/seo/HeadProvider.js.map +0 -1
- package/dist/react/seo/applyHeadToDocument.d.ts +0 -3
- package/dist/react/seo/applyHeadToDocument.d.ts.map +0 -1
- package/dist/react/seo/applyHeadToDocument.js +0 -66
- package/dist/react/seo/applyHeadToDocument.js.map +0 -1
- package/dist/react/seo/index.d.ts +0 -3
- package/dist/react/seo/index.d.ts.map +0 -1
- package/dist/react/seo/index.js +0 -7
- package/dist/react/seo/index.js.map +0 -1
- package/dist/react/timeline/ClipView.d.ts +0 -29
- package/dist/react/timeline/ClipView.d.ts.map +0 -1
- package/dist/react/timeline/ClipView.js +0 -53
- package/dist/react/timeline/ClipView.js.map +0 -1
- package/dist/react/timeline/Playhead.d.ts +0 -16
- package/dist/react/timeline/Playhead.d.ts.map +0 -1
- package/dist/react/timeline/Playhead.js +0 -26
- package/dist/react/timeline/Playhead.js.map +0 -1
- package/dist/react/timeline/TimeRuler.d.ts +0 -21
- package/dist/react/timeline/TimeRuler.d.ts.map +0 -1
- package/dist/react/timeline/TimeRuler.js +0 -31
- package/dist/react/timeline/TimeRuler.js.map +0 -1
- package/dist/react/timeline/TimelineSurface.d.ts +0 -29
- package/dist/react/timeline/TimelineSurface.d.ts.map +0 -1
- package/dist/react/timeline/TimelineSurface.js +0 -56
- package/dist/react/timeline/TimelineSurface.js.map +0 -1
- package/dist/react/timeline/TrackLane.d.ts +0 -31
- package/dist/react/timeline/TrackLane.d.ts.map +0 -1
- package/dist/react/timeline/TrackLane.js +0 -32
- package/dist/react/timeline/TrackLane.js.map +0 -1
- package/dist/react/timeline/index.d.ts +0 -6
- package/dist/react/timeline/index.d.ts.map +0 -1
- package/dist/react/timeline/index.js +0 -12
- package/dist/react/timeline/index.js.map +0 -1
- package/dist/server/private-media/index.d.ts +0 -7
- package/dist/server/private-media/index.d.ts.map +0 -1
- package/dist/server/private-media/index.js +0 -13
- package/dist/server/private-media/index.js.map +0 -1
- package/dist/server/seo/index.d.ts +0 -3
- package/dist/server/seo/index.d.ts.map +0 -1
- package/dist/server/seo/index.js +0 -6
- package/dist/server/seo/index.js.map +0 -1
- package/dist/server/seo/mountSeoRoutes.d.ts +0 -9
- package/dist/server/seo/mountSeoRoutes.d.ts.map +0 -1
- package/dist/server/seo/mountSeoRoutes.js +0 -19
- package/dist/server/seo/mountSeoRoutes.js.map +0 -1
- package/dist/server/seo/serveHeadInjectedIndex.d.ts +0 -9
- package/dist/server/seo/serveHeadInjectedIndex.d.ts.map +0 -1
- package/dist/server/seo/serveHeadInjectedIndex.js +0 -20
- package/dist/server/seo/serveHeadInjectedIndex.js.map +0 -1
- package/dist/upload.d.ts +0 -148
- package/dist/upload.d.ts.map +0 -1
- package/dist/upload.js +0 -159
- package/dist/upload.js.map +0 -1
- package/dist/verify/runtime/index.d.ts +0 -16
- package/dist/verify/runtime/index.d.ts.map +0 -1
- package/dist/verify/runtime/index.js +0 -16
- package/dist/verify/runtime/index.js.map +0 -1
- package/scripts/demoCheck.ts +0 -42
- package/src/core/duplicates/index.spec.ts +0 -116
- package/src/core/duplicates/index.ts +0 -203
- package/src/core/namespace/helpers.ts +0 -31
- package/src/core/namespace/index.ts +0 -12
- package/src/core/namespace/memoryStore.ts +0 -77
- package/src/core/namespace/namespace.spec.ts +0 -117
- package/src/core/namespace/types.ts +0 -53
- package/src/game/core/DisposeRegistry.spec.ts +0 -53
- package/src/game/core/DisposeRegistry.ts +0 -70
- package/src/game/core/drawBudget.spec.ts +0 -51
- package/src/game/core/drawBudget.ts +0 -75
- package/src/game/core/fixedTimestep.spec.ts +0 -91
- package/src/game/core/fixedTimestep.ts +0 -79
- package/src/game/core/index.ts +0 -16
- package/src/game/core/inputCollector.spec.ts +0 -29
- package/src/game/core/inputCollector.ts +0 -245
- package/src/game/core/resizeCanvas.ts +0 -31
- package/src/game/react/index.ts +0 -10
- package/src/game/react/useGameEngine.ts +0 -125
- package/src/react/canvas/CanvasNavHUD.spec.tsx +0 -62
- package/src/react/canvas/CanvasNavHUD.tsx +0 -210
- package/src/react/canvas/fitLabel.spec.ts +0 -82
- package/src/react/canvas/fitLabel.ts +0 -150
- package/src/react/canvas/index.ts +0 -15
- package/src/react/canvas/lod.ts +0 -53
- package/src/react/seo/HeadProvider.tsx +0 -67
- package/src/react/seo/applyHeadToDocument.ts +0 -73
- package/src/react/seo/index.ts +0 -12
- package/src/react/seo/seo.spec.tsx +0 -101
- package/src/react/timeline/ClipView.tsx +0 -146
- package/src/react/timeline/Playhead.tsx +0 -63
- package/src/react/timeline/TimeRuler.tsx +0 -85
- package/src/react/timeline/TimelineSurface.tsx +0 -157
- package/src/react/timeline/TrackLane.tsx +0 -87
- package/src/react/timeline/index.ts +0 -12
- package/src/react/timeline/timeline.spec.tsx +0 -175
- package/src/server/private-media/index.ts +0 -45
- package/src/server/seo/index.ts +0 -8
- package/src/server/seo/mountSeoRoutes.ts +0 -37
- package/src/server/seo/seo.spec.ts +0 -128
- package/src/server/seo/serveHeadInjectedIndex.ts +0 -36
- package/src/upload.spec.ts +0 -300
- package/src/upload.ts +0 -288
- package/src/verify/runtime/index.ts +0 -64
|
@@ -3,24 +3,41 @@ import * as RadixCheckbox from '@radix-ui/react-checkbox';
|
|
|
3
3
|
import { Check, Minus } from 'lucide-react';
|
|
4
4
|
import { useId } from 'react';
|
|
5
5
|
import { cn } from '../lib/cn';
|
|
6
|
-
|
|
7
|
-
// The painted box
|
|
8
|
-
//
|
|
9
|
-
|
|
6
|
+
import { TAP_TARGET } from '../lib/tapTarget';
|
|
7
|
+
// ── 🔴 The painted box is 16px at EVERY pointer type ────────────────────────────
|
|
8
|
+
// The floor lives on the `<label>` target below, never here. This element carries
|
|
9
|
+
// `bg-surface` and `data-[state=checked]:bg-accent-solid` — it IS the painted
|
|
10
|
+
// square — and `min-height` beats `height`, so a `pointer-coarse:min-h-11` on it
|
|
11
|
+
// does not grow a target AROUND a 16px box, it repaints the box itself at 44×44.
|
|
12
|
+
// That is exactly what this file did from the day it was written, under a comment
|
|
13
|
+
// asserting it did not: `size-4` + `TAP_TARGET` drew a fingernail-sized checkbox
|
|
14
|
+
// on every phone, and left the words beside it under 44px besides.
|
|
15
|
+
//
|
|
16
|
+
// A comment cannot hold this. `e2e/touch-targets.spec.ts` measures both halves in
|
|
17
|
+
// a real Pixel 7 profile — 16px painted, ≥44px reachable — which is the only
|
|
18
|
+
// configuration where `pointer-coarse:` is switched on at all.
|
|
19
|
+
const BOX = cn('peer size-4 shrink-0 rounded-sm border border-border-strong bg-surface transition-colors', 'data-[state=checked]:border-accent-solid data-[state=checked]:bg-accent-solid data-[state=checked]:text-white', 'data-[state=indeterminate]:border-accent-solid data-[state=indeterminate]:bg-accent-solid data-[state=indeterminate]:text-white', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background', 'disabled:cursor-not-allowed disabled:opacity-50');
|
|
20
|
+
// The tap target: the whole label, box and caption and the gap between them.
|
|
21
|
+
//
|
|
22
|
+
// Clicking a `<label>` toggles the control it labels — native browser behaviour,
|
|
23
|
+
// not something this component implements — so the 44px floor belongs on the
|
|
24
|
+
// region a thumb is actually aiming at, which is the words as much as the box.
|
|
25
|
+
// `data-cb-tap-target` is the seam `e2e/touch-targets.spec.ts` measures a
|
|
26
|
+
// sub-44px control through, the way a checkbox has to be measured.
|
|
27
|
+
const TARGET = cn('inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 align-middle', TAP_TARGET);
|
|
10
28
|
/**
|
|
11
29
|
* Checkbox vendored from shadcn (Radix `Checkbox`). White check on a solid-accent
|
|
12
30
|
* fill when checked (a dash when `indeterminate`); a visible `--ring` focus ring on
|
|
13
31
|
* keyboard focus. Use `checked` + `onCheckedChange` (RHF wires this via
|
|
14
|
-
* `<Controller>`). Pass `label` for a captioned control
|
|
32
|
+
* `<Controller>`). Pass `label` for a captioned control, and `labelClassName` to
|
|
33
|
+
* set that caption's typography without touching the box.
|
|
34
|
+
*
|
|
35
|
+
* `className` lands on the painted 16px box; the 44px coarse-pointer target is the
|
|
36
|
+
* enclosing `<label>` and is not overridable, because it is the rule.
|
|
15
37
|
*/
|
|
16
|
-
export function Checkbox({ label, className, id: idProp, ...props }) {
|
|
38
|
+
export function Checkbox({ label, className, labelClassName, id: idProp, ...props }) {
|
|
17
39
|
const reactId = useId();
|
|
18
40
|
const id = idProp ?? reactId;
|
|
19
|
-
|
|
20
|
-
if (label == null)
|
|
21
|
-
return box;
|
|
22
|
-
// Sibling label associated by id (a label can't statically "contain" the Radix
|
|
23
|
-
// button control); clicking the caption toggles the box.
|
|
24
|
-
return (_jsxs("span", { className: 'inline-flex items-center gap-2', children: [box, _jsx("label", { htmlFor: id, className: 'cursor-pointer text-sm text-foreground', children: label })] }));
|
|
41
|
+
return (_jsxs("label", { htmlFor: id, "data-cb-tap-target": '', className: TARGET, children: [_jsx(RadixCheckbox.Root, { id: id, className: cn(BOX, className), ...props, children: _jsx(RadixCheckbox.Indicator, { className: 'flex items-center justify-center text-current', children: props.checked === 'indeterminate' ? (_jsx(Minus, { className: 'size-3.5' })) : (_jsx(Check, { className: 'size-3.5' })) }) }), label == null ? null : (_jsx("span", { className: cn('text-sm text-foreground', labelClassName), children: label }))] }));
|
|
25
42
|
}
|
|
26
43
|
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/react/components/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAiD,KAAK,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/react/components/Checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAiD,KAAK,EAAE,MAAM,OAAO,CAAC;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAmB9C,mFAAmF;AACnF,kFAAkF;AAClF,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,iFAAiF;AACjF,mEAAmE;AACnE,EAAE;AACF,kFAAkF;AAClF,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,GAAG,GAAG,EAAE,CACZ,0FAA0F,EAC1F,+GAA+G,EAC/G,iIAAiI,EACjI,0IAA0I,EAC1I,iDAAiD,CAClD,CAAC;AAEF,6EAA6E;AAC7E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,+EAA+E;AAC/E,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,MAAM,GAAG,EAAE,CACf,oFAAoF,EACpF,UAAU,CACX,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EACT,cAAc,EACd,EAAE,EAAE,MAAM,EACV,GAAG,KAAK,EACM;IACd,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC;IAC7B,OAAO,CAKL,iBAAO,OAAO,EAAE,EAAE,wBAAqB,EAAE,EAAC,SAAS,EAAE,MAAM,aACzD,KAAC,aAAa,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,KAAM,KAAK,YAClE,KAAC,aAAa,CAAC,SAAS,IAAC,SAAS,EAAC,+CAA+C,YAC/E,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,CACnC,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,GAAG,CAC/B,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,IAAC,SAAS,EAAC,UAAU,GAAG,CAC/B,GACuB,GACP,EACpB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,eAAM,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,cAAc,CAAC,YAAG,KAAK,GAAQ,CAC/E,IACK,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeArea.d.ts","sourceRoot":"","sources":["../../../src/react/components/CodeArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAS,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeArea.d.ts","sourceRoot":"","sources":["../../../src/react/components/CodeArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAS,MAAM,OAAO,CAAC;AAOlD,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;2BACuB;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;gEAC4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;2CACuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;+DAC2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAmB,EACnB,UAAiB,EACjB,WAAW,EACX,OAAW,EACX,KAAc,EACd,SAAS,EAAE,aAAa,EACxB,SAAS,GACV,EAAE,aAAa,+BA0Ff"}
|
|
@@ -4,6 +4,7 @@ import { cn } from '../lib/cn';
|
|
|
4
4
|
import { handleCodeTabIndent } from '../lib/tabIndent';
|
|
5
5
|
import { CopyButton } from './CopyButton';
|
|
6
6
|
import { ScrollArea } from './ScrollArea';
|
|
7
|
+
import { TAP_TARGET_ALWAYS } from '../lib/tapTarget';
|
|
7
8
|
/**
|
|
8
9
|
* The structural code panel (task cbux-42): a monospace, editor-look surface on
|
|
9
10
|
* the sunken-surface token (`--surface-sunken` — the same recessed reading as
|
|
@@ -42,7 +43,7 @@ export function CodeArea({ value, onChange, readOnly, lineNumbers = false, copyB
|
|
|
42
43
|
editable && 'focus-within:border-field-ring focus-within:ring-2 focus-within:ring-field-ring/30', className), children: [copyButton && value !== '' && (_jsx("div", { className: cn('absolute right-1.5 top-1.5 z-10 rounded bg-surface-sunken/80',
|
|
43
44
|
// Reveal on hover/focus on fine pointers; always visible on touch,
|
|
44
45
|
// where there is no hover to reveal it.
|
|
45
|
-
'opacity-0 transition-opacity duration-[var(--duration-fast)]',
|
|
46
|
+
'opacity-0 transition-opacity duration-[var(--duration-fast)]', `group-focus-within:opacity-100 group-hover:opacity-100 ${TAP_TARGET_ALWAYS}`), children: _jsx(CopyButton, { value: value, confirmToast: false }) })), _jsx(ScrollArea, { space: 'none', safeArea: false, axis: editable ? 'y' : 'both', className: 'min-h-0 flex-1', children: _jsxs("div", { className: cn('flex font-mono text-xs leading-5', !editable && 'min-w-max'), children: [lineNumbers && (_jsx("pre", { "aria-hidden": true, className: 'sticky left-0 shrink-0 select-none border-r border-border bg-surface-sunken py-2 pl-2.5 pr-2 text-right text-muted-foreground', children: Array.from({ length: gutterNumbers }, (_, i) => i + 1).join('\n') })), editable ? (_jsx("textarea", {
|
|
46
47
|
// guardrails-ignore no-raw-inputs: this IS the CodeArea primitive's own
|
|
47
48
|
// editing surface — a bare mono textarea it wraps with the gutter/copy/
|
|
48
49
|
// sunken-panel chrome (same self-exemption as CodeFieldInput).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeArea.js","sourceRoot":"","sources":["../../../src/react/components/CodeArea.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAsB,KAAK,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeArea.js","sourceRoot":"","sources":["../../../src/react/components/CodeArea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../../src/react/components/Collapsible.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../../src/react/components/Collapsible.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,EAAE,SAAS,CAAC;IACnB,mCAAmC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,uEAAuE;IACvE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,WAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,GACjB,EAAE,gBAAgB,+BA8BlB"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import * as RadixCollapsible from '@radix-ui/react-collapsible';
|
|
3
3
|
import { ChevronDown } from 'lucide-react';
|
|
4
4
|
import { cn } from '../lib/cn';
|
|
5
|
+
import { TAP_TARGET_HEIGHT } from '../lib/tapTarget';
|
|
5
6
|
/**
|
|
6
7
|
* A single collapsible section built on Radix `Collapsible` — accessible
|
|
7
8
|
* (`aria-expanded` + `aria-controls` wired by Radix) with an animated height
|
|
@@ -15,6 +16,6 @@ export function Collapsible({ trigger, children, open, defaultOpen = false, onOp
|
|
|
15
16
|
return (_jsxs(RadixCollapsible.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: onOpenChange, disabled: disabled, className: className, children: [_jsx(RadixCollapsible.Trigger, { asChild: true, children: _jsxs("button", {
|
|
16
17
|
// guardrails-ignore no-raw-action-button: this IS the Collapsible section-toggle
|
|
17
18
|
// primitive — its own trigger is necessarily a raw <button> (Radix Trigger asChild).
|
|
18
|
-
type: 'button', className:
|
|
19
|
+
type: 'button', className: `group flex w-full items-center justify-between gap-2 py-2 text-left text-sm font-medium text-foreground transition-colors hover:text-accent disabled:cursor-not-allowed disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${TAP_TARGET_HEIGHT}`, children: [trigger, _jsx(ChevronDown, { className: 'size-4 shrink-0 text-muted-foreground transition-transform duration-200 group-data-[state=open]:rotate-180' })] }) }), _jsx(RadixCollapsible.Content, { className: cn('overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up', contentClassName), children: children })] }));
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=Collapsible.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../../../src/react/components/Collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Collapsible.js","sourceRoot":"","sources":["../../../src/react/components/Collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAmBrD;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,gBAAgB,GACC;IACjB,OAAO,CACL,MAAC,gBAAgB,CAAC,IAAI,IACpB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,aAEpB,KAAC,gBAAgB,CAAC,OAAO,IAAC,OAAO,kBAC/B;oBACE,iFAAiF;oBACjF,qFAAqF;oBACrF,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,uQAAuQ,iBAAiB,EAAE,aAEpS,OAAO,EACR,KAAC,WAAW,IAAC,SAAS,EAAC,4GAA4G,GAAG,IAC/H,GACgB,EAC3B,KAAC,gBAAgB,CAAC,OAAO,IACvB,SAAS,EAAE,EAAE,CACX,uGAAuG,EACvG,gBAAgB,CACjB,YAEA,QAAQ,GACgB,IACL,CACzB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxField.d.ts","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboboxField.d.ts","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhG,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B;oEACgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;uCAEmC;IACnC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,uBAAuB,CAAC;AA4EpF;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BA2KtD"}
|
|
@@ -6,6 +6,7 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
6
6
|
import { cn } from '../lib/cn';
|
|
7
7
|
import { CONTROL_HEIGHT_CLASS, CONTROL_MIN_HEIGHT_CLASS } from '../lib/field';
|
|
8
8
|
import { FLOATING_COLLISION_PADDING, FLOATING_CONTENT_BASE, FLOATING_ITEM_BASE } from '../lib/floatingStyles';
|
|
9
|
+
import { TAP_TARGET } from '../lib/tapTarget';
|
|
9
10
|
const DEBOUNCE_MS = 250;
|
|
10
11
|
/** Sentinel value used to represent the "Create new" option inside Base UI. */
|
|
11
12
|
const CREATE_SENTINEL = '__cb_create__';
|
|
@@ -100,8 +101,8 @@ export function ComboboxField(props) {
|
|
|
100
101
|
const singleValue = !multiple ? (props.value ?? null) : undefined;
|
|
101
102
|
return (_jsxs(Combobox.Root, { ...itemsProps, name: name, disabled: disabled, multiple: multiple, value: (multiple ? multiValue : singleValue), onValueChange: handleValueChange, onInputValueChange: (v) => setQuery(v), children: [_jsxs(Combobox.InputGroup, { className: inputGroupClass, children: [multiple && (_jsx(Combobox.Chips, { className: 'flex flex-wrap items-center gap-1 px-2 py-1.5', children: (multiValue ?? []).map((v) => {
|
|
102
103
|
const lbl = labelForValue(v);
|
|
103
|
-
return (_jsxs(Combobox.Chip, { className: 'inline-flex items-center gap-1 rounded bg-muted py-0.5 pl-2 pr-1 text-sm text-foreground', children: [_jsx("span", { children: lbl }), _jsx(Combobox.ChipRemove, { "aria-label": `Remove ${lbl}`, className:
|
|
104
|
-
}) })), _jsx(Combobox.Input, { id: id, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, placeholder: placeholder, className: cn('min-w-24 flex-1 bg-transparent px-3 text-base text-field-fg outline-none placeholder:text-field-placeholder sm:text-sm', multiple && 'py-1.5') }), loading ? (_jsx(Loader2, { className: 'mr-2 size-4 shrink-0 animate-spin opacity-50', "aria-label": 'Loading options' })) : (_jsx(Combobox.Trigger, { "aria-label": 'Toggle options', className:
|
|
104
|
+
return (_jsxs(Combobox.Chip, { className: 'inline-flex items-center gap-1 rounded bg-muted py-0.5 pl-2 pr-1 text-sm text-foreground', children: [_jsx("span", { children: lbl }), _jsx(Combobox.ChipRemove, { "aria-label": `Remove ${lbl}`, className: `inline-flex size-4 items-center justify-center rounded-sm text-muted-foreground transition hover:bg-border hover:text-foreground ${TAP_TARGET}`, children: _jsx(X, { className: 'size-3', "aria-hidden": true }) })] }, v));
|
|
105
|
+
}) })), _jsx(Combobox.Input, { id: id, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, placeholder: placeholder, className: cn('min-w-24 flex-1 bg-transparent px-3 text-base text-field-fg outline-none placeholder:text-field-placeholder sm:text-sm', multiple && 'py-1.5') }), loading ? (_jsx(Loader2, { className: 'mr-2 size-4 shrink-0 animate-spin opacity-50', "aria-label": 'Loading options' })) : (_jsx(Combobox.Trigger, { "aria-label": 'Toggle options', className: `mr-2 flex size-5 shrink-0 items-center justify-center text-muted-foreground transition hover:text-foreground ${TAP_TARGET}`, children: _jsx(ChevronDown, { className: 'size-4' }) }))] }), _jsx(Combobox.Portal, { children: _jsx(Combobox.Positioner, { sideOffset: 4, collisionPadding: FLOATING_COLLISION_PADDING, children: _jsx(Combobox.Popup, { className: cn(FLOATING_CONTENT_BASE,
|
|
105
106
|
// guardrails-ignore no-raw-overflow: floating popover panel outside the page's ScrollArea, height-capped by max-h-64 — no keyboard-inset concern.
|
|
106
107
|
'max-h-64 min-w-[var(--anchor-width)] overflow-y-auto p-0', 'transition-[transform,opacity] duration-100', 'data-[starting-style]:scale-95 data-[starting-style]:opacity-0', 'data-[ending-style]:scale-95 data-[ending-style]:opacity-0'), children: _jsx(ComboboxList, { creatable: creatable, query: query, onCreateClick: handleCreate }) }) }) })] }));
|
|
107
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxField.js","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAoB,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,0BAA0B,EACjC,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComboboxField.js","sourceRoot":"","sources":["../../../src/react/components/ComboboxField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGlD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC/B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;iFACiF;AACjF,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAA2B,EAC3B,WAAsB,EACtB,QAAQ,EACR,UAAqB,EACrB,YAAmB,EACnB,QAAe,EACf,QAAQ,EACR,UAAU,EACV,QAAa,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE,eAAe,+BAsCjB"}
|
|
@@ -4,6 +4,7 @@ import { toast } from 'sonner';
|
|
|
4
4
|
import { useCopyToClipboard } from '../hooks/useCopyToClipboard';
|
|
5
5
|
import { cn } from '../lib/cn';
|
|
6
6
|
import { Button } from './Button';
|
|
7
|
+
import { TAP_TARGET } from '../lib/tapTarget';
|
|
7
8
|
/** A copy-to-clipboard button: a transient inline ✓ plus a sonner success toast
|
|
8
9
|
* (the single, app-wide copy confirmation — no Redux, no hand-rolled toast). */
|
|
9
10
|
export function CopyButton({ value, label = 'Copy to clipboard', copiedLabel = 'Copied', children, copiedText = 'Copied', confirmToast = true, showIcon = true, copyIcon, copiedIcon, iconSize = 16, onCopied, onError, stopPropagation, tooltip, tooltipPlacement, resetMs, className, disabled, }) {
|
|
@@ -23,7 +24,7 @@ export function CopyButton({ value, label = 'Copy to clipboard', copiedLabel = '
|
|
|
23
24
|
onError?.();
|
|
24
25
|
}
|
|
25
26
|
};
|
|
26
|
-
return (_jsxs(Button, { variant: 'ghost', "aria-label": copied ? copiedLabel : label, tooltip: tooltip ?? (copied ? copiedLabel : label), tooltipSide: tooltipPlacement, onClick: onClick, disabled: disabled, className: cn(
|
|
27
|
+
return (_jsxs(Button, { variant: 'ghost', "aria-label": copied ? copiedLabel : label, tooltip: tooltip ?? (copied ? copiedLabel : label), tooltipSide: tooltipPlacement, onClick: onClick, disabled: disabled, className: cn(`h-auto min-h-0 w-auto shrink-0 cursor-pointer gap-1 rounded p-1 text-muted-foreground hover:bg-transparent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50 ${TAP_TARGET}`, className), children: [showIcon
|
|
27
28
|
? copied
|
|
28
29
|
? (copiedIcon ?? _jsx(Check, { size: iconSize }))
|
|
29
30
|
: (copyIcon ?? _jsx(Copy, { size: iconSize }))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../../src/react/components/CopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqC9C;iFACiF;AACjF,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,QAAQ,EACtB,QAAQ,EACR,UAAU,GAAG,QAAQ,EACrB,YAAY,GAAG,IAAI,EACnB,QAAQ,GAAG,IAAI,EACf,QAAQ,EACR,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,QAAQ,GACQ;IAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAgC,EAAE,EAAE;QACzD,IAAI,eAAe;YAAE,CAAC,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,KAAK,CAAC,OAAO,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YACzF,CAAC;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,gBACH,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EACxC,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,oLAAoL,UAAU,EAAE,EAChM,SAAS,CACV,aAEA,QAAQ;gBACP,CAAC,CAAC,MAAM;oBACN,CAAC,CAAC,CAAC,UAAU,IAAI,KAAC,KAAK,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;oBAC3C,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,GAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,EACP,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IACpE,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnChecklist.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/ColumnChecklist.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ColumnChecklist.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/ColumnChecklist.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,cAA6B,EAC7B,eAAgC,EAChC,YAAY,EAAE,SAAS,EACvB,SAAS,GACV,EAAE,oBAAoB,+BAqEtB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Check } from 'lucide-react';
|
|
3
3
|
import { cn } from '../../lib/cn';
|
|
4
|
+
import { TAP_TARGET_HEIGHT } from '../../lib/tapTarget';
|
|
4
5
|
/**
|
|
5
6
|
* ONE column checklist with select-all / deselect-all, used by BOTH the
|
|
6
7
|
* column-visibility menu and the search-scope control.
|
|
@@ -28,6 +29,6 @@ export function ColumnChecklist({ items, onToggle, onSelectAll, onSelectNone, se
|
|
|
28
29
|
// guardrails-ignore no-raw-action-button: view-state bulk toggle, not a mutating action.
|
|
29
30
|
type: 'button', onClick: onSelectNone, disabled: allOff, className: 'rounded px-1.5 py-1 text-caption font-semibold uppercase tracking-wide text-muted-foreground transition-colors hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40', children: selectNoneLabel })] }), _jsx("div", { className: 'max-h-64 overflow-y-auto', children: items.map((item) => (_jsxs("button", {
|
|
30
31
|
// guardrails-ignore no-raw-action-button: view-state checkbox row, not a mutating action.
|
|
31
|
-
type: 'button', role: 'menuitemcheckbox', "aria-checked": item.checked, disabled: item.disabled, onClick: () => onToggle(item.key), className: cn('flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors', 'hover:bg-muted focus-visible:bg-muted focus-visible:outline-none',
|
|
32
|
+
type: 'button', role: 'menuitemcheckbox', "aria-checked": item.checked, disabled: item.disabled, onClick: () => onToggle(item.key), className: cn('flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-left text-sm transition-colors', 'hover:bg-muted focus-visible:bg-muted focus-visible:outline-none', TAP_TARGET_HEIGHT, item.disabled && 'cursor-not-allowed opacity-50'), children: [_jsx("span", { "aria-hidden": true, className: cn('flex size-4 shrink-0 items-center justify-center rounded border', item.checked ? 'border-primary bg-primary text-primary-foreground' : 'border-border'), children: item.checked ? _jsx(Check, { className: 'size-3' }) : null }), _jsx("span", { className: 'min-w-0 truncate', children: item.label })] }, item.key))) })] }));
|
|
32
33
|
}
|
|
33
34
|
//# sourceMappingURL=ColumnChecklist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnChecklist.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/ColumnChecklist.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ColumnChecklist.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/ColumnChecklist.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAsBxD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,cAAc,GAAG,YAAY,EAC7B,eAAe,GAAG,cAAc,EAChC,YAAY,EAAE,SAAS,EACvB,SAAS,GACY;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzD,OAAO,CAIL,oBAAU,SAAS,EAAE,EAAE,CAAC,mDAAmD,EAAE,SAAS,CAAC,gBAAc,SAAS,aAC5G,eAAK,SAAS,EAAC,uDAAuD,aACpE;wBACE,yFAAyF;wBACzF,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,KAAK,EACf,SAAS,EAAC,sLAAsL,YAE/L,cAAc,GACR,EACT,oCAAkB,SAAS,EAAC,uBAAuB,uBAE5C,EACP;wBACE,yFAAyF;wBACzF,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAC,sLAAsL,YAE/L,eAAe,GACT,IACL,EAKN,cAAK,SAAS,EAAC,0BAA0B,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB;oBACE,0FAA0F;oBAC1F,IAAI,EAAC,QAAQ,EAEb,IAAI,EAAC,kBAAkB,kBACT,IAAI,CAAC,OAAO,EAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EACjC,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,kEAAkE,EAClE,iBAAiB,EACjB,IAAI,CAAC,QAAQ,IAAI,+BAA+B,CACjD,aAED,oCAEE,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,eAAe,CACrF,YAEA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,GAC9C,EACP,eAAM,SAAS,EAAC,kBAAkB,YAAE,IAAI,CAAC,KAAK,GAAQ,KArBjD,IAAI,CAAC,GAAG,CAsBN,CACV,CAAC,GACE,IACG,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAOnD,MAAM,WAAW,oBAAoB,CAAC,IAAI;IACxC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,+BAiE3F"}
|
|
@@ -3,6 +3,7 @@ import { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-r
|
|
|
3
3
|
import { IconButton } from '../IconButton';
|
|
4
4
|
import { Cluster } from '../layout';
|
|
5
5
|
import { SelectField } from '../SelectField';
|
|
6
|
+
import { TAP_TARGET_HEIGHT } from '../../lib/tapTarget';
|
|
6
7
|
/**
|
|
7
8
|
* The DataTable's pager, wired directly to TanStack pagination state — replaces the old
|
|
8
9
|
* hand-rolled `Pagination` with no ad-hoc page math. Works for client-side paging and,
|
|
@@ -15,6 +16,6 @@ export function TablePagination({ table, pageSizeOptions }) {
|
|
|
15
16
|
const pageCount = table.getPageCount();
|
|
16
17
|
const start = total === 0 ? 0 : pageIndex * pageSize + 1;
|
|
17
18
|
const end = Math.min((pageIndex + 1) * pageSize, total);
|
|
18
|
-
return (_jsxs("div", { className: 'flex flex-wrap items-center justify-between gap-3 border-t border-border px-4 py-2.5 text-sm text-muted-foreground', children: [_jsxs("div", { className: 'flex items-center gap-3', children: [_jsx("span", { children: total === 0 ? 'No results' : `${start}–${end} of ${total}` }), pageSizeOptions?.length ? (_jsxs("span", { className: 'flex items-center gap-1.5', children: [_jsx("span", { className: 'whitespace-nowrap', children: "Per page" }), _jsx(SelectField, { fieldStyle: false, "aria-label": 'Rows per page', className:
|
|
19
|
+
return (_jsxs("div", { className: 'flex flex-wrap items-center justify-between gap-3 border-t border-border px-4 py-2.5 text-sm text-muted-foreground', children: [_jsxs("div", { className: 'flex items-center gap-3', children: [_jsx("span", { children: total === 0 ? 'No results' : `${start}–${end} of ${total}` }), pageSizeOptions?.length ? (_jsxs("span", { className: 'flex items-center gap-1.5', children: [_jsx("span", { className: 'whitespace-nowrap', children: "Per page" }), _jsx(SelectField, { fieldStyle: false, "aria-label": 'Rows per page', className: `h-8 rounded-md border border-border bg-background px-2 ${TAP_TARGET_HEIGHT}`, value: String(pageSize), onValueChange: (v) => table.setPageSize(Number(v)), options: pageSizeOptions.map((n) => ({ value: String(n), label: String(n) })) })] })) : null] }), _jsxs(Cluster, { gap: 1, children: [_jsx(IconButton, { label: 'First page', className: 'size-7 [&_svg]:size-4', onClick: () => table.setPageIndex(0), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronsLeft, {}) }), _jsx(IconButton, { label: 'Previous page', className: 'size-7 [&_svg]:size-4', onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: _jsx(ChevronLeft, {}) }), _jsxs("span", { className: 'px-2 tabular-nums', children: [pageIndex + 1, " / ", Math.max(1, pageCount)] }), _jsx(IconButton, { label: 'Next page', className: 'size-7 [&_svg]:size-4', onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: _jsx(ChevronRight, {}) }), _jsx(IconButton, { label: 'Last page', className: 'size-7 [&_svg]:size-4', onClick: () => table.setPageIndex(pageCount - 1), disabled: !table.getCanNextPage(), children: _jsx(ChevronsRight, {}) })] })] }));
|
|
19
20
|
}
|
|
20
21
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Pagination.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Pagination.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortHeader.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/SortHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SortHeader.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/SortHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAyBpD,MAAM,WAAW,eAAe,CAAC,IAAI;IACnC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,EAC/B,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAc,EACd,MAAM,GACP,EAAE,eAAe,CAAC,IAAI,CAAC,+BAkDvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';
|
|
3
3
|
import { Tooltip } from '../Tooltip';
|
|
4
|
+
import { TAP_TARGET_HEIGHT } from '../../lib/tapTarget';
|
|
4
5
|
/**
|
|
5
6
|
* The full label, one hover away — and it is OURS, not the browser's.
|
|
6
7
|
*
|
|
@@ -46,6 +47,6 @@ export function SortHeader({ column, label, sortable, sortIndex = -1, onSort, })
|
|
|
46
47
|
// computed styles on orch's Fleet tab, 2026-08-12: `th` uppercase,
|
|
47
48
|
// `button` none. Letter-spacing does inherit (0.55px on both), so only
|
|
48
49
|
// the case needs restating.
|
|
49
|
-
className:
|
|
50
|
+
className: `-mx-1 -my-2.5 inline-flex max-w-full items-center gap-1 rounded px-1 py-2.5 uppercase transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${TAP_TARGET_HEIGHT}`, children: [_jsx("span", { className: 'min-w-0 truncate', children: label }), sorted === 'asc' ? (_jsx(ArrowUp, { className: 'size-3 shrink-0', "aria-hidden": true })) : sorted === 'desc' ? (_jsx(ArrowDown, { className: 'size-3 shrink-0', "aria-hidden": true })) : (_jsx(ArrowUpDown, { className: 'size-3 shrink-0 opacity-30', "aria-hidden": true })), sortIndex >= 0 ? (_jsxs("span", { "data-cb-sort-index": sortIndex + 1, className: 'shrink-0 rounded-full bg-muted px-1 text-caption font-bold text-muted-foreground tabular-nums', children: [sortIndex + 1, _jsx("span", { className: 'sr-only', children: " sort priority" })] })) : null] }));
|
|
50
51
|
}
|
|
51
52
|
//# sourceMappingURL=SortHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortHeader.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/SortHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"SortHeader.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/SortHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAmB,EAAE,EAAE,CAAC,CAC3D,KAAC,OAAO,IAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAC,QAAQ,YACnC,QAAQ,GACD,CACX,CAAC;AAyBF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAO,EAC/B,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,GAAG,CAAC,CAAC,EACd,MAAM,GACgB;IACtB,6EAA6E;IAC7E,0EAA0E;IAC1E,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,CAAC,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,eAAM,SAAS,EAAC,gBAAgB,YAAE,KAAK,GAAQ,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,YAAY,CACjB,KAAK,EACL;QACE,mFAAmF;QACnF,wCAAwC;QACxC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,6DAA6D;QAC7D,uEAAuE;QACvE,iEAAiE;QACjE,0EAA0E;QAC1E,qEAAqE;QACrE,oEAAoE;QACpE,mEAAmE;QACnE,uEAAuE;QACvE,4BAA4B;QAC5B,SAAS,EAAE,yMAAyM,iBAAiB,EAAE,aAIvO,eAAM,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAQ,EAChD,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAClB,KAAC,OAAO,IAAC,SAAS,EAAC,iBAAiB,wBAAe,CACpD,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CACtB,KAAC,SAAS,IAAC,SAAS,EAAC,iBAAiB,wBAAe,CACtD,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,SAAS,EAAC,4BAA4B,wBAAe,CACnE,EACA,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAChB,sCACsB,SAAS,GAAG,CAAC,EACjC,SAAS,EAAC,+FAA+F,aAExG,SAAS,GAAG,CAAC,EACd,eAAM,SAAS,EAAC,SAAS,+BAAsB,IAC1C,CACR,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type FilterQuery } from './filterQuery';
|
|
2
|
+
export interface TableFilterBuilderColumn {
|
|
3
|
+
key: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TableFilterBuilderProps {
|
|
7
|
+
columns: TableFilterBuilderColumn[];
|
|
8
|
+
value: FilterQuery;
|
|
9
|
+
onChange: (next: FilterQuery) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The TABLE's filter builder — `(A and B) or (C and D)`, and the UX is the hard half.
|
|
14
|
+
*
|
|
15
|
+
* ── 🔴 Why the name carries `Table`, 2026-09-13 ─────────────────────────────
|
|
16
|
+
* It was `FilterBuilder`, and `cursedesk` has a `FilterBuilder` of its own. The
|
|
17
|
+
* graduation pass that looked at the pair to decide which one should live here
|
|
18
|
+
* found they are not two copies of one component — they are two different
|
|
19
|
+
* components wearing one basename, which is the trap that makes the next person
|
|
20
|
+
* merge them wrongly:
|
|
21
|
+
*
|
|
22
|
+
* - **This one is a VIEW filter.** Two levels by construction (groups OR'd,
|
|
23
|
+
* conditions AND'd inside one), values are strings, columns are `{key,label}`
|
|
24
|
+
* with no type, and it narrows rows already on screen behind a popover on the
|
|
25
|
+
* `DataTable` toolbar. Nothing it builds crosses a wire.
|
|
26
|
+
* - **`cursedesk`'s is a QUERY builder** — an arbitrarily-nested AND/OR/NOT
|
|
27
|
+
* tree with per-type operator sets (`between`, `matches`, `in`, `isEmpty`),
|
|
28
|
+
* range and set editors, `caseSensitive` per rule and a validator, editing
|
|
29
|
+
* the exact `FilterNode` its API consumes so what is built is what the server
|
|
30
|
+
* filters and exports by.
|
|
31
|
+
*
|
|
32
|
+
* Neither is the other generalised. Collapsing them would mean either giving a
|
|
33
|
+
* table toolbar a regex field and a three-deep nesting rule, or taking typed
|
|
34
|
+
* operators away from a filter the server evaluates — so they stay two, and
|
|
35
|
+
* this one says which it is. See {@link FilterQuery} for the shape it edits;
|
|
36
|
+
* the name of the thing it is NOT is `cursedesk`'s `ui/workbench/FilterBuilder`.
|
|
37
|
+
*
|
|
38
|
+
* The owner's closing clause is the acceptance test, not a nicety: *"easy enough
|
|
39
|
+
* that I don't give up on trying it."* So every decision here is made against
|
|
40
|
+
* "can somebody who did not write this finish a two-group filter":
|
|
41
|
+
*
|
|
42
|
+
* - **No Apply button and no draft state.** Every keystroke narrows the table
|
|
43
|
+
* behind the popover, so you can see whether you are getting closer. A builder
|
|
44
|
+
* whose result only appears after a commit makes you guess, and guessing wrong
|
|
45
|
+
* twice is where people give up. `isActiveCondition` is what makes this
|
|
46
|
+
* survivable — a half-typed condition is not yet a constraint, so the table
|
|
47
|
+
* does not empty out the instant you add a row.
|
|
48
|
+
* - **The grammar is VISIBLE, not implied.** Groups are boxes, the word `OR`
|
|
49
|
+
* sits between them on its own rule, and `and` is printed before every
|
|
50
|
+
* condition after the first. Nobody has to know a precedence rule.
|
|
51
|
+
* - **Exactly two levels.** There is no "add nested group", because the moment
|
|
52
|
+
* nesting exists the reader has to hold a tree in their head. Two levels
|
|
53
|
+
* express his own worked example and everything shaped like it.
|
|
54
|
+
* - **Every row is removable, and so is the whole thing.** `Clear all` is
|
|
55
|
+
* always reachable; a filter you cannot get out of is worse than none.
|
|
56
|
+
*
|
|
57
|
+
* The trigger carries the live count so the toolbar says how many constraints
|
|
58
|
+
* are on without opening anything (DESIGN.md §2 — one line, state legible on it).
|
|
59
|
+
*/
|
|
60
|
+
export declare function TableFilterBuilder({ columns, value, onChange, className, }: TableFilterBuilderProps): import("react").JSX.Element | null;
|
|
61
|
+
//# sourceMappingURL=TableFilterBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableFilterBuilder.d.ts","sourceRoot":"","sources":["../../../../src/react/components/DataTable/TableFilterBuilder.tsx"],"names":[],"mappings":"AAOA,OAAO,EAOL,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,uBAAuB,sCA6LzB"}
|
|
@@ -12,7 +12,30 @@ const OP_OPTIONS = Object.keys(FILTER_OP_LABELS).map((op) => ({
|
|
|
12
12
|
label: FILTER_OP_LABELS[op],
|
|
13
13
|
}));
|
|
14
14
|
/**
|
|
15
|
-
* The filter builder — `(A and B) or (C and D)`, and the UX is the hard half.
|
|
15
|
+
* The TABLE's filter builder — `(A and B) or (C and D)`, and the UX is the hard half.
|
|
16
|
+
*
|
|
17
|
+
* ── 🔴 Why the name carries `Table`, 2026-09-13 ─────────────────────────────
|
|
18
|
+
* It was `FilterBuilder`, and `cursedesk` has a `FilterBuilder` of its own. The
|
|
19
|
+
* graduation pass that looked at the pair to decide which one should live here
|
|
20
|
+
* found they are not two copies of one component — they are two different
|
|
21
|
+
* components wearing one basename, which is the trap that makes the next person
|
|
22
|
+
* merge them wrongly:
|
|
23
|
+
*
|
|
24
|
+
* - **This one is a VIEW filter.** Two levels by construction (groups OR'd,
|
|
25
|
+
* conditions AND'd inside one), values are strings, columns are `{key,label}`
|
|
26
|
+
* with no type, and it narrows rows already on screen behind a popover on the
|
|
27
|
+
* `DataTable` toolbar. Nothing it builds crosses a wire.
|
|
28
|
+
* - **`cursedesk`'s is a QUERY builder** — an arbitrarily-nested AND/OR/NOT
|
|
29
|
+
* tree with per-type operator sets (`between`, `matches`, `in`, `isEmpty`),
|
|
30
|
+
* range and set editors, `caseSensitive` per rule and a validator, editing
|
|
31
|
+
* the exact `FilterNode` its API consumes so what is built is what the server
|
|
32
|
+
* filters and exports by.
|
|
33
|
+
*
|
|
34
|
+
* Neither is the other generalised. Collapsing them would mean either giving a
|
|
35
|
+
* table toolbar a regex field and a three-deep nesting rule, or taking typed
|
|
36
|
+
* operators away from a filter the server evaluates — so they stay two, and
|
|
37
|
+
* this one says which it is. See {@link FilterQuery} for the shape it edits;
|
|
38
|
+
* the name of the thing it is NOT is `cursedesk`'s `ui/workbench/FilterBuilder`.
|
|
16
39
|
*
|
|
17
40
|
* The owner's closing clause is the acceptance test, not a nicety: *"easy enough
|
|
18
41
|
* that I don't give up on trying it."* So every decision here is made against
|
|
@@ -36,7 +59,7 @@ const OP_OPTIONS = Object.keys(FILTER_OP_LABELS).map((op) => ({
|
|
|
36
59
|
* The trigger carries the live count so the toolbar says how many constraints
|
|
37
60
|
* are on without opening anything (DESIGN.md §2 — one line, state legible on it).
|
|
38
61
|
*/
|
|
39
|
-
export function
|
|
62
|
+
export function TableFilterBuilder({ columns, value, onChange, className, }) {
|
|
40
63
|
const [open, setOpen] = useState(false);
|
|
41
64
|
const activeCount = countActiveConditions(value);
|
|
42
65
|
const firstColumn = columns[0]?.key ?? '';
|
|
@@ -66,4 +89,4 @@ export function FilterBuilder({ columns, value, onChange, className }) {
|
|
|
66
89
|
? 'Add the first condition'
|
|
67
90
|
: 'Match EITHER this set of conditions or a new one', onClick: () => onChange({ groups: [...value.groups, newGroup(firstColumn)] }), children: value.groups.length === 0 ? 'Add a condition' : 'Or…' }) })] }) }));
|
|
68
91
|
}
|
|
69
|
-
//# sourceMappingURL=
|
|
92
|
+
//# sourceMappingURL=TableFilterBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableFilterBuilder.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/TableFilterBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export interface TableToolbarProps<TRow> {
|
|
|
24
24
|
* left/centre, actions far right, never a second row.
|
|
25
25
|
*
|
|
26
26
|
* What sits on it, left to right: the search box with its use-time scope control
|
|
27
|
-
* ({@link SearchBox}), the filter builder ({@link
|
|
27
|
+
* ({@link SearchBox}), the filter builder ({@link TableFilterBuilder}), the sort stack
|
|
28
28
|
* ({@link SortStack}), anything the caller adds, then — right-aligned — the
|
|
29
29
|
* rows ⇄ cards toggle, the column menu, and import/export/add.
|
|
30
30
|
*
|
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Download, Plus, Upload } from 'lucide-react';
|
|
3
3
|
import { Button } from '../Button';
|
|
4
4
|
import { Cluster, Split } from '../layout';
|
|
5
|
-
import { FilterBuilder } from './FilterBuilder';
|
|
6
5
|
import { SearchBox } from './SearchBox';
|
|
7
6
|
import { SortStack } from './SortStack';
|
|
7
|
+
import { TableFilterBuilder } from './TableFilterBuilder';
|
|
8
8
|
import { TableViewToggle } from './TableViewToggle';
|
|
9
9
|
import { ViewOptionsMenu } from './ViewOptionsMenu';
|
|
10
10
|
/**
|
|
@@ -12,7 +12,7 @@ import { ViewOptionsMenu } from './ViewOptionsMenu';
|
|
|
12
12
|
* left/centre, actions far right, never a second row.
|
|
13
13
|
*
|
|
14
14
|
* What sits on it, left to right: the search box with its use-time scope control
|
|
15
|
-
* ({@link SearchBox}), the filter builder ({@link
|
|
15
|
+
* ({@link SearchBox}), the filter builder ({@link TableFilterBuilder}), the sort stack
|
|
16
16
|
* ({@link SortStack}), anything the caller adds, then — right-aligned — the
|
|
17
17
|
* rows ⇄ cards toggle, the column menu, and import/export/add.
|
|
18
18
|
*
|
|
@@ -36,6 +36,6 @@ export function TableToolbar({ table, enableSearch = true, searchPlaceholder, en
|
|
|
36
36
|
// covers a table instance built by hand, outside `DataTable`.
|
|
37
37
|
const searchText = controls?.searchText ??
|
|
38
38
|
(typeof table.getState().globalFilter === 'string' ? table.getState().globalFilter : '');
|
|
39
|
-
return (_jsxs(Split, { className: 'gap-2 border-b border-border px-2 py-2', children: [_jsxs("div", { className: 'flex min-w-0 flex-1 flex-wrap items-center gap-2', children: [enableSearch ? (_jsx(SearchBox, { value: searchText, onChange: (value) => controls ? controls.setSearchText(value) : table.setGlobalFilter(value), placeholder: searchPlaceholder, columns: controls?.searchColumns ?? [], scope: controls?.searchScope ?? null, onScopeChange: (scope) => controls?.setSearchScope(scope) })) : null, enableFilterBuilder && controls ? (_jsx(
|
|
39
|
+
return (_jsxs(Split, { className: 'gap-2 border-b border-border px-2 py-2', children: [_jsxs("div", { className: 'flex min-w-0 flex-1 flex-wrap items-center gap-2', children: [enableSearch ? (_jsx(SearchBox, { value: searchText, onChange: (value) => controls ? controls.setSearchText(value) : table.setGlobalFilter(value), placeholder: searchPlaceholder, columns: controls?.searchColumns ?? [], scope: controls?.searchScope ?? null, onScopeChange: (scope) => controls?.setSearchScope(scope) })) : null, enableFilterBuilder && controls ? (_jsx(TableFilterBuilder, { columns: controls.filterColumns, value: controls.filterQuery, onChange: controls.setFilterQuery })) : null, enableSortStack && controls ? (_jsx(SortStack, { sorting: controls.sorting, labelOf: controls.labelOf, onToggleDirection: controls.toggleSortDirection, onRemove: controls.removeSortKey, onClear: controls.clearSorting })) : null, extraActions] }), _jsxs(Cluster, { gap: 2, children: [controls?.viewMode && controls.setViewMode ? (_jsx(TableViewToggle, { value: controls.viewMode, onChange: controls.setViewMode })) : null, enableColumnVisibility ? _jsx(ViewOptionsMenu, { table: table }) : null, onImport ? (_jsx(Button, { size: 'sm', variant: 'ghost', onClick: onImport, leftIcon: _jsx(Upload, {}), tooltip: 'Import', children: "Import" })) : null, onExport ? (_jsx(Button, { size: 'sm', variant: 'ghost', onClick: onExport, leftIcon: _jsx(Download, {}), tooltip: 'Export', children: "Export" })) : null, onAdd ? (_jsx(Button, { size: 'sm', variant: 'primary', onClick: onAdd, leftIcon: _jsx(Plus, {}), tooltip: addLabel, children: addLabel })) : null] })] }));
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Toolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/react/components/DataTable/Toolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsBpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAAO,EACjC,KAAK,EACL,YAAY,GAAG,IAAI,EACnB,iBAAiB,EACjB,sBAAsB,GAAG,IAAI,EAC7B,mBAAmB,GAAG,IAAI,EAC1B,eAAe,GAAG,IAAI,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,YAAY,GACY;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;IAChD,2EAA2E;IAC3E,2EAA2E;IAC3E,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,UAAU,GACd,QAAQ,EAAE,UAAU;QACpB,CAAC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvG,OAAO,CACL,MAAC,KAAK,IAAC,SAAS,EAAC,wCAAwC,aACvD,eAAK,SAAS,EAAC,kDAAkD,aAC9D,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,SAAS,IACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAEzE,WAAW,EAAE,iBAAiB,EAC9B,OAAO,EAAE,QAAQ,EAAE,aAAa,IAAI,EAAE,EACtC,KAAK,EAAE,QAAQ,EAAE,WAAW,IAAI,IAAI,EACpC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,GACzD,CACH,CAAC,CAAC,CAAC,IAAI,EACP,mBAAmB,IAAI,QAAQ,CAAC,CAAC,CAAC,CACjC,KAAC,kBAAkB,IACjB,OAAO,EAAE,QAAQ,CAAC,aAAa,EAC/B,KAAK,EAAE,QAAQ,CAAC,WAAW,EAC3B,QAAQ,EAAE,QAAQ,CAAC,cAAc,GACjC,CACH,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,CAC7B,KAAC,SAAS,IACR,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB,EAC/C,QAAQ,EAAE,QAAQ,CAAC,aAAa,EAChC,OAAO,EAAE,QAAQ,CAAC,YAAY,GAC9B,CACH,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,IACT,EACN,MAAC,OAAO,IAAC,GAAG,EAAE,CAAC,aAIZ,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAC5C,KAAC,eAAe,IAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,GAAI,CAC9E,CAAC,CAAC,CAAC,IAAI,EACP,sBAAsB,CAAC,CAAC,CAAC,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,EACjE,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,KAAC,MAAM,KAAG,EACpB,OAAO,EAAC,QAAQ,uBAGT,CACV,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,KAAC,QAAQ,KAAG,EACtB,OAAO,EAAC,QAAQ,uBAGT,CACV,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAC,IAAI,KAAG,EAAE,OAAO,EAAE,QAAQ,YACtF,QAAQ,GACF,CACV,CAAC,CAAC,CAAC,IAAI,IACA,IACJ,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkCell.d.ts","sourceRoot":"","sources":["../../../../../src/react/components/DataTable/cells/LinkCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkCell.d.ts","sourceRoot":"","sources":["../../../../../src/react/components/DataTable/cells/LinkCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAS3E"}
|