From 7347be82c6fc83a2d55a7bb62274fecbe85f8c27 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 7 May 2025 10:16:45 -0400 Subject: [PATCH 01/33] wip --- .../js/components/ui/Publish/Container.vue | 68 +++++++++++++ .../js/components/ui/Publish/ExampleField.vue | 44 +++++++++ resources/js/components/ui/Publish/Field.vue | 97 +++++++++++++++++++ resources/js/components/ui/Publish/Fields.vue | 17 ++++ resources/js/components/ui/Publish/Form.vue | 67 +++++++++++++ .../components/ui/Publish/SectionProvider.vue | 20 ++++ .../js/components/ui/Publish/Sections.vue | 37 +++++++ .../js/components/ui/Publish/TabProvider.vue | 20 ++++ resources/js/components/ui/Publish/Tabs.vue | 39 ++++++++ resources/js/components/ui/index.js | 10 ++ resources/js/util/createContext.js | 15 +++ 11 files changed, 434 insertions(+) create mode 100644 resources/js/components/ui/Publish/Container.vue create mode 100644 resources/js/components/ui/Publish/ExampleField.vue create mode 100644 resources/js/components/ui/Publish/Field.vue create mode 100644 resources/js/components/ui/Publish/Fields.vue create mode 100644 resources/js/components/ui/Publish/Form.vue create mode 100644 resources/js/components/ui/Publish/SectionProvider.vue create mode 100644 resources/js/components/ui/Publish/Sections.vue create mode 100644 resources/js/components/ui/Publish/TabProvider.vue create mode 100644 resources/js/components/ui/Publish/Tabs.vue create mode 100644 resources/js/util/createContext.js diff --git a/resources/js/components/ui/Publish/Container.vue b/resources/js/components/ui/Publish/Container.vue new file mode 100644 index 00000000000..4450a312e16 --- /dev/null +++ b/resources/js/components/ui/Publish/Container.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/resources/js/components/ui/Publish/ExampleField.vue b/resources/js/components/ui/Publish/ExampleField.vue new file mode 100644 index 00000000000..f11b6ea00dd --- /dev/null +++ b/resources/js/components/ui/Publish/ExampleField.vue @@ -0,0 +1,44 @@ + + + diff --git a/resources/js/components/ui/Publish/Field.vue b/resources/js/components/ui/Publish/Field.vue new file mode 100644 index 00000000000..6822b7750f7 --- /dev/null +++ b/resources/js/components/ui/Publish/Field.vue @@ -0,0 +1,97 @@ + + + diff --git a/resources/js/components/ui/Publish/Fields.vue b/resources/js/components/ui/Publish/Fields.vue new file mode 100644 index 00000000000..9168e00f3f2 --- /dev/null +++ b/resources/js/components/ui/Publish/Fields.vue @@ -0,0 +1,17 @@ + + + diff --git a/resources/js/components/ui/Publish/Form.vue b/resources/js/components/ui/Publish/Form.vue new file mode 100644 index 00000000000..8c1367ae16f --- /dev/null +++ b/resources/js/components/ui/Publish/Form.vue @@ -0,0 +1,67 @@ + + + diff --git a/resources/js/components/ui/Publish/SectionProvider.vue b/resources/js/components/ui/Publish/SectionProvider.vue new file mode 100644 index 00000000000..ec3d2f9ccfd --- /dev/null +++ b/resources/js/components/ui/Publish/SectionProvider.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/resources/js/components/ui/Publish/Sections.vue b/resources/js/components/ui/Publish/Sections.vue new file mode 100644 index 00000000000..53b06ecf341 --- /dev/null +++ b/resources/js/components/ui/Publish/Sections.vue @@ -0,0 +1,37 @@ + + + diff --git a/resources/js/components/ui/Publish/TabProvider.vue b/resources/js/components/ui/Publish/TabProvider.vue new file mode 100644 index 00000000000..45846b8de2d --- /dev/null +++ b/resources/js/components/ui/Publish/TabProvider.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/resources/js/components/ui/Publish/Tabs.vue b/resources/js/components/ui/Publish/Tabs.vue new file mode 100644 index 00000000000..2431edfe4c8 --- /dev/null +++ b/resources/js/components/ui/Publish/Tabs.vue @@ -0,0 +1,39 @@ + + + diff --git a/resources/js/components/ui/index.js b/resources/js/components/ui/index.js index 7f78a186943..72fd9ed1c3f 100644 --- a/resources/js/components/ui/index.js +++ b/resources/js/components/ui/index.js @@ -34,6 +34,11 @@ import { default as Panel } from './Panel/Panel.vue'; import { default as PanelHeader } from './Panel/Header.vue'; import { default as Badge } from './Badge.vue'; import { default as CharacterCounter } from './CharacterCounter.vue'; +import { default as Tabs } from './Tabs/Tabs.vue'; +import { default as TabList } from './Tabs/List.vue'; +import { default as TabTrigger } from './Tabs/Trigger.vue'; +import { default as TabContent } from './Tabs/Content.vue'; +import { default as PublishTabs } from './Publish/Tabs.vue'; export { WithField, @@ -72,4 +77,9 @@ export { PanelHeader, Badge, CharacterCounter, + Tabs, + TabList, + TabTrigger, + TabContent, + PublishTabs, }; diff --git a/resources/js/util/createContext.js b/resources/js/util/createContext.js new file mode 100644 index 00000000000..b40e2b7474d --- /dev/null +++ b/resources/js/util/createContext.js @@ -0,0 +1,15 @@ +import { inject, provide } from 'vue'; + +export default function createContext(name) { + const injectionKey = Symbol(`${name}Context`); + + const provideContext = (context) => { + provide(injectionKey, context); + }; + + const injectContext = () => { + return inject(injectionKey); + }; + + return [injectContext, provideContext]; +} From aa52810230bd197a7b74b8135e4aec8100eec977 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 7 May 2025 14:28:15 -0400 Subject: [PATCH 02/33] wip --- resources/js/components/ui/Field.vue | 42 ++++++++++++++++++- resources/js/components/ui/Publish/Field.vue | 42 +++++++------------ resources/js/components/ui/Publish/Fields.vue | 13 +++--- 3 files changed, 64 insertions(+), 33 deletions(-) diff --git a/resources/js/components/ui/Field.vue b/resources/js/components/ui/Field.vue index 5f9b03e7862..7c3beca9e93 100644 --- a/resources/js/components/ui/Field.vue +++ b/resources/js/components/ui/Field.vue @@ -1,12 +1,45 @@ diff --git a/resources/js/components/ui/Publish/Fields.vue b/resources/js/components/ui/Publish/Fields.vue index 9168e00f3f2..d73f40a1ad4 100644 --- a/resources/js/components/ui/Publish/Fields.vue +++ b/resources/js/components/ui/Publish/Fields.vue @@ -1,6 +1,5 @@ From 4c06a269e825d72d67ec07e8cd466f6f3036a08e Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 7 May 2025 14:40:01 -0400 Subject: [PATCH 03/33] Remove WithField component and usages. All of the changes in components are because of the wrapper removal. --- resources/js/components/ui/Checkbox/Group.vue | 23 ++- .../components/ui/DatePicker/DatePicker.vue | 134 ++++++++------- .../ui/DateRangePicker/DateRangePicker.vue | 152 +++++++++--------- resources/js/components/ui/Input/Group.vue | 40 +++-- resources/js/components/ui/Input/Input.vue | 88 +++++----- resources/js/components/ui/Radio/Group.vue | 25 ++- resources/js/components/ui/Select/Select.vue | 68 ++++---- resources/js/components/ui/Slider.vue | 37 ++--- resources/js/components/ui/Switch.vue | 25 ++- resources/js/components/ui/Textarea.vue | 28 ++-- .../components/ui/TimePicker/TimePicker.vue | 63 ++++---- resources/js/components/ui/Toggle/Group.vue | 19 +-- resources/js/components/ui/WithField.vue | 36 ----- resources/js/components/ui/index.js | 2 - 14 files changed, 332 insertions(+), 408 deletions(-) delete mode 100644 resources/js/components/ui/WithField.vue diff --git a/resources/js/components/ui/Checkbox/Group.vue b/resources/js/components/ui/Checkbox/Group.vue index 5b057c20cd4..8f29deba639 100644 --- a/resources/js/components/ui/Checkbox/Group.vue +++ b/resources/js/components/ui/Checkbox/Group.vue @@ -1,7 +1,6 @@ diff --git a/resources/js/components/ui/DatePicker/DatePicker.vue b/resources/js/components/ui/DatePicker/DatePicker.vue index 26230885646..df37b380e41 100644 --- a/resources/js/components/ui/DatePicker/DatePicker.vue +++ b/resources/js/components/ui/DatePicker/DatePicker.vue @@ -19,7 +19,7 @@ import { DatePickerNext, DatePickerPrev, } from 'reka-ui'; -import { WithField, Card, Button, Calendar, Icon } from '@statamic/ui'; +import { Card, Button, Calendar, Icon } from '@statamic/ui'; const emit = defineEmits(['update:modelValue']); @@ -64,77 +64,75 @@ const calendarEvents = computed(() => ({ diff --git a/resources/js/components/ui/DateRangePicker/DateRangePicker.vue b/resources/js/components/ui/DateRangePicker/DateRangePicker.vue index d36ad925fbe..814865ba65e 100644 --- a/resources/js/components/ui/DateRangePicker/DateRangePicker.vue +++ b/resources/js/components/ui/DateRangePicker/DateRangePicker.vue @@ -19,7 +19,7 @@ import { DateRangePickerRoot, DateRangePickerTrigger, } from 'reka-ui'; -import { WithField, Card, Button, Calendar, Icon } from '@statamic/ui'; +import { Card, Button, Calendar, Icon } from '@statamic/ui'; import { parseAbsoluteToLocal } from '@internationalized/date'; const emit = defineEmits(['update:modelValue']); @@ -71,85 +71,83 @@ const calendarEvents = computed(() => ({ diff --git a/resources/js/components/ui/Input/Group.vue b/resources/js/components/ui/Input/Group.vue index f9013bf387a..52a2ede4621 100644 --- a/resources/js/components/ui/Input/Group.vue +++ b/resources/js/components/ui/Input/Group.vue @@ -1,6 +1,4 @@ diff --git a/resources/js/components/ui/Input/Input.vue b/resources/js/components/ui/Input/Input.vue index 31071077c7b..c99e87d2e03 100644 --- a/resources/js/components/ui/Input/Input.vue +++ b/resources/js/components/ui/Input/Input.vue @@ -2,7 +2,7 @@ import { computed, useSlots, ref, useId } from 'vue'; import { cva } from 'cva'; import { twMerge } from 'tailwind-merge'; -import { Icon, Button, CharacterCounter, WithField } from '@statamic/ui'; +import { Icon, Button, CharacterCounter } from '@statamic/ui'; const slots = useSlots(); @@ -109,49 +109,47 @@ const copy = () => { diff --git a/resources/js/components/ui/Radio/Group.vue b/resources/js/components/ui/Radio/Group.vue index a236796d4b8..4f634a5174d 100644 --- a/resources/js/components/ui/Radio/Group.vue +++ b/resources/js/components/ui/Radio/Group.vue @@ -1,7 +1,6 @@ diff --git a/resources/js/components/ui/Select/Select.vue b/resources/js/components/ui/Select/Select.vue index be464a5e6ce..172dd00639b 100644 --- a/resources/js/components/ui/Select/Select.vue +++ b/resources/js/components/ui/Select/Select.vue @@ -11,7 +11,7 @@ import { SelectViewport, } from 'reka-ui'; import { useAttrs } from 'vue'; -import { WithField, Icon } from '@statamic/ui'; +import { Icon } from '@statamic/ui'; const emit = defineEmits(['update:modelValue']); @@ -59,39 +59,37 @@ const itemClasses = cva({ diff --git a/resources/js/components/ui/Slider.vue b/resources/js/components/ui/Slider.vue index 5c2f71909b3..b27f57a1271 100644 --- a/resources/js/components/ui/Slider.vue +++ b/resources/js/components/ui/Slider.vue @@ -1,7 +1,6 @@ diff --git a/resources/js/components/ui/Switch.vue b/resources/js/components/ui/Switch.vue index 1927c8d3d0e..004db5e99b5 100644 --- a/resources/js/components/ui/Switch.vue +++ b/resources/js/components/ui/Switch.vue @@ -2,7 +2,6 @@ import { useId } from 'vue'; import { SwitchRoot, SwitchThumb } from 'reka-ui'; import { cva } from 'cva'; -import { WithField } from '@statamic/ui'; const props = defineProps({ description: { type: String, default: null }, @@ -51,17 +50,15 @@ const switchThumbClasses = cva({ diff --git a/resources/js/components/ui/Textarea.vue b/resources/js/components/ui/Textarea.vue index a9c5f1c57d0..1bf529630cd 100644 --- a/resources/js/components/ui/Textarea.vue +++ b/resources/js/components/ui/Textarea.vue @@ -1,6 +1,6 @@