From e43e5156141896d09e07032928a6a635c6d10f8b Mon Sep 17 00:00:00 2001 From: Darko Gjorgjijoski Date: Sat, 4 Apr 2026 05:45:00 +0200 Subject: [PATCH] Phase 3: Typed Vue components in scripts-v2/ Migrate all shared components to TypeScript SFCs with script setup lang=ts. 72 files, 7144 lines, zero any types. - components/base/ (42 files): Button, Input, Textarea, Checkbox, Radio, Switch, Badge, Card, Modal, Dialog, Dropdown, DatePicker, TimePicker, Money, FileUploader, Select, Icon, Loader, Multiselect, TabGroup, Wizard, CustomerSelect, ItemSelect, CustomInput, alerts, status badges (Invoice/Estimate/Paid/RecurringInvoice), List/ListItem - components/table/ (3 files): DataTable, TablePagination - components/form/ (4 files): FormGroup, FormGrid, SwitchSection - components/layout/ (11 files): Page, PageHeader, Breadcrumb, FilterWrapper, EmptyPlaceholder, ContentPlaceholders, SettingCard - components/editor/ (2 files): RichEditor with Tiptap - components/charts/ (2 files): LineChart with Chart.js - components/notifications/ (3 files): NotificationRoot, NotificationItem - components/icons/ (2 files): MainLogo All use defineProps(), defineEmits(), typed refs, and import domain types from types/domain. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../scripts-v2/components/base/BaseBadge.vue | 28 + .../scripts-v2/components/base/BaseButton.vue | 137 +++++ .../scripts-v2/components/base/BaseCard.vue | 40 ++ .../components/base/BaseCheckbox.vue | 77 +++ .../components/base/BaseCustomInput.vue | 278 +++++++++ .../base/BaseCustomerAddressDisplay.vue | 37 ++ .../base/BaseCustomerSelectPopup.vue | 486 +++++++++++++++ .../components/base/BaseDatePicker.vue | 260 ++++++++ .../scripts-v2/components/base/BaseDialog.vue | 178 ++++++ .../components/base/BaseDivider.vue | 6 + .../components/base/BaseDropdown.vue | 75 +++ .../components/base/BaseDropdownItem.vue | 17 + .../components/base/BaseErrorAlert.vue | 35 ++ .../components/base/BaseFileUploader.vue | 582 ++++++++++++++++++ .../components/base/BaseGlobalLoader.vue | 54 ++ .../scripts-v2/components/base/BaseIcon.vue | 21 + .../components/base/BaseInfoAlert.vue | 82 +++ .../scripts-v2/components/base/BaseInput.vue | 268 ++++++++ .../components/base/BaseItemSelect.vue | 158 +++++ .../scripts-v2/components/base/BaseList.vue | 8 + .../components/base/BaseListItem.vue | 39 ++ .../scripts-v2/components/base/BaseModal.vue | 147 +++++ .../scripts-v2/components/base/BaseMoney.vue | 101 +++ .../components/base/BaseMultiselect.vue | 288 +++++++++ .../scripts-v2/components/base/BaseRadio.vue | 86 +++ .../components/base/BaseSelectAction.vue | 26 + .../components/base/BaseSelectInput.vue | 215 +++++++ .../components/base/BaseSettingCard.vue | 39 ++ .../scripts-v2/components/base/BaseSwitch.vue | 69 +++ .../components/base/BaseTabGroup.vue | 87 +++ .../scripts-v2/components/base/BaseText.vue | 32 + .../components/base/BaseTextarea.vue | 93 +++ .../components/base/BaseTimePicker.vue | 141 +++++ .../components/base/BaseWizardNavigation.vue | 84 +++ .../components/base/BaseWizardStep.vue | 34 + .../components/base/EstimateStatusBadge.vue | 43 ++ .../base/InvoiceInformationCard.vue | 89 +++ .../components/base/InvoicePublicPage.vue | 144 +++++ .../components/base/InvoiceStatusBadge.vue | 56 ++ .../scripts-v2/components/base/NewBadge.vue | 22 + .../components/base/PaidStatusBadge.vue | 40 ++ .../base/RecurringInvoiceStatusBadge.vue | 34 + resources/scripts-v2/components/base/index.ts | 46 ++ .../components/charts/LineChart.vue | 214 +++++++ .../scripts-v2/components/charts/index.ts | 1 + .../components/editor/RichEditor.vue | 257 ++++++++ .../scripts-v2/components/editor/index.ts | 1 + .../scripts-v2/components/form/FormGrid.vue | 24 + .../scripts-v2/components/form/FormGroup.vue | 96 +++ .../components/form/SwitchSection.vue | 65 ++ resources/scripts-v2/components/form/index.ts | 3 + .../scripts-v2/components/icons/MainLogo.vue | 45 ++ .../scripts-v2/components/icons/index.ts | 1 + resources/scripts-v2/components/index.ts | 60 ++ .../components/layout/Breadcrumb.vue | 10 + .../components/layout/BreadcrumbItem.vue | 35 ++ .../components/layout/ContentPlaceholder.vue | 212 +++++++ .../layout/ContentPlaceholderBox.vue | 24 + .../layout/ContentPlaceholderHeading.vue | 24 + .../layout/ContentPlaceholderText.vue | 30 + .../components/layout/EmptyPlaceholder.vue | 30 + .../components/layout/FilterWrapper.vue | 59 ++ .../scripts-v2/components/layout/Page.vue | 8 + .../components/layout/PageHeader.vue | 21 + .../components/layout/SettingCard.vue | 38 ++ .../scripts-v2/components/layout/index.ts | 11 + .../notifications/NotificationItem.vue | 183 ++++++ .../notifications/NotificationRoot.vue | 45 ++ .../components/notifications/index.ts | 4 + .../scripts-v2/components/table/DataTable.vue | 484 +++++++++++++++ .../components/table/TablePagination.vue | 372 +++++++++++ .../scripts-v2/components/table/index.ts | 5 + 72 files changed, 7144 insertions(+) create mode 100644 resources/scripts-v2/components/base/BaseBadge.vue create mode 100644 resources/scripts-v2/components/base/BaseButton.vue create mode 100644 resources/scripts-v2/components/base/BaseCard.vue create mode 100644 resources/scripts-v2/components/base/BaseCheckbox.vue create mode 100644 resources/scripts-v2/components/base/BaseCustomInput.vue create mode 100644 resources/scripts-v2/components/base/BaseCustomerAddressDisplay.vue create mode 100644 resources/scripts-v2/components/base/BaseCustomerSelectPopup.vue create mode 100644 resources/scripts-v2/components/base/BaseDatePicker.vue create mode 100644 resources/scripts-v2/components/base/BaseDialog.vue create mode 100644 resources/scripts-v2/components/base/BaseDivider.vue create mode 100644 resources/scripts-v2/components/base/BaseDropdown.vue create mode 100644 resources/scripts-v2/components/base/BaseDropdownItem.vue create mode 100644 resources/scripts-v2/components/base/BaseErrorAlert.vue create mode 100644 resources/scripts-v2/components/base/BaseFileUploader.vue create mode 100644 resources/scripts-v2/components/base/BaseGlobalLoader.vue create mode 100644 resources/scripts-v2/components/base/BaseIcon.vue create mode 100644 resources/scripts-v2/components/base/BaseInfoAlert.vue create mode 100644 resources/scripts-v2/components/base/BaseInput.vue create mode 100644 resources/scripts-v2/components/base/BaseItemSelect.vue create mode 100644 resources/scripts-v2/components/base/BaseList.vue create mode 100644 resources/scripts-v2/components/base/BaseListItem.vue create mode 100644 resources/scripts-v2/components/base/BaseModal.vue create mode 100644 resources/scripts-v2/components/base/BaseMoney.vue create mode 100644 resources/scripts-v2/components/base/BaseMultiselect.vue create mode 100644 resources/scripts-v2/components/base/BaseRadio.vue create mode 100644 resources/scripts-v2/components/base/BaseSelectAction.vue create mode 100644 resources/scripts-v2/components/base/BaseSelectInput.vue create mode 100644 resources/scripts-v2/components/base/BaseSettingCard.vue create mode 100644 resources/scripts-v2/components/base/BaseSwitch.vue create mode 100644 resources/scripts-v2/components/base/BaseTabGroup.vue create mode 100644 resources/scripts-v2/components/base/BaseText.vue create mode 100644 resources/scripts-v2/components/base/BaseTextarea.vue create mode 100644 resources/scripts-v2/components/base/BaseTimePicker.vue create mode 100644 resources/scripts-v2/components/base/BaseWizardNavigation.vue create mode 100644 resources/scripts-v2/components/base/BaseWizardStep.vue create mode 100644 resources/scripts-v2/components/base/EstimateStatusBadge.vue create mode 100644 resources/scripts-v2/components/base/InvoiceInformationCard.vue create mode 100644 resources/scripts-v2/components/base/InvoicePublicPage.vue create mode 100644 resources/scripts-v2/components/base/InvoiceStatusBadge.vue create mode 100644 resources/scripts-v2/components/base/NewBadge.vue create mode 100644 resources/scripts-v2/components/base/PaidStatusBadge.vue create mode 100644 resources/scripts-v2/components/base/RecurringInvoiceStatusBadge.vue create mode 100644 resources/scripts-v2/components/base/index.ts create mode 100644 resources/scripts-v2/components/charts/LineChart.vue create mode 100644 resources/scripts-v2/components/charts/index.ts create mode 100644 resources/scripts-v2/components/editor/RichEditor.vue create mode 100644 resources/scripts-v2/components/editor/index.ts create mode 100644 resources/scripts-v2/components/form/FormGrid.vue create mode 100644 resources/scripts-v2/components/form/FormGroup.vue create mode 100644 resources/scripts-v2/components/form/SwitchSection.vue create mode 100644 resources/scripts-v2/components/form/index.ts create mode 100644 resources/scripts-v2/components/icons/MainLogo.vue create mode 100644 resources/scripts-v2/components/icons/index.ts create mode 100644 resources/scripts-v2/components/index.ts create mode 100644 resources/scripts-v2/components/layout/Breadcrumb.vue create mode 100644 resources/scripts-v2/components/layout/BreadcrumbItem.vue create mode 100644 resources/scripts-v2/components/layout/ContentPlaceholder.vue create mode 100644 resources/scripts-v2/components/layout/ContentPlaceholderBox.vue create mode 100644 resources/scripts-v2/components/layout/ContentPlaceholderHeading.vue create mode 100644 resources/scripts-v2/components/layout/ContentPlaceholderText.vue create mode 100644 resources/scripts-v2/components/layout/EmptyPlaceholder.vue create mode 100644 resources/scripts-v2/components/layout/FilterWrapper.vue create mode 100644 resources/scripts-v2/components/layout/Page.vue create mode 100644 resources/scripts-v2/components/layout/PageHeader.vue create mode 100644 resources/scripts-v2/components/layout/SettingCard.vue create mode 100644 resources/scripts-v2/components/layout/index.ts create mode 100644 resources/scripts-v2/components/notifications/NotificationItem.vue create mode 100644 resources/scripts-v2/components/notifications/NotificationRoot.vue create mode 100644 resources/scripts-v2/components/notifications/index.ts create mode 100644 resources/scripts-v2/components/table/DataTable.vue create mode 100644 resources/scripts-v2/components/table/TablePagination.vue create mode 100644 resources/scripts-v2/components/table/index.ts diff --git a/resources/scripts-v2/components/base/BaseBadge.vue b/resources/scripts-v2/components/base/BaseBadge.vue new file mode 100644 index 00000000..b7b00f3e --- /dev/null +++ b/resources/scripts-v2/components/base/BaseBadge.vue @@ -0,0 +1,28 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseButton.vue b/resources/scripts-v2/components/base/BaseButton.vue new file mode 100644 index 00000000..089d6d8e --- /dev/null +++ b/resources/scripts-v2/components/base/BaseButton.vue @@ -0,0 +1,137 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseCard.vue b/resources/scripts-v2/components/base/BaseCard.vue new file mode 100644 index 00000000..f27969da --- /dev/null +++ b/resources/scripts-v2/components/base/BaseCard.vue @@ -0,0 +1,40 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseCheckbox.vue b/resources/scripts-v2/components/base/BaseCheckbox.vue new file mode 100644 index 00000000..2529fd68 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseCheckbox.vue @@ -0,0 +1,77 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseCustomInput.vue b/resources/scripts-v2/components/base/BaseCustomInput.vue new file mode 100644 index 00000000..ba6d184d --- /dev/null +++ b/resources/scripts-v2/components/base/BaseCustomInput.vue @@ -0,0 +1,278 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseCustomerAddressDisplay.vue b/resources/scripts-v2/components/base/BaseCustomerAddressDisplay.vue new file mode 100644 index 00000000..638dbdc8 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseCustomerAddressDisplay.vue @@ -0,0 +1,37 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseCustomerSelectPopup.vue b/resources/scripts-v2/components/base/BaseCustomerSelectPopup.vue new file mode 100644 index 00000000..6cf59e68 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseCustomerSelectPopup.vue @@ -0,0 +1,486 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseDatePicker.vue b/resources/scripts-v2/components/base/BaseDatePicker.vue new file mode 100644 index 00000000..8aa6d5c5 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseDatePicker.vue @@ -0,0 +1,260 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseDialog.vue b/resources/scripts-v2/components/base/BaseDialog.vue new file mode 100644 index 00000000..55298a4b --- /dev/null +++ b/resources/scripts-v2/components/base/BaseDialog.vue @@ -0,0 +1,178 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseDivider.vue b/resources/scripts-v2/components/base/BaseDivider.vue new file mode 100644 index 00000000..a9cc3b10 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseDivider.vue @@ -0,0 +1,6 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseDropdown.vue b/resources/scripts-v2/components/base/BaseDropdown.vue new file mode 100644 index 00000000..cc8278b1 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseDropdown.vue @@ -0,0 +1,75 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseDropdownItem.vue b/resources/scripts-v2/components/base/BaseDropdownItem.vue new file mode 100644 index 00000000..32ff4344 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseDropdownItem.vue @@ -0,0 +1,17 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseErrorAlert.vue b/resources/scripts-v2/components/base/BaseErrorAlert.vue new file mode 100644 index 00000000..7e902132 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseErrorAlert.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseFileUploader.vue b/resources/scripts-v2/components/base/BaseFileUploader.vue new file mode 100644 index 00000000..22ce0a73 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseFileUploader.vue @@ -0,0 +1,582 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseGlobalLoader.vue b/resources/scripts-v2/components/base/BaseGlobalLoader.vue new file mode 100644 index 00000000..4b3c1dd2 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseGlobalLoader.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/resources/scripts-v2/components/base/BaseIcon.vue b/resources/scripts-v2/components/base/BaseIcon.vue new file mode 100644 index 00000000..57fa74e7 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseIcon.vue @@ -0,0 +1,21 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseInfoAlert.vue b/resources/scripts-v2/components/base/BaseInfoAlert.vue new file mode 100644 index 00000000..dbc0e738 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseInfoAlert.vue @@ -0,0 +1,82 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseInput.vue b/resources/scripts-v2/components/base/BaseInput.vue new file mode 100644 index 00000000..29fdf63c --- /dev/null +++ b/resources/scripts-v2/components/base/BaseInput.vue @@ -0,0 +1,268 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseItemSelect.vue b/resources/scripts-v2/components/base/BaseItemSelect.vue new file mode 100644 index 00000000..a65de5d1 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseItemSelect.vue @@ -0,0 +1,158 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseList.vue b/resources/scripts-v2/components/base/BaseList.vue new file mode 100644 index 00000000..e081503b --- /dev/null +++ b/resources/scripts-v2/components/base/BaseList.vue @@ -0,0 +1,8 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseListItem.vue b/resources/scripts-v2/components/base/BaseListItem.vue new file mode 100644 index 00000000..ba1f8a2b --- /dev/null +++ b/resources/scripts-v2/components/base/BaseListItem.vue @@ -0,0 +1,39 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseModal.vue b/resources/scripts-v2/components/base/BaseModal.vue new file mode 100644 index 00000000..94df076a --- /dev/null +++ b/resources/scripts-v2/components/base/BaseModal.vue @@ -0,0 +1,147 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseMoney.vue b/resources/scripts-v2/components/base/BaseMoney.vue new file mode 100644 index 00000000..81746edf --- /dev/null +++ b/resources/scripts-v2/components/base/BaseMoney.vue @@ -0,0 +1,101 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseMultiselect.vue b/resources/scripts-v2/components/base/BaseMultiselect.vue new file mode 100644 index 00000000..a0b86a1a --- /dev/null +++ b/resources/scripts-v2/components/base/BaseMultiselect.vue @@ -0,0 +1,288 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseRadio.vue b/resources/scripts-v2/components/base/BaseRadio.vue new file mode 100644 index 00000000..38a5f543 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseRadio.vue @@ -0,0 +1,86 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseSelectAction.vue b/resources/scripts-v2/components/base/BaseSelectAction.vue new file mode 100644 index 00000000..80d7a660 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseSelectAction.vue @@ -0,0 +1,26 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseSelectInput.vue b/resources/scripts-v2/components/base/BaseSelectInput.vue new file mode 100644 index 00000000..0545b0c9 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseSelectInput.vue @@ -0,0 +1,215 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseSettingCard.vue b/resources/scripts-v2/components/base/BaseSettingCard.vue new file mode 100644 index 00000000..e0a98f4d --- /dev/null +++ b/resources/scripts-v2/components/base/BaseSettingCard.vue @@ -0,0 +1,39 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseSwitch.vue b/resources/scripts-v2/components/base/BaseSwitch.vue new file mode 100644 index 00000000..8179f4cf --- /dev/null +++ b/resources/scripts-v2/components/base/BaseSwitch.vue @@ -0,0 +1,69 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseTabGroup.vue b/resources/scripts-v2/components/base/BaseTabGroup.vue new file mode 100644 index 00000000..86d6e21a --- /dev/null +++ b/resources/scripts-v2/components/base/BaseTabGroup.vue @@ -0,0 +1,87 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseText.vue b/resources/scripts-v2/components/base/BaseText.vue new file mode 100644 index 00000000..414738d5 --- /dev/null +++ b/resources/scripts-v2/components/base/BaseText.vue @@ -0,0 +1,32 @@ + + + diff --git a/resources/scripts-v2/components/base/BaseTextarea.vue b/resources/scripts-v2/components/base/BaseTextarea.vue new file mode 100644 index 00000000..4d5d3d5e --- /dev/null +++ b/resources/scripts-v2/components/base/BaseTextarea.vue @@ -0,0 +1,93 @@ +