Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ A NativePHP Mobile plugin
## Installation

```bash
composer require nativephp/native-ui
composer require nativephp/mobile-ui
```

## Usage

```php
use Nativephp\NativeUi\Facades\NativeUI;
use Native\Mobile\UI\Facades\NativeUI;

// Execute functionality
$result = NativeUI::execute(['option1' => 'value']);
Expand All @@ -25,7 +25,7 @@ $status = NativeUI::getStatus();
```php
use Livewire\Attributes\On;

#[On('native:Nativephp\NativeUi\Events\NativeUICompleted')]
#[On('native:Native\Mobile\UI\Events\NativeUICompleted')]
public function handleNativeUICompleted($result, $id = null)
{
// Handle the event
Expand Down Expand Up @@ -76,7 +76,7 @@ content description on Android.
```

```php
use Nativephp\NativeUi\Elements\Button;
use Native\Mobile\UI\Elements\Button;

Button::make()
->icon('plus')
Expand Down
2 changes: 1 addition & 1 deletion SHIPPING-CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# NativeUI — Shipping Checklist

Audit list for taking nativephp/native-ui from unreleased to ship-ready. Verified on iOS **and** Android in `~/Herd/native`. Docs are kept in sync as we go at `~/Herd/nativephp/resources/views/docs/mobile/3/edge-components/`.
Audit list for taking nativephp/mobile-ui from unreleased to ship-ready. Verified on iOS **and** Android in `~/Herd/native`. Docs are kept in sync as we go at `~/Herd/nativephp/resources/views/docs/mobile/3/edge-components/`.

**Phasing**: Layout first → Buttons & pressables → Inputs → Feedback → Lists → Overlays → Tabs → Misc. Cross-cutting items (§0) get checked as they come up; not gated to a phase.

Expand Down
24 changes: 15 additions & 9 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
{
"name": "nativephp/native-ui",
"description": "A NativePHP Mobile plugin",
"type": "nativephp-ui-plugin",
"name": "nativephp/mobile-ui",
"description": "Native SwiftUI and Jetpack Composer components for NativePHP",
"type": "nativephp-plugin",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "you@example.com"
"name": "NativePHP",
"email": "support@nativephp.com"
}
],
"require": {
"php": "^8.2",
"nativephp/mobile": "*"
"nativephp/mobile": "^4.0"
},
"autoload": {
"psr-4": {
"Nativephp\\NativeUi\\": "src/"
"Native\\Mobile\\UI\\": "src/"
}
},
"extra": {
"laravel": {
"providers": [
"Nativephp\\NativeUi\\NativeUIServiceProvider"
"Native\\Mobile\\UI\\NativeUIServiceProvider"
]
},
"nativephp": {
Expand All @@ -38,5 +38,11 @@
"allow-plugins": {
"pestphp/pest-plugin": true
}
}
},
"funding": [
{
"type": "other",
"url": "https://nativephp.com/sponsor"
}
]
}
2 changes: 1 addition & 1 deletion config/native-ui.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Published via `php artisan vendor:publish --tag=native-ui-config`.
* Edit to customize your app's visual identity in one place.
*
* For dynamic per-tenant theming, use Nativephp\NativeUi\Theme::merge([...])
* For dynamic per-tenant theming, use Native\Mobile\UI\Theme::merge([...])
* from a service provider. Runtime merges deep-merge on top of these values.
*
* Decision log: /docs/NATIVE-UI-REWRITE-PLAN.md (D — theme layer)
Expand Down
112 changes: 56 additions & 56 deletions nativephp.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "nativephp/native-ui",
"name": "nativephp/mobile-ui",
"version": "1.0.0",
"description": "Material3 Compose UI components for NativePHP Mobile",
"namespace": "NativeUI",
Expand Down Expand Up @@ -210,224 +210,224 @@
},
{
"type": "list",
"element": "Nativephp\\NativeUi\\Elements\\NativeList",
"blade": "Nativephp\\NativeUi\\Components\\NativeList",
"element": "Native\\Mobile\\UI\\Elements\\NativeList",
"blade": "Native\\Mobile\\UI\\Components\\NativeList",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ListRenderer",
"ios_renderer": "NativeUIListRenderer",
"self_closing": false
},
{
"type": "virtual_list",
"element": "Nativephp\\NativeUi\\Elements\\NativeVirtualList",
"blade": "Nativephp\\NativeUi\\Components\\NativeVirtualList",
"element": "Native\\Mobile\\UI\\Elements\\NativeVirtualList",
"blade": "Native\\Mobile\\UI\\Components\\NativeVirtualList",
"android_renderer": "com.nativephp.plugins.native_ui.ui.VirtualListRenderer",
"ios_renderer": "NativeUIVirtualListRenderer",
"self_closing": true
},
{
"type": "modal",
"element": "Nativephp\\NativeUi\\Elements\\Modal",
"blade": "Nativephp\\NativeUi\\Components\\Modal",
"element": "Native\\Mobile\\UI\\Elements\\Modal",
"blade": "Native\\Mobile\\UI\\Components\\Modal",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ModalRenderer",
"ios_renderer": "NativeUIModalRenderer",
"self_closing": false
},
{
"type": "button",
"element": "Nativephp\\NativeUi\\Elements\\Button",
"blade": "Nativephp\\NativeUi\\Components\\Button",
"element": "Native\\Mobile\\UI\\Elements\\Button",
"blade": "Native\\Mobile\\UI\\Components\\Button",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ButtonRenderer",
"ios_renderer": "NativeUIButtonRenderer",
"self_closing": true
},
{
"type": "progress_bar",
"element": "Nativephp\\NativeUi\\Elements\\ProgressBar",
"blade": "Nativephp\\NativeUi\\Components\\ProgressBar",
"element": "Native\\Mobile\\UI\\Elements\\ProgressBar",
"blade": "Native\\Mobile\\UI\\Components\\ProgressBar",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ProgressBarRenderer",
"ios_renderer": "NativeUIProgressBarRenderer",
"self_closing": true
},
{
"type": "activity_indicator",
"element": "Nativephp\\NativeUi\\Elements\\ActivityIndicator",
"blade": "Nativephp\\NativeUi\\Components\\ActivityIndicator",
"element": "Native\\Mobile\\UI\\Elements\\ActivityIndicator",
"blade": "Native\\Mobile\\UI\\Components\\ActivityIndicator",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ActivityIndicatorRenderer",
"ios_renderer": "NativeUIActivityIndicatorRenderer",
"self_closing": true
},
{
"type": "icon",
"element": "Native\\Mobile\\Edge\\Elements\\Icon",
"blade": "Nativephp\\NativeUi\\Components\\Icon",
"blade": "Native\\Mobile\\UI\\Components\\Icon",
"android_renderer": "com.nativephp.plugins.native_ui.ui.IconRenderer",
"ios_renderer": "NativeUIIconRenderer",
"self_closing": true
},
{
"type": "outlined_text_input",
"element": "Nativephp\\NativeUi\\Elements\\OutlinedTextInput",
"blade": "Nativephp\\NativeUi\\Components\\OutlinedTextInput",
"element": "Native\\Mobile\\UI\\Elements\\OutlinedTextInput",
"blade": "Native\\Mobile\\UI\\Components\\OutlinedTextInput",
"android_renderer": "com.nativephp.plugins.native_ui.ui.OutlinedTextInputRenderer",
"ios_renderer": "NativeUIOutlinedTextInputRenderer",
"self_closing": true
},
{
"type": "bare_text_input",
"element": "Nativephp\\NativeUi\\Elements\\BareTextInput",
"blade": "Nativephp\\NativeUi\\Components\\BareTextInput",
"element": "Native\\Mobile\\UI\\Elements\\BareTextInput",
"blade": "Native\\Mobile\\UI\\Components\\BareTextInput",
"android_renderer": "com.nativephp.plugins.native_ui.ui.BareTextInputRenderer",
"ios_renderer": "NativeUIBareTextInputRenderer",
"self_closing": true
},
{
"type": "filled_text_input",
"element": "Nativephp\\NativeUi\\Elements\\FilledTextInput",
"blade": "Nativephp\\NativeUi\\Components\\FilledTextInput",
"element": "Native\\Mobile\\UI\\Elements\\FilledTextInput",
"blade": "Native\\Mobile\\UI\\Components\\FilledTextInput",
"android_renderer": "com.nativephp.plugins.native_ui.ui.FilledTextInputRenderer",
"ios_renderer": "NativeUIFilledTextInputRenderer",
"self_closing": true
},
{
"type": "toggle",
"element": "Nativephp\\NativeUi\\Elements\\Toggle",
"blade": "Nativephp\\NativeUi\\Components\\Toggle",
"element": "Native\\Mobile\\UI\\Elements\\Toggle",
"blade": "Native\\Mobile\\UI\\Components\\Toggle",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ToggleRenderer",
"ios_renderer": "NativeUIToggleRenderer",
"self_closing": true
},
{
"type": "checkbox",
"element": "Nativephp\\NativeUi\\Elements\\Checkbox",
"blade": "Nativephp\\NativeUi\\Components\\Checkbox",
"element": "Native\\Mobile\\UI\\Elements\\Checkbox",
"blade": "Native\\Mobile\\UI\\Components\\Checkbox",
"android_renderer": "com.nativephp.plugins.native_ui.ui.CheckboxRenderer",
"ios_renderer": "NativeUICheckboxRenderer",
"self_closing": true
},
{
"type": "slider",
"element": "Nativephp\\NativeUi\\Elements\\Slider",
"blade": "Nativephp\\NativeUi\\Components\\Slider",
"element": "Native\\Mobile\\UI\\Elements\\Slider",
"blade": "Native\\Mobile\\UI\\Components\\Slider",
"android_renderer": "com.nativephp.plugins.native_ui.ui.SliderRenderer",
"ios_renderer": "NativeUISliderRenderer",
"self_closing": true
},
{
"type": "select",
"element": "Nativephp\\NativeUi\\Elements\\Select",
"blade": "Nativephp\\NativeUi\\Components\\Select",
"element": "Native\\Mobile\\UI\\Elements\\Select",
"blade": "Native\\Mobile\\UI\\Components\\Select",
"android_renderer": "com.nativephp.plugins.native_ui.ui.SelectRenderer",
"ios_renderer": "NativeUISelectRenderer",
"self_closing": true
},
{
"type": "radio_group",
"element": "Nativephp\\NativeUi\\Elements\\RadioGroup",
"blade": "Nativephp\\NativeUi\\Components\\RadioGroup",
"element": "Native\\Mobile\\UI\\Elements\\RadioGroup",
"blade": "Native\\Mobile\\UI\\Components\\RadioGroup",
"android_renderer": "com.nativephp.plugins.native_ui.ui.RadioGroupRenderer",
"ios_renderer": "NativeUIRadioGroupRenderer",
"self_closing": false
},
{
"type": "radio",
"element": "Nativephp\\NativeUi\\Elements\\Radio",
"blade": "Nativephp\\NativeUi\\Components\\Radio",
"element": "Native\\Mobile\\UI\\Elements\\Radio",
"blade": "Native\\Mobile\\UI\\Components\\Radio",
"android_renderer": "com.nativephp.plugins.native_ui.ui.RadioRenderer",
"ios_renderer": "NativeUIEmptyRenderer",
"self_closing": true
},
{
"type": "badge",
"element": "Nativephp\\NativeUi\\Elements\\Badge",
"blade": "Nativephp\\NativeUi\\Components\\Badge",
"element": "Native\\Mobile\\UI\\Elements\\Badge",
"blade": "Native\\Mobile\\UI\\Components\\Badge",
"android_renderer": "com.nativephp.plugins.native_ui.ui.BadgeRenderer",
"ios_renderer": "NativeUIBadgeRenderer",
"self_closing": true
},
{
"type": "chip",
"element": "Nativephp\\NativeUi\\Elements\\Chip",
"blade": "Nativephp\\NativeUi\\Components\\Chip",
"element": "Native\\Mobile\\UI\\Elements\\Chip",
"blade": "Native\\Mobile\\UI\\Components\\Chip",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ChipRenderer",
"ios_renderer": "NativeUIChipRenderer",
"self_closing": true
},
{
"type": "list_item",
"element": "Nativephp\\NativeUi\\Elements\\ListItem",
"blade": "Nativephp\\NativeUi\\Components\\ListItem",
"element": "Native\\Mobile\\UI\\Elements\\ListItem",
"blade": "Native\\Mobile\\UI\\Components\\ListItem",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ListItemRenderer",
"ios_renderer": "NativeUIListItemRenderer",
"self_closing": true
},
{
"type": "list_section",
"element": "Nativephp\\NativeUi\\Elements\\ListSection",
"blade": "Nativephp\\NativeUi\\Components\\ListSection",
"element": "Native\\Mobile\\UI\\Elements\\ListSection",
"blade": "Native\\Mobile\\UI\\Components\\ListSection",
"android_renderer": "com.nativephp.plugins.native_ui.ui.EmptyRenderer",
"ios_renderer": "NativeUIEmptyRenderer",
"self_closing": false
},
{
"type": "tab_row",
"element": "Nativephp\\NativeUi\\Elements\\TabRow",
"blade": "Nativephp\\NativeUi\\Components\\TabRow",
"element": "Native\\Mobile\\UI\\Elements\\TabRow",
"blade": "Native\\Mobile\\UI\\Components\\TabRow",
"android_renderer": "com.nativephp.plugins.native_ui.ui.TabRowRenderer",
"ios_renderer": "NativeUITabRowRenderer",
"self_closing": false
},
{
"type": "tab",
"element": "Nativephp\\NativeUi\\Elements\\Tab",
"blade": "Nativephp\\NativeUi\\Components\\Tab",
"element": "Native\\Mobile\\UI\\Elements\\Tab",
"blade": "Native\\Mobile\\UI\\Components\\Tab",
"android_renderer": "com.nativephp.plugins.native_ui.ui.TabRenderer",
"ios_renderer": "NativeUIEmptyRenderer",
"self_closing": true
},
{
"type": "bottom_sheet",
"element": "Nativephp\\NativeUi\\Elements\\BottomSheet",
"blade": "Nativephp\\NativeUi\\Components\\BottomSheet",
"element": "Native\\Mobile\\UI\\Elements\\BottomSheet",
"blade": "Native\\Mobile\\UI\\Components\\BottomSheet",
"android_renderer": "com.nativephp.plugins.native_ui.ui.BottomSheetRenderer",
"ios_renderer": "NativeUIBottomSheetRenderer",
"self_closing": false
},
{
"type": "button_group",
"element": "Nativephp\\NativeUi\\Elements\\ButtonGroup",
"blade": "Nativephp\\NativeUi\\Components\\ButtonGroup",
"element": "Native\\Mobile\\UI\\Elements\\ButtonGroup",
"blade": "Native\\Mobile\\UI\\Components\\ButtonGroup",
"android_renderer": "com.nativephp.plugins.native_ui.ui.ButtonGroupRenderer",
"ios_renderer": "NativeUIButtonGroupRenderer",
"self_closing": true
},
{
"type": "carousel",
"element": "Nativephp\\NativeUi\\Elements\\Carousel",
"blade": "Nativephp\\NativeUi\\Components\\Carousel",
"element": "Native\\Mobile\\UI\\Elements\\Carousel",
"blade": "Native\\Mobile\\UI\\Components\\Carousel",
"android_renderer": "com.nativephp.plugins.native_ui.ui.CarouselRenderer",
"ios_renderer": "NativeUICarouselRenderer",
"self_closing": false
},
{
"type": "native_drawer",
"element": "Nativephp\\NativeUi\\Elements\\NativeDrawer",
"blade": "Nativephp\\NativeUi\\Components\\NativeDrawer",
"element": "Native\\Mobile\\UI\\Elements\\NativeDrawer",
"blade": "Native\\Mobile\\UI\\Components\\NativeDrawer",
"android_renderer": "com.nativephp.plugins.native_ui.ui.EmptyRenderer",
"ios_renderer": "NativeUIEmptyRenderer",
"self_closing": false
},
{
"type": "floating_overlay",
"element": "Nativephp\\NativeUi\\Elements\\FloatingOverlay",
"blade": "Nativephp\\NativeUi\\Components\\FloatingOverlay",
"element": "Native\\Mobile\\UI\\Elements\\FloatingOverlay",
"blade": "Native\\Mobile\\UI\\Components\\FloatingOverlay",
"android_renderer": "com.nativephp.plugins.native_ui.ui.EmptyRenderer",
"ios_renderer": "NativeUIEmptyRenderer",
"self_closing": false
},
{
"type": "webview",
"element": "Nativephp\\NativeUi\\Elements\\Webview",
"blade": "Nativephp\\NativeUi\\Components\\Webview",
"element": "Native\\Mobile\\UI\\Elements\\Webview",
"blade": "Native\\Mobile\\UI\\Components\\Webview",
"android_renderer": "com.nativephp.plugins.native_ui.ui.WebviewRenderer",
"ios_renderer": "NativeUIWebviewRenderer",
"self_closing": true
Expand Down
2 changes: 1 addition & 1 deletion resources/android/NativeUITheme.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import org.json.JSONObject
* One coherent set of theme tokens (light OR dark). Renderers read the
* active tokens via [LocalNativeUITheme].
*
* The PHP side (`Nativephp\NativeUi\Theme::merge([...])`) is the source of
* The PHP side (`Native\Mobile\UI\Theme::merge([...])`) is the source of
* truth; tokens arrive over the bridge via `NativeUI.Theme.Set`.
*/
data class NativeUITokens(
Expand Down
Loading
Loading