@verbb/plugin-kit-vue 2.0.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/CHANGELOG.md +14 -0
- package/LICENSE.md +21 -0
- package/README.md +132 -0
- package/dist/app/PluginKitProvider.d.ts +92 -0
- package/dist/app/PluginKitProvider.d.ts.map +1 -0
- package/dist/app/PluginKitProvider.js +75 -0
- package/dist/app/PluginKitProvider.js.map +1 -0
- package/dist/app/configure.d.ts +29 -0
- package/dist/app/configure.d.ts.map +1 -0
- package/dist/app/configure.js +35 -0
- package/dist/app/configure.js.map +1 -0
- package/dist/app/index.d.ts +5 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +5 -0
- package/dist/app/mountShadowApp.d.ts +6 -0
- package/dist/app/mountShadowApp.d.ts.map +1 -0
- package/dist/app/mountShadowApp.js +2 -0
- package/dist/components/Button.d.ts +208 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +71 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/ButtonGroup.d.ts +22 -0
- package/dist/components/ButtonGroup.d.ts.map +1 -0
- package/dist/components/ButtonGroup.js +19 -0
- package/dist/components/ButtonGroup.js.map +1 -0
- package/dist/components/Calendar.d.ts +9 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +13 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/Checkbox.d.ts +177 -0
- package/dist/components/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox.js +69 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/CheckboxInput.d.ts +210 -0
- package/dist/components/CheckboxInput.d.ts.map +1 -0
- package/dist/components/CheckboxInput.js +109 -0
- package/dist/components/CheckboxInput.js.map +1 -0
- package/dist/components/CheckboxSelect.d.ts +9 -0
- package/dist/components/CheckboxSelect.d.ts.map +1 -0
- package/dist/components/CheckboxSelect.js +13 -0
- package/dist/components/CheckboxSelect.js.map +1 -0
- package/dist/components/CodeEditor.d.ts +9 -0
- package/dist/components/CodeEditor.d.ts.map +1 -0
- package/dist/components/CodeEditor.js +13 -0
- package/dist/components/CodeEditor.js.map +1 -0
- package/dist/components/ColorInput.d.ts +9 -0
- package/dist/components/ColorInput.d.ts.map +1 -0
- package/dist/components/ColorInput.js +13 -0
- package/dist/components/ColorInput.js.map +1 -0
- package/dist/components/Combobox.d.ts +9 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +13 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/ComboboxInput.d.ts +410 -0
- package/dist/components/ComboboxInput.d.ts.map +1 -0
- package/dist/components/ComboboxInput.js +174 -0
- package/dist/components/ComboboxInput.js.map +1 -0
- package/dist/components/CopyButton.d.ts +9 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +13 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/DatePicker.d.ts +9 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +13 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Dialog.d.ts +9 -0
- package/dist/components/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog.js +13 -0
- package/dist/components/Dialog.js.map +1 -0
- package/dist/components/DropdownMenu.d.ts +29 -0
- package/dist/components/DropdownMenu.d.ts.map +1 -0
- package/dist/components/DropdownMenu.js +22 -0
- package/dist/components/DropdownMenu.js.map +1 -0
- package/dist/components/EditableTable.d.ts +9 -0
- package/dist/components/EditableTable.d.ts.map +1 -0
- package/dist/components/EditableTable.js +13 -0
- package/dist/components/EditableTable.js.map +1 -0
- package/dist/components/Field.d.ts +9 -0
- package/dist/components/Field.d.ts.map +1 -0
- package/dist/components/Field.js +13 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/Icon.d.ts +9 -0
- package/dist/components/Icon.d.ts.map +1 -0
- package/dist/components/Icon.js +13 -0
- package/dist/components/Icon.js.map +1 -0
- package/dist/components/Input.d.ts +9 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +13 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputGroup.d.ts +43 -0
- package/dist/components/InputGroup.d.ts.map +1 -0
- package/dist/components/InputGroup.js +28 -0
- package/dist/components/InputGroup.js.map +1 -0
- package/dist/components/Lightswitch.d.ts +197 -0
- package/dist/components/Lightswitch.d.ts.map +1 -0
- package/dist/components/Lightswitch.js +74 -0
- package/dist/components/Lightswitch.js.map +1 -0
- package/dist/components/Popover.d.ts +9 -0
- package/dist/components/Popover.d.ts.map +1 -0
- package/dist/components/Popover.js +13 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Popup.d.ts +9 -0
- package/dist/components/Popup.d.ts.map +1 -0
- package/dist/components/Popup.js +13 -0
- package/dist/components/Popup.js.map +1 -0
- package/dist/components/RadioGroup.d.ts +15 -0
- package/dist/components/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup.js +16 -0
- package/dist/components/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroupInput.d.ts +202 -0
- package/dist/components/RadioGroupInput.d.ts.map +1 -0
- package/dist/components/RadioGroupInput.js +84 -0
- package/dist/components/RadioGroupInput.js.map +1 -0
- package/dist/components/ScrollArea.d.ts +9 -0
- package/dist/components/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea.js +13 -0
- package/dist/components/ScrollArea.js.map +1 -0
- package/dist/components/Select.d.ts +22 -0
- package/dist/components/Select.d.ts.map +1 -0
- package/dist/components/Select.js +19 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/SelectInput.d.ts +311 -0
- package/dist/components/SelectInput.d.ts.map +1 -0
- package/dist/components/SelectInput.js +127 -0
- package/dist/components/SelectInput.js.map +1 -0
- package/dist/components/Separator.d.ts +9 -0
- package/dist/components/Separator.d.ts.map +1 -0
- package/dist/components/Separator.js +13 -0
- package/dist/components/Separator.js.map +1 -0
- package/dist/components/Spinner.d.ts +94 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +40 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Status.d.ts +9 -0
- package/dist/components/Status.d.ts.map +1 -0
- package/dist/components/Status.js +13 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Tabs.d.ts +29 -0
- package/dist/components/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs.js +22 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Textarea.d.ts +9 -0
- package/dist/components/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea.js +13 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/TimePicker.d.ts +9 -0
- package/dist/components/TimePicker.d.ts.map +1 -0
- package/dist/components/TimePicker.js +13 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/Tiptap.d.ts +22 -0
- package/dist/components/Tiptap.d.ts.map +1 -0
- package/dist/components/Tiptap.js +21 -0
- package/dist/components/Tiptap.js.map +1 -0
- package/dist/components/Toggle.d.ts +9 -0
- package/dist/components/Toggle.d.ts.map +1 -0
- package/dist/components/Toggle.js +13 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/ToggleGroup.d.ts +9 -0
- package/dist/components/ToggleGroup.d.ts.map +1 -0
- package/dist/components/ToggleGroup.js +13 -0
- package/dist/components/ToggleGroup.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip.js +13 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/index.d.ts +38 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +38 -0
- package/dist/createPkComponent.d.ts +17 -0
- package/dist/createPkComponent.d.ts.map +1 -0
- package/dist/createPkComponent.js +33 -0
- package/dist/createPkComponent.js.map +1 -0
- package/dist/fault/AppFaultBoundary.d.ts +17 -0
- package/dist/fault/AppFaultBoundary.d.ts.map +1 -0
- package/dist/fault/AppFaultBoundary.js +31 -0
- package/dist/fault/AppFaultBoundary.js.map +1 -0
- package/dist/fault/AppFaultProvider.d.ts +116 -0
- package/dist/fault/AppFaultProvider.d.ts.map +1 -0
- package/dist/fault/AppFaultProvider.js +214 -0
- package/dist/fault/AppFaultProvider.js.map +1 -0
- package/dist/fault/FaultFallback.d.ts +88 -0
- package/dist/fault/FaultFallback.d.ts.map +1 -0
- package/dist/fault/FaultFallback.js +91 -0
- package/dist/fault/FaultFallback.js.map +1 -0
- package/dist/fault/buildSupportBundle.d.ts +3 -0
- package/dist/fault/buildSupportBundle.d.ts.map +1 -0
- package/dist/fault/buildSupportBundle.js +22 -0
- package/dist/fault/buildSupportBundle.js.map +1 -0
- package/dist/fault/index.d.ts +8 -0
- package/dist/fault/index.d.ts.map +1 -0
- package/dist/fault/index.js +7 -0
- package/dist/fault/isIgnorableGlobalError.d.ts +3 -0
- package/dist/fault/isIgnorableGlobalError.d.ts.map +1 -0
- package/dist/fault/isIgnorableGlobalError.js +14 -0
- package/dist/fault/isIgnorableGlobalError.js.map +1 -0
- package/dist/fault/types.d.ts +18 -0
- package/dist/fault/types.d.ts.map +1 -0
- package/dist/fault/useUiWatchdog.d.ts +14 -0
- package/dist/fault/useUiWatchdog.d.ts.map +1 -0
- package/dist/fault/useUiWatchdog.js +37 -0
- package/dist/fault/useUiWatchdog.js.map +1 -0
- package/dist/forms/Field.d.ts +123 -0
- package/dist/forms/Field.d.ts.map +1 -0
- package/dist/forms/Field.js +77 -0
- package/dist/forms/Field.js.map +1 -0
- package/dist/forms/SchemaFormEngine.d.ts +50 -0
- package/dist/forms/SchemaFormEngine.d.ts.map +1 -0
- package/dist/forms/SchemaFormEngine.js +372 -0
- package/dist/forms/SchemaFormEngine.js.map +1 -0
- package/dist/forms/SchemaFormFieldNode.d.ts +41 -0
- package/dist/forms/SchemaFormFieldNode.d.ts.map +1 -0
- package/dist/forms/SchemaFormFieldNode.js +73 -0
- package/dist/forms/SchemaFormFieldNode.js.map +1 -0
- package/dist/forms/assertSchemaRegistry.d.ts +17 -0
- package/dist/forms/assertSchemaRegistry.d.ts.map +1 -0
- package/dist/forms/assertSchemaRegistry.js +68 -0
- package/dist/forms/assertSchemaRegistry.js.map +1 -0
- package/dist/forms/builtin-field-loaders.d.ts +11 -0
- package/dist/forms/builtin-field-loaders.d.ts.map +1 -0
- package/dist/forms/builtin-field-loaders.js +31 -0
- package/dist/forms/builtin-field-loaders.js.map +1 -0
- package/dist/forms/components/FieldWrap.d.ts +124 -0
- package/dist/forms/components/FieldWrap.d.ts.map +1 -0
- package/dist/forms/components/FieldWrap.js +99 -0
- package/dist/forms/components/FieldWrap.js.map +1 -0
- package/dist/forms/components/ModalTabs.d.ts +147 -0
- package/dist/forms/components/ModalTabs.d.ts.map +1 -0
- package/dist/forms/components/ModalTabs.js +135 -0
- package/dist/forms/components/ModalTabs.js.map +1 -0
- package/dist/forms/components/index.d.ts +3 -0
- package/dist/forms/components/index.d.ts.map +1 -0
- package/dist/forms/components/schemaErrors.d.ts +4 -0
- package/dist/forms/components/schemaErrors.d.ts.map +1 -0
- package/dist/forms/components/schemaErrors.js +34 -0
- package/dist/forms/components/schemaErrors.js.map +1 -0
- package/dist/forms/datetime.d.ts +11 -0
- package/dist/forms/datetime.d.ts.map +1 -0
- package/dist/forms/datetime.js +35 -0
- package/dist/forms/datetime.js.map +1 -0
- package/dist/forms/engine/context.d.ts +44 -0
- package/dist/forms/engine/context.d.ts.map +1 -0
- package/dist/forms/engine/context.js +15 -0
- package/dist/forms/engine/context.js.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts +29 -0
- package/dist/forms/fields/CheckboxSelectField.d.ts.map +1 -0
- package/dist/forms/fields/CheckboxSelectField.js +44 -0
- package/dist/forms/fields/CheckboxSelectField.js.map +1 -0
- package/dist/forms/fields/CodeEditorField.d.ts +29 -0
- package/dist/forms/fields/CodeEditorField.d.ts.map +1 -0
- package/dist/forms/fields/CodeEditorField.js +46 -0
- package/dist/forms/fields/CodeEditorField.js.map +1 -0
- package/dist/forms/fields/ColorField.d.ts +29 -0
- package/dist/forms/fields/ColorField.d.ts.map +1 -0
- package/dist/forms/fields/ColorField.js +42 -0
- package/dist/forms/fields/ColorField.js.map +1 -0
- package/dist/forms/fields/ComboboxField.d.ts +29 -0
- package/dist/forms/fields/ComboboxField.d.ts.map +1 -0
- package/dist/forms/fields/ComboboxField.js +47 -0
- package/dist/forms/fields/ComboboxField.js.map +1 -0
- package/dist/forms/fields/DateTimeField.d.ts +29 -0
- package/dist/forms/fields/DateTimeField.d.ts.map +1 -0
- package/dist/forms/fields/DateTimeField.js +54 -0
- package/dist/forms/fields/DateTimeField.js.map +1 -0
- package/dist/forms/fields/GroupField.d.ts +27 -0
- package/dist/forms/fields/GroupField.d.ts.map +1 -0
- package/dist/forms/fields/GroupField.js +55 -0
- package/dist/forms/fields/GroupField.js.map +1 -0
- package/dist/forms/fields/LightswitchField.d.ts +29 -0
- package/dist/forms/fields/LightswitchField.d.ts.map +1 -0
- package/dist/forms/fields/LightswitchField.js +39 -0
- package/dist/forms/fields/LightswitchField.js.map +1 -0
- package/dist/forms/fields/NumberField.d.ts +29 -0
- package/dist/forms/fields/NumberField.d.ts.map +1 -0
- package/dist/forms/fields/NumberField.js +44 -0
- package/dist/forms/fields/NumberField.js.map +1 -0
- package/dist/forms/fields/RadioGroupField.d.ts +29 -0
- package/dist/forms/fields/RadioGroupField.d.ts.map +1 -0
- package/dist/forms/fields/RadioGroupField.js +55 -0
- package/dist/forms/fields/RadioGroupField.js.map +1 -0
- package/dist/forms/fields/SelectField.d.ts +29 -0
- package/dist/forms/fields/SelectField.d.ts.map +1 -0
- package/dist/forms/fields/SelectField.js +58 -0
- package/dist/forms/fields/SelectField.js.map +1 -0
- package/dist/forms/fields/TextField.d.ts +29 -0
- package/dist/forms/fields/TextField.d.ts.map +1 -0
- package/dist/forms/fields/TextField.js +43 -0
- package/dist/forms/fields/TextField.js.map +1 -0
- package/dist/forms/fields/TextareaField.d.ts +29 -0
- package/dist/forms/fields/TextareaField.d.ts.map +1 -0
- package/dist/forms/fields/TextareaField.js +44 -0
- package/dist/forms/fields/TextareaField.js.map +1 -0
- package/dist/forms/fields/options.d.ts +13 -0
- package/dist/forms/fields/options.d.ts.map +1 -0
- package/dist/forms/fields/options.js +29 -0
- package/dist/forms/fields/options.js.map +1 -0
- package/dist/forms/index.d.ts +13 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +12 -0
- package/dist/forms/registry.d.ts +10 -0
- package/dist/forms/registry.d.ts.map +1 -0
- package/dist/forms/registry.js +45 -0
- package/dist/forms/registry.js.map +1 -0
- package/dist/forms/useEngineField.d.ts +11 -0
- package/dist/forms/useEngineField.d.ts.map +1 -0
- package/dist/forms/useEngineField.js +34 -0
- package/dist/forms/useEngineField.js.map +1 -0
- package/dist/forms/utils.d.ts +6 -0
- package/dist/forms/utils.d.ts.map +1 -0
- package/dist/forms/utils.js +20 -0
- package/dist/forms/utils.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useTranslation.d.ts +4 -0
- package/dist/hooks/useTranslation.d.ts.map +1 -0
- package/dist/hooks/useTranslation.js +10 -0
- package/dist/hooks/useTranslation.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/utils/cn.d.ts +4 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +11 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/craftHostBridge.d.ts +17 -0
- package/dist/utils/craftHostBridge.d.ts.map +1 -0
- package/dist/utils/craftHostBridge.js +29 -0
- package/dist/utils/craftHostBridge.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/pk-change.d.ts +5 -0
- package/dist/utils/pk-change.d.ts.map +1 -0
- package/dist/utils/pk-change.js +13 -0
- package/dist/utils/pk-change.js.map +1 -0
- package/package.json +109 -0
- package/style.css +4 -0
- package/tailwind-preflight-scope.css +28 -0
- package/tailwind-theme.css +245 -0
- package/vite-dev.mjs +60 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 2.0.0 - 2026-07-19
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Initial public release of `@verbb/plugin-kit-vue` — Vue adapters over `@verbb/plugin-kit-web` custom elements.
|
|
9
|
+
- Canonical bootstrap is Vue `createApp` + `PluginKitProvider`. Importing a facade registers its custom element family.
|
|
10
|
+
- Public surfaces mirror React: `./components`, `./app`, `./forms`, `./fault`, `./hooks`, `./utils`, and `./style.css`.
|
|
11
|
+
- SchemaForm UI bindings on `@verbb/plugin-kit-vue/forms`; shared store/validation in `@verbb/plugin-kit-forms`.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Package versions lockstep with `@verbb/plugin-kit-web`, `@verbb/plugin-kit-react`, `@verbb/plugin-kit-forms`, and related `@verbb/plugin-kit-*` packages at `2.0.0`.
|
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Verbb
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# `@verbb/plugin-kit-vue`
|
|
2
|
+
|
|
3
|
+
Thin Vue facades over `@verbb/plugin-kit-web` custom elements via `@lit-labs/vue-utils`.
|
|
4
|
+
|
|
5
|
+
Vue does **not** reimplement behavior or styles — it maps props, events, and slots to the web component. Importing a facade registers its element. Load tokens + FOUCE CSS as below.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install vue @verbb/plugin-kit-vue @verbb/plugin-kit-web
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Craft Vite + asset-bundle wiring: [Vue quick start](https://docs.verbb.io/plugin-kit/vue/getting-started/quick-start).
|
|
14
|
+
|
|
15
|
+
## Bootstrap
|
|
16
|
+
|
|
17
|
+
Use Vue’s `createApp` plus `PluginKitProvider`. There is no `createVueApp` / `registerAll` step.
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import '@verbb/plugin-kit-vue/style.css';
|
|
21
|
+
|
|
22
|
+
import { createApp, h } from 'vue';
|
|
23
|
+
import { PluginKitProvider } from '@verbb/plugin-kit-vue';
|
|
24
|
+
import App from './App.vue';
|
|
25
|
+
|
|
26
|
+
createApp({
|
|
27
|
+
setup() {
|
|
28
|
+
return () => h(PluginKitProvider, { translationCategory: 'my-plugin' }, {
|
|
29
|
+
default: () => h(App),
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
}).mount('#my-plugin-root');
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`PluginKitProvider` wires translations (defaults to `Craft.t` when present) and optional portal / host config. Pass `hostBridge: createCraftHostBridge()` only when you call Craft action / selector helpers.
|
|
36
|
+
|
|
37
|
+
### Shadow DOM screens
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import pluginKitStyles from '@verbb/plugin-kit-vue/style.css?inline';
|
|
41
|
+
import screenStyles from './screen.css?inline';
|
|
42
|
+
import { createApp, h } from 'vue';
|
|
43
|
+
import { mountShadowApp, PluginKitProvider } from '@verbb/plugin-kit-vue/app';
|
|
44
|
+
import App from './App.vue';
|
|
45
|
+
|
|
46
|
+
const { mountNode, portalContainer } = mountShadowApp({
|
|
47
|
+
element: '#my-plugin-root',
|
|
48
|
+
styles: [pluginKitStyles, screenStyles],
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
createApp({
|
|
52
|
+
setup() {
|
|
53
|
+
return () => h(PluginKitProvider, {
|
|
54
|
+
translationCategory: 'my-plugin',
|
|
55
|
+
portalContainer,
|
|
56
|
+
}, {
|
|
57
|
+
default: () => h(App),
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
}).mount(mountNode);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Icons
|
|
64
|
+
|
|
65
|
+
`<Icon icon="…">` uses an opt-in registry — register named glyphs, or import `@verbb/plugin-kit-icons/all.js`:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { registerIcons, plus, gear } from '@verbb/plugin-kit-icons';
|
|
69
|
+
|
|
70
|
+
registerIcons({ plus, gear });
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Components
|
|
74
|
+
|
|
75
|
+
### Facades (1:1 with a web component)
|
|
76
|
+
|
|
77
|
+
```vue
|
|
78
|
+
<script setup>
|
|
79
|
+
import { Select, Option } from '@verbb/plugin-kit-vue/components';
|
|
80
|
+
</script>
|
|
81
|
+
|
|
82
|
+
<template>
|
|
83
|
+
<Select :value="value" @pk-change="value = $event.detail.value">
|
|
84
|
+
<Option value="a">Option A</Option>
|
|
85
|
+
</Select>
|
|
86
|
+
</template>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `*Input` convenience wrappers
|
|
90
|
+
|
|
91
|
+
```vue
|
|
92
|
+
<script setup>
|
|
93
|
+
import { CheckboxInput, Lightswitch, RadioGroupInput, SelectInput } from '@verbb/plugin-kit-vue/components';
|
|
94
|
+
|
|
95
|
+
const agreed = ref(false);
|
|
96
|
+
const enabled = ref(true);
|
|
97
|
+
const channel = ref('email');
|
|
98
|
+
</script>
|
|
99
|
+
|
|
100
|
+
<template>
|
|
101
|
+
<CheckboxInput v-model:checked="agreed">I agree</CheckboxInput>
|
|
102
|
+
<Lightswitch v-model:checked="enabled" />
|
|
103
|
+
<RadioGroupInput
|
|
104
|
+
v-model="channel"
|
|
105
|
+
:options="[
|
|
106
|
+
{ value: 'email', label: 'Email' },
|
|
107
|
+
{ value: 'sms', label: 'SMS' },
|
|
108
|
+
]"
|
|
109
|
+
/>
|
|
110
|
+
<SelectInput v-model="channel" :options="[{ value: 'email', label: 'Email' }]" />
|
|
111
|
+
</template>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Boolean controls use `v-model:checked`. Option-based wrappers use `v-model`.
|
|
115
|
+
|
|
116
|
+
## Import paths
|
|
117
|
+
|
|
118
|
+
| Subpath | Purpose |
|
|
119
|
+
|---------|---------|
|
|
120
|
+
| `@verbb/plugin-kit-vue` | Provider + common re-exports |
|
|
121
|
+
| `@verbb/plugin-kit-vue/components` | UI facades (same catalog as React) |
|
|
122
|
+
| `@verbb/plugin-kit-vue/forms` | SchemaForm UI + registry |
|
|
123
|
+
| `@verbb/plugin-kit-vue/app` | Provider, `mountShadowApp`, configure |
|
|
124
|
+
| `@verbb/plugin-kit-vue/utils` | Host bridge, `cn`, shared helpers |
|
|
125
|
+
| `@verbb/plugin-kit-vue/hooks` | `useTranslation` |
|
|
126
|
+
| `@verbb/plugin-kit-vue/fault` | Fault boundary / watchdog / support bundle |
|
|
127
|
+
| `@verbb/plugin-kit-vue/style.css` | Tokens + FOUCE + overlay chrome |
|
|
128
|
+
|
|
129
|
+
## Docs
|
|
130
|
+
|
|
131
|
+
- [docs.verbb.io/plugin-kit/vue](https://docs.verbb.io/plugin-kit/vue/)
|
|
132
|
+
- Workshop (monorepo): `npm run dev` → http://localhost:5175
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { PropType, VNodeChild } from 'vue';
|
|
2
|
+
import { PluginKitHostBridge } from '@verbb/plugin-kit-core';
|
|
3
|
+
import { PortalContainer } from '@verbb/plugin-kit-web/plugin-kit';
|
|
4
|
+
import { PluginKitVueConfig, TranslateFunction } from './configure.js';
|
|
5
|
+
export type PluginKitProviderProps = PluginKitVueConfig & {
|
|
6
|
+
/** Default slot — the app tree. */
|
|
7
|
+
default?: () => VNodeChild;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Applies Plugin Kit environment config for a Vue tree.
|
|
11
|
+
*
|
|
12
|
+
* Importing Vue components already registers their underlying custom elements —
|
|
13
|
+
* no `registerAll` / registration bootstrap. Pass `hostBridge` only when the tree
|
|
14
|
+
* calls Craft action/selector helpers.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { createApp, h } from 'vue';
|
|
19
|
+
* import { PluginKitProvider, Button } from '@verbb/plugin-kit-vue';
|
|
20
|
+
*
|
|
21
|
+
* createApp({
|
|
22
|
+
* setup() {
|
|
23
|
+
* return () => h(PluginKitProvider, { translationCategory: 'my-plugin' }, {
|
|
24
|
+
* default: () => h(Button, null, () => 'Save'),
|
|
25
|
+
* });
|
|
26
|
+
* },
|
|
27
|
+
* }).mount(el);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const PluginKitProvider: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
31
|
+
translationCategory: {
|
|
32
|
+
type: StringConstructor;
|
|
33
|
+
default: undefined;
|
|
34
|
+
};
|
|
35
|
+
translate: {
|
|
36
|
+
type: PropType<TranslateFunction>;
|
|
37
|
+
default: undefined;
|
|
38
|
+
};
|
|
39
|
+
hostBridge: {
|
|
40
|
+
type: PropType<Partial<PluginKitHostBridge>>;
|
|
41
|
+
default: undefined;
|
|
42
|
+
};
|
|
43
|
+
portalClassName: {
|
|
44
|
+
type: StringConstructor;
|
|
45
|
+
default: undefined;
|
|
46
|
+
};
|
|
47
|
+
portalContainer: {
|
|
48
|
+
type: PropType<PortalContainer>;
|
|
49
|
+
default: undefined;
|
|
50
|
+
};
|
|
51
|
+
shadowRootSelectors: {
|
|
52
|
+
type: PropType<string[]>;
|
|
53
|
+
default: undefined;
|
|
54
|
+
};
|
|
55
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
56
|
+
[key: string]: any;
|
|
57
|
+
}>[] | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
58
|
+
translationCategory: {
|
|
59
|
+
type: StringConstructor;
|
|
60
|
+
default: undefined;
|
|
61
|
+
};
|
|
62
|
+
translate: {
|
|
63
|
+
type: PropType<TranslateFunction>;
|
|
64
|
+
default: undefined;
|
|
65
|
+
};
|
|
66
|
+
hostBridge: {
|
|
67
|
+
type: PropType<Partial<PluginKitHostBridge>>;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
70
|
+
portalClassName: {
|
|
71
|
+
type: StringConstructor;
|
|
72
|
+
default: undefined;
|
|
73
|
+
};
|
|
74
|
+
portalContainer: {
|
|
75
|
+
type: PropType<PortalContainer>;
|
|
76
|
+
default: undefined;
|
|
77
|
+
};
|
|
78
|
+
shadowRootSelectors: {
|
|
79
|
+
type: PropType<string[]>;
|
|
80
|
+
default: undefined;
|
|
81
|
+
};
|
|
82
|
+
}>> & Readonly<{}>, {
|
|
83
|
+
translationCategory: string;
|
|
84
|
+
translate: TranslateFunction;
|
|
85
|
+
hostBridge: Partial<PluginKitHostBridge>;
|
|
86
|
+
portalClassName: string;
|
|
87
|
+
portalContainer: PortalContainer;
|
|
88
|
+
shadowRootSelectors: string[];
|
|
89
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
90
|
+
/** Read the nearest {@link PluginKitProvider} config (empty object when absent). */
|
|
91
|
+
export declare const usePluginKitConfig: () => PluginKitVueConfig;
|
|
92
|
+
//# sourceMappingURL=PluginKitProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginKitProvider.d.ts","sourceRoot":"","sources":["../../src/app/PluginKitProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAa,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE5F,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACtD,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,UAAU,CAAC;CAC9B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iBAAiB;;;;;;cAIS,QAAQ,CAAC,iBAAiB,CAAC;;;;cAC5B,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;;;;;;;;cAGhD,QAAQ,CAAC,eAAe,CAAC;;;;cAGP,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;;;;;;;;cAPzB,QAAQ,CAAC,iBAAiB,CAAC;;;;cAC5B,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;;;;;;;;cAGhD,QAAQ,CAAC,eAAe,CAAC;;;;cAGP,QAAQ,CAAC,MAAM,EAAE,CAAC;;;;;;;;;;4EAkB9D,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,QAAO,kBAErC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { configure } from "./configure.js";
|
|
2
|
+
import { defineComponent, inject, provide } from "vue";
|
|
3
|
+
//#region src/app/PluginKitProvider.ts
|
|
4
|
+
var PluginKitConfigKey = Symbol("pluginKitConfig");
|
|
5
|
+
/**
|
|
6
|
+
* Applies Plugin Kit environment config for a Vue tree.
|
|
7
|
+
*
|
|
8
|
+
* Importing Vue components already registers their underlying custom elements —
|
|
9
|
+
* no `registerAll` / registration bootstrap. Pass `hostBridge` only when the tree
|
|
10
|
+
* calls Craft action/selector helpers.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { createApp, h } from 'vue';
|
|
15
|
+
* import { PluginKitProvider, Button } from '@verbb/plugin-kit-vue';
|
|
16
|
+
*
|
|
17
|
+
* createApp({
|
|
18
|
+
* setup() {
|
|
19
|
+
* return () => h(PluginKitProvider, { translationCategory: 'my-plugin' }, {
|
|
20
|
+
* default: () => h(Button, null, () => 'Save'),
|
|
21
|
+
* });
|
|
22
|
+
* },
|
|
23
|
+
* }).mount(el);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
var PluginKitProvider = defineComponent({
|
|
27
|
+
name: "PluginKitProvider",
|
|
28
|
+
props: {
|
|
29
|
+
translationCategory: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: void 0
|
|
32
|
+
},
|
|
33
|
+
translate: {
|
|
34
|
+
type: Function,
|
|
35
|
+
default: void 0
|
|
36
|
+
},
|
|
37
|
+
hostBridge: {
|
|
38
|
+
type: Object,
|
|
39
|
+
default: void 0
|
|
40
|
+
},
|
|
41
|
+
portalClassName: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: void 0
|
|
44
|
+
},
|
|
45
|
+
portalContainer: {
|
|
46
|
+
type: Object,
|
|
47
|
+
default: void 0
|
|
48
|
+
},
|
|
49
|
+
shadowRootSelectors: {
|
|
50
|
+
type: Array,
|
|
51
|
+
default: void 0
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
setup(props, { slots }) {
|
|
55
|
+
const config = {
|
|
56
|
+
...props.translationCategory ? { translationCategory: props.translationCategory } : {},
|
|
57
|
+
...props.translate ? { translate: props.translate } : {},
|
|
58
|
+
...props.hostBridge ? { hostBridge: props.hostBridge } : {},
|
|
59
|
+
...props.portalClassName ? { portalClassName: props.portalClassName } : {},
|
|
60
|
+
...props.portalContainer !== void 0 ? { portalContainer: props.portalContainer } : {},
|
|
61
|
+
...props.shadowRootSelectors ? { shadowRootSelectors: props.shadowRootSelectors } : {}
|
|
62
|
+
};
|
|
63
|
+
configure(config);
|
|
64
|
+
provide(PluginKitConfigKey, config);
|
|
65
|
+
return () => slots.default?.();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
/** Read the nearest {@link PluginKitProvider} config (empty object when absent). */
|
|
69
|
+
var usePluginKitConfig = () => {
|
|
70
|
+
return inject(PluginKitConfigKey, {});
|
|
71
|
+
};
|
|
72
|
+
//#endregion
|
|
73
|
+
export { PluginKitProvider, usePluginKitConfig };
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=PluginKitProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginKitProvider.js","names":[],"sources":["../../src/app/PluginKitProvider.ts"],"sourcesContent":["import { defineComponent, inject, provide, type InjectionKey, type PropType, type VNodeChild } from 'vue';\nimport type { PluginKitHostBridge } from '@verbb/plugin-kit-core';\nimport type { PortalContainer } from '@verbb/plugin-kit-web/plugin-kit';\n\nimport { configure, type PluginKitVueConfig, type TranslateFunction } from './configure.js';\n\nexport type PluginKitProviderProps = PluginKitVueConfig & {\n /** Default slot — the app tree. */\n default?: () => VNodeChild;\n};\n\nconst PluginKitConfigKey: InjectionKey<PluginKitVueConfig> = Symbol('pluginKitConfig');\n\n/**\n * Applies Plugin Kit environment config for a Vue tree.\n *\n * Importing Vue components already registers their underlying custom elements —\n * no `registerAll` / registration bootstrap. Pass `hostBridge` only when the tree\n * calls Craft action/selector helpers.\n *\n * @example\n * ```ts\n * import { createApp, h } from 'vue';\n * import { PluginKitProvider, Button } from '@verbb/plugin-kit-vue';\n *\n * createApp({\n * setup() {\n * return () => h(PluginKitProvider, { translationCategory: 'my-plugin' }, {\n * default: () => h(Button, null, () => 'Save'),\n * });\n * },\n * }).mount(el);\n * ```\n */\nexport const PluginKitProvider = defineComponent({\n name: 'PluginKitProvider',\n props: {\n translationCategory: { type: String, default: undefined },\n translate: { type: Function as PropType<TranslateFunction>, default: undefined },\n hostBridge: { type: Object as PropType<Partial<PluginKitHostBridge>>, default: undefined },\n portalClassName: { type: String, default: undefined },\n portalContainer: {\n type: Object as PropType<PortalContainer>,\n default: undefined,\n },\n shadowRootSelectors: { type: Array as PropType<string[]>, default: undefined },\n },\n setup(props, { slots }) {\n // Sync apply before children render overlays — same timing as the old createVueApp path.\n const config: PluginKitVueConfig = {\n ...(props.translationCategory ? { translationCategory: props.translationCategory } : {}),\n ...(props.translate ? { translate: props.translate } : {}),\n ...(props.hostBridge ? { hostBridge: props.hostBridge } : {}),\n ...(props.portalClassName ? { portalClassName: props.portalClassName } : {}),\n ...(props.portalContainer !== undefined ? { portalContainer: props.portalContainer } : {}),\n ...(props.shadowRootSelectors ? { shadowRootSelectors: props.shadowRootSelectors } : {}),\n };\n\n configure(config);\n provide(PluginKitConfigKey, config);\n\n return () => slots.default?.();\n },\n});\n\n/** Read the nearest {@link PluginKitProvider} config (empty object when absent). */\nexport const usePluginKitConfig = (): PluginKitVueConfig => {\n return inject(PluginKitConfigKey, {});\n};\n"],"mappings":";;;AAWA,IAAM,qBAAuD,OAAO,kBAAkB;;;;;;;;;;;;;;;;;;;;;;AAuBtF,IAAa,oBAAoB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EACH,qBAAqB;GAAE,MAAM;GAAQ,SAAS,KAAA;GAAW;EACzD,WAAW;GAAE,MAAM;GAAyC,SAAS,KAAA;GAAW;EAChF,YAAY;GAAE,MAAM;GAAkD,SAAS,KAAA;GAAW;EAC1F,iBAAiB;GAAE,MAAM;GAAQ,SAAS,KAAA;GAAW;EACrD,iBAAiB;GACb,MAAM;GACN,SAAS,KAAA;GACZ;EACD,qBAAqB;GAAE,MAAM;GAA6B,SAAS,KAAA;GAAW;EACjF;CACD,MAAM,OAAO,EAAE,SAAS;EAEpB,MAAM,SAA6B;GAC/B,GAAI,MAAM,sBAAsB,EAAE,qBAAqB,MAAM,qBAAqB,GAAG,EAAE;GACvF,GAAI,MAAM,YAAY,EAAE,WAAW,MAAM,WAAW,GAAG,EAAE;GACzD,GAAI,MAAM,aAAa,EAAE,YAAY,MAAM,YAAY,GAAG,EAAE;GAC5D,GAAI,MAAM,kBAAkB,EAAE,iBAAiB,MAAM,iBAAiB,GAAG,EAAE;GAC3E,GAAI,MAAM,oBAAoB,KAAA,IAAY,EAAE,iBAAiB,MAAM,iBAAiB,GAAG,EAAE;GACzF,GAAI,MAAM,sBAAsB,EAAE,qBAAqB,MAAM,qBAAqB,GAAG,EAAE;GAC1F;AAED,YAAU,OAAO;AACjB,UAAQ,oBAAoB,OAAO;AAEnC,eAAa,MAAM,WAAW;;CAErC,CAAC;;AAGF,IAAa,2BAA+C;AACxD,QAAO,OAAO,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PluginKitHostBridge } from '@verbb/plugin-kit-core';
|
|
2
|
+
import { PluginKitWebConfig } from '@verbb/plugin-kit-web/plugin-kit';
|
|
3
|
+
import { TranslateParams } from '@verbb/plugin-kit-forms';
|
|
4
|
+
export type TranslateFunction = (category: string, message: string, params?: TranslateParams) => string;
|
|
5
|
+
export type PluginKitVueConfig = PluginKitWebConfig & {
|
|
6
|
+
/** Category passed to the translate function for engine/validation messages. */
|
|
7
|
+
translationCategory?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Custom translate implementation.
|
|
10
|
+
* When omitted and `window.Craft.t` exists, Craft’s translator is used automatically.
|
|
11
|
+
*/
|
|
12
|
+
translate?: TranslateFunction;
|
|
13
|
+
/**
|
|
14
|
+
* Partial merge into the global host bridge used by `hostRequest()` and related helpers.
|
|
15
|
+
* Opt-in — only pass when the app calls Craft action/selector helpers.
|
|
16
|
+
*/
|
|
17
|
+
hostBridge?: Partial<PluginKitHostBridge>;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Configure the Vue facade stack. Translation is forwarded to the form engine;
|
|
21
|
+
* portal/shadow settings are forwarded to the web-component layer.
|
|
22
|
+
*
|
|
23
|
+
* Prefer {@link PluginKitProvider} for app trees — call this directly only for
|
|
24
|
+
* secondary mounts that need a different portal target.
|
|
25
|
+
*/
|
|
26
|
+
export declare const configure: (config: PluginKitVueConfig) => void;
|
|
27
|
+
/** Alias for `configure()`. */
|
|
28
|
+
export declare const configurePluginKitVue: (config: PluginKitVueConfig) => void;
|
|
29
|
+
//# sourceMappingURL=configure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/app/configure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAIH,KAAK,kBAAkB,EAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAgD,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7G,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,KAAK,MAAM,CAAC;AAExG,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IAClD,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC7C,CAAC;AAgBF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,kBAAkB,KAAG,IAwCtD,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,qBAAqB,WA3CA,kBAAkB,KAAG,IA2CT,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { setHostBridge } from "@verbb/plugin-kit-core";
|
|
2
|
+
import { configurePluginKitWeb, setPortalClassName, setPortalContainer } from "@verbb/plugin-kit-web/plugin-kit";
|
|
3
|
+
import { setTranslateFunction, setTranslationCategory } from "@verbb/plugin-kit-forms";
|
|
4
|
+
//#region src/app/configure.ts
|
|
5
|
+
var resolveCraftTranslate = () => {
|
|
6
|
+
const craft = globalThis.Craft;
|
|
7
|
+
if (typeof craft?.t === "function") return (category, message, params) => craft.t(category, message, params);
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Configure the Vue facade stack. Translation is forwarded to the form engine;
|
|
11
|
+
* portal/shadow settings are forwarded to the web-component layer.
|
|
12
|
+
*
|
|
13
|
+
* Prefer {@link PluginKitProvider} for app trees — call this directly only for
|
|
14
|
+
* secondary mounts that need a different portal target.
|
|
15
|
+
*/
|
|
16
|
+
var configure = (config) => {
|
|
17
|
+
const { translationCategory, translate, hostBridge, portalClassName, portalContainer, shadowRootSelectors } = config;
|
|
18
|
+
if (translationCategory) setTranslationCategory(translationCategory);
|
|
19
|
+
const resolvedTranslate = translate ?? resolveCraftTranslate();
|
|
20
|
+
if (resolvedTranslate) setTranslateFunction(resolvedTranslate);
|
|
21
|
+
if (hostBridge) setHostBridge(hostBridge);
|
|
22
|
+
if (portalClassName) setPortalClassName(portalClassName);
|
|
23
|
+
if (portalContainer !== void 0) setPortalContainer(portalContainer);
|
|
24
|
+
const webConfig = {
|
|
25
|
+
...portalContainer !== void 0 ? { portalContainer } : {},
|
|
26
|
+
...shadowRootSelectors !== void 0 ? { shadowRootSelectors } : {}
|
|
27
|
+
};
|
|
28
|
+
if (webConfig.portalContainer !== void 0 || webConfig.shadowRootSelectors !== void 0) configurePluginKitWeb(webConfig);
|
|
29
|
+
};
|
|
30
|
+
/** Alias for `configure()`. */
|
|
31
|
+
var configurePluginKitVue = configure;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { configure, configurePluginKitVue };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=configure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.js","names":[],"sources":["../../src/app/configure.ts"],"sourcesContent":["import { setHostBridge, type PluginKitHostBridge } from '@verbb/plugin-kit-core';\nimport {\n configurePluginKitWeb,\n setPortalClassName,\n setPortalContainer,\n type PluginKitWebConfig,\n} from '@verbb/plugin-kit-web/plugin-kit';\nimport { setTranslateFunction, setTranslationCategory, type TranslateParams } from '@verbb/plugin-kit-forms';\n\nexport type TranslateFunction = (category: string, message: string, params?: TranslateParams) => string;\n\nexport type PluginKitVueConfig = PluginKitWebConfig & {\n /** Category passed to the translate function for engine/validation messages. */\n translationCategory?: string;\n /**\n * Custom translate implementation.\n * When omitted and `window.Craft.t` exists, Craft’s translator is used automatically.\n */\n translate?: TranslateFunction;\n /**\n * Partial merge into the global host bridge used by `hostRequest()` and related helpers.\n * Opt-in — only pass when the app calls Craft action/selector helpers.\n */\n hostBridge?: Partial<PluginKitHostBridge>;\n};\n\ntype CraftTranslateHost = {\n t?: TranslateFunction;\n};\n\nconst resolveCraftTranslate = (): TranslateFunction | undefined => {\n const craft = (globalThis as typeof globalThis & { Craft?: CraftTranslateHost }).Craft;\n\n if (typeof craft?.t === 'function') {\n return (category, message, params) => craft.t!(category, message, params);\n }\n\n return undefined;\n};\n\n/**\n * Configure the Vue facade stack. Translation is forwarded to the form engine;\n * portal/shadow settings are forwarded to the web-component layer.\n *\n * Prefer {@link PluginKitProvider} for app trees — call this directly only for\n * secondary mounts that need a different portal target.\n */\nexport const configure = (config: PluginKitVueConfig): void => {\n const {\n translationCategory,\n translate,\n hostBridge,\n portalClassName,\n portalContainer,\n shadowRootSelectors,\n } = config;\n\n if (translationCategory) {\n setTranslationCategory(translationCategory);\n }\n\n const resolvedTranslate = translate ?? resolveCraftTranslate();\n\n if (resolvedTranslate) {\n setTranslateFunction(resolvedTranslate);\n }\n\n if (hostBridge) {\n setHostBridge(hostBridge);\n }\n\n if (portalClassName) {\n setPortalClassName(portalClassName);\n }\n\n if (portalContainer !== undefined) {\n setPortalContainer(portalContainer);\n }\n\n const webConfig: PluginKitWebConfig = {\n ...(portalContainer !== undefined ? { portalContainer } : {}),\n ...(shadowRootSelectors !== undefined ? { shadowRootSelectors } : {}),\n };\n\n if (webConfig.portalContainer !== undefined || webConfig.shadowRootSelectors !== undefined) {\n configurePluginKitWeb(webConfig);\n }\n};\n\n/** Alias for `configure()`. */\nexport const configurePluginKitVue = configure;\n"],"mappings":";;;;AA8BA,IAAM,8BAA6D;CAC/D,MAAM,QAAS,WAAkE;AAEjF,KAAI,OAAO,OAAO,MAAM,WACpB,SAAQ,UAAU,SAAS,WAAW,MAAM,EAAG,UAAU,SAAS,OAAO;;;;;;;;;AAajF,IAAa,aAAa,WAAqC;CAC3D,MAAM,EACF,qBACA,WACA,YACA,iBACA,iBACA,wBACA;AAEJ,KAAI,oBACA,wBAAuB,oBAAoB;CAG/C,MAAM,oBAAoB,aAAa,uBAAuB;AAE9D,KAAI,kBACA,sBAAqB,kBAAkB;AAG3C,KAAI,WACA,eAAc,WAAW;AAG7B,KAAI,gBACA,oBAAmB,gBAAgB;AAGvC,KAAI,oBAAoB,KAAA,EACpB,oBAAmB,gBAAgB;CAGvC,MAAM,YAAgC;EAClC,GAAI,oBAAoB,KAAA,IAAY,EAAE,iBAAiB,GAAG,EAAE;EAC5D,GAAI,wBAAwB,KAAA,IAAY,EAAE,qBAAqB,GAAG,EAAE;EACvE;AAED,KAAI,UAAU,oBAAoB,KAAA,KAAa,UAAU,wBAAwB,KAAA,EAC7E,uBAAsB,UAAU;;;AAKxC,IAAa,wBAAwB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { configure, configurePluginKitVue, type PluginKitVueConfig, type TranslateFunction, } from './configure.js';
|
|
2
|
+
export { PluginKitProvider, usePluginKitConfig, type PluginKitProviderProps, } from './PluginKitProvider.js';
|
|
3
|
+
export { mountShadowApp, type MountShadowAppOptions, type ShadowAppMount, } from './mountShadowApp.js';
|
|
4
|
+
export { createCraftHostBridge } from '../utils/craftHostBridge.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,sBAAsB,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { configure, configurePluginKitVue } from "./configure.js";
|
|
2
|
+
import { PluginKitProvider, usePluginKitConfig } from "./PluginKitProvider.js";
|
|
3
|
+
import { mountShadowApp } from "./mountShadowApp.js";
|
|
4
|
+
import { createCraftHostBridge } from "../utils/craftHostBridge.js";
|
|
5
|
+
export { PluginKitProvider, configure, configurePluginKitVue, createCraftHostBridge, mountShadowApp, usePluginKitConfig };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-export the framework-agnostic helper from `@verbb/plugin-kit-web`.
|
|
3
|
+
* Prefer importing from `@verbb/plugin-kit-vue` / `/app` in app code.
|
|
4
|
+
*/
|
|
5
|
+
export { mountShadowApp, type MountShadowAppOptions, type ShadowAppMount, } from '@verbb/plugin-kit-web/plugin-kit';
|
|
6
|
+
//# sourceMappingURL=mountShadowApp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mountShadowApp.d.ts","sourceRoot":"","sources":["../../src/app/mountShadowApp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACH,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACtB,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { PkButtonSize, PkButtonVariant, PkSpinnerTone, PkSpinnerVariant } from '@verbb/plugin-kit-web';
|
|
3
|
+
export type ButtonProps = {
|
|
4
|
+
variant?: PkButtonVariant;
|
|
5
|
+
size?: PkButtonSize;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
type?: 'button' | 'submit' | 'reset';
|
|
9
|
+
spinnerVariant?: PkSpinnerVariant;
|
|
10
|
+
spinnerTone?: PkSpinnerTone;
|
|
11
|
+
'data-state'?: 'hover' | 'focus-visible' | 'active';
|
|
12
|
+
withCaret?: boolean;
|
|
13
|
+
groupTrigger?: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Vue facade over `<pk-button>`. Behavior and styles live in the web component. */
|
|
16
|
+
export declare const Button: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
17
|
+
variant: {
|
|
18
|
+
type: PropType<PkButtonVariant>;
|
|
19
|
+
default: string;
|
|
20
|
+
};
|
|
21
|
+
size: {
|
|
22
|
+
type: PropType<PkButtonSize>;
|
|
23
|
+
default: string;
|
|
24
|
+
};
|
|
25
|
+
loading: {
|
|
26
|
+
type: BooleanConstructor;
|
|
27
|
+
default: boolean;
|
|
28
|
+
};
|
|
29
|
+
disabled: {
|
|
30
|
+
type: BooleanConstructor;
|
|
31
|
+
default: boolean;
|
|
32
|
+
};
|
|
33
|
+
type: {
|
|
34
|
+
type: PropType<"button" | "submit" | "reset">;
|
|
35
|
+
default: string;
|
|
36
|
+
};
|
|
37
|
+
spinnerVariant: {
|
|
38
|
+
type: PropType<PkSpinnerVariant>;
|
|
39
|
+
default: undefined;
|
|
40
|
+
};
|
|
41
|
+
spinnerTone: {
|
|
42
|
+
type: PropType<PkSpinnerTone>;
|
|
43
|
+
default: undefined;
|
|
44
|
+
};
|
|
45
|
+
dataState: {
|
|
46
|
+
type: PropType<ButtonProps["data-state"]>;
|
|
47
|
+
default: undefined;
|
|
48
|
+
};
|
|
49
|
+
withCaret: {
|
|
50
|
+
type: BooleanConstructor;
|
|
51
|
+
default: boolean;
|
|
52
|
+
};
|
|
53
|
+
groupTrigger: {
|
|
54
|
+
type: BooleanConstructor;
|
|
55
|
+
default: boolean;
|
|
56
|
+
};
|
|
57
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
58
|
+
[key: string]: any;
|
|
59
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
60
|
+
variant: {
|
|
61
|
+
type: PropType<PkButtonVariant>;
|
|
62
|
+
default: string;
|
|
63
|
+
};
|
|
64
|
+
size: {
|
|
65
|
+
type: PropType<PkButtonSize>;
|
|
66
|
+
default: string;
|
|
67
|
+
};
|
|
68
|
+
loading: {
|
|
69
|
+
type: BooleanConstructor;
|
|
70
|
+
default: boolean;
|
|
71
|
+
};
|
|
72
|
+
disabled: {
|
|
73
|
+
type: BooleanConstructor;
|
|
74
|
+
default: boolean;
|
|
75
|
+
};
|
|
76
|
+
type: {
|
|
77
|
+
type: PropType<"button" | "submit" | "reset">;
|
|
78
|
+
default: string;
|
|
79
|
+
};
|
|
80
|
+
spinnerVariant: {
|
|
81
|
+
type: PropType<PkSpinnerVariant>;
|
|
82
|
+
default: undefined;
|
|
83
|
+
};
|
|
84
|
+
spinnerTone: {
|
|
85
|
+
type: PropType<PkSpinnerTone>;
|
|
86
|
+
default: undefined;
|
|
87
|
+
};
|
|
88
|
+
dataState: {
|
|
89
|
+
type: PropType<ButtonProps["data-state"]>;
|
|
90
|
+
default: undefined;
|
|
91
|
+
};
|
|
92
|
+
withCaret: {
|
|
93
|
+
type: BooleanConstructor;
|
|
94
|
+
default: boolean;
|
|
95
|
+
};
|
|
96
|
+
groupTrigger: {
|
|
97
|
+
type: BooleanConstructor;
|
|
98
|
+
default: boolean;
|
|
99
|
+
};
|
|
100
|
+
}>> & Readonly<{}>, {
|
|
101
|
+
size: PkButtonSize;
|
|
102
|
+
type: "reset" | "submit" | "button";
|
|
103
|
+
disabled: boolean;
|
|
104
|
+
dataState: "focus-visible" | "active" | "hover" | undefined;
|
|
105
|
+
variant: PkButtonVariant;
|
|
106
|
+
loading: boolean;
|
|
107
|
+
spinnerVariant: PkSpinnerVariant;
|
|
108
|
+
spinnerTone: PkSpinnerTone;
|
|
109
|
+
withCaret: boolean;
|
|
110
|
+
groupTrigger: boolean;
|
|
111
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
112
|
+
export declare const PkButtonElement: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
113
|
+
variant: {
|
|
114
|
+
type: PropType<PkButtonVariant>;
|
|
115
|
+
default: string;
|
|
116
|
+
};
|
|
117
|
+
size: {
|
|
118
|
+
type: PropType<PkButtonSize>;
|
|
119
|
+
default: string;
|
|
120
|
+
};
|
|
121
|
+
loading: {
|
|
122
|
+
type: BooleanConstructor;
|
|
123
|
+
default: boolean;
|
|
124
|
+
};
|
|
125
|
+
disabled: {
|
|
126
|
+
type: BooleanConstructor;
|
|
127
|
+
default: boolean;
|
|
128
|
+
};
|
|
129
|
+
type: {
|
|
130
|
+
type: PropType<"button" | "submit" | "reset">;
|
|
131
|
+
default: string;
|
|
132
|
+
};
|
|
133
|
+
spinnerVariant: {
|
|
134
|
+
type: PropType<PkSpinnerVariant>;
|
|
135
|
+
default: undefined;
|
|
136
|
+
};
|
|
137
|
+
spinnerTone: {
|
|
138
|
+
type: PropType<PkSpinnerTone>;
|
|
139
|
+
default: undefined;
|
|
140
|
+
};
|
|
141
|
+
dataState: {
|
|
142
|
+
type: PropType<ButtonProps["data-state"]>;
|
|
143
|
+
default: undefined;
|
|
144
|
+
};
|
|
145
|
+
withCaret: {
|
|
146
|
+
type: BooleanConstructor;
|
|
147
|
+
default: boolean;
|
|
148
|
+
};
|
|
149
|
+
groupTrigger: {
|
|
150
|
+
type: BooleanConstructor;
|
|
151
|
+
default: boolean;
|
|
152
|
+
};
|
|
153
|
+
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
154
|
+
[key: string]: any;
|
|
155
|
+
}>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
156
|
+
variant: {
|
|
157
|
+
type: PropType<PkButtonVariant>;
|
|
158
|
+
default: string;
|
|
159
|
+
};
|
|
160
|
+
size: {
|
|
161
|
+
type: PropType<PkButtonSize>;
|
|
162
|
+
default: string;
|
|
163
|
+
};
|
|
164
|
+
loading: {
|
|
165
|
+
type: BooleanConstructor;
|
|
166
|
+
default: boolean;
|
|
167
|
+
};
|
|
168
|
+
disabled: {
|
|
169
|
+
type: BooleanConstructor;
|
|
170
|
+
default: boolean;
|
|
171
|
+
};
|
|
172
|
+
type: {
|
|
173
|
+
type: PropType<"button" | "submit" | "reset">;
|
|
174
|
+
default: string;
|
|
175
|
+
};
|
|
176
|
+
spinnerVariant: {
|
|
177
|
+
type: PropType<PkSpinnerVariant>;
|
|
178
|
+
default: undefined;
|
|
179
|
+
};
|
|
180
|
+
spinnerTone: {
|
|
181
|
+
type: PropType<PkSpinnerTone>;
|
|
182
|
+
default: undefined;
|
|
183
|
+
};
|
|
184
|
+
dataState: {
|
|
185
|
+
type: PropType<ButtonProps["data-state"]>;
|
|
186
|
+
default: undefined;
|
|
187
|
+
};
|
|
188
|
+
withCaret: {
|
|
189
|
+
type: BooleanConstructor;
|
|
190
|
+
default: boolean;
|
|
191
|
+
};
|
|
192
|
+
groupTrigger: {
|
|
193
|
+
type: BooleanConstructor;
|
|
194
|
+
default: boolean;
|
|
195
|
+
};
|
|
196
|
+
}>> & Readonly<{}>, {
|
|
197
|
+
size: PkButtonSize;
|
|
198
|
+
type: "reset" | "submit" | "button";
|
|
199
|
+
disabled: boolean;
|
|
200
|
+
dataState: "focus-visible" | "active" | "hover" | undefined;
|
|
201
|
+
variant: PkButtonVariant;
|
|
202
|
+
loading: boolean;
|
|
203
|
+
spinnerVariant: PkSpinnerVariant;
|
|
204
|
+
spinnerTone: PkSpinnerTone;
|
|
205
|
+
withCaret: boolean;
|
|
206
|
+
groupTrigger: boolean;
|
|
207
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
208
|
+
//# sourceMappingURL=Button.d.ts.map
|