@pilotiq/pilotiq 0.24.1 → 0.24.2
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/CHANGELOG.md +33 -0
- package/boost/guidelines.md +566 -0
- package/boost/skills/pilotiq-fields/SKILL.md +47 -0
- package/boost/skills/pilotiq-fields/rules/field-catalog.md +288 -0
- package/boost/skills/pilotiq-fields/rules/reactive-fields.md +199 -0
- package/boost/skills/pilotiq-fields/rules/validation.md +198 -0
- package/boost/skills/pilotiq-relations/SKILL.md +47 -0
- package/boost/skills/pilotiq-relations/rules/relation-managers.md +256 -0
- package/boost/skills/pilotiq-relations/rules/repeater-relationship.md +177 -0
- package/boost/skills/pilotiq-resource/SKILL.md +61 -0
- package/boost/skills/pilotiq-resource/rules/authorization.md +242 -0
- package/boost/skills/pilotiq-resource/rules/defining-resources.md +228 -0
- package/boost/skills/pilotiq-resource/rules/page-overrides.md +296 -0
- package/package.json +6 -1
- package/.turbo/turbo-build.log +0 -8
- package/CLAUDE.md +0 -265
- package/src/Cluster.test.ts +0 -283
- package/src/Cluster.ts +0 -83
- package/src/Column.test.ts +0 -199
- package/src/Column.ts +0 -710
- package/src/Global.test.ts +0 -367
- package/src/Global.ts +0 -169
- package/src/Page.test.ts +0 -114
- package/src/Page.ts +0 -208
- package/src/Pilotiq.perf.test.ts +0 -252
- package/src/Pilotiq.test.ts +0 -129
- package/src/Pilotiq.ts +0 -1158
- package/src/PilotiqRegistry.ts +0 -36
- package/src/PilotiqServiceProvider.ts +0 -121
- package/src/RelationManager.test.ts +0 -400
- package/src/RelationManager.ts +0 -527
- package/src/RenderHook.test.ts +0 -252
- package/src/RenderHook.ts +0 -242
- package/src/Resource.test.ts +0 -284
- package/src/Resource.ts +0 -526
- package/src/RightPanel.test.ts +0 -202
- package/src/RightPanel.ts +0 -132
- package/src/Tab.test.ts +0 -91
- package/src/Tab.ts +0 -156
- package/src/UserMenuItem.ts +0 -145
- package/src/actions/Action.test.ts +0 -2526
- package/src/actions/Action.ts +0 -1515
- package/src/actions/ActionGroup.test.ts +0 -112
- package/src/actions/ActionGroup.ts +0 -173
- package/src/actions/attachFactory.ts +0 -172
- package/src/actions/bulkFactories.ts +0 -168
- package/src/actions/crudFactories.ts +0 -220
- package/src/actions/exportFactory.ts +0 -225
- package/src/actions/factoryHelpers.ts +0 -177
- package/src/actions/importFactory.ts +0 -243
- package/src/actions/index.ts +0 -17
- package/src/actions/m2mFactories.ts +0 -193
- package/src/actions/relationFactories.ts +0 -372
- package/src/applyPageHooks.test.ts +0 -463
- package/src/applyPageHooks.ts +0 -330
- package/src/authorization.test.ts +0 -483
- package/src/breadcrumbs.test.ts +0 -238
- package/src/cells/coerce.test.ts +0 -85
- package/src/cells/coerce.ts +0 -84
- package/src/clusterPaths.ts +0 -35
- package/src/columns/BadgeColumn.test.ts +0 -54
- package/src/columns/BadgeColumn.ts +0 -32
- package/src/columns/BooleanColumn.test.ts +0 -41
- package/src/columns/BooleanColumn.ts +0 -18
- package/src/columns/ColorColumn.test.ts +0 -37
- package/src/columns/ColorColumn.ts +0 -38
- package/src/columns/IconColumn.test.ts +0 -54
- package/src/columns/IconColumn.ts +0 -37
- package/src/columns/ImageColumn.test.ts +0 -41
- package/src/columns/ImageColumn.ts +0 -28
- package/src/columns/SelectColumn.ts +0 -98
- package/src/columns/TextColumn.test.ts +0 -190
- package/src/columns/TextColumn.ts +0 -20
- package/src/columns/TextInputColumn.ts +0 -68
- package/src/columns/ToggleColumn.ts +0 -46
- package/src/columns/editableColumns.test.ts +0 -238
- package/src/columns/index.ts +0 -9
- package/src/defaultGlobalPages.ts +0 -95
- package/src/defaultPages.test.ts +0 -634
- package/src/defaultPages.ts +0 -617
- package/src/defaultViewPage.test.ts +0 -147
- package/src/elements/Form.test.ts +0 -223
- package/src/elements/Form.ts +0 -416
- package/src/elements/ListTabs.ts +0 -28
- package/src/elements/Table.test.ts +0 -422
- package/src/elements/Table.ts +0 -850
- package/src/elements/TableGroup.test.ts +0 -260
- package/src/elements/TableGroup.ts +0 -334
- package/src/elements/dispatchAction.test.ts +0 -463
- package/src/elements/dispatchAction.ts +0 -355
- package/src/elements/dispatchForm.test.ts +0 -477
- package/src/elements/dispatchForm.ts +0 -1993
- package/src/elements/dispatchTable.test.ts +0 -1514
- package/src/elements/dispatchTable.ts +0 -745
- package/src/elements/index.ts +0 -21
- package/src/entries/BadgeEntry.ts +0 -39
- package/src/entries/CodeEntry.test.ts +0 -40
- package/src/entries/CodeEntry.ts +0 -52
- package/src/entries/ColorEntry.ts +0 -63
- package/src/entries/ComponentEntry.test.ts +0 -173
- package/src/entries/ComponentEntry.ts +0 -95
- package/src/entries/Entry.ts +0 -304
- package/src/entries/IconEntry.ts +0 -49
- package/src/entries/ImageEntry.ts +0 -61
- package/src/entries/KeyValueEntry.ts +0 -47
- package/src/entries/RepeatableEntry.test.ts +0 -239
- package/src/entries/RepeatableEntry.ts +0 -173
- package/src/entries/TextEntry.test.ts +0 -394
- package/src/entries/TextEntry.ts +0 -60
- package/src/entries/index.ts +0 -12
- package/src/entries/leaves.test.ts +0 -306
- package/src/entries/registry.ts +0 -54
- package/src/fields/BuilderField.test.ts +0 -1188
- package/src/fields/BuilderField.ts +0 -605
- package/src/fields/BuilderRelationship.test.ts +0 -811
- package/src/fields/CheckboxField.test.ts +0 -44
- package/src/fields/CheckboxField.ts +0 -27
- package/src/fields/CheckboxListField.test.ts +0 -99
- package/src/fields/CheckboxListField.ts +0 -66
- package/src/fields/ColorPickerField.test.ts +0 -33
- package/src/fields/ColorPickerField.ts +0 -25
- package/src/fields/DateField.ts +0 -54
- package/src/fields/DateTimeField.test.ts +0 -55
- package/src/fields/EmailField.ts +0 -16
- package/src/fields/Field.test.ts +0 -654
- package/src/fields/Field.ts +0 -817
- package/src/fields/FileUploadField.test.ts +0 -143
- package/src/fields/FileUploadField.ts +0 -159
- package/src/fields/HiddenField.test.ts +0 -27
- package/src/fields/HiddenField.ts +0 -28
- package/src/fields/KeyValueField.test.ts +0 -105
- package/src/fields/KeyValueField.ts +0 -55
- package/src/fields/MarkdownField.test.ts +0 -167
- package/src/fields/MarkdownField.ts +0 -162
- package/src/fields/NumberField.ts +0 -33
- package/src/fields/RadioField.test.ts +0 -94
- package/src/fields/RadioField.ts +0 -67
- package/src/fields/RepeaterField.test.ts +0 -1806
- package/src/fields/RepeaterField.ts +0 -939
- package/src/fields/RepeaterRelationship.test.ts +0 -1923
- package/src/fields/RepeaterSimple.test.ts +0 -248
- package/src/fields/RowButton.test.ts +0 -219
- package/src/fields/RowButton.ts +0 -135
- package/src/fields/SelectField.test.ts +0 -192
- package/src/fields/SelectField.ts +0 -235
- package/src/fields/SliderField.test.ts +0 -50
- package/src/fields/SliderField.ts +0 -53
- package/src/fields/SlugField.ts +0 -24
- package/src/fields/TagsInputField.test.ts +0 -154
- package/src/fields/TagsInputField.ts +0 -133
- package/src/fields/TextField.test.ts +0 -213
- package/src/fields/TextField.ts +0 -177
- package/src/fields/TextareaField.test.ts +0 -58
- package/src/fields/TextareaField.ts +0 -59
- package/src/fields/ToggleButtonsField.test.ts +0 -106
- package/src/fields/ToggleButtonsField.ts +0 -59
- package/src/fields/ToggleField.ts +0 -16
- package/src/fields/disableOptionsWhenSelectedInSiblingRepeaterItems.test.ts +0 -319
- package/src/fields/optionsResolver.ts +0 -95
- package/src/fields/resolveField.ts +0 -28
- package/src/filters/BooleanFilter.ts +0 -35
- package/src/filters/DateRangeFilter.test.ts +0 -194
- package/src/filters/DateRangeFilter.ts +0 -148
- package/src/filters/Filter.test.ts +0 -268
- package/src/filters/Filter.ts +0 -184
- package/src/filters/FormFilter.test.ts +0 -238
- package/src/filters/FormFilter.ts +0 -215
- package/src/filters/MultiSelectFilter.test.ts +0 -119
- package/src/filters/MultiSelectFilter.ts +0 -78
- package/src/filters/QueryBuilderFilter.test.ts +0 -662
- package/src/filters/QueryBuilderFilter.ts +0 -398
- package/src/filters/SelectFilter.ts +0 -46
- package/src/filters/TernaryFilter.test.ts +0 -160
- package/src/filters/TernaryFilter.ts +0 -72
- package/src/filters/TrashedFilter.test.ts +0 -149
- package/src/filters/TrashedFilter.ts +0 -55
- package/src/filters/queryBuilder/BooleanConstraint.ts +0 -31
- package/src/filters/queryBuilder/Constraint.ts +0 -115
- package/src/filters/queryBuilder/DateConstraint.ts +0 -69
- package/src/filters/queryBuilder/NumberConstraint.ts +0 -66
- package/src/filters/queryBuilder/SelectConstraint.ts +0 -72
- package/src/filters/queryBuilder/TextConstraint.ts +0 -64
- package/src/filters/queryBuilder/index.ts +0 -12
- package/src/icons/index.ts +0 -2
- package/src/icons/lucide.ts +0 -204
- package/src/icons/registry.test.ts +0 -56
- package/src/icons/registry.ts +0 -41
- package/src/icons/types.ts +0 -47
- package/src/index.ts +0 -525
- package/src/io/csv.test.ts +0 -142
- package/src/io/csv.ts +0 -170
- package/src/nestedRelationManagerData.test.ts +0 -547
- package/src/notifications/Notification.test.ts +0 -210
- package/src/notifications/Notification.ts +0 -354
- package/src/notifications/broadcast.test.ts +0 -110
- package/src/notifications/broadcast.ts +0 -95
- package/src/notifications/database.test.ts +0 -383
- package/src/notifications/database.ts +0 -398
- package/src/notifications/databaseNotifications.test.ts +0 -187
- package/src/notifications/dispatchNotificationAction.test.ts +0 -341
- package/src/notifications/dispatchNotificationAction.ts +0 -142
- package/src/notifications/flash.test.ts +0 -89
- package/src/notifications/flash.ts +0 -71
- package/src/notifications/index.ts +0 -45
- package/src/notifications/registerBroadcastAuth.test.ts +0 -134
- package/src/notifications/registerBroadcastAuth.ts +0 -100
- package/src/notifications/resolveSavedNotification.test.ts +0 -82
- package/src/notifications/resolveSavedNotification.ts +0 -59
- package/src/notifications/types.ts +0 -93
- package/src/orm/m2mAccessor.ts +0 -66
- package/src/orm/modelDefaults.test.ts +0 -633
- package/src/orm/modelDefaults.ts +0 -666
- package/src/pageData/breadcrumbs.ts +0 -288
- package/src/pageData/forms.ts +0 -578
- package/src/pageData/helpers.ts +0 -857
- package/src/pageData/misc.ts +0 -347
- package/src/pageData/navigation.ts +0 -842
- package/src/pageData/relationPages.ts +0 -1248
- package/src/pageData/relationTabs.ts +0 -286
- package/src/pageData/resourcePages.ts +0 -609
- package/src/pageData.test.ts +0 -1545
- package/src/pageData.ts +0 -341
- package/src/plugins/index.ts +0 -8
- package/src/plugins/themeEditor.test.ts +0 -36
- package/src/plugins/themeEditor.ts +0 -45
- package/src/react/AppShell.tsx +0 -251
- package/src/react/CollabExtensionFactoryRegistry.ts +0 -55
- package/src/react/CollabRoomContext.ts +0 -98
- package/src/react/CollabTextRendererRegistry.ts +0 -102
- package/src/react/CommandPalette.tsx +0 -375
- package/src/react/CurrentUserContext.tsx +0 -50
- package/src/react/CustomPageWrapperGate.tsx +0 -69
- package/src/react/CustomPageWrapperRegistry.ts +0 -45
- package/src/react/FieldFocusReporterRegistry.ts +0 -37
- package/src/react/FieldLabelSlotRegistry.ts +0 -30
- package/src/react/FieldPresenceRegistry.ts +0 -46
- package/src/react/FormCollabBindingRegistry.ts +0 -242
- package/src/react/FormStateContext.tsx +0 -591
- package/src/react/HeadHooks.tsx +0 -126
- package/src/react/MarkdownEditorRegistry.test.ts +0 -38
- package/src/react/MarkdownEditorRegistry.ts +0 -107
- package/src/react/NotificationActionStrip.tsx +0 -263
- package/src/react/NotificationBell.tsx +0 -426
- package/src/react/PendingSuggestionApplierRegistry.test.ts +0 -97
- package/src/react/PendingSuggestionApplierRegistry.ts +0 -98
- package/src/react/PendingSuggestionOverlayRegistry.ts +0 -54
- package/src/react/PendingSuggestionsContext.tsx +0 -172
- package/src/react/RecordWrapperGate.tsx +0 -58
- package/src/react/RecordWrapperRegistry.ts +0 -39
- package/src/react/RenderHookSlot.tsx +0 -32
- package/src/react/RightSidebar.tsx +0 -257
- package/src/react/RightSidebarContext.tsx +0 -234
- package/src/react/RightSidebarTrigger.tsx +0 -53
- package/src/react/RowCoordsContext.tsx +0 -23
- package/src/react/SchemaRenderer.tsx +0 -549
- package/src/react/SearchTrigger.tsx +0 -46
- package/src/react/ThemeProvider.tsx +0 -93
- package/src/react/ThemeSettingsPage.tsx +0 -579
- package/src/react/ThemeToggle.tsx +0 -20
- package/src/react/Toaster.tsx +0 -158
- package/src/react/UserMenu.tsx +0 -196
- package/src/react/WidgetDataContext.tsx +0 -157
- package/src/react/cells/EditableCell.tsx +0 -389
- package/src/react/component-slots.test.ts +0 -103
- package/src/react/component-slots.ts +0 -116
- package/src/react/fieldJsHandler.test.ts +0 -166
- package/src/react/fieldJsHandler.ts +0 -79
- package/src/react/fields/BuilderInput.tsx +0 -1078
- package/src/react/fields/CheckboxInput.tsx +0 -39
- package/src/react/fields/CheckboxListInput.tsx +0 -102
- package/src/react/fields/ColorInput.tsx +0 -71
- package/src/react/fields/DateFieldInput.tsx +0 -70
- package/src/react/fields/DateTimeInput.tsx +0 -62
- package/src/react/fields/FieldShell.tsx +0 -348
- package/src/react/fields/FileUploadInput.tsx +0 -639
- package/src/react/fields/HiddenInput.tsx +0 -17
- package/src/react/fields/KeyValueInput.tsx +0 -230
- package/src/react/fields/MarkdownInput.tsx +0 -560
- package/src/react/fields/RadioInput.tsx +0 -81
- package/src/react/fields/RepeaterInput.test.ts +0 -116
- package/src/react/fields/RepeaterInput.tsx +0 -1420
- package/src/react/fields/SelectFieldInput.tsx +0 -280
- package/src/react/fields/SliderInput.tsx +0 -81
- package/src/react/fields/TagsInput.tsx +0 -283
- package/src/react/fields/TextLikeInput.tsx +0 -256
- package/src/react/fields/ToggleButtonsInput.tsx +0 -60
- package/src/react/fields/ToggleFieldInput.tsx +0 -56
- package/src/react/fields/relationshipRenameDispatch.test.ts +0 -106
- package/src/react/fields/relationshipRenameDispatch.ts +0 -97
- package/src/react/fields/repeaterReconcile.test.ts +0 -114
- package/src/react/fields/repeaterReconcile.ts +0 -104
- package/src/react/fields/rowChromeButton.tsx +0 -336
- package/src/react/fields/rowState.ts +0 -106
- package/src/react/fields/syncRowGates.test.ts +0 -202
- package/src/react/fields/syncRowGates.ts +0 -66
- package/src/react/fields/textInputControls.tsx +0 -238
- package/src/react/fields/useRowReorderDnd.ts +0 -78
- package/src/react/formStateHelpers.test.ts +0 -508
- package/src/react/formStateHelpers.ts +0 -381
- package/src/react/hooks/use-mobile.ts +0 -19
- package/src/react/icon-context.tsx +0 -60
- package/src/react/index.ts +0 -194
- package/src/react/layouts/SidebarLayout.tsx +0 -250
- package/src/react/layouts/TopbarLayout.tsx +0 -258
- package/src/react/navigate.tsx +0 -37
- package/src/react/onProviderSynced.test.ts +0 -90
- package/src/react/parseRecordEditUrl.test.ts +0 -122
- package/src/react/parseRecordEditUrl.ts +0 -94
- package/src/react/persistedState.ts +0 -40
- package/src/react/registry.ts +0 -48
- package/src/react/right-panel-registry.tsx +0 -47
- package/src/react/schemaRenderer/AlertRenderer.tsx +0 -112
- package/src/react/schemaRenderer/EntryRenderer.tsx +0 -501
- package/src/react/schemaRenderer/SectionRenderer.tsx +0 -120
- package/src/react/schemaRenderer/SimpleElements.tsx +0 -306
- package/src/react/schemaRenderer/TabsRenderer.tsx +0 -62
- package/src/react/schemaRenderer/WizardRenderer.tsx +0 -338
- package/src/react/schemaRenderer/action/ActionGroupTrigger.tsx +0 -177
- package/src/react/schemaRenderer/action/ActionModalDialog.tsx +0 -273
- package/src/react/schemaRenderer/action/ConfirmActionDialog.tsx +0 -61
- package/src/react/schemaRenderer/action/HandlerActionButton.tsx +0 -43
- package/src/react/schemaRenderer/action/MethodActionButton.tsx +0 -64
- package/src/react/schemaRenderer/action/buttons.tsx +0 -99
- package/src/react/schemaRenderer/action/helpers.ts +0 -140
- package/src/react/schemaRenderer/action/renderAction.tsx +0 -245
- package/src/react/schemaRenderer/columnFormat.ts +0 -65
- package/src/react/schemaRenderer/constants.ts +0 -50
- package/src/react/schemaRenderer/form/FormRenderer.tsx +0 -274
- package/src/react/schemaRenderer/form/renderField.tsx +0 -511
- package/src/react/schemaRenderer/helpers.tsx +0 -81
- package/src/react/schemaRenderer/table/CardsLayoutBody.tsx +0 -308
- package/src/react/schemaRenderer/table/TableRenderer.tsx +0 -123
- package/src/react/schemaRenderer/table/TableRendererBody.tsx +0 -974
- package/src/react/schemaRenderer/table/filters.tsx +0 -1233
- package/src/react/schemaRenderer/table/formatCell.tsx +0 -264
- package/src/react/schemaRenderer/table/links.tsx +0 -112
- package/src/react/schemaRenderer/table/renderRowActions.tsx +0 -52
- package/src/react/schemaRenderer/table/url.tsx +0 -143
- package/src/react/theme-preview/apply.ts +0 -99
- package/src/react/theme-preview/build-html.ts +0 -436
- package/src/react/ui/button.tsx +0 -51
- package/src/react/ui/calendar.tsx +0 -67
- package/src/react/ui/checkbox.tsx +0 -29
- package/src/react/ui/dialog.tsx +0 -108
- package/src/react/ui/dropdown-menu.tsx +0 -97
- package/src/react/ui/input.tsx +0 -20
- package/src/react/ui/label.tsx +0 -21
- package/src/react/ui/popover.tsx +0 -50
- package/src/react/ui/select.tsx +0 -169
- package/src/react/ui/separator.tsx +0 -25
- package/src/react/ui/sheet.tsx +0 -136
- package/src/react/ui/sidebar.tsx +0 -723
- package/src/react/ui/skeleton.tsx +0 -13
- package/src/react/ui/slider.tsx +0 -34
- package/src/react/ui/switch.tsx +0 -28
- package/src/react/ui/table.tsx +0 -105
- package/src/react/ui/tabs.tsx +0 -63
- package/src/react/ui/textarea.tsx +0 -18
- package/src/react/ui/tooltip.tsx +0 -64
- package/src/react/useResizableWidth.ts +0 -139
- package/src/react/utils.ts +0 -6
- package/src/react/widgetRegistry.test.ts +0 -43
- package/src/react/widgetRegistry.ts +0 -50
- package/src/react/widgets/StatsOverviewRenderer.tsx +0 -232
- package/src/react/widgets/TableWidgetRenderer.tsx +0 -231
- package/src/react/widgets/ViewRenderer.tsx +0 -71
- package/src/relationManagerData.test.ts +0 -1595
- package/src/richtext/index.ts +0 -8
- package/src/richtext/registry.ts +0 -89
- package/src/routes/globals.ts +0 -148
- package/src/routes/guard.test.ts +0 -325
- package/src/routes/helpers.ts +0 -704
- package/src/routes/pages.ts +0 -175
- package/src/routes/panel.ts +0 -204
- package/src/routes/relations.ts +0 -1243
- package/src/routes/resources.ts +0 -781
- package/src/routes/theme.ts +0 -91
- package/src/routes-nested-relations.test.ts +0 -676
- package/src/routes-relations.test.ts +0 -972
- package/src/routes.test.ts +0 -2027
- package/src/routes.ts +0 -303
- package/src/schema/Alert.test.ts +0 -109
- package/src/schema/Alert.ts +0 -131
- package/src/schema/Block.ts +0 -169
- package/src/schema/Breadcrumbs.ts +0 -40
- package/src/schema/Card.ts +0 -35
- package/src/schema/Divider.ts +0 -20
- package/src/schema/Element.ts +0 -219
- package/src/schema/EmptyState.test.ts +0 -37
- package/src/schema/EmptyState.ts +0 -63
- package/src/schema/Fieldset.ts +0 -43
- package/src/schema/Grid.ts +0 -43
- package/src/schema/Group.ts +0 -30
- package/src/schema/Heading.ts +0 -39
- package/src/schema/Html.ts +0 -67
- package/src/schema/Icon.ts +0 -54
- package/src/schema/Image.ts +0 -57
- package/src/schema/LinkTag.ts +0 -41
- package/src/schema/Markdown.ts +0 -85
- package/src/schema/MetaTag.ts +0 -41
- package/src/schema/RelationTabs.ts +0 -71
- package/src/schema/ScriptTag.ts +0 -55
- package/src/schema/Section.ts +0 -160
- package/src/schema/ServerDataElement.test.ts +0 -140
- package/src/schema/ServerDataElement.ts +0 -156
- package/src/schema/SlotComponent.test.ts +0 -77
- package/src/schema/SlotComponent.ts +0 -71
- package/src/schema/Split.ts +0 -50
- package/src/schema/Stat.test.ts +0 -118
- package/src/schema/Stat.ts +0 -154
- package/src/schema/StatsOverview.test.ts +0 -141
- package/src/schema/StatsOverview.ts +0 -119
- package/src/schema/StyleTag.ts +0 -35
- package/src/schema/TableWidget.test.ts +0 -297
- package/src/schema/TableWidget.ts +0 -289
- package/src/schema/Tabs.ts +0 -79
- package/src/schema/Text.ts +0 -58
- package/src/schema/UnorderedList.ts +0 -49
- package/src/schema/View.test.ts +0 -111
- package/src/schema/View.ts +0 -127
- package/src/schema/Wizard.ts +0 -220
- package/src/schema/containers.test.ts +0 -564
- package/src/schema/headTags.test.ts +0 -134
- package/src/schema/index.ts +0 -40
- package/src/schema/primes.test.ts +0 -269
- package/src/schema/resolveSchema.test.ts +0 -379
- package/src/schema/resolveSchema.ts +0 -917
- package/src/schema/sanitize.ts +0 -58
- package/src/search.test.ts +0 -446
- package/src/search.ts +0 -178
- package/src/sessionFilters.test.ts +0 -375
- package/src/sessionFilters.ts +0 -143
- package/src/slot-components/index.ts +0 -10
- package/src/slot-components/registry.ts +0 -56
- package/src/styles/file-upload.css +0 -13
- package/src/summarizers/Summarizer.test.ts +0 -84
- package/src/summarizers/Summarizer.ts +0 -123
- package/src/summarizers/index.ts +0 -11
- package/src/theme/base-colors.ts +0 -68
- package/src/theme/chart-colors.ts +0 -50
- package/src/theme/colors.ts +0 -447
- package/src/theme/generate-css.test.ts +0 -139
- package/src/theme/generate-css.ts +0 -44
- package/src/theme/generate-scale.test.ts +0 -106
- package/src/theme/generate-scale.ts +0 -97
- package/src/theme/icon-map.ts +0 -42
- package/src/theme/index.ts +0 -34
- package/src/theme/migrate.test.ts +0 -178
- package/src/theme/migrate.ts +0 -81
- package/src/theme/presets.ts +0 -135
- package/src/theme/radius.ts +0 -18
- package/src/theme/resolve.test.ts +0 -238
- package/src/theme/resolve.ts +0 -96
- package/src/theme/spacing.ts +0 -18
- package/src/theme/storage.test.ts +0 -126
- package/src/theme/storage.ts +0 -106
- package/src/theme/theme-colors.ts +0 -88
- package/src/theme/types.ts +0 -125
- package/src/uploads/UploadAdapter.ts +0 -35
- package/src/uploads/index.ts +0 -2
- package/src/uploads/localUpload.test.ts +0 -70
- package/src/uploads/localUpload.ts +0 -84
- package/src/validation/Validator.ts +0 -49
- package/src/validation/index.ts +0 -28
- package/src/validation/rules.ts +0 -78
- package/src/validation/runValidators.ts +0 -435
- package/src/validation/uniqueValidator.test.ts +0 -196
- package/src/validation/uniqueValidator.ts +0 -133
- package/src/validation/validators.test.ts +0 -268
- package/src/vite.test.ts +0 -184
- package/src/vite.ts +0 -787
- package/src/widgets/index.ts +0 -10
- package/src/widgets/registry.ts +0 -45
- package/src/widgets.test.ts +0 -592
- package/tsconfig.build.json +0 -11
- package/tsconfig.json +0 -4
- package/tsconfig.test.json +0 -10
- package/views/react/Dashboard.tsx +0 -27
- package/views/react/Resources/Form.tsx +0 -102
- package/views/react/Resources/Index.tsx +0 -49
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Right-sidebar runtime state — open/close, active tab, current width.
|
|
3
|
-
*
|
|
4
|
-
* Shape mirrors the contract documented in `docs/plans/right-sidebar.md` so
|
|
5
|
-
* plugin bodies and the chrome read from the same surface. Values persist
|
|
6
|
-
* to localStorage under per-basePath keys so a multi-panel app (`/admin`
|
|
7
|
-
* + `/simple`) doesn't share state across mount points.
|
|
8
|
-
*
|
|
9
|
-
* The provider mounts inside `AppShell` only when `panel.rightSidebar` is
|
|
10
|
-
* present — plugin contributions render inside the chrome's body, so
|
|
11
|
-
* they're guaranteed to call `useRightSidebar()` under the provider.
|
|
12
|
-
*
|
|
13
|
-
* Programmatic open: any descendant of the provider (most useful: a render
|
|
14
|
-
* hook on the topbar) can flip open/active via the hook. The default
|
|
15
|
-
* `RightSidebarTrigger` uses this exact wiring; consumers that want a
|
|
16
|
-
* floating-button affordance can call `useRightSidebar()` and roll their own.
|
|
17
|
-
*/
|
|
18
|
-
import React, {
|
|
19
|
-
createContext,
|
|
20
|
-
useCallback,
|
|
21
|
-
useContext,
|
|
22
|
-
useEffect,
|
|
23
|
-
useMemo,
|
|
24
|
-
useRef,
|
|
25
|
-
useState,
|
|
26
|
-
} from 'react'
|
|
27
|
-
import type { RightPanelMeta, RightSidebarMeta } from '../pageData.js'
|
|
28
|
-
import { clampPanelWidth } from './useResizableWidth.js'
|
|
29
|
-
|
|
30
|
-
export interface RightSidebarApi {
|
|
31
|
-
/** Whether the panel is currently open. */
|
|
32
|
-
open: boolean
|
|
33
|
-
setOpen: (v: boolean) => void
|
|
34
|
-
toggle: () => void
|
|
35
|
-
/** Active tab's contribution id. `null` when no tab has been picked
|
|
36
|
-
* (initial render of an empty-localStorage panel). */
|
|
37
|
-
activeId: string | null
|
|
38
|
-
setActiveId: (id: string) => void
|
|
39
|
-
/** Current panel width in px. */
|
|
40
|
-
width: number
|
|
41
|
-
setWidth: (px: number) => void
|
|
42
|
-
/** All visible contributions for the current panel. Sorted by the
|
|
43
|
-
* server-side `panelInfo()` builder; the order is stable across
|
|
44
|
-
* navigations. */
|
|
45
|
-
contributions: RightPanelMeta[]
|
|
46
|
-
/** Server-supplied min/max/default — exposed so the chrome's resize
|
|
47
|
-
* handle clamps to the same range. */
|
|
48
|
-
bounds: { min: number; max: number; default: number }
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const Ctx = createContext<RightSidebarApi | null>(null)
|
|
52
|
-
|
|
53
|
-
export interface RightSidebarProviderProps {
|
|
54
|
-
meta: RightSidebarMeta
|
|
55
|
-
basePath: string
|
|
56
|
-
children: React.ReactNode
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function storageKey(basePath: string, key: 'open' | 'activeId' | 'width'): string {
|
|
60
|
-
return `pilotiq.rightSidebar.${basePath}.${key}`
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function readBool(key: string, fallback: boolean): boolean {
|
|
64
|
-
if (typeof window === 'undefined') return fallback
|
|
65
|
-
try {
|
|
66
|
-
const raw = window.localStorage?.getItem(key)
|
|
67
|
-
if (raw === 'true') return true
|
|
68
|
-
if (raw === 'false') return false
|
|
69
|
-
return fallback
|
|
70
|
-
} catch { return fallback }
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
function readString(key: string): string | null {
|
|
74
|
-
if (typeof window === 'undefined') return null
|
|
75
|
-
try {
|
|
76
|
-
const raw = window.localStorage?.getItem(key)
|
|
77
|
-
return raw ?? null
|
|
78
|
-
} catch { return null }
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function writeString(key: string, value: string | null): void {
|
|
82
|
-
if (typeof window === 'undefined') return
|
|
83
|
-
try {
|
|
84
|
-
if (value === null) window.localStorage?.removeItem(key)
|
|
85
|
-
else window.localStorage?.setItem(key, value)
|
|
86
|
-
} catch { /* private mode / quota — best-effort */ }
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export function RightSidebarProvider({ meta, basePath, children }: RightSidebarProviderProps): React.ReactElement {
|
|
90
|
-
const openKey = storageKey(basePath, 'open')
|
|
91
|
-
const activeKey = storageKey(basePath, 'activeId')
|
|
92
|
-
const widthKey = storageKey(basePath, 'width')
|
|
93
|
-
|
|
94
|
-
const fallbackId = meta.panels[0]?.id ?? null
|
|
95
|
-
|
|
96
|
-
// SSR-safety: initialise to closed / fallback / default-width so the
|
|
97
|
-
// server-rendered tree matches a fresh client (no localStorage). The
|
|
98
|
-
// useEffect below rehydrates from localStorage AFTER mount, avoiding a
|
|
99
|
-
// hydration mismatch warning every time a returning user reloads with
|
|
100
|
-
// the panel previously open. Brief closed→open flash is acceptable and
|
|
101
|
-
// identical to first-visit behaviour.
|
|
102
|
-
const [open, setOpenState] = useState<boolean>(false)
|
|
103
|
-
const [activeId, setActiveIdState] = useState<string | null>(fallbackId)
|
|
104
|
-
const [width, setWidthState] = useState<number>(() =>
|
|
105
|
-
clampPanelWidth(meta.defaultWidth, {
|
|
106
|
-
min: meta.minWidth,
|
|
107
|
-
max: meta.maxWidth,
|
|
108
|
-
defaultWidth: meta.defaultWidth,
|
|
109
|
-
}),
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
if (typeof window === 'undefined') return
|
|
114
|
-
const storedOpen = readBool(openKey, false)
|
|
115
|
-
setOpenState(storedOpen)
|
|
116
|
-
const storedActive = readString(activeKey)
|
|
117
|
-
if (storedActive && meta.panels.some(p => p.id === storedActive)) {
|
|
118
|
-
setActiveIdState(storedActive)
|
|
119
|
-
}
|
|
120
|
-
const storedWidth = readString(widthKey)
|
|
121
|
-
if (storedWidth !== null) {
|
|
122
|
-
setWidthState(clampPanelWidth(storedWidth, {
|
|
123
|
-
min: meta.minWidth,
|
|
124
|
-
max: meta.maxWidth,
|
|
125
|
-
defaultWidth: meta.defaultWidth,
|
|
126
|
-
}))
|
|
127
|
-
}
|
|
128
|
-
// Run once on mount per basePath. Width / activeId / open keys are
|
|
129
|
-
// basePath-derived, so the dependency list is effectively static for
|
|
130
|
-
// a given panel — no stale-closure risk on subsequent renders.
|
|
131
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
132
|
-
}, [basePath])
|
|
133
|
-
|
|
134
|
-
// Re-validate `activeId` when the contribution set changes (e.g.,
|
|
135
|
-
// canAccess gating flipped after a route nav). If the stored id has
|
|
136
|
-
// disappeared, fall back to the first visible tab. Skip when nothing
|
|
137
|
-
// changed so we don't churn renders on every server data refresh.
|
|
138
|
-
const visibleIds = useMemo(() => meta.panels.map(p => p.id), [meta.panels])
|
|
139
|
-
const visibleIdsRef = useRef<string[]>(visibleIds)
|
|
140
|
-
useEffect(() => {
|
|
141
|
-
const prev = visibleIdsRef.current
|
|
142
|
-
visibleIdsRef.current = visibleIds
|
|
143
|
-
const stillValid = activeId !== null && visibleIds.includes(activeId)
|
|
144
|
-
if (stillValid) return
|
|
145
|
-
if (prev.length === visibleIds.length && prev.every((id, i) => id === visibleIds[i])) return
|
|
146
|
-
setActiveIdState(visibleIds[0] ?? null)
|
|
147
|
-
}, [visibleIds, activeId])
|
|
148
|
-
|
|
149
|
-
const setOpen = useCallback((v: boolean): void => {
|
|
150
|
-
setOpenState(v)
|
|
151
|
-
writeString(openKey, v ? 'true' : 'false')
|
|
152
|
-
}, [openKey])
|
|
153
|
-
|
|
154
|
-
const toggle = useCallback((): void => {
|
|
155
|
-
setOpenState((prev) => {
|
|
156
|
-
const next = !prev
|
|
157
|
-
writeString(openKey, next ? 'true' : 'false')
|
|
158
|
-
return next
|
|
159
|
-
})
|
|
160
|
-
}, [openKey])
|
|
161
|
-
|
|
162
|
-
const setActiveId = useCallback((id: string): void => {
|
|
163
|
-
setActiveIdState(id)
|
|
164
|
-
writeString(activeKey, id)
|
|
165
|
-
// Selecting a tab implies opening — matches VS Code behaviour.
|
|
166
|
-
setOpenState(true)
|
|
167
|
-
writeString(openKey, 'true')
|
|
168
|
-
}, [activeKey, openKey])
|
|
169
|
-
|
|
170
|
-
const setWidth = useCallback((px: number): void => {
|
|
171
|
-
const clamped = clampPanelWidth(px, {
|
|
172
|
-
min: meta.minWidth,
|
|
173
|
-
max: meta.maxWidth,
|
|
174
|
-
defaultWidth: meta.defaultWidth,
|
|
175
|
-
})
|
|
176
|
-
setWidthState(clamped)
|
|
177
|
-
writeString(widthKey, String(clamped))
|
|
178
|
-
}, [meta.minWidth, meta.maxWidth, meta.defaultWidth, widthKey])
|
|
179
|
-
|
|
180
|
-
// Mod-Shift-\ — VS Code's secondary side bar shortcut. Owned by core
|
|
181
|
-
// so plugins don't fight over the same key.
|
|
182
|
-
useEffect(() => {
|
|
183
|
-
if (typeof window === 'undefined') return
|
|
184
|
-
const onKey = (e: KeyboardEvent): void => {
|
|
185
|
-
if (e.code !== 'Backslash') return
|
|
186
|
-
if (!e.shiftKey) return
|
|
187
|
-
if (!(e.metaKey || e.ctrlKey)) return
|
|
188
|
-
e.preventDefault()
|
|
189
|
-
toggle()
|
|
190
|
-
}
|
|
191
|
-
window.addEventListener('keydown', onKey)
|
|
192
|
-
return () => window.removeEventListener('keydown', onKey)
|
|
193
|
-
}, [toggle])
|
|
194
|
-
|
|
195
|
-
const value = useMemo<RightSidebarApi>(() => ({
|
|
196
|
-
open,
|
|
197
|
-
setOpen,
|
|
198
|
-
toggle,
|
|
199
|
-
activeId,
|
|
200
|
-
setActiveId,
|
|
201
|
-
width,
|
|
202
|
-
setWidth,
|
|
203
|
-
contributions: meta.panels,
|
|
204
|
-
bounds: { min: meta.minWidth, max: meta.maxWidth, default: meta.defaultWidth },
|
|
205
|
-
}), [open, setOpen, toggle, activeId, setActiveId, width, setWidth, meta.panels, meta.minWidth, meta.maxWidth, meta.defaultWidth])
|
|
206
|
-
|
|
207
|
-
return <Ctx.Provider value={value}>{children}</Ctx.Provider>
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Read the right-sidebar API. Throws when called outside a
|
|
212
|
-
* `RightSidebarProvider` — call it from inside a contribution's `render`
|
|
213
|
-
* body or any descendant component.
|
|
214
|
-
*/
|
|
215
|
-
export function useRightSidebar(): RightSidebarApi {
|
|
216
|
-
const v = useContext(Ctx)
|
|
217
|
-
if (v === null) {
|
|
218
|
-
throw new Error(
|
|
219
|
-
'[Pilotiq] useRightSidebar() called outside <RightSidebarProvider>. ' +
|
|
220
|
-
'The provider mounts only when `panel.rightSidebar` is present in meta — ' +
|
|
221
|
-
'either no contributions were registered, or the auth gate dropped them all.',
|
|
222
|
-
)
|
|
223
|
-
}
|
|
224
|
-
return v
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Optional variant — returns `null` when no provider is mounted instead
|
|
229
|
-
* of throwing. Useful for chrome that wants to render only when the
|
|
230
|
-
* surface is active (e.g., the topbar trigger button).
|
|
231
|
-
*/
|
|
232
|
-
export function useRightSidebarOptional(): RightSidebarApi | null {
|
|
233
|
-
return useContext(Ctx)
|
|
234
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Right-sidebar toggle button.
|
|
3
|
-
*
|
|
4
|
-
* Mounts in the topbar's right cluster between `NotificationBell` and
|
|
5
|
-
* `UserMenu`. Renders nothing when no `<RightSidebarProvider>` is mounted
|
|
6
|
-
* (i.e., `panel.rightSidebar` was absent from `panelInfo()`), so layouts
|
|
7
|
-
* can include the trigger unconditionally and let it self-suppress.
|
|
8
|
-
*
|
|
9
|
-
* Icon swaps between open and closed states (matches the upstream
|
|
10
|
-
* `PanelRightOpen` / `PanelRightClose` Lucide pair). The keyboard
|
|
11
|
-
* shortcut (Mod-Shift-\) is owned by the provider — the button is just
|
|
12
|
-
* a click affordance.
|
|
13
|
-
*/
|
|
14
|
-
import React from 'react'
|
|
15
|
-
import { PanelRightOpenIcon, PanelRightCloseIcon } from 'lucide-react'
|
|
16
|
-
import { cn } from './utils.js'
|
|
17
|
-
import { useRightSidebarOptional } from './RightSidebarContext.js'
|
|
18
|
-
import { useIconFor } from './icon-context.js'
|
|
19
|
-
|
|
20
|
-
export function RightSidebarTrigger(): React.ReactElement | null {
|
|
21
|
-
const sidebar = useRightSidebarOptional()
|
|
22
|
-
// When a single contribution is registered, prefer its icon on the
|
|
23
|
-
// trigger. With 2+, fall back to the generic panel icon — the per-tab
|
|
24
|
-
// icons live on the tab strip.
|
|
25
|
-
const single = sidebar && sidebar.contributions.length === 1
|
|
26
|
-
? sidebar.contributions[0]
|
|
27
|
-
: undefined
|
|
28
|
-
const SingleIcon = useIconFor(single?.icon)
|
|
29
|
-
|
|
30
|
-
if (!sidebar) return null
|
|
31
|
-
if (sidebar.contributions.length === 0) return null
|
|
32
|
-
|
|
33
|
-
const open = sidebar.open
|
|
34
|
-
const Fallback = open ? PanelRightCloseIcon : PanelRightOpenIcon
|
|
35
|
-
const Icon = SingleIcon ?? Fallback
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<button
|
|
39
|
-
type="button"
|
|
40
|
-
onClick={sidebar.toggle}
|
|
41
|
-
className={cn(
|
|
42
|
-
'inline-flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors',
|
|
43
|
-
'hover:bg-accent hover:text-foreground',
|
|
44
|
-
open && 'bg-accent text-foreground',
|
|
45
|
-
)}
|
|
46
|
-
aria-label={open ? 'Close side panel' : 'Open side panel'}
|
|
47
|
-
aria-pressed={open}
|
|
48
|
-
title={open ? 'Close side panel (⌘⇧\\)' : 'Open side panel (⌘⇧\\)'}
|
|
49
|
-
>
|
|
50
|
-
<Icon className="size-4" aria-hidden="true" />
|
|
51
|
-
</button>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React, { createContext, useContext } from 'react'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Phase 1 — row-text Tiptap-backed collab plan
|
|
5
|
-
* (`pilotiq-pro/docs/plans/collab-row-text-tiptap-backed.md`).
|
|
6
|
-
*
|
|
7
|
-
* Each Repeater / Builder row mounts a `<RowCoordsContext.Provider>`
|
|
8
|
-
* around its children so dotted-path text leaves can compose a
|
|
9
|
-
* fragment-key that includes the stable `rowId` (survives reorders).
|
|
10
|
-
* Top-level fields see `null` and fall through to bare-name fragment
|
|
11
|
-
* routing.
|
|
12
|
-
*/
|
|
13
|
-
export interface RowCoords {
|
|
14
|
-
arrayName: string
|
|
15
|
-
rowIndex: number
|
|
16
|
-
rowId: string
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const RowCoordsContext = createContext<RowCoords | null>(null)
|
|
20
|
-
|
|
21
|
-
export function useRowCoords(): RowCoords | null {
|
|
22
|
-
return useContext(RowCoordsContext)
|
|
23
|
-
}
|