@lattice-php/lattice 0.17.2 → 0.18.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/action/components/action-form.d.ts +2 -2
- package/dist/action/components/action-form.js +11 -11
- package/dist/action/components/action-form.js.map +1 -1
- package/dist/action/components/action-group.d.ts +1 -1
- package/dist/action/components/action-group.js +6 -4
- package/dist/action/components/action-group.js.map +1 -1
- package/dist/action/components/action-trigger-provider.d.ts +10 -0
- package/dist/action/components/action-trigger-provider.js +24 -0
- package/dist/action/components/action-trigger-provider.js.map +1 -0
- package/dist/action/components/action.d.ts +1 -1
- package/dist/action/components/action.js +4 -4
- package/dist/action/components/action.js.map +1 -1
- package/dist/action/{use-action.d.ts → hooks/use-action.d.ts} +1 -1
- package/dist/action/{use-action.js → hooks/use-action.js} +7 -7
- package/dist/action/hooks/use-action.js.map +1 -0
- package/dist/action/hooks/use-click-behavior.d.ts +3 -0
- package/dist/action/hooks/use-click-behavior.js +3 -0
- package/dist/action/index.d.ts +10 -1
- package/dist/action/index.js +8 -13
- package/dist/action/{run-action.d.ts → lib/run-action.d.ts} +1 -1
- package/dist/action/{run-action.js → lib/run-action.js} +2 -2
- package/dist/action/lib/run-action.js.map +1 -0
- package/dist/action/plugin.d.ts +1 -0
- package/dist/action/plugin.js +15 -0
- package/dist/action/plugin.js.map +1 -0
- package/dist/appearance/index.d.ts +4 -1
- package/dist/appearance/index.js +11 -2
- package/dist/appearance/index.js.map +1 -1
- package/dist/chat/components/chat-box.d.ts +1 -1
- package/dist/chat/components/chat-box.js +2 -2
- package/dist/chat/components/chat-box.js.map +1 -1
- package/dist/chat/components/message-list.d.ts +1 -1
- package/dist/chat/components/message-list.js.map +1 -1
- package/dist/chat/components/message.d.ts +1 -1
- package/dist/chat/components/message.js.map +1 -1
- package/dist/chat/components/prompt-input.js +1 -1
- package/dist/chat/components/prompt-input.js.map +1 -1
- package/dist/chat/{use-chat.d.ts → hooks/use-chat.d.ts} +1 -1
- package/dist/chat/{use-chat.js → hooks/use-chat.js} +2 -2
- package/dist/chat/hooks/use-chat.js.map +1 -0
- package/dist/chat/index.d.ts +4 -1
- package/dist/chat/index.js +3 -17
- package/dist/chat/{transport.d.ts → lib/transport.d.ts} +2 -2
- package/dist/chat/{transport.js → lib/transport.js} +2 -2
- package/dist/chat/lib/transport.js.map +1 -0
- package/dist/chat/parts/text.d.ts +1 -1
- package/dist/chat/parts/tool-call.d.ts +1 -1
- package/dist/chat/plugin.d.ts +2 -0
- package/dist/chat/plugin.js +17 -0
- package/dist/chat/plugin.js.map +1 -0
- package/dist/chat/types.d.ts +2 -2
- package/dist/clipboard/index.d.ts +1 -2
- package/dist/clipboard/index.js +1 -10
- package/dist/clipboard/index.js.map +1 -1
- package/dist/core/api.d.ts +1 -1
- package/dist/core/api.js.map +1 -1
- package/dist/core/headers.js.map +1 -1
- package/dist/core/{column-sizing.d.ts → hooks/column-sizing.d.ts} +2 -2
- package/dist/core/{column-sizing.js → hooks/column-sizing.js} +1 -1
- package/dist/core/hooks/column-sizing.js.map +1 -0
- package/dist/core/{use-column-resizing.d.ts → hooks/use-column-resizing.d.ts} +2 -1
- package/dist/core/{use-column-resizing.js → hooks/use-column-resizing.js} +59 -31
- package/dist/core/hooks/use-column-resizing.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.js +10 -0
- package/dist/core/materialize.d.ts +9 -0
- package/dist/core/materialize.js +39 -0
- package/dist/core/materialize.js.map +1 -0
- package/dist/core/nodes.d.ts +1 -1
- package/dist/core/registry-context.d.ts +3 -3
- package/dist/core/registry-context.js.map +1 -1
- package/dist/core/registry.d.ts +5 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/renderer.d.ts +1 -1
- package/dist/core/renderer.js +3 -3
- package/dist/core/renderer.js.map +1 -1
- package/dist/core/test-id.d.ts +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/create-app.d.ts +3 -3
- package/dist/effects/dispatch.d.ts +2 -2
- package/dist/effects/registry.d.ts +4 -3
- package/dist/effects/registry.js +7 -7
- package/dist/effects/registry.js.map +1 -1
- package/dist/effects/use-effect-dispatcher.d.ts +1 -1
- package/dist/{events/event-bridge.d.ts → event-bridge.d.ts} +2 -3
- package/dist/{events/event-bridge.js → event-bridge.js} +4 -11
- package/dist/event-bridge.js.map +1 -0
- package/dist/form/components/base/field.d.ts +1 -1
- package/dist/form/components/base/field.js +5 -5
- package/dist/form/components/base/field.js.map +1 -1
- package/dist/form/components/base/submit-button.d.ts +1 -1
- package/dist/form/components/base/submit-button.js +3 -3
- package/dist/form/components/base/submit-button.js.map +1 -1
- package/dist/form/components/fields/{block-add-menu.d.ts → add-row-menu.d.ts} +3 -3
- package/dist/form/components/fields/{block-add-menu.js → add-row-menu.js} +10 -10
- package/dist/form/components/fields/add-row-menu.js.map +1 -0
- package/dist/form/components/fields/builder.d.ts +1 -1
- package/dist/form/components/fields/builder.js +80 -75
- package/dist/form/components/fields/builder.js.map +1 -1
- package/dist/form/components/fields/checkbox.d.ts +1 -1
- package/dist/form/components/fields/checkbox.js +12 -9
- package/dist/form/components/fields/checkbox.js.map +1 -1
- package/dist/form/components/fields/choice.d.ts +1 -1
- package/dist/form/components/fields/choice.js +4 -4
- package/dist/form/components/fields/choice.js.map +1 -1
- package/dist/form/components/fields/date-input.d.ts +1 -1
- package/dist/form/components/fields/date-picker-field.js +2 -2
- package/dist/form/components/fields/date-picker-field.js.map +1 -1
- package/dist/form/components/fields/date-picker.d.ts +1 -1
- package/dist/form/components/fields/date-time-input.d.ts +1 -1
- package/dist/form/components/fields/file-upload.d.ts +1 -1
- package/dist/form/components/fields/file-upload.js +4 -4
- package/dist/form/components/fields/file-upload.js.map +1 -1
- package/dist/form/components/fields/hidden-input.d.ts +1 -1
- package/dist/form/components/fields/hidden-input.js +1 -1
- package/dist/form/components/fields/hidden-input.js.map +1 -1
- package/dist/form/components/fields/number-input.d.ts +1 -1
- package/dist/form/components/fields/number-input.js +2 -2
- package/dist/form/components/fields/number-input.js.map +1 -1
- package/dist/form/components/fields/otp-input.d.ts +1 -1
- package/dist/form/components/fields/otp-input.js +1 -1
- package/dist/form/components/fields/otp-input.js.map +1 -1
- package/dist/form/components/fields/password-input.d.ts +1 -1
- package/dist/form/components/fields/password-input.js +6 -6
- package/dist/form/components/fields/password-input.js.map +1 -1
- package/dist/form/components/fields/repeater-rows.d.ts +6 -1
- package/dist/form/components/fields/repeater-rows.js +9 -5
- package/dist/form/components/fields/repeater-rows.js.map +1 -1
- package/dist/form/components/fields/repeater.d.ts +1 -1
- package/dist/form/components/fields/repeater.js +57 -48
- package/dist/form/components/fields/repeater.js.map +1 -1
- package/dist/form/components/fields/rich-editor-field.d.ts +1 -1
- package/dist/form/components/fields/rich-editor-field.js +5 -5
- package/dist/form/components/fields/rich-editor-field.js.map +1 -1
- package/dist/form/components/fields/rich-editor.d.ts +1 -1
- package/dist/form/components/fields/row-action-menu.d.ts +2 -2
- package/dist/form/components/fields/row-actions.js +1 -1
- package/dist/form/components/fields/row-actions.js.map +1 -1
- package/dist/form/components/fields/row-item.d.ts +3 -3
- package/dist/form/components/fields/row-item.js +1 -1
- package/dist/form/components/fields/row-item.js.map +1 -1
- package/dist/form/components/fields/row-key-inputs.d.ts +7 -0
- package/dist/form/components/fields/row-key-inputs.js +16 -0
- package/dist/form/components/fields/row-key-inputs.js.map +1 -0
- package/dist/form/components/fields/row-templates.d.ts +9 -0
- package/dist/form/components/fields/row-templates.js +14 -0
- package/dist/form/components/fields/row-templates.js.map +1 -0
- package/dist/form/components/fields/select.d.ts +1 -1
- package/dist/form/components/fields/select.js +23 -13
- package/dist/form/components/fields/select.js.map +1 -1
- package/dist/form/components/fields/simple-field.d.ts +2 -2
- package/dist/form/components/fields/simple-field.js +2 -2
- package/dist/form/components/fields/simple-field.js.map +1 -1
- package/dist/form/components/fields/table-rows.d.ts +3 -3
- package/dist/form/components/fields/table-rows.js +10 -11
- package/dist/form/components/fields/table-rows.js.map +1 -1
- package/dist/form/components/fields/text-input.d.ts +1 -1
- package/dist/form/components/fields/text-input.js +2 -2
- package/dist/form/components/fields/text-input.js.map +1 -1
- package/dist/form/components/fields/textarea.d.ts +1 -1
- package/dist/form/components/fields/textarea.js +1 -1
- package/dist/form/components/fields/textarea.js.map +1 -1
- package/dist/form/components/fields/time-input.d.ts +1 -1
- package/dist/form/components/fields/time-input.js +3 -3
- package/dist/form/components/fields/time-input.js.map +1 -1
- package/dist/form/components/fields/time-picker.d.ts +1 -1
- package/dist/form/components/fields/toggle.d.ts +1 -1
- package/dist/form/components/fields/toggle.js +10 -9
- package/dist/form/components/fields/toggle.js.map +1 -1
- package/dist/form/components/fields/use-row-collection.d.ts +1 -1
- package/dist/form/components/fields/use-row-collection.js +2 -2
- package/dist/form/components/fields/use-row-collection.js.map +1 -1
- package/dist/form/components/form.d.ts +1 -1
- package/dist/form/components/form.js +6 -6
- package/dist/form/components/form.js.map +1 -1
- package/dist/form/components/index.d.ts +17 -17
- package/dist/form/embed.d.ts +17 -0
- package/dist/form/embed.js +10 -0
- package/dist/form/{components → hooks}/context.d.ts +3 -0
- package/dist/form/{components → hooks}/context.js +2 -1
- package/dist/form/hooks/context.js.map +1 -0
- package/dist/form/{components → hooks}/field-scope.js +3 -3
- package/dist/form/hooks/field-scope.js.map +1 -0
- package/dist/form/{components → hooks}/prefill-context.js +1 -1
- package/dist/form/hooks/prefill-context.js.map +1 -0
- package/dist/form/{components → hooks}/resolved-nodes.d.ts +1 -1
- package/dist/form/{components → hooks}/resolved-nodes.js +2 -2
- package/dist/form/hooks/resolved-nodes.js.map +1 -0
- package/dist/form/{components → hooks}/row-layout-context.js +1 -1
- package/dist/form/hooks/row-layout-context.js.map +1 -0
- package/dist/form/{components → hooks}/use-controlled-field.d.ts +2 -2
- package/dist/form/{components → hooks}/use-controlled-field.js +6 -5
- package/dist/form/hooks/use-controlled-field.js.map +1 -0
- package/dist/form/hooks/use-dependent-field.d.ts +3 -0
- package/dist/form/{components → hooks}/use-dependent-field.js +6 -6
- package/dist/form/hooks/use-dependent-field.js.map +1 -0
- package/dist/form/{components → hooks}/use-field-commit.d.ts +5 -0
- package/dist/form/{components → hooks}/use-field-commit.js +9 -2
- package/dist/form/hooks/use-field-commit.js.map +1 -0
- package/dist/form/{components → hooks}/use-form-resolver.d.ts +2 -2
- package/dist/form/{components → hooks}/use-form-resolver.js +5 -5
- package/dist/form/hooks/use-form-resolver.js.map +1 -0
- package/dist/form/{components → hooks}/use-seed-default.js +1 -1
- package/dist/form/hooks/use-seed-default.js.map +1 -0
- package/dist/form/{components → hooks}/values.d.ts +3 -1
- package/dist/form/hooks/values.js +136 -0
- package/dist/form/hooks/values.js.map +1 -0
- package/dist/form/index.d.ts +4 -1
- package/dist/form/index.js +3 -30
- package/dist/form/{components → lib}/conditions.d.ts +2 -1
- package/dist/form/{components → lib}/conditions.js +12 -2
- package/dist/form/lib/conditions.js.map +1 -0
- package/dist/form/lib/field-dom-name.d.ts +1 -0
- package/dist/form/lib/field-dom-name.js +10 -0
- package/dist/form/lib/field-dom-name.js.map +1 -0
- package/dist/form/{components → lib}/field-props.d.ts +2 -3
- package/dist/form/{components → lib}/field-props.js +1 -1
- package/dist/form/lib/field-props.js.map +1 -0
- package/dist/form/{components → lib}/form-path.js +1 -1
- package/dist/form/lib/form-path.js.map +1 -0
- package/dist/form/{components → lib}/form-transport.d.ts +1 -1
- package/dist/form/lib/form-transport.js +21 -0
- package/dist/form/lib/form-transport.js.map +1 -0
- package/dist/form/lib/override-keys.js +12 -0
- package/dist/form/lib/override-keys.js.map +1 -0
- package/dist/form/{components → lib}/prefill-targets.d.ts +2 -2
- package/dist/form/{components → lib}/prefill-targets.js +4 -5
- package/dist/form/lib/prefill-targets.js.map +1 -0
- package/dist/form/plugin.d.ts +1 -0
- package/dist/form/plugin.js +47 -0
- package/dist/form/plugin.js.map +1 -0
- package/dist/form/toolkit.d.ts +17 -0
- package/dist/form/toolkit.js +14 -0
- package/dist/form/{components/types.d.ts → types.d.ts} +3 -3
- package/dist/format/number.d.ts +1 -1
- package/dist/format/value.d.ts +1 -1
- package/dist/i18n/backend.d.ts +1 -1
- package/dist/i18n/config.d.ts +1 -1
- package/dist/i18n/index.d.ts +13 -13
- package/dist/i18n/locale-reload.js +1 -1
- package/dist/i18n/locale-reload.js.map +1 -1
- package/dist/i18n/locale.js.map +1 -1
- package/dist/i18n/page-props.d.ts +1 -1
- package/dist/i18n/timezone.js.map +1 -1
- package/dist/i18n/translatable.d.ts +1 -1
- package/dist/icons/icon-renderer.js.map +1 -1
- package/dist/icons/index.d.ts +4 -4
- package/dist/icons/sprite.js.map +1 -1
- package/dist/index.d.ts +37 -38
- package/dist/index.js +10 -9
- package/dist/inertia.js +1 -1
- package/dist/layout/{breadcrumbs.d.ts → components/breadcrumbs.d.ts} +1 -1
- package/dist/layout/{breadcrumbs.js → components/breadcrumbs.js} +2 -2
- package/dist/layout/components/breadcrumbs.js.map +1 -0
- package/dist/layout/{callouts.d.ts → components/callouts.d.ts} +1 -1
- package/dist/layout/{callouts.js → components/callouts.js} +7 -7
- package/dist/layout/components/callouts.js.map +1 -0
- package/dist/layout/{dropdown.d.ts → components/dropdown.d.ts} +1 -1
- package/dist/layout/{dropdown.js → components/dropdown.js} +2 -2
- package/dist/layout/components/dropdown.js.map +1 -0
- package/dist/layout/{menu-item.d.ts → components/menu-item.d.ts} +1 -1
- package/dist/layout/{menu-item.js → components/menu-item.js} +9 -8
- package/dist/layout/components/menu-item.js.map +1 -0
- package/dist/layout/{menu.d.ts → components/menu.d.ts} +1 -1
- package/dist/layout/{menu.js → components/menu.js} +2 -2
- package/dist/layout/components/menu.js.map +1 -0
- package/dist/layout/{outlet.d.ts → components/outlet.d.ts} +1 -1
- package/dist/layout/{outlet.js → components/outlet.js} +2 -2
- package/dist/layout/components/outlet.js.map +1 -0
- package/dist/layout/{popover.js → components/popover.js} +4 -4
- package/dist/layout/components/popover.js.map +1 -0
- package/dist/layout/{schema-layout.js → components/schema-layout.js} +3 -3
- package/dist/layout/components/schema-layout.js.map +1 -0
- package/dist/layout/{sidebar.d.ts → components/sidebar.d.ts} +1 -1
- package/dist/layout/{sidebar.js → components/sidebar.js} +5 -5
- package/dist/layout/components/sidebar.js.map +1 -0
- package/dist/layout/{topbar.d.ts → components/topbar.d.ts} +1 -1
- package/dist/layout/{topbar.js → components/topbar.js} +3 -3
- package/dist/layout/components/topbar.js.map +1 -0
- package/dist/layout/{context.d.ts → hooks/context.d.ts} +1 -1
- package/dist/layout/{context.js → hooks/context.js} +2 -2
- package/dist/layout/hooks/context.js.map +1 -0
- package/dist/layout/index.d.ts +4 -4
- package/dist/layout/index.js +4 -4
- package/dist/layout/plugin.d.ts +2 -0
- package/dist/layout/{components.js → plugin.js} +10 -10
- package/dist/layout/plugin.js.map +1 -0
- package/dist/notifications/api.d.ts +1 -1
- package/dist/notifications/components/notification-item.d.ts +1 -1
- package/dist/notifications/components/notification-item.js.map +1 -1
- package/dist/notifications/components/notification-list.d.ts +2 -2
- package/dist/notifications/components/notification-list.js +1 -1
- package/dist/notifications/components/notification-list.js.map +1 -1
- package/dist/notifications/components/notifications-echo.d.ts +1 -1
- package/dist/notifications/components/notifications-echo.js.map +1 -1
- package/dist/notifications/components/notifications.d.ts +1 -1
- package/dist/notifications/components/notifications.js +3 -3
- package/dist/notifications/components/notifications.js.map +1 -1
- package/dist/notifications/index.d.ts +2 -1
- package/dist/notifications/index.js +1 -10
- package/dist/notifications/plugin.d.ts +2 -0
- package/dist/notifications/plugin.js +11 -0
- package/dist/notifications/plugin.js.map +1 -0
- package/dist/notifications/store.d.ts +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/page.d.ts +1 -1
- package/dist/provider-base.d.ts +2 -2
- package/dist/provider-base.js +5 -4
- package/dist/provider-base.js.map +1 -1
- package/dist/provider.d.ts +3 -3
- package/dist/realtime/build-effects.d.ts +2 -2
- package/dist/realtime/listeners.d.ts +1 -1
- package/dist/realtime/subscriptions.d.ts +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.js +9 -9
- package/dist/registry.js.map +1 -1
- package/dist/remote/components/data-list.d.ts +2 -2
- package/dist/remote/components/data-list.js +1 -34
- package/dist/remote/components/data-list.js.map +1 -1
- package/dist/remote/index.d.ts +1 -1
- package/dist/remote/index.js +1 -10
- package/dist/remote/plugin.d.ts +2 -0
- package/dist/remote/plugin.js +11 -0
- package/dist/remote/plugin.js.map +1 -0
- package/dist/table/components/bulk-bar.d.ts +1 -1
- package/dist/table/components/bulk-bar.js +4 -4
- package/dist/table/components/bulk-bar.js.map +1 -1
- package/dist/table/components/cells/badge-cell.d.ts +1 -1
- package/dist/table/components/cells/badge-cell.js +1 -1
- package/dist/table/components/cells/badge-cell.js.map +1 -1
- package/dist/table/components/cells/boolean-cell.d.ts +1 -1
- package/dist/table/components/cells/boolean-cell.js.map +1 -1
- package/dist/table/components/cells/icon-cell.d.ts +1 -1
- package/dist/table/components/cells/icon-cell.js.map +1 -1
- package/dist/table/components/cells/image-cell.d.ts +1 -1
- package/dist/table/components/cells/image-cell.js +1 -1
- package/dist/table/components/cells/image-cell.js.map +1 -1
- package/dist/table/components/cells/money-cell.d.ts +1 -1
- package/dist/table/components/cells/money-cell.js +1 -1
- package/dist/table/components/cells/money-cell.js.map +1 -1
- package/dist/table/components/cells/number-cell.d.ts +1 -1
- package/dist/table/components/cells/number-cell.js +1 -1
- package/dist/table/components/cells/number-cell.js.map +1 -1
- package/dist/table/components/cells/stack-cell.d.ts +1 -1
- package/dist/table/components/cells/stack-cell.js +3 -7
- package/dist/table/components/cells/stack-cell.js.map +1 -1
- package/dist/table/components/cells/text-cell.d.ts +1 -1
- package/dist/table/components/cells/text-cell.js +4 -4
- package/dist/table/components/cells/text-cell.js.map +1 -1
- package/dist/table/components/column-filter-control.d.ts +3 -3
- package/dist/table/components/column-filter-control.js +34 -19
- package/dist/table/components/column-filter-control.js.map +1 -1
- package/dist/table/components/column-header.d.ts +1 -1
- package/dist/table/components/column-header.js +7 -7
- package/dist/table/components/column-header.js.map +1 -1
- package/dist/table/components/column-visibility-menu.d.ts +1 -1
- package/dist/table/components/column-visibility-menu.js +3 -3
- package/dist/table/components/column-visibility-menu.js.map +1 -1
- package/dist/table/components/filter-bar.d.ts +9 -7
- package/dist/table/components/filter-bar.js +62 -52
- package/dist/table/components/filter-bar.js.map +1 -1
- package/dist/table/components/filter-controls.d.ts +5 -9
- package/dist/table/components/filter-controls.js +96 -224
- package/dist/table/components/filter-controls.js.map +1 -1
- package/dist/table/components/filter-value-input.d.ts +1 -1
- package/dist/table/components/filter-value-input.js +1 -1
- package/dist/table/components/filter-value-input.js.map +1 -1
- package/dist/table/components/pagination.d.ts +2 -2
- package/dist/table/components/pagination.js.map +1 -1
- package/dist/table/components/sort-bar.d.ts +1 -1
- package/dist/table/components/sort-bar.js +2 -2
- package/dist/table/components/sort-bar.js.map +1 -1
- package/dist/table/components/table-action-node.d.ts +1 -1
- package/dist/table/components/table-action-node.js +1 -1
- package/dist/table/components/table-action-node.js.map +1 -1
- package/dist/table/components/table-cell.d.ts +1 -1
- package/dist/table/components/table-cell.js +2 -2
- package/dist/table/components/table-cell.js.map +1 -1
- package/dist/table/components/table.d.ts +1 -1
- package/dist/table/components/table.js +23 -31
- package/dist/table/components/table.js.map +1 -1
- package/dist/{core → table/hooks}/use-column-visibility.d.ts +5 -3
- package/dist/{core → table/hooks}/use-column-visibility.js +4 -4
- package/dist/table/hooks/use-column-visibility.js.map +1 -0
- package/dist/table/{use-table-selection.js → hooks/use-table-selection.js} +1 -1
- package/dist/table/hooks/use-table-selection.js.map +1 -0
- package/dist/table/{use-table.d.ts → hooks/use-table.d.ts} +7 -7
- package/dist/table/{use-table.js → hooks/use-table.js} +12 -9
- package/dist/table/hooks/use-table.js.map +1 -0
- package/dist/table/index.d.ts +6 -1
- package/dist/table/index.js +5 -11
- package/dist/table/{align.d.ts → lib/align.d.ts} +1 -1
- package/dist/table/{align.js → lib/align.js} +1 -1
- package/dist/table/lib/align.js.map +1 -0
- package/dist/table/{bulk.d.ts → lib/bulk.d.ts} +3 -3
- package/dist/table/{bulk.js → lib/bulk.js} +1 -1
- package/dist/table/lib/bulk.js.map +1 -0
- package/dist/table/{filter-values.d.ts → lib/filter-values.d.ts} +10 -3
- package/dist/table/{filter-values.js → lib/filter-values.js} +14 -4
- package/dist/table/lib/filter-values.js.map +1 -0
- package/dist/table/{format.d.ts → lib/format.d.ts} +2 -2
- package/dist/table/{format.js → lib/format.js} +3 -3
- package/dist/table/lib/format.js.map +1 -0
- package/dist/table/{payload.d.ts → lib/payload.d.ts} +2 -3
- package/dist/table/{payload.js → lib/payload.js} +12 -9
- package/dist/table/lib/payload.js.map +1 -0
- package/dist/table/{query.d.ts → lib/query.d.ts} +3 -3
- package/dist/table/{query.js → lib/query.js} +27 -27
- package/dist/table/lib/query.js.map +1 -0
- package/dist/table/plugin.d.ts +2 -0
- package/dist/table/plugin.js +11 -0
- package/dist/table/plugin.js.map +1 -0
- package/dist/table/registry.d.ts +3 -1
- package/dist/table/registry.js.map +1 -1
- package/dist/table/types.d.ts +57 -7
- package/dist/toast/callout.d.ts +1 -1
- package/dist/toast/callout.js.map +1 -1
- package/dist/toast/index.d.ts +6 -5
- package/dist/toast/index.js +2 -1
- package/dist/toast/toast.d.ts +1 -1
- package/dist/toast/toaster.js.map +1 -1
- package/dist/toast/variant-styles.d.ts +1 -1
- package/dist/types/generated.d.ts +118 -64
- package/dist/types/index.d.ts +1 -1
- package/dist/{action/components → ui}/action-menu-context.js +1 -1
- package/dist/ui/action-menu-context.js.map +1 -0
- package/dist/{form/components/base → ui}/affix-group.d.ts +1 -1
- package/dist/{form/components/base → ui}/affix-group.js +3 -3
- package/dist/ui/affix-group.js.map +1 -0
- package/dist/{core/components → ui}/badge.d.ts +1 -1
- package/dist/{core/components → ui}/badge.js +2 -2
- package/dist/ui/badge.js.map +1 -0
- package/dist/{core/components → ui}/button.d.ts +2 -2
- package/dist/{core/components → ui}/button.js +5 -5
- package/dist/ui/button.js.map +1 -0
- package/dist/{core/components → ui}/card.d.ts +1 -1
- package/dist/{core/components → ui}/card.js +3 -3
- package/dist/ui/card.js.map +1 -0
- package/dist/{core/components → ui}/chart-view.d.ts +1 -1
- package/dist/{core/components → ui}/chart-view.js +5 -5
- package/dist/ui/chart-view.js.map +1 -0
- package/dist/{core/components → ui}/chart.d.ts +1 -1
- package/dist/{core/components → ui}/chart.js +1 -1
- package/dist/ui/chart.js.map +1 -0
- package/dist/{core/components → ui}/checkbox.js +3 -3
- package/dist/ui/checkbox.js.map +1 -0
- package/dist/{core/use-click-behavior.d.ts → ui/click-behavior.d.ts} +17 -19
- package/dist/ui/click-behavior.js +46 -0
- package/dist/ui/click-behavior.js.map +1 -0
- package/dist/{core/components → ui}/collapsible.d.ts +1 -1
- package/dist/{core/components → ui}/collapsible.js +6 -6
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/{core/components → ui}/combobox.d.ts +1 -1
- package/dist/{core/components → ui}/combobox.js +4 -4
- package/dist/ui/combobox.js.map +1 -0
- package/dist/{core/components → ui}/confirm-dialog.d.ts +1 -1
- package/dist/{core/components → ui}/confirm-dialog.js +1 -1
- package/dist/ui/confirm-dialog.js.map +1 -0
- package/dist/{core/components → ui}/control.d.ts +1 -1
- package/dist/{core/components → ui}/control.js +1 -1
- package/dist/ui/control.js.map +1 -0
- package/dist/{clipboard → ui}/copyable-text.d.ts +1 -0
- package/dist/{clipboard → ui}/copyable-text.js +11 -3
- package/dist/ui/copyable-text.js.map +1 -0
- package/dist/{core/components → ui}/dialog.js +3 -3
- package/dist/ui/dialog.js.map +1 -0
- package/dist/{core/components → ui}/dropdown-menu.d.ts +1 -1
- package/dist/{core/components → ui}/dropdown-menu.js +3 -3
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/{core/components → ui}/floating-panel.d.ts +1 -1
- package/dist/{core/components → ui}/floating-panel.js +4 -4
- package/dist/ui/floating-panel.js.map +1 -0
- package/dist/{core/components → ui}/fragment.d.ts +1 -1
- package/dist/{core/components → ui}/fragment.js +5 -5
- package/dist/ui/fragment.js.map +1 -0
- package/dist/{core/components → ui}/grid.d.ts +1 -1
- package/dist/{core/components → ui}/grid.js +3 -3
- package/dist/ui/grid.js.map +1 -0
- package/dist/{core/components → ui}/heading.d.ts +1 -1
- package/dist/{core/components → ui}/heading.js +2 -2
- package/dist/ui/heading.js.map +1 -0
- package/dist/{core/components → ui}/icon.d.ts +1 -1
- package/dist/{core/components → ui}/icon.js +3 -3
- package/dist/ui/icon.js.map +1 -0
- package/dist/ui/index.d.ts +27 -0
- package/dist/ui/index.js +26 -0
- package/dist/{core/components → ui}/info-tooltip.js +3 -3
- package/dist/ui/info-tooltip.js.map +1 -0
- package/dist/{form/components/base → ui}/input-error.js +2 -2
- package/dist/ui/input-error.js.map +1 -0
- package/dist/{form/components/base → ui}/input-otp.js +2 -2
- package/dist/ui/input-otp.js.map +1 -0
- package/dist/{form/components/base → ui}/input.js +3 -3
- package/dist/ui/input.js.map +1 -0
- package/dist/{form/components/base → ui}/label.js +2 -2
- package/dist/ui/label.js.map +1 -0
- package/dist/{core/components → ui}/link.d.ts +1 -1
- package/dist/{core/components → ui}/link.js +8 -7
- package/dist/ui/link.js.map +1 -0
- package/dist/{core/components → ui}/modal.d.ts +1 -1
- package/dist/{core/components → ui}/modal.js +2 -2
- package/dist/ui/modal.js.map +1 -0
- package/dist/{form/components/base → ui}/password-input.js +3 -3
- package/dist/ui/password-input.js.map +1 -0
- package/dist/ui/plugin.d.ts +1 -0
- package/dist/{core/components/index.js → ui/plugin.js} +6 -6
- package/dist/ui/plugin.js.map +1 -0
- package/dist/{core/components → ui}/popover.js +2 -2
- package/dist/ui/popover.js.map +1 -0
- package/dist/{core/components → ui}/raw-block.d.ts +1 -1
- package/dist/{core/components → ui}/raw-block.js +1 -1
- package/dist/ui/raw-block.js.map +1 -0
- package/dist/{core/components → ui}/section.d.ts +1 -1
- package/dist/{core/components → ui}/section.js +6 -6
- package/dist/ui/section.js.map +1 -0
- package/dist/{core/components → ui}/segmented-control.d.ts +1 -1
- package/dist/{core/components → ui}/segmented-control.js +1 -1
- package/dist/ui/segmented-control.js.map +1 -0
- package/dist/{core/components → ui}/segmented-pills.d.ts +1 -1
- package/dist/{core/components → ui}/segmented-pills.js +2 -2
- package/dist/ui/segmented-pills.js.map +1 -0
- package/dist/{core/components → ui}/skeleton.js +2 -2
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/{core/components → ui}/spinner.js +4 -4
- package/dist/ui/spinner.js.map +1 -0
- package/dist/{core/components → ui}/stack.d.ts +1 -1
- package/dist/{core/components → ui}/stack.js +3 -3
- package/dist/ui/stack.js.map +1 -0
- package/dist/{core/components → ui}/tabs.d.ts +1 -1
- package/dist/{core/components → ui}/tabs.js +3 -3
- package/dist/ui/tabs.js.map +1 -0
- package/dist/{core/components → ui}/text.d.ts +1 -1
- package/dist/{core/components → ui}/text.js +4 -4
- package/dist/ui/text.js.map +1 -0
- package/dist/{form/components/base → ui}/textarea.js +3 -3
- package/dist/ui/textarea.js.map +1 -0
- package/dist/{core/components → ui}/tooltip.d.ts +1 -1
- package/dist/{core/components → ui}/tooltip.js +3 -3
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/vite.js +2 -2
- package/dist/vite.js.map +1 -1
- package/package.json +28 -94
- package/resources/icons/align-center.svg +1 -1
- package/resources/icons/align-justify.svg +1 -1
- package/resources/icons/align-left.svg +1 -1
- package/resources/icons/align-right.svg +1 -1
- package/resources/icons/arrow-down.svg +1 -1
- package/resources/icons/arrow-up.svg +1 -1
- package/resources/icons/bell.svg +1 -1
- package/resources/icons/bold.svg +1 -1
- package/resources/icons/calendar.svg +1 -1
- package/resources/icons/check.svg +1 -1
- package/resources/icons/chevron-down.svg +1 -1
- package/resources/icons/chevron-left.svg +1 -1
- package/resources/icons/chevron-right.svg +1 -1
- package/resources/icons/chevrons-up-down.svg +1 -1
- package/resources/icons/circle-alert.svg +1 -1
- package/resources/icons/circle-check.svg +1 -1
- package/resources/icons/circle-help.svg +1 -1
- package/resources/icons/circle-x.svg +1 -1
- package/resources/icons/clock.svg +1 -1
- package/resources/icons/code.svg +1 -1
- package/resources/icons/columns-3.svg +1 -1
- package/resources/icons/copy.svg +1 -1
- package/resources/icons/external-link.svg +1 -1
- package/resources/icons/eye-off.svg +1 -1
- package/resources/icons/eye.svg +1 -1
- package/resources/icons/filter.svg +1 -1
- package/resources/icons/heading-1.svg +1 -1
- package/resources/icons/heading-2.svg +1 -1
- package/resources/icons/heading-3.svg +1 -1
- package/resources/icons/highlighter.svg +1 -1
- package/resources/icons/info.svg +1 -1
- package/resources/icons/italic.svg +1 -1
- package/resources/icons/layout-dashboard.svg +1 -1
- package/resources/icons/link.svg +1 -1
- package/resources/icons/list-ordered.svg +1 -1
- package/resources/icons/list.svg +1 -1
- package/resources/icons/loader-2.svg +1 -1
- package/resources/icons/minus.svg +1 -1
- package/resources/icons/more-horizontal.svg +1 -1
- package/resources/icons/panel-left.svg +1 -1
- package/resources/icons/pencil-line.svg +1 -1
- package/resources/icons/pencil.svg +1 -1
- package/resources/icons/plus.svg +1 -1
- package/resources/icons/quote.svg +1 -1
- package/resources/icons/rotate-ccw.svg +1 -1
- package/resources/icons/rows-3.svg +1 -1
- package/resources/icons/search.svg +1 -1
- package/resources/icons/send.svg +1 -1
- package/resources/icons/settings.svg +1 -1
- package/resources/icons/smile.svg +1 -1
- package/resources/icons/strikethrough.svg +1 -1
- package/resources/icons/table.svg +1 -1
- package/resources/icons/trash-2.svg +1 -1
- package/resources/icons/underline.svg +1 -1
- package/resources/icons/x.svg +1 -1
- package/dist/action/components/action-menu-context.js.map +0 -1
- package/dist/action/index.js.map +0 -1
- package/dist/action/run-action.js.map +0 -1
- package/dist/action/use-action.js.map +0 -1
- package/dist/chat/index.js.map +0 -1
- package/dist/chat/transport.js.map +0 -1
- package/dist/chat/use-chat.js.map +0 -1
- package/dist/clipboard/copyable-text.js.map +0 -1
- package/dist/core/column-sizing.js.map +0 -1
- package/dist/core/components/badge.js.map +0 -1
- package/dist/core/components/button.js.map +0 -1
- package/dist/core/components/card.js.map +0 -1
- package/dist/core/components/chart-view.js.map +0 -1
- package/dist/core/components/chart.js.map +0 -1
- package/dist/core/components/checkbox.js.map +0 -1
- package/dist/core/components/collapsible.js.map +0 -1
- package/dist/core/components/combobox.js.map +0 -1
- package/dist/core/components/confirm-dialog.js.map +0 -1
- package/dist/core/components/control.js.map +0 -1
- package/dist/core/components/dialog.js.map +0 -1
- package/dist/core/components/dropdown-menu.js.map +0 -1
- package/dist/core/components/floating-panel.js.map +0 -1
- package/dist/core/components/fragment.js.map +0 -1
- package/dist/core/components/grid.js.map +0 -1
- package/dist/core/components/heading.js.map +0 -1
- package/dist/core/components/icon.js.map +0 -1
- package/dist/core/components/index.d.ts +0 -1
- package/dist/core/components/index.js.map +0 -1
- package/dist/core/components/info-tooltip.js.map +0 -1
- package/dist/core/components/link.js.map +0 -1
- package/dist/core/components/modal.js.map +0 -1
- package/dist/core/components/popover.js.map +0 -1
- package/dist/core/components/raw-block.js.map +0 -1
- package/dist/core/components/section.js.map +0 -1
- package/dist/core/components/segmented-control.js.map +0 -1
- package/dist/core/components/segmented-pills.js.map +0 -1
- package/dist/core/components/skeleton.js.map +0 -1
- package/dist/core/components/spinner.js.map +0 -1
- package/dist/core/components/stack.js.map +0 -1
- package/dist/core/components/tabs.js.map +0 -1
- package/dist/core/components/text.js.map +0 -1
- package/dist/core/components/tooltip.js.map +0 -1
- package/dist/core/use-click-behavior.js +0 -46
- package/dist/core/use-click-behavior.js.map +0 -1
- package/dist/core/use-column-resizing.js.map +0 -1
- package/dist/core/use-column-visibility.js.map +0 -1
- package/dist/events/event-bridge.js.map +0 -1
- package/dist/form/components/base/affix-group.js.map +0 -1
- package/dist/form/components/base/input-error.js.map +0 -1
- package/dist/form/components/base/input-otp.js.map +0 -1
- package/dist/form/components/base/input.js.map +0 -1
- package/dist/form/components/base/label.js.map +0 -1
- package/dist/form/components/base/password-input.js.map +0 -1
- package/dist/form/components/base/textarea.js.map +0 -1
- package/dist/form/components/conditions.js.map +0 -1
- package/dist/form/components/context.js.map +0 -1
- package/dist/form/components/field-props.js.map +0 -1
- package/dist/form/components/field-scope.js.map +0 -1
- package/dist/form/components/fields/block-add-menu.js.map +0 -1
- package/dist/form/components/form-path.js.map +0 -1
- package/dist/form/components/form-transport.js +0 -30
- package/dist/form/components/form-transport.js.map +0 -1
- package/dist/form/components/override-keys.js +0 -12
- package/dist/form/components/override-keys.js.map +0 -1
- package/dist/form/components/prefill-context.js.map +0 -1
- package/dist/form/components/prefill-targets.js.map +0 -1
- package/dist/form/components/resolved-nodes.js.map +0 -1
- package/dist/form/components/row-layout-context.js.map +0 -1
- package/dist/form/components/use-controlled-field.js.map +0 -1
- package/dist/form/components/use-dependent-field.d.ts +0 -3
- package/dist/form/components/use-dependent-field.js.map +0 -1
- package/dist/form/components/use-field-commit.js.map +0 -1
- package/dist/form/components/use-form-resolver.js.map +0 -1
- package/dist/form/components/use-seed-default.js.map +0 -1
- package/dist/form/components/values.js +0 -52
- package/dist/form/components/values.js.map +0 -1
- package/dist/form/index.js.map +0 -1
- package/dist/layout/breadcrumbs.js.map +0 -1
- package/dist/layout/callouts.js.map +0 -1
- package/dist/layout/components.d.ts +0 -1
- package/dist/layout/components.js.map +0 -1
- package/dist/layout/context.js.map +0 -1
- package/dist/layout/dropdown.js.map +0 -1
- package/dist/layout/menu-item.js.map +0 -1
- package/dist/layout/menu.js.map +0 -1
- package/dist/layout/outlet.js.map +0 -1
- package/dist/layout/popover.js.map +0 -1
- package/dist/layout/schema-layout.js.map +0 -1
- package/dist/layout/sidebar.js.map +0 -1
- package/dist/layout/topbar.js.map +0 -1
- package/dist/notifications/index.js.map +0 -1
- package/dist/remote/index.js.map +0 -1
- package/dist/svg-sprite-client/index.d.ts +0 -1
- package/dist/svg-sprite-client/index.js +0 -0
- package/dist/table/align.js.map +0 -1
- package/dist/table/bulk.js.map +0 -1
- package/dist/table/components/filter-stack-bar.d.ts +0 -7
- package/dist/table/components/filter-stack-bar.js +0 -38
- package/dist/table/components/filter-stack-bar.js.map +0 -1
- package/dist/table/filter-values.js.map +0 -1
- package/dist/table/format.js.map +0 -1
- package/dist/table/index.js.map +0 -1
- package/dist/table/payload.js.map +0 -1
- package/dist/table/query.js.map +0 -1
- package/dist/table/use-table-selection.js.map +0 -1
- package/dist/table/use-table.js.map +0 -1
- package/dist/types/generated.js +0 -0
- package/dist/types/index.js +0 -0
- /package/dist/form/{components → hooks}/field-scope.d.ts +0 -0
- /package/dist/form/{components → hooks}/prefill-context.d.ts +0 -0
- /package/dist/form/{components → hooks}/row-layout-context.d.ts +0 -0
- /package/dist/form/{components → hooks}/use-seed-default.d.ts +0 -0
- /package/dist/form/{components → lib}/form-path.d.ts +0 -0
- /package/dist/form/{components → lib}/override-keys.d.ts +0 -0
- /package/dist/form/{components/types.js → types.js} +0 -0
- /package/dist/layout/{popover.d.ts → components/popover.d.ts} +0 -0
- /package/dist/layout/{schema-layout.d.ts → components/schema-layout.d.ts} +0 -0
- /package/dist/table/{use-table-selection.d.ts → hooks/use-table-selection.d.ts} +0 -0
- /package/dist/{action/components → ui}/action-menu-context.d.ts +0 -0
- /package/dist/{core/components → ui}/checkbox.d.ts +0 -0
- /package/dist/{core/components → ui}/dialog.d.ts +0 -0
- /package/dist/{core/components → ui}/info-tooltip.d.ts +0 -0
- /package/dist/{form/components/base → ui}/input-error.d.ts +0 -0
- /package/dist/{form/components/base → ui}/input-otp.d.ts +0 -0
- /package/dist/{form/components/base → ui}/input.d.ts +0 -0
- /package/dist/{form/components/base → ui}/label.d.ts +0 -0
- /package/dist/{form/components/base → ui}/password-input.d.ts +0 -0
- /package/dist/{core/components → ui}/popover.d.ts +0 -0
- /package/dist/{core/components → ui}/skeleton.d.ts +0 -0
- /package/dist/{core/components → ui}/spinner.d.ts +0 -0
- /package/dist/{form/components/base → ui}/textarea.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RenderNode } from "
|
|
1
|
+
import { RenderNode } from "../../core/renderer.js";
|
|
2
2
|
import { Popover } from "./popover.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
//#region resources/js/layout/dropdown.tsx
|
|
4
|
+
//#region resources/js/layout/components/dropdown.tsx
|
|
5
5
|
var DropdownComponent = ({ children, node }) => {
|
|
6
6
|
const testId = node.key ?? "dropdown";
|
|
7
7
|
return /* @__PURE__ */ jsx(Popover, {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.js","names":[],"sources":["../../../resources/js/layout/components/dropdown.tsx"],"sourcesContent":["import type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { RenderNode } from \"@lattice-php/lattice/core/renderer\";\nimport { Popover } from \"./popover\";\n\nconst DropdownComponent: RendererComponent<\"dropdown\"> = ({ children, node }) => {\n const testId = node.key ?? \"dropdown\";\n\n return (\n <Popover\n placement={node.props.placement}\n testId={testId}\n triggerClassName=\"w-auto\"\n trigger={\n <span className=\"flex min-w-0 items-center rounded-lt-sm px-2 py-1.5 text-sm hover:bg-lt-muted\">\n {node.props.trigger.map((triggerNode, index) => (\n <RenderNode\n key={triggerNode.key ?? `${triggerNode.type}-${index}`}\n node={triggerNode}\n />\n ))}\n </span>\n }\n >\n <ul className=\"flex flex-col gap-1\">{children}</ul>\n </Popover>\n );\n};\n\nexport default DropdownComponent;\n"],"mappings":";;;;AAIA,IAAM,qBAAoD,EAAE,UAAU,WAAW;CAC/E,MAAM,SAAS,KAAK,OAAO;CAE3B,OACE,oBAAC,SAAD;EACE,WAAW,KAAK,MAAM;EACd;EACR,kBAAiB;EACjB,SACE,oBAAC,QAAD;GAAM,WAAU;aACb,KAAK,MAAM,QAAQ,KAAK,aAAa,UACpC,oBAAC,YAAD,EAEE,MAAM,YACP,GAFM,YAAY,OAAO,GAAG,YAAY,KAAK,GAAG,OAEhD,CACF;EACG,CAAA;YAGR,oBAAC,MAAD;GAAI,WAAU;GAAuB;EAAa,CAAA;CAC3C,CAAA;AAEb"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { cn } from "
|
|
2
|
-
import { Icon } from "
|
|
3
|
-
import { IconRenderer } from "
|
|
4
|
-
import { useCollapsed } from "
|
|
5
|
-
import { prefixedNodeTestId } from "
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { Icon } from "../../icons/sprite.js";
|
|
3
|
+
import { IconRenderer } from "../../icons/icon-renderer.js";
|
|
4
|
+
import { useCollapsed } from "../../core/collapsed-context.js";
|
|
5
|
+
import { prefixedNodeTestId } from "../../core/test-id.js";
|
|
6
6
|
import { Popover } from "./popover.js";
|
|
7
|
-
import { ActionTrigger, useClickBehavior } from "
|
|
7
|
+
import { ActionTrigger, useClickBehavior } from "../../ui/click-behavior.js";
|
|
8
8
|
import { Link, usePage } from "@inertiajs/react";
|
|
9
9
|
import { useState } from "react";
|
|
10
10
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
//#region resources/js/layout/menu-item.tsx
|
|
11
|
+
//#region resources/js/layout/components/menu-item.tsx
|
|
12
12
|
var rowClass = "flex items-center gap-2 rounded-lt-sm px-3 py-2 text-base font-medium text-lt-fg transition-colors hover:bg-lt-muted";
|
|
13
13
|
function MenuAffix({ affix, className }) {
|
|
14
14
|
if (affix.icon) return /* @__PURE__ */ jsx(IconRenderer, {
|
|
@@ -25,7 +25,8 @@ function schemaContainsPath(schema, path) {
|
|
|
25
25
|
}
|
|
26
26
|
var MenuItemComponent = ({ children, node }) => {
|
|
27
27
|
const collapsed = useCollapsed();
|
|
28
|
-
const { icon, label, prefix, suffix } = node.props;
|
|
28
|
+
const { icon, label: rawLabel, prefix, suffix } = node.props;
|
|
29
|
+
const label = rawLabel ?? "";
|
|
29
30
|
const iconOnly = Boolean(icon);
|
|
30
31
|
const flyoutIcon = icon ?? prefix?.icon ?? null;
|
|
31
32
|
const currentPath = usePage().url.split("?")[0];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-item.js","names":[],"sources":["../../../resources/js/layout/components/menu-item.tsx"],"sourcesContent":["import { Link, usePage } from \"@inertiajs/react\";\nimport { useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { prefixedNodeTestId } from \"@lattice-php/lattice/core/test-id\";\nimport type { RendererComponent, Schema } from \"@lattice-php/lattice/core/types\";\nimport { Icon, IconRenderer } from \"@lattice-php/lattice/icons\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport type { Affix } from \"@lattice-php/lattice/types/generated\";\nimport {\n ActionTrigger,\n type TriggerState,\n useClickBehavior,\n} from \"@lattice-php/lattice/ui/click-behavior\";\nimport { useSidebarCollapsed } from \"@lattice-php/lattice/layout/hooks/context\";\nimport { Popover } from \"./popover\";\n\nconst rowClass =\n \"flex items-center gap-2 rounded-lt-sm px-3 py-2 text-base font-medium text-lt-fg transition-colors hover:bg-lt-muted\";\n\nfunction MenuAffix({ affix, className }: { affix: Affix; className?: string }) {\n if (affix.icon) {\n return <IconRenderer className={cn(\"size-lt-icon-md shrink-0\", className)} icon={affix.icon} />;\n }\n\n return <span className={cn(\"shrink-0 text-sm text-lt-muted-fg\", className)}>{affix.text}</span>;\n}\n\nfunction schemaContainsPath(schema: Schema | undefined, path: string): boolean {\n return (schema ?? []).some(\n (child) => child.props?.href === path || schemaContainsPath(child.schema, path),\n );\n}\n\nconst MenuItemComponent: RendererComponent<\"menu-item\"> = ({ children, node }) => {\n const collapsed = useSidebarCollapsed();\n const { icon, label: rawLabel, prefix, suffix } = node.props;\n const label = rawLabel ?? \"\";\n const iconOnly = Boolean(icon);\n const flyoutIcon = icon ?? prefix?.icon ?? null;\n const currentPath = usePage().url.split(\"?\")[0];\n const testId = prefixedNodeTestId(\"menu\", node);\n const behavior = useClickBehavior(node.props);\n\n const content = icon ? (\n <IconRenderer className=\"size-lt-icon-md shrink-0\" icon={icon} />\n ) : (\n <>\n {prefix ? <MenuAffix affix={prefix} /> : null}\n {collapsed ? (\n <span\n className=\"pointer-events-none absolute top-1/2 left-full z-lt-popover ml-2 hidden -translate-y-1/2 rounded-lt-sm border border-lt-border bg-lt-popover px-2 py-1 text-sm whitespace-nowrap text-lt-popover-fg shadow-lt-md group-hover:block\"\n role=\"tooltip\"\n >\n {label}\n </span>\n ) : (\n <span>{label}</span>\n )}\n {suffix ? <MenuAffix affix={suffix} className=\"ml-auto\" /> : null}\n </>\n );\n\n const rowClassName = cn(\n rowClass,\n \"w-full\",\n collapsed && \"group relative justify-center\",\n iconOnly && \"justify-center\",\n );\n\n const triggerButton = ({ onClick, processing }: TriggerState) => (\n <button\n aria-label={collapsed || iconOnly ? label : undefined}\n className={rowClassName}\n data-test={testId}\n disabled={processing}\n onClick={onClick}\n type=\"button\"\n >\n {content}\n </button>\n );\n\n if (behavior.kind === \"action\") {\n return (\n <li>\n <ActionTrigger action={behavior.action}>{triggerButton}</ActionTrigger>\n </li>\n );\n }\n\n if (behavior.kind === \"effects\") {\n return <li>{triggerButton({ onClick: behavior.onClick, processing: false })}</li>;\n }\n\n if (behavior.kind === \"navigate\") {\n const active = currentPath === behavior.href;\n\n return (\n <li>\n <Link\n aria-current={active ? \"page\" : undefined}\n aria-label={collapsed || iconOnly ? label : undefined}\n as={behavior.method === \"get\" ? undefined : \"button\"}\n className={cn(rowClassName, active && \"bg-lt-muted font-medium\")}\n data-test={testId}\n href={behavior.href}\n method={behavior.method}\n >\n {content}\n </Link>\n </li>\n );\n }\n\n if (!children) {\n return collapsed ? null : (\n <li>\n <span className=\"flex items-center gap-2 px-3 py-2 text-xs font-semibold tracking-wide text-lt-muted-fg uppercase\">\n {content}\n </span>\n </li>\n );\n }\n\n if (collapsed) {\n return (\n <FlyoutGroup icon={flyoutIcon} label={label} testId={testId}>\n {children}\n </FlyoutGroup>\n );\n }\n\n return (\n <CollapsibleItem\n content={content}\n defaultOpen={schemaContainsPath(node.schema, currentPath)}\n testId={testId}\n >\n {children}\n </CollapsibleItem>\n );\n};\n\nfunction CollapsibleItem({\n children,\n content,\n defaultOpen,\n testId,\n}: {\n children: ReactNode;\n content: ReactNode;\n defaultOpen: boolean;\n testId?: string;\n}) {\n const [open, setOpen] = useState(defaultOpen);\n\n return (\n <li>\n <button\n aria-expanded={open}\n className={cn(rowClass, \"w-full\")}\n data-test={testId}\n onClick={() => setOpen((value) => !value)}\n type=\"button\"\n >\n {content}\n <Icon\n name=\"chevron-right\"\n className={cn(\n \"ml-auto size-lt-icon-md shrink-0 transition-transform\",\n open && \"rotate-90\",\n )}\n />\n </button>\n {open ? <ul className=\"mt-1 flex flex-col gap-1 pl-3\">{children}</ul> : null}\n </li>\n );\n}\n\nfunction FlyoutGroup({\n children,\n icon,\n label,\n testId,\n}: {\n children: ReactNode;\n icon?: string | null;\n label: string;\n testId?: string;\n}) {\n return (\n <li>\n <Popover\n className=\"min-w-48\"\n placement=\"right\"\n testId={testId}\n trigger={\n icon ? (\n <IconRenderer className=\"size-lt-icon-md shrink-0\" icon={icon} />\n ) : (\n <span>{label}</span>\n )\n }\n triggerClassName={cn(rowClass, \"justify-center\")}\n triggerLabel={label}\n >\n <ul className=\"flex flex-col gap-1\">\n <li className=\"px-3 py-1.5 text-xs font-semibold tracking-wide text-lt-muted-fg uppercase\">\n {label}\n </li>\n {children}\n </ul>\n </Popover>\n </li>\n );\n}\n\nexport default MenuItemComponent;\n"],"mappings":";;;;;;;;;;;AAgBA,IAAM,WACJ;AAEF,SAAS,UAAU,EAAE,OAAO,aAAmD;CAC7E,IAAI,MAAM,MACR,OAAO,oBAAC,cAAD;EAAc,WAAW,GAAG,4BAA4B,SAAS;EAAG,MAAM,MAAM;CAAO,CAAA;CAGhG,OAAO,oBAAC,QAAD;EAAM,WAAW,GAAG,qCAAqC,SAAS;YAAI,MAAM;CAAW,CAAA;AAChG;AAEA,SAAS,mBAAmB,QAA4B,MAAuB;CAC7E,QAAQ,UAAU,CAAC,GAAG,MACnB,UAAU,MAAM,OAAO,SAAS,QAAQ,mBAAmB,MAAM,QAAQ,IAAI,CAChF;AACF;AAEA,IAAM,qBAAqD,EAAE,UAAU,WAAW;CAChF,MAAM,YAAY,aAAoB;CACtC,MAAM,EAAE,MAAM,OAAO,UAAU,QAAQ,WAAW,KAAK;CACvD,MAAM,QAAQ,YAAY;CAC1B,MAAM,WAAW,QAAQ,IAAI;CAC7B,MAAM,aAAa,QAAQ,QAAQ,QAAQ;CAC3C,MAAM,cAAc,QAAQ,EAAE,IAAI,MAAM,GAAG,EAAE;CAC7C,MAAM,SAAS,mBAAmB,QAAQ,IAAI;CAC9C,MAAM,WAAW,iBAAiB,KAAK,KAAK;CAE5C,MAAM,UAAU,OACd,oBAAC,cAAD;EAAc,WAAU;EAAiC;CAAO,CAAA,IAEhE,qBAAA,YAAA,EAAA,UAAA;EACG,SAAS,oBAAC,WAAD,EAAW,OAAO,OAAS,CAAA,IAAI;EACxC,YACC,oBAAC,QAAD;GACE,WAAU;GACV,MAAK;aAEJ;EACG,CAAA,IAEN,oBAAC,QAAD,EAAA,UAAO,MAAY,CAAA;EAEpB,SAAS,oBAAC,WAAD;GAAW,OAAO;GAAQ,WAAU;EAAW,CAAA,IAAI;CAC7D,EAAA,CAAA;CAGJ,MAAM,eAAe,GACnB,UACA,UACA,aAAa,iCACb,YAAY,gBACd;CAEA,MAAM,iBAAiB,EAAE,SAAS,iBAChC,oBAAC,UAAD;EACE,cAAY,aAAa,WAAW,QAAQ,KAAA;EAC5C,WAAW;EACX,aAAW;EACX,UAAU;EACD;EACT,MAAK;YAEJ;CACK,CAAA;CAGV,IAAI,SAAS,SAAS,UACpB,OACE,oBAAC,MAAD,EAAA,UACE,oBAAC,eAAD;EAAe,QAAQ,SAAS;YAAS;CAA6B,CAAA,EACpE,CAAA;CAIR,IAAI,SAAS,SAAS,WACpB,OAAO,oBAAC,MAAD,EAAA,UAAK,cAAc;EAAE,SAAS,SAAS;EAAS,YAAY;CAAM,CAAC,EAAM,CAAA;CAGlF,IAAI,SAAS,SAAS,YAAY;EAChC,MAAM,SAAS,gBAAgB,SAAS;EAExC,OACE,oBAAC,MAAD,EAAA,UACE,oBAAC,MAAD;GACE,gBAAc,SAAS,SAAS,KAAA;GAChC,cAAY,aAAa,WAAW,QAAQ,KAAA;GAC5C,IAAI,SAAS,WAAW,QAAQ,KAAA,IAAY;GAC5C,WAAW,GAAG,cAAc,UAAU,yBAAyB;GAC/D,aAAW;GACX,MAAM,SAAS;GACf,QAAQ,SAAS;aAEhB;EACG,CAAA,EACJ,CAAA;CAER;CAEA,IAAI,CAAC,UACH,OAAO,YAAY,OACjB,oBAAC,MAAD,EAAA,UACE,oBAAC,QAAD;EAAM,WAAU;YACb;CACG,CAAA,EACJ,CAAA;CAIR,IAAI,WACF,OACE,oBAAC,aAAD;EAAa,MAAM;EAAmB;EAAe;EAClD;CACU,CAAA;CAIjB,OACE,oBAAC,iBAAD;EACW;EACT,aAAa,mBAAmB,KAAK,QAAQ,WAAW;EAChD;EAEP;CACc,CAAA;AAErB;AAEA,SAAS,gBAAgB,EACvB,UACA,SACA,aACA,UAMC;CACD,MAAM,CAAC,MAAM,WAAW,SAAS,WAAW;CAE5C,OACE,qBAAC,MAAD,EAAA,UAAA,CACE,qBAAC,UAAD;EACE,iBAAe;EACf,WAAW,GAAG,UAAU,QAAQ;EAChC,aAAW;EACX,eAAe,SAAS,UAAU,CAAC,KAAK;EACxC,MAAK;YALP,CAOG,SACD,oBAAC,MAAD;GACE,MAAK;GACL,WAAW,GACT,yDACA,QAAQ,WACV;EACD,CAAA,CACK;KACP,OAAO,oBAAC,MAAD;EAAI,WAAU;EAAiC;CAAa,CAAA,IAAI,IACtE,EAAA,CAAA;AAER;AAEA,SAAS,YAAY,EACnB,UACA,MACA,OACA,UAMC;CACD,OACE,oBAAC,MAAD,EAAA,UACE,oBAAC,SAAD;EACE,WAAU;EACV,WAAU;EACF;EACR,SACE,OACE,oBAAC,cAAD;GAAc,WAAU;GAAiC;EAAO,CAAA,IAEhE,oBAAC,QAAD,EAAA,UAAO,MAAY,CAAA;EAGvB,kBAAkB,GAAG,UAAU,gBAAgB;EAC/C,cAAc;YAEd,qBAAC,MAAD;GAAI,WAAU;aAAd,CACE,oBAAC,MAAD;IAAI,WAAU;cACX;GACC,CAAA,GACH,QACC;;CACG,CAAA,EACP,CAAA;AAER"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { nodeIdentity } from "
|
|
1
|
+
import { nodeIdentity } from "../../core/test-id.js";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
//#region resources/js/layout/menu.tsx
|
|
3
|
+
//#region resources/js/layout/components/menu.tsx
|
|
4
4
|
var MenuComponent = ({ children, node }) => /* @__PURE__ */ jsx("nav", {
|
|
5
5
|
"data-lattice-component": nodeIdentity(node),
|
|
6
6
|
children: /* @__PURE__ */ jsx("ul", {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","names":[],"sources":["../../../resources/js/layout/components/menu.tsx"],"sourcesContent":["import type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { nodeIdentity } from \"@lattice-php/lattice/core/test-id\";\n\nconst MenuComponent: RendererComponent<\"menu\"> = ({ children, node }) => (\n <nav data-lattice-component={nodeIdentity(node)}>\n <ul className=\"flex flex-col gap-1\">{children}</ul>\n </nav>\n);\n\nexport default MenuComponent;\n"],"mappings":";;;AAGA,IAAM,iBAA4C,EAAE,UAAU,WAC5D,oBAAC,OAAD;CAAK,0BAAwB,aAAa,IAAI;WAC5C,oBAAC,MAAD;EAAI,WAAU;EAAuB;CAAa,CAAA;AAC/C,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { OutletContext } from "
|
|
1
|
+
import { OutletContext } from "../hooks/context.js";
|
|
2
2
|
import { useContext } from "react";
|
|
3
3
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
4
|
-
//#region resources/js/layout/outlet.tsx
|
|
4
|
+
//#region resources/js/layout/components/outlet.tsx
|
|
5
5
|
/**
|
|
6
6
|
* Renders the active page at the position the layout schema places it.
|
|
7
7
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outlet.js","names":[],"sources":["../../../resources/js/layout/components/outlet.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { OutletContext } from \"@lattice-php/lattice/layout/hooks/context\";\n\n/**\n * Renders the active page at the position the layout schema places it.\n */\nconst OutletComponent: RendererComponent<\"outlet\"> = () => {\n return <>{useContext(OutletContext)}</>;\n};\n\nexport default OutletComponent;\n"],"mappings":";;;;;;;AAOA,IAAM,wBAAqD;CACzD,OAAO,oBAAA,YAAA,EAAA,UAAG,WAAW,aAAa,EAAI,CAAA;AACxC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { cn } from "
|
|
2
|
-
import { CollapsedContext } from "
|
|
3
|
-
import { Popover as Popover$1, PopoverContent, PopoverTrigger } from "
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { CollapsedContext } from "../../core/collapsed-context.js";
|
|
3
|
+
import { Popover as Popover$1, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
|
|
4
4
|
import { usePage } from "@inertiajs/react";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
//#region resources/js/layout/popover.tsx
|
|
7
|
+
//#region resources/js/layout/components/popover.tsx
|
|
8
8
|
/**
|
|
9
9
|
* A navigation-aware popover for the sidebar: it wraps the shared popover
|
|
10
10
|
* primitive (so positioning and dismissal stay consistent with the rest of the
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","names":[],"sources":["../../../resources/js/layout/components/popover.tsx"],"sourcesContent":["import { usePage } from \"@inertiajs/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n Popover as PopoverRoot,\n PopoverContent,\n PopoverTrigger,\n} from \"@lattice-php/lattice/ui/popover\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport { CollapsedContext } from \"@lattice-php/lattice/core/collapsed-context\";\n\n/**\n * A navigation-aware popover for the sidebar: it wraps the shared popover\n * primitive (so positioning and dismissal stay consistent with the rest of the\n * app) and closes itself on every Inertia navigation. Items render expanded\n * regardless of the sidebar's collapsed state.\n */\nexport function Popover({\n align = \"start\",\n children,\n className,\n placement = \"bottom\",\n testId,\n trigger,\n triggerClassName,\n triggerLabel,\n}: {\n align?: \"start\" | \"end\";\n children: ReactNode;\n className?: string;\n placement?: \"bottom\" | \"right\" | \"top\";\n testId?: string;\n trigger: ReactNode;\n triggerClassName?: string;\n triggerLabel?: string;\n}) {\n const [open, setOpen] = useState(false);\n const url = usePage().url;\n\n useEffect(() => setOpen(false), [url]);\n\n return (\n <PopoverRoot open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n aria-label={triggerLabel}\n className={cn(\"w-full\", triggerClassName)}\n data-test={testId}\n title={triggerLabel}\n type=\"button\"\n >\n {trigger}\n </button>\n </PopoverTrigger>\n <PopoverContent\n align={align}\n className={cn(\"min-w-56 p-1\", className)}\n role=\"menu\"\n side={placement}\n >\n <CollapsedContext.Provider value={false}>{children}</CollapsedContext.Provider>\n </PopoverContent>\n </PopoverRoot>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAiBA,SAAgB,QAAQ,EACtB,QAAQ,SACR,UACA,WACA,YAAY,UACZ,QACA,SACA,kBACA,gBAUC;CACD,MAAM,CAAC,MAAM,WAAW,SAAS,KAAK;CACtC,MAAM,MAAM,QAAQ,EAAE;CAEtB,gBAAgB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC;CAErC,OACE,qBAAC,WAAD;EAAmB;EAAM,cAAc;YAAvC,CACE,oBAAC,gBAAD;GAAgB,SAAA;aACd,oBAAC,UAAD;IACE,cAAY;IACZ,WAAW,GAAG,UAAU,gBAAgB;IACxC,aAAW;IACX,OAAO;IACP,MAAK;cAEJ;GACK,CAAA;EACM,CAAA,GAChB,oBAAC,gBAAD;GACS;GACP,WAAW,GAAG,gBAAgB,SAAS;GACvC,MAAK;GACL,MAAM;aAEN,oBAAC,iBAAiB,UAAlB;IAA2B,OAAO;IAAQ;GAAoC,CAAA;EAChE,CAAA,CACL;;AAEjB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Renderer } from "
|
|
2
|
-
import { OutletContext } from "
|
|
1
|
+
import { Renderer } from "../../core/renderer.js";
|
|
2
|
+
import { OutletContext } from "../hooks/context.js";
|
|
3
3
|
import { usePage } from "@inertiajs/react";
|
|
4
4
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
5
|
-
//#region resources/js/layout/schema-layout.tsx
|
|
5
|
+
//#region resources/js/layout/components/schema-layout.tsx
|
|
6
6
|
/**
|
|
7
7
|
* Persistent Inertia layout that renders a server-composed layout schema and
|
|
8
8
|
* exposes the active page (`children`) to the Outlet via context. The same
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-layout.js","names":[],"sources":["../../../resources/js/layout/components/schema-layout.tsx"],"sourcesContent":["import { usePage } from \"@inertiajs/react\";\nimport type { ReactNode } from \"react\";\nimport { Renderer } from \"@lattice-php/lattice/core/renderer\";\nimport type { PagePayload } from \"@lattice-php/lattice/core/types\";\nimport { OutletContext } from \"@lattice-php/lattice/layout/hooks/context\";\n\n/**\n * Persistent Inertia layout that renders a server-composed layout schema and\n * exposes the active page (`children`) to the Outlet via context. The same\n * component instance is reused across navigations that share a layout, so\n * shell state (open sidebar, scroll position) survives page visits.\n */\nexport default function SchemaLayout({ children }: { children: ReactNode }) {\n const lattice = usePage().props.lattice as PagePayload;\n const layout = lattice.layout;\n\n if (!layout) {\n return <>{children}</>;\n }\n\n return (\n <OutletContext.Provider value={children}>\n <Renderer nodes={layout.schema} />\n </OutletContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAwB,aAAa,EAAE,YAAqC;CAE1E,MAAM,SADU,QAAQ,EAAE,MAAM,QACT;CAEvB,IAAI,CAAC,QACH,OAAO,oBAAA,UAAA,EAAG,SAAW,CAAA;CAGvB,OACE,oBAAC,cAAc,UAAf;EAAwB,OAAO;YAC7B,oBAAC,UAAD,EAAU,OAAO,OAAO,OAAS,CAAA;CACX,CAAA;AAE5B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LATTICE_EVENT } from "
|
|
2
|
-
import { cn } from "
|
|
3
|
-
import { CollapsedContext } from "
|
|
4
|
-
import { nodeIdentity } from "
|
|
1
|
+
import { LATTICE_EVENT } from "../../events/event-names.js";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { CollapsedContext } from "../../core/collapsed-context.js";
|
|
4
|
+
import { nodeIdentity } from "../../core/test-id.js";
|
|
5
5
|
import { router } from "@inertiajs/react";
|
|
6
6
|
import { useEffect, useState } from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
//#region resources/js/layout/sidebar.tsx
|
|
8
|
+
//#region resources/js/layout/components/sidebar.tsx
|
|
9
9
|
var DESKTOP_QUERY = "(min-width: 768px)";
|
|
10
10
|
function readStored(key, remember) {
|
|
11
11
|
if (!remember || typeof window === "undefined") return false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","names":[],"sources":["../../../resources/js/layout/components/sidebar.tsx"],"sourcesContent":["import { router } from \"@inertiajs/react\";\nimport { useEffect, useState } from \"react\";\nimport type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { CollapsedContext } from \"@lattice-php/lattice/core/collapsed-context\";\nimport { LATTICE_EVENT } from \"@lattice-php/lattice/events/event-names\";\nimport { nodeIdentity } from \"@lattice-php/lattice/core/test-id\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\n\nconst DESKTOP_QUERY = \"(min-width: 768px)\";\n\nfunction readStored(key: string, remember: boolean): boolean {\n if (!remember || typeof window === \"undefined\") {\n return false;\n }\n\n return window.localStorage.getItem(key) === \"true\";\n}\n\nfunction matchesTarget(event: Event, identity: string | undefined): boolean {\n const target = (event as CustomEvent<{ target?: string }>).detail?.target;\n\n return target == null || target === identity;\n}\n\nfunction useIsDesktop(): boolean {\n const supported = () => typeof window !== \"undefined\" && typeof window.matchMedia === \"function\";\n const [isDesktop, setIsDesktop] = useState(() =>\n supported() ? window.matchMedia(DESKTOP_QUERY).matches : true,\n );\n\n useEffect(() => {\n if (!supported()) {\n return;\n }\n\n const query = window.matchMedia(DESKTOP_QUERY);\n const update = (): void => setIsDesktop(query.matches);\n\n update();\n query.addEventListener(\"change\", update);\n\n return () => query.removeEventListener(\"change\", update);\n }, []);\n\n return isDesktop;\n}\n\nconst SidebarComponent: RendererComponent<\"sidebar\"> = ({ children, node }) => {\n const collapsible = node.props.collapsible;\n const rememberState = node.props.rememberState;\n const identity = nodeIdentity(node);\n const storageKey = `lattice:sidebar:${identity ?? \"default\"}`;\n const isDesktop = useIsDesktop();\n\n const [collapsed, setCollapsed] = useState(() =>\n readStored(storageKey, collapsible && rememberState),\n );\n const [mobileOpen, setMobileOpen] = useState(false);\n\n useEffect(() => {\n function toggle(event: Event): void {\n if (!matchesTarget(event, identity)) {\n return;\n }\n\n if (window.matchMedia?.(DESKTOP_QUERY).matches ?? true) {\n if (!collapsible) {\n return;\n }\n\n setCollapsed((value) => {\n const next = !value;\n\n if (rememberState && typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, String(next));\n }\n\n return next;\n });\n } else {\n setMobileOpen((open) => !open);\n }\n }\n\n window.addEventListener(LATTICE_EVENT.toggleSidebar, toggle);\n\n return () => window.removeEventListener(LATTICE_EVENT.toggleSidebar, toggle);\n }, [identity, collapsible, rememberState, storageKey]);\n\n useEffect(() => router.on(\"navigate\", () => setMobileOpen(false)), []);\n\n useEffect(() => {\n if (!mobileOpen) {\n return;\n }\n\n function close(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n setMobileOpen(false);\n }\n }\n\n window.addEventListener(\"keydown\", close);\n\n return () => window.removeEventListener(\"keydown\", close);\n }, [mobileOpen]);\n\n const isCollapsed = collapsible && collapsed && isDesktop;\n\n return (\n <CollapsedContext.Provider value={isCollapsed}>\n {mobileOpen ? (\n <div\n aria-hidden=\"true\"\n className=\"fixed inset-0 z-lt-overlay bg-lt-overlay md:hidden\"\n data-test=\"sidebar-backdrop\"\n onClick={() => setMobileOpen(false)}\n />\n ) : null}\n <aside\n className={cn(\n \"fixed inset-y-0 left-0 z-lt-modal flex h-svh w-72 max-w-[80vw] shrink-0 flex-col gap-4 border-r border-lt-border bg-lt-bg p-4 transition-transform\",\n \"md:sticky md:top-0 md:z-auto md:max-w-none md:translate-x-0 md:transition-[width]\",\n mobileOpen ? \"translate-x-0\" : \"-translate-x-full\",\n isCollapsed\n ? \"md:w-16 md:overflow-visible\"\n : \"md:w-64 md:overflow-x-hidden md:overflow-y-auto\",\n )}\n data-collapsed={isCollapsed ? \"true\" : \"false\"}\n data-lattice-component={identity}\n data-test=\"sidebar\"\n >\n {children}\n </aside>\n </CollapsedContext.Provider>\n );\n};\n\nexport default SidebarComponent;\n"],"mappings":";;;;;;;;AAQA,IAAM,gBAAgB;AAEtB,SAAS,WAAW,KAAa,UAA4B;CAC3D,IAAI,CAAC,YAAY,OAAO,WAAW,aACjC,OAAO;CAGT,OAAO,OAAO,aAAa,QAAQ,GAAG,MAAM;AAC9C;AAEA,SAAS,cAAc,OAAc,UAAuC;CAC1E,MAAM,SAAU,MAA2C,QAAQ;CAEnE,OAAO,UAAU,QAAQ,WAAW;AACtC;AAEA,SAAS,eAAwB;CAC/B,MAAM,kBAAkB,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe;CACtF,MAAM,CAAC,WAAW,gBAAgB,eAChC,UAAU,IAAI,OAAO,WAAW,aAAa,EAAE,UAAU,IAC3D;CAEA,gBAAgB;EACd,IAAI,CAAC,UAAU,GACb;EAGF,MAAM,QAAQ,OAAO,WAAW,aAAa;EAC7C,MAAM,eAAqB,aAAa,MAAM,OAAO;EAErD,OAAO;EACP,MAAM,iBAAiB,UAAU,MAAM;EAEvC,aAAa,MAAM,oBAAoB,UAAU,MAAM;CACzD,GAAG,CAAC,CAAC;CAEL,OAAO;AACT;AAEA,IAAM,oBAAkD,EAAE,UAAU,WAAW;CAC7E,MAAM,cAAc,KAAK,MAAM;CAC/B,MAAM,gBAAgB,KAAK,MAAM;CACjC,MAAM,WAAW,aAAa,IAAI;CAClC,MAAM,aAAa,mBAAmB,YAAY;CAClD,MAAM,YAAY,aAAa;CAE/B,MAAM,CAAC,WAAW,gBAAgB,eAChC,WAAW,YAAY,eAAe,aAAa,CACrD;CACA,MAAM,CAAC,YAAY,iBAAiB,SAAS,KAAK;CAElD,gBAAgB;EACd,SAAS,OAAO,OAAoB;GAClC,IAAI,CAAC,cAAc,OAAO,QAAQ,GAChC;GAGF,IAAI,OAAO,aAAa,aAAa,EAAE,WAAW,MAAM;IACtD,IAAI,CAAC,aACH;IAGF,cAAc,UAAU;KACtB,MAAM,OAAO,CAAC;KAEd,IAAI,iBAAiB,OAAO,WAAW,aACrC,OAAO,aAAa,QAAQ,YAAY,OAAO,IAAI,CAAC;KAGtD,OAAO;IACT,CAAC;GACH,OACE,eAAe,SAAS,CAAC,IAAI;EAEjC;EAEA,OAAO,iBAAiB,cAAc,eAAe,MAAM;EAE3D,aAAa,OAAO,oBAAoB,cAAc,eAAe,MAAM;CAC7E,GAAG;EAAC;EAAU;EAAa;EAAe;CAAU,CAAC;CAErD,gBAAgB,OAAO,GAAG,kBAAkB,cAAc,KAAK,CAAC,GAAG,CAAC,CAAC;CAErE,gBAAgB;EACd,IAAI,CAAC,YACH;EAGF,SAAS,MAAM,OAA4B;GACzC,IAAI,MAAM,QAAQ,UAChB,cAAc,KAAK;EAEvB;EAEA,OAAO,iBAAiB,WAAW,KAAK;EAExC,aAAa,OAAO,oBAAoB,WAAW,KAAK;CAC1D,GAAG,CAAC,UAAU,CAAC;CAEf,MAAM,cAAc,eAAe,aAAa;CAEhD,OACE,qBAAC,iBAAiB,UAAlB;EAA2B,OAAO;YAAlC,CACG,aACC,oBAAC,OAAD;GACE,eAAY;GACZ,WAAU;GACV,aAAU;GACV,eAAe,cAAc,KAAK;EACnC,CAAA,IACC,MACJ,oBAAC,SAAD;GACE,WAAW,GACT,sJACA,qFACA,aAAa,kBAAkB,qBAC/B,cACI,gCACA,iDACN;GACA,kBAAgB,cAAc,SAAS;GACvC,0BAAwB;GACxB,aAAU;GAET;EACI,CAAA,CACkB;;AAE/B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { cn } from "
|
|
2
|
-
import { nodeIdentity } from "
|
|
1
|
+
import { cn } from "../../lib/utils.js";
|
|
2
|
+
import { nodeIdentity } from "../../core/test-id.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
//#region resources/js/layout/topbar.tsx
|
|
4
|
+
//#region resources/js/layout/components/topbar.tsx
|
|
5
5
|
var TopbarComponent = ({ children, node }) => {
|
|
6
6
|
const sticky = node.props.sticky;
|
|
7
7
|
return /* @__PURE__ */ jsx("header", {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topbar.js","names":[],"sources":["../../../resources/js/layout/components/topbar.tsx"],"sourcesContent":["import type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { nodeIdentity } from \"@lattice-php/lattice/core/test-id\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\n\nconst TopbarComponent: RendererComponent<\"topbar\"> = ({ children, node }) => {\n const sticky = node.props.sticky;\n\n return (\n <header\n data-lattice-component={nodeIdentity(node)}\n className={cn(\n \"flex h-14 w-full items-center gap-2 border-b border-lt-border bg-lt-bg px-4 text-lt-fg\",\n sticky && \"sticky top-0 z-lt-sticky\",\n )}\n >\n {children}\n </header>\n );\n};\n\nexport default TopbarComponent;\n"],"mappings":";;;;AAIA,IAAM,mBAAgD,EAAE,UAAU,WAAW;CAC3E,MAAM,SAAS,KAAK,MAAM;CAE1B,OACE,oBAAC,UAAD;EACE,0BAAwB,aAAa,IAAI;EACzC,WAAW,GACT,0FACA,UAAU,0BACZ;EAEC;CACK,CAAA;AAEZ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { CollapsedContext as SidebarCollapsedContext, useCollapsed as useSidebarCollapsed } from '
|
|
2
|
+
import { CollapsedContext as SidebarCollapsedContext, useCollapsed as useSidebarCollapsed } from '../../core/collapsed-context.js';
|
|
3
3
|
export declare const OutletContext: import('react').Context<ReactNode>;
|
|
4
4
|
export { SidebarCollapsedContext, useSidebarCollapsed };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CollapsedContext, useCollapsed } from "
|
|
1
|
+
import { CollapsedContext, useCollapsed } from "../../core/collapsed-context.js";
|
|
2
2
|
import { createContext } from "react";
|
|
3
|
-
//#region resources/js/layout/context.ts
|
|
3
|
+
//#region resources/js/layout/hooks/context.ts
|
|
4
4
|
var OutletContext = createContext(null);
|
|
5
5
|
//#endregion
|
|
6
6
|
export { OutletContext, CollapsedContext as SidebarCollapsedContext, useCollapsed as useSidebarCollapsed };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../resources/js/layout/hooks/context.ts"],"sourcesContent":["import { createContext } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {\n CollapsedContext as SidebarCollapsedContext,\n useCollapsed as useSidebarCollapsed,\n} from \"@lattice-php/lattice/core/collapsed-context\";\n\nexport const OutletContext = createContext<ReactNode>(null);\n\nexport { SidebarCollapsedContext, useSidebarCollapsed };\n"],"mappings":";;;AAOA,IAAa,gBAAgB,cAAyB,IAAI"}
|
package/dist/layout/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Callouts } from './callouts';
|
|
2
|
-
export { layoutComponents } from './
|
|
3
|
-
export { OutletContext, SidebarCollapsedContext, useSidebarCollapsed } from './context';
|
|
4
|
-
export { default as SchemaLayout } from './schema-layout';
|
|
1
|
+
export { default as Callouts } from './components/callouts.js';
|
|
2
|
+
export { layoutComponents } from './plugin.js';
|
|
3
|
+
export { OutletContext, SidebarCollapsedContext, useSidebarCollapsed } from './hooks/context.js';
|
|
4
|
+
export { default as SchemaLayout } from './components/schema-layout.js';
|
package/dist/layout/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CollapsedContext, useCollapsed } from "../core/collapsed-context.js";
|
|
2
|
-
import Callouts from "./callouts.js";
|
|
3
|
-
import { OutletContext } from "./context.js";
|
|
4
|
-
import { layoutComponents } from "./
|
|
5
|
-
import SchemaLayout from "./schema-layout.js";
|
|
2
|
+
import Callouts from "./components/callouts.js";
|
|
3
|
+
import { OutletContext } from "./hooks/context.js";
|
|
4
|
+
import { layoutComponents } from "./plugin.js";
|
|
5
|
+
import SchemaLayout from "./components/schema-layout.js";
|
|
6
6
|
export { Callouts, OutletContext, SchemaLayout, CollapsedContext as SidebarCollapsedContext, layoutComponents, useCollapsed as useSidebarCollapsed };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createPlugin, eagerComponent } from "../core/registry.js";
|
|
2
|
-
import Callouts from "./callouts.js";
|
|
3
|
-
import BreadcrumbsComponent from "./breadcrumbs.js";
|
|
4
|
-
import DropdownComponent from "./dropdown.js";
|
|
5
|
-
import MenuComponent from "./menu.js";
|
|
6
|
-
import MenuItemComponent from "./menu-item.js";
|
|
7
|
-
import OutletComponent from "./outlet.js";
|
|
8
|
-
import SidebarComponent from "./sidebar.js";
|
|
9
|
-
import TopbarComponent from "./topbar.js";
|
|
10
|
-
//#region resources/js/layout/
|
|
2
|
+
import Callouts from "./components/callouts.js";
|
|
3
|
+
import BreadcrumbsComponent from "./components/breadcrumbs.js";
|
|
4
|
+
import DropdownComponent from "./components/dropdown.js";
|
|
5
|
+
import MenuComponent from "./components/menu.js";
|
|
6
|
+
import MenuItemComponent from "./components/menu-item.js";
|
|
7
|
+
import OutletComponent from "./components/outlet.js";
|
|
8
|
+
import SidebarComponent from "./components/sidebar.js";
|
|
9
|
+
import TopbarComponent from "./components/topbar.js";
|
|
10
|
+
//#region resources/js/layout/plugin.ts
|
|
11
11
|
var layoutComponents = createPlugin({
|
|
12
12
|
components: {
|
|
13
13
|
breadcrumbs: eagerComponent(BreadcrumbsComponent),
|
|
@@ -24,4 +24,4 @@ var layoutComponents = createPlugin({
|
|
|
24
24
|
//#endregion
|
|
25
25
|
export { layoutComponents };
|
|
26
26
|
|
|
27
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":[],"sources":["../../resources/js/layout/plugin.ts"],"sourcesContent":["import {\n createPlugin,\n eagerComponent,\n type ComponentRegistryFor,\n} from \"@lattice-php/lattice/core/registry\";\nimport BreadcrumbsComponent from \"./components/breadcrumbs\";\nimport CalloutsComponent from \"./components/callouts\";\nimport DropdownComponent from \"./components/dropdown\";\nimport MenuComponent from \"./components/menu\";\nimport MenuItemComponent from \"./components/menu-item\";\nimport OutletComponent from \"./components/outlet\";\nimport SidebarComponent from \"./components/sidebar\";\nimport TopbarComponent from \"./components/topbar\";\n\nexport type LayoutComponentType =\n | \"breadcrumbs\"\n | \"callouts\"\n | \"dropdown\"\n | \"menu\"\n | \"menu-item\"\n | \"outlet\"\n | \"sidebar\"\n | \"topbar\";\n\nexport const layoutComponents = createPlugin({\n components: {\n breadcrumbs: eagerComponent(BreadcrumbsComponent),\n callouts: eagerComponent(CalloutsComponent),\n dropdown: eagerComponent(DropdownComponent),\n menu: eagerComponent(MenuComponent),\n \"menu-item\": eagerComponent(MenuItemComponent),\n outlet: eagerComponent(OutletComponent),\n sidebar: eagerComponent(SidebarComponent),\n topbar: eagerComponent(TopbarComponent),\n } satisfies ComponentRegistryFor<LayoutComponentType>,\n name: \"lattice/layout\",\n});\n"],"mappings":";;;;;;;;;;AAwBA,IAAa,mBAAmB,aAAa;CAC3C,YAAY;EACV,aAAa,eAAe,oBAAoB;EAChD,UAAU,eAAe,QAAiB;EAC1C,UAAU,eAAe,iBAAiB;EAC1C,MAAM,eAAe,aAAa;EAClC,aAAa,eAAe,iBAAiB;EAC7C,QAAQ,eAAe,eAAe;EACtC,SAAS,eAAe,gBAAgB;EACxC,QAAQ,eAAe,eAAe;CACxC;CACA,MAAM;AACR,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NotificationsResponse, UnreadCountResponse } from './types';
|
|
1
|
+
import { NotificationsResponse, UnreadCountResponse } from './types.js';
|
|
2
2
|
export declare function fetchNotifications(endpoint: string, page?: number): Promise<NotificationsResponse>;
|
|
3
3
|
export declare function markRead(endpoint: string, id: string): Promise<UnreadCountResponse>;
|
|
4
4
|
export declare function markAllRead(endpoint: string): Promise<UnreadCountResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-item.js","names":[],"sources":["../../../resources/js/notifications/components/notification-item.tsx"],"sourcesContent":["import { Link } from \"@inertiajs/react\";\nimport { RenderNode } from \"@lattice-php/lattice/core/renderer\";\nimport { IconRenderer } from \"@lattice-php/lattice/icons\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport type { NotificationItem } from \"
|
|
1
|
+
{"version":3,"file":"notification-item.js","names":[],"sources":["../../../resources/js/notifications/components/notification-item.tsx"],"sourcesContent":["import { Link } from \"@inertiajs/react\";\nimport { RenderNode } from \"@lattice-php/lattice/core/renderer\";\nimport { IconRenderer } from \"@lattice-php/lattice/icons\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport type { NotificationItem } from \"@lattice-php/lattice/notifications/types\";\n\nconst variantIconClass: Record<NonNullable<NotificationItem[\"variant\"]>, string> = {\n success: \"text-lt-success\",\n info: \"text-lt-info\",\n warning: \"text-lt-warning\",\n error: \"text-lt-danger\",\n};\n\nexport function NotificationItemRow({\n notification,\n onMarkRead,\n onDismiss,\n}: {\n notification: NotificationItem;\n onMarkRead: (id: string) => void;\n onDismiss: (id: string) => void;\n}) {\n const { t } = useT(\"lattice\");\n\n const content = (\n <>\n {notification.title ? (\n <p className=\"truncate text-sm font-medium text-lt-fg\">{notification.title}</p>\n ) : null}\n {notification.body ? <p className=\"text-sm text-lt-muted-fg\">{notification.body}</p> : null}\n </>\n );\n\n return (\n <li\n className={cn(\"flex gap-3 px-3 py-3\", !notification.isRead && \"bg-lt-muted/40\")}\n data-test=\"notification\"\n >\n {notification.icon ? (\n <IconRenderer\n icon={notification.icon}\n className={cn(\n \"mt-0.5 size-lt-icon-md\",\n notification.variant ? variantIconClass[notification.variant] : undefined,\n )}\n />\n ) : null}\n <div className=\"min-w-0 flex-1\">\n {notification.href ? (\n <Link\n href={notification.href}\n className=\"block\"\n data-test=\"notification-link\"\n onClick={() => onMarkRead(notification.id)}\n >\n {content}\n </Link>\n ) : (\n content\n )}\n {notification.actions.length > 0 ? (\n <div className=\"mt-2 flex flex-wrap gap-2\">\n {notification.actions.map((node, index) => (\n <RenderNode key={node.key ?? node.id ?? `action-${index}`} node={node} />\n ))}\n </div>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-col gap-1\">\n {!notification.isRead ? (\n <button\n type=\"button\"\n className=\"text-xs text-lt-muted-fg hover:text-lt-fg\"\n onClick={() => onMarkRead(notification.id)}\n >\n {t(\"notifications.mark-read\", \"Mark read\")}\n </button>\n ) : null}\n <button\n type=\"button\"\n aria-label={t(\"notifications.dismiss\", \"Dismiss\")}\n className=\"text-xs text-lt-muted-fg hover:text-lt-fg\"\n onClick={() => onDismiss(notification.id)}\n >\n {t(\"notifications.dismiss\", \"Dismiss\")}\n </button>\n </div>\n </li>\n );\n}\n"],"mappings":";;;;;;;AAOA,IAAM,mBAA6E;CACjF,SAAS;CACT,MAAM;CACN,SAAS;CACT,OAAO;AACT;AAEA,SAAgB,oBAAoB,EAClC,cACA,YACA,aAKC;CACD,MAAM,EAAE,MAAM,KAAK,SAAS;CAE5B,MAAM,UACJ,qBAAA,UAAA,EAAA,UAAA,CACG,aAAa,QACZ,oBAAC,KAAD;EAAG,WAAU;YAA2C,aAAa;CAAS,CAAA,IAC5E,MACH,aAAa,OAAO,oBAAC,KAAD;EAAG,WAAU;YAA4B,aAAa;CAAQ,CAAA,IAAI,IACvF,EAAA,CAAA;CAGJ,OACE,qBAAC,MAAD;EACE,WAAW,GAAG,wBAAwB,CAAC,aAAa,UAAU,gBAAgB;EAC9E,aAAU;YAFZ;GAIG,aAAa,OACZ,oBAAC,cAAD;IACE,MAAM,aAAa;IACnB,WAAW,GACT,0BACA,aAAa,UAAU,iBAAiB,aAAa,WAAW,KAAA,CAClE;GACD,CAAA,IACC;GACJ,qBAAC,OAAD;IAAK,WAAU;cAAf,CACG,aAAa,OACZ,oBAAC,MAAD;KACE,MAAM,aAAa;KACnB,WAAU;KACV,aAAU;KACV,eAAe,WAAW,aAAa,EAAE;eAExC;IACG,CAAA,IAEN,SAED,aAAa,QAAQ,SAAS,IAC7B,oBAAC,OAAD;KAAK,WAAU;eACZ,aAAa,QAAQ,KAAK,MAAM,UAC/B,oBAAC,YAAD,EAAiE,KAAO,GAAvD,KAAK,OAAO,KAAK,MAAM,UAAU,OAAsB,CACzE;IACE,CAAA,IACH,IACD;;GACL,qBAAC,OAAD;IAAK,WAAU;cAAf,CACG,CAAC,aAAa,SACb,oBAAC,UAAD;KACE,MAAK;KACL,WAAU;KACV,eAAe,WAAW,aAAa,EAAE;eAExC,EAAE,2BAA2B,WAAW;IACnC,CAAA,IACN,MACJ,oBAAC,UAAD;KACE,MAAK;KACL,cAAY,EAAE,yBAAyB,SAAS;KAChD,WAAU;KACV,eAAe,UAAU,aAAa,EAAE;eAEvC,EAAE,yBAAyB,SAAS;IAC/B,CAAA,CACL;;EACH;;AAER"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NotificationItem } from '../types';
|
|
2
|
-
import { NotificationsStatus } from '../store';
|
|
1
|
+
import { NotificationItem } from '../types.js';
|
|
2
|
+
import { NotificationsStatus } from '../store.js';
|
|
3
3
|
export declare function NotificationList({ notifications, status, hasMore, onMarkRead, onDismiss, onLoadMore, }: {
|
|
4
4
|
notifications: NotificationItem[];
|
|
5
5
|
status: NotificationsStatus;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useT } from "../../i18n/instance.js";
|
|
2
|
-
import { Skeleton } from "../../
|
|
2
|
+
import { Skeleton } from "../../ui/skeleton.js";
|
|
3
3
|
import { EmptyState } from "./empty-state.js";
|
|
4
4
|
import { NotificationItemRow } from "./notification-item.js";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-list.js","names":[],"sources":["../../../resources/js/notifications/components/notification-list.tsx"],"sourcesContent":["import { Skeleton } from \"@lattice-php/lattice/
|
|
1
|
+
{"version":3,"file":"notification-list.js","names":[],"sources":["../../../resources/js/notifications/components/notification-list.tsx"],"sourcesContent":["import { Skeleton } from \"@lattice-php/lattice/ui/skeleton\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport type { NotificationItem } from \"@lattice-php/lattice/notifications/types\";\nimport type { NotificationsStatus } from \"@lattice-php/lattice/notifications/store\";\nimport { EmptyState } from \"./empty-state\";\nimport { NotificationItemRow } from \"./notification-item\";\n\nexport function NotificationList({\n notifications,\n status,\n hasMore,\n onMarkRead,\n onDismiss,\n onLoadMore,\n}: {\n notifications: NotificationItem[];\n status: NotificationsStatus;\n hasMore: boolean;\n onMarkRead: (id: string) => void;\n onDismiss: (id: string) => void;\n onLoadMore: () => void;\n}) {\n const { t } = useT(\"lattice\");\n\n if (status === \"loading\" && notifications.length === 0) {\n return (\n <div className=\"space-y-2 p-3\">\n <Skeleton className=\"h-12 w-full\" />\n <Skeleton className=\"h-12 w-full\" />\n <Skeleton className=\"h-12 w-full\" />\n </div>\n );\n }\n\n if (notifications.length === 0) {\n return <EmptyState />;\n }\n\n return (\n <div className=\"max-h-96 overflow-y-auto\">\n <ul className=\"divide-y divide-lt-border\">\n {notifications.map((notification) => (\n <NotificationItemRow\n key={notification.id}\n notification={notification}\n onMarkRead={onMarkRead}\n onDismiss={onDismiss}\n />\n ))}\n </ul>\n {hasMore ? (\n <button\n type=\"button\"\n className=\"w-full py-2 text-sm text-lt-muted-fg hover:text-lt-fg\"\n onClick={onLoadMore}\n >\n {t(\"notifications.load-more\", \"Load more\")}\n </button>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;AAOA,SAAgB,iBAAiB,EAC/B,eACA,QACA,SACA,YACA,WACA,cAQC;CACD,MAAM,EAAE,MAAM,KAAK,SAAS;CAE5B,IAAI,WAAW,aAAa,cAAc,WAAW,GACnD,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf;GACE,oBAAC,UAAD,EAAU,WAAU,cAAe,CAAA;GACnC,oBAAC,UAAD,EAAU,WAAU,cAAe,CAAA;GACnC,oBAAC,UAAD,EAAU,WAAU,cAAe,CAAA;EAChC;;CAIT,IAAI,cAAc,WAAW,GAC3B,OAAO,oBAAC,YAAD,CAAa,CAAA;CAGtB,OACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,MAAD;GAAI,WAAU;aACX,cAAc,KAAK,iBAClB,oBAAC,qBAAD;IAEgB;IACF;IACD;GACZ,GAJM,aAAa,EAInB,CACF;EACC,CAAA,GACH,UACC,oBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,SAAS;aAER,EAAE,2BAA2B,WAAW;EACnC,CAAA,IACN,IACD;;AAET"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications-echo.js","names":[],"sources":["../../../resources/js/notifications/components/notifications-echo.tsx"],"sourcesContent":["import { useEchoNotification } from \"@laravel/echo-react\";\nimport type { NotificationItem } from \"
|
|
1
|
+
{"version":3,"file":"notifications-echo.js","names":[],"sources":["../../../resources/js/notifications/components/notifications-echo.tsx"],"sourcesContent":["import { useEchoNotification } from \"@laravel/echo-react\";\nimport type { NotificationItem } from \"@lattice-php/lattice/notifications/types\";\n\nexport function NotificationsEcho({\n channel,\n onReceive,\n}: {\n channel: string;\n onReceive: (item: NotificationItem) => void;\n}) {\n useEchoNotification<Partial<NotificationItem>>(channel, (payload) => {\n onReceive({\n id: payload.id,\n title: payload.title ?? null,\n body: payload.body ?? null,\n icon: payload.icon ?? null,\n variant: payload.variant ?? null,\n href: payload.href ?? null,\n isRead: false,\n createdAt: null,\n actions: [],\n });\n });\n\n return null;\n}\n"],"mappings":";;AAGA,SAAgB,kBAAkB,EAChC,SACA,aAIC;CACD,oBAA+C,UAAU,YAAY;EACnE,UAAU;GACR,IAAI,QAAQ;GACZ,OAAO,QAAQ,SAAS;GACxB,MAAM,QAAQ,QAAQ;GACtB,MAAM,QAAQ,QAAQ;GACtB,SAAS,QAAQ,WAAW;GAC5B,MAAM,QAAQ,QAAQ;GACtB,QAAQ;GACR,WAAW;GACX,SAAS,CAAC;EACZ,CAAC;CACH,CAAC;CAED,OAAO;AACT"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Icon } from "../../icons/sprite.js";
|
|
2
2
|
import { useT } from "../../i18n/instance.js";
|
|
3
|
-
import { Popover, PopoverContent, PopoverTrigger } from "../../
|
|
4
|
-
import { Dialog, DialogContent, DialogTitle } from "../../
|
|
5
|
-
import { Badge } from "../../
|
|
3
|
+
import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
|
|
4
|
+
import { Dialog, DialogContent, DialogTitle } from "../../ui/dialog.js";
|
|
5
|
+
import { Badge } from "../../ui/badge.js";
|
|
6
6
|
import { useNotifications } from "../store.js";
|
|
7
7
|
import { NotificationList } from "./notification-list.js";
|
|
8
8
|
import { Component, Suspense, lazy } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","names":[],"sources":["../../../resources/js/notifications/components/notifications.tsx"],"sourcesContent":["import { Component, lazy, Suspense, type ReactNode } from \"react\";\nimport { Badge } from \"@lattice-php/lattice/
|
|
1
|
+
{"version":3,"file":"notifications.js","names":[],"sources":["../../../resources/js/notifications/components/notifications.tsx"],"sourcesContent":["import { Component, lazy, Suspense, type ReactNode } from \"react\";\nimport { Badge } from \"@lattice-php/lattice/ui/badge\";\nimport { Dialog, DialogContent, DialogTitle } from \"@lattice-php/lattice/ui/dialog\";\nimport {\n Popover as PopoverRoot,\n PopoverContent,\n PopoverTrigger,\n} from \"@lattice-php/lattice/ui/popover\";\nimport { Icon } from \"@lattice-php/lattice/icons\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport { useNotifications } from \"@lattice-php/lattice/notifications/store\";\nimport type { NotificationItem } from \"@lattice-php/lattice/notifications/types\";\nimport { NotificationList } from \"./notification-list\";\n\nconst NotificationsEcho = lazy(() =>\n import(\"./notifications-echo\").then((m) => ({ default: m.NotificationsEcho })),\n);\n\nclass EchoBoundary extends Component<{ children: ReactNode }, { failed: boolean }> {\n state = { failed: false };\n\n static getDerivedStateFromError(): { failed: boolean } {\n return { failed: true };\n }\n\n componentDidCatch(): void {\n console.warn(\n \"[lattice] The notifications bell declares a realtime channel but Echo is unavailable. Install @laravel/echo-react and call configureEcho().\",\n );\n }\n\n render(): ReactNode {\n return this.state.failed ? null : this.props.children;\n }\n}\n\nconst NotificationsComponent: RendererComponent<\"notifications\"> = ({ node }) => {\n const { t } = useT(\"lattice\");\n const store = useNotifications({\n endpoint: node.props.endpoint,\n pollingInterval: node.props.pollingInterval,\n });\n\n const label = t(\"notifications.label\", \"Notifications\");\n\n const trigger = (\n <span className=\"relative inline-flex items-center justify-center rounded-lt-sm p-2 hover:bg-lt-muted\">\n <Icon name=\"bell\" className=\"size-lt-icon-md\" />\n {store.unreadCount > 0 ? (\n <Badge\n variant=\"destructive\"\n data-test=\"notifications-badge\"\n className=\"absolute -right-0.5 -top-0.5 min-w-4 px-1 py-0 text-[10px]\"\n >\n {store.unreadCount}\n </Badge>\n ) : null}\n </span>\n );\n\n const panel = (\n <div className=\"w-80\" data-test=\"notifications-panel\">\n <div className=\"flex items-center justify-between border-b border-lt-border px-3 py-2\">\n <span className=\"text-sm font-medium\">{t(\"notifications.heading\", \"Notifications\")}</span>\n {store.unreadCount > 0 ? (\n <button\n type=\"button\"\n className=\"text-xs text-lt-muted-fg hover:text-lt-fg\"\n onClick={store.markAllRead}\n >\n {t(\"notifications.mark-all-read\", \"Mark all read\")}\n </button>\n ) : null}\n </div>\n <NotificationList\n notifications={store.notifications}\n status={store.status}\n hasMore={store.hasMore}\n onMarkRead={store.markRead}\n onDismiss={store.dismiss}\n onLoadMore={store.loadMore}\n />\n </div>\n );\n\n return (\n <>\n {node.props.channel ? (\n <EchoBoundary>\n <Suspense fallback={null}>\n <NotificationsEcho\n channel={node.props.channel}\n onReceive={(item: NotificationItem) => store.receive(item)}\n />\n </Suspense>\n </EchoBoundary>\n ) : null}\n\n {node.props.slideOut ? (\n <>\n <button\n type=\"button\"\n aria-label={label}\n data-test=\"notifications-trigger\"\n onClick={() => store.setOpen(true)}\n >\n {trigger}\n </button>\n <Dialog open={store.open} onOpenChange={store.setOpen}>\n <DialogContent className=\"fixed left-auto right-0 top-0 h-full w-96 max-w-full translate-x-0 translate-y-0 overflow-y-auto p-0\">\n <DialogTitle className=\"sr-only\">{label}</DialogTitle>\n {panel}\n </DialogContent>\n </Dialog>\n </>\n ) : (\n <PopoverRoot open={store.open} onOpenChange={store.setOpen}>\n <PopoverTrigger asChild>\n <button type=\"button\" aria-label={label} data-test=\"notifications-trigger\">\n {trigger}\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"end\" className=\"p-0\">\n {panel}\n </PopoverContent>\n </PopoverRoot>\n )}\n </>\n );\n};\n\nexport default NotificationsComponent;\n"],"mappings":";;;;;;;;;;AAeA,IAAM,oBAAoB,WACxB,OAAO,2BAAwB,MAAM,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAC/E;AAEA,IAAM,eAAN,cAA2B,UAAwD;CACjF,QAAQ,EAAE,QAAQ,MAAM;CAExB,OAAO,2BAAgD;EACrD,OAAO,EAAE,QAAQ,KAAK;CACxB;CAEA,oBAA0B;EACxB,QAAQ,KACN,6IACF;CACF;CAEA,SAAoB;EAClB,OAAO,KAAK,MAAM,SAAS,OAAO,KAAK,MAAM;CAC/C;AACF;AAEA,IAAM,0BAA8D,EAAE,WAAW;CAC/E,MAAM,EAAE,MAAM,KAAK,SAAS;CAC5B,MAAM,QAAQ,iBAAiB;EAC7B,UAAU,KAAK,MAAM;EACrB,iBAAiB,KAAK,MAAM;CAC9B,CAAC;CAED,MAAM,QAAQ,EAAE,uBAAuB,eAAe;CAEtD,MAAM,UACJ,qBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,oBAAC,MAAD;GAAM,MAAK;GAAO,WAAU;EAAmB,CAAA,GAC9C,MAAM,cAAc,IACnB,oBAAC,OAAD;GACE,SAAQ;GACR,aAAU;GACV,WAAU;aAET,MAAM;EACF,CAAA,IACL,IACA;;CAGR,MAAM,QACJ,qBAAC,OAAD;EAAK,WAAU;EAAO,aAAU;YAAhC,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,QAAD;IAAM,WAAU;cAAuB,EAAE,yBAAyB,eAAe;GAAQ,CAAA,GACxF,MAAM,cAAc,IACnB,oBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,SAAS,MAAM;cAEd,EAAE,+BAA+B,eAAe;GAC3C,CAAA,IACN,IACD;MACL,oBAAC,kBAAD;GACE,eAAe,MAAM;GACrB,QAAQ,MAAM;GACd,SAAS,MAAM;GACf,YAAY,MAAM;GAClB,WAAW,MAAM;GACjB,YAAY,MAAM;EACnB,CAAA,CACE;;CAGP,OACE,qBAAA,YAAA,EAAA,UAAA,CACG,KAAK,MAAM,UACV,oBAAC,cAAD,EAAA,UACE,oBAAC,UAAD;EAAU,UAAU;YAClB,oBAAC,mBAAD;GACE,SAAS,KAAK,MAAM;GACpB,YAAY,SAA2B,MAAM,QAAQ,IAAI;EAC1D,CAAA;CACO,CAAA,EACE,CAAA,IACZ,MAEH,KAAK,MAAM,WACV,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,UAAD;EACE,MAAK;EACL,cAAY;EACZ,aAAU;EACV,eAAe,MAAM,QAAQ,IAAI;YAEhC;CACK,CAAA,GACR,oBAAC,QAAD;EAAQ,MAAM,MAAM;EAAM,cAAc,MAAM;YAC5C,qBAAC,eAAD;GAAe,WAAU;aAAzB,CACE,oBAAC,aAAD;IAAa,WAAU;cAAW;GAAmB,CAAA,GACpD,KACY;;CACT,CAAA,CACR,EAAA,CAAA,IAEF,qBAAC,SAAD;EAAa,MAAM,MAAM;EAAM,cAAc,MAAM;YAAnD,CACE,oBAAC,gBAAD;GAAgB,SAAA;aACd,oBAAC,UAAD;IAAQ,MAAK;IAAS,cAAY;IAAO,aAAU;cAChD;GACK,CAAA;EACM,CAAA,GAChB,oBAAC,gBAAD;GAAgB,OAAM;GAAM,WAAU;aACnC;EACa,CAAA,CACL;GAEf,EAAA,CAAA;AAEN"}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { notificationsComponents } from './plugin.js';
|
|
2
|
+
export type * from './types.js';
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import NotificationsComponent from "./components/notifications.js";
|
|
3
|
-
//#region resources/js/notifications/index.ts
|
|
4
|
-
var notificationsComponents = createPlugin({
|
|
5
|
-
name: "lattice/notifications",
|
|
6
|
-
components: { notifications: eagerComponent(NotificationsComponent) }
|
|
7
|
-
});
|
|
8
|
-
//#endregion
|
|
1
|
+
import { notificationsComponents } from "./plugin.js";
|
|
9
2
|
export { notificationsComponents };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createPlugin, eagerComponent } from "../core/registry.js";
|
|
2
|
+
import NotificationsComponent from "./components/notifications.js";
|
|
3
|
+
//#region resources/js/notifications/plugin.ts
|
|
4
|
+
var notificationsComponents = createPlugin({
|
|
5
|
+
name: "lattice/notifications",
|
|
6
|
+
components: { notifications: eagerComponent(NotificationsComponent) }
|
|
7
|
+
});
|
|
8
|
+
//#endregion
|
|
9
|
+
export { notificationsComponents };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":[],"sources":["../../resources/js/notifications/plugin.ts"],"sourcesContent":["import {\n createPlugin,\n eagerComponent,\n type ComponentRegistryFor,\n} from \"@lattice-php/lattice/core/registry\";\nimport NotificationsComponent from \"./components/notifications\";\n\nexport type NotificationsComponentType = \"notifications\";\n\nexport const notificationsComponents = createPlugin({\n name: \"lattice/notifications\",\n components: {\n notifications: eagerComponent(NotificationsComponent),\n } satisfies ComponentRegistryFor<NotificationsComponentType>,\n});\n"],"mappings":";;;AASA,IAAa,0BAA0B,aAAa;CAClD,MAAM;CACN,YAAY,EACV,eAAe,eAAe,sBAAsB,EACtD;AACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NotificationItem } from './types';
|
|
1
|
+
import { NotificationItem } from './types.js';
|
|
2
2
|
export declare function prependIncoming(list: NotificationItem[], item: NotificationItem): NotificationItem[];
|
|
3
3
|
export declare function markReadIn(list: NotificationItem[], id: string): NotificationItem[];
|
|
4
4
|
export declare function removeIn(list: NotificationItem[], id: string): NotificationItem[];
|
package/dist/page.d.ts
CHANGED
package/dist/provider-base.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { Registry } from './core/registry';
|
|
3
|
-
import { SpriteValue } from './icons/sprite';
|
|
2
|
+
import { Registry } from './core/registry.js';
|
|
3
|
+
import { SpriteValue } from './icons/sprite.js';
|
|
4
4
|
export type ProviderBaseProps = {
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
registry: Registry;
|
package/dist/provider-base.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { updateAppearance } from "./appearance/index.js";
|
|
2
2
|
import { RegistryContext } from "./core/registry-context.js";
|
|
3
3
|
import { SpriteProvider } from "./icons/sprite.js";
|
|
4
|
-
import { EventBridge } from "./
|
|
5
|
-
import { useFlashEffects } from "./effects/use-flash-effects.js";
|
|
4
|
+
import { EventBridge } from "./event-bridge.js";
|
|
6
5
|
import { Toaster } from "./toast/toaster.js";
|
|
6
|
+
import { ActionInteractionProvider } from "./action/components/action-trigger-provider.js";
|
|
7
|
+
import { useFlashEffects } from "./effects/use-flash-effects.js";
|
|
7
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
9
|
//#region resources/js/provider-base.tsx
|
|
9
10
|
var defaultSprite = { href: "" };
|
|
@@ -11,14 +12,14 @@ function ProviderBase({ children, registry, sprite = defaultSprite, toaster = tr
|
|
|
11
12
|
useFlashEffects();
|
|
12
13
|
return /* @__PURE__ */ jsx(RegistryContext.Provider, {
|
|
13
14
|
value: registry,
|
|
14
|
-
children: /* @__PURE__ */ jsxs(SpriteProvider, {
|
|
15
|
+
children: /* @__PURE__ */ jsx(ActionInteractionProvider, { children: /* @__PURE__ */ jsxs(SpriteProvider, {
|
|
15
16
|
sprite,
|
|
16
17
|
children: [
|
|
17
18
|
children,
|
|
18
19
|
/* @__PURE__ */ jsx(EventBridge, { onAppearanceChange: updateAppearance }),
|
|
19
20
|
toaster ? /* @__PURE__ */ jsx(Toaster, {}) : null
|
|
20
21
|
]
|
|
21
|
-
})
|
|
22
|
+
}) })
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
25
|
//#endregion
|