From a65d5bf6058af391ddc04085e075fd6e66944890 Mon Sep 17 00:00:00 2001 From: John Leider Date: Tue, 12 May 2026 13:30:29 -0500 Subject: [PATCH 1/2] =?UTF-8?q?feat(emerald):=20Paper=20design=20system=20?= =?UTF-8?q?foundation=20=E2=80=94=20Phase=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds @paper/emerald — the first commercial design system built on the Paper layer. Includes 36 component families (EmButton, EmTextField, EmDialog, EmAutoComplete, EmAccordion, EmAvatar, EmBadge, EmBreadcrumb, EmCard, EmCarousel, EmCheckbox, EmContainer, EmDatePicker, EmDivider, EmFlex, EmForm, EmGrid, EmList, EmLoading, EmMenu, EmPagination, EmProgress, EmRadio, EmSelect, EmSlider, EmStepper, EmSwitch, EmTable, EmTabs, EmTag, EmTextarea, EmToast, EmTooltip, EmUpload), design tokens from the Figma spec, an EmeraldStyleSheetAdapter that extends v0's V0StyleSheetThemeAdapter, and a createEmeraldPlugin for one-line setup. Also adds .claude/rules/paper-components.md — the path-scoped rule doc that codifies the V0Paper-based component patterns design systems use. Pulls in @phosphor-icons/vue via the pnpm catalog (used by Em components for iconography) and registers packages/emerald in the knip workspace config. --- .claude/rules/paper-components.md | 280 +++ dev/src/EmeraldKitchenSink.vue | 1504 +++++++++++++++++ knip.json | 7 + packages/emerald/package.json | 42 + packages/emerald/src/adapter.ts | 56 + .../components/EmAccordion/EmAccordion.vue | 58 + .../EmAccordion/EmAccordionContent.vue | 58 + .../components/EmAccordion/EmAccordionCue.vue | 30 + .../EmAccordion/EmAccordionHeader.vue | 25 + .../EmAccordion/EmAccordionItem.vue | 46 + .../EmAccordion/EmAccordionTrigger.vue | 44 + .../src/components/EmAccordion/index.ts | 17 + .../src/components/EmAlert/EmAlert.vue | 133 ++ .../src/components/EmAlert/EmAlertBody.vue | 13 + .../src/components/EmAlert/EmAlertClose.vue | 26 + .../components/EmAlert/EmAlertDescription.vue | 13 + .../src/components/EmAlert/EmAlertIcon.vue | 13 + .../src/components/EmAlert/EmAlertTitle.vue | 13 + .../emerald/src/components/EmAlert/index.ts | 17 + .../EmAutoComplete/EmAutoComplete.vue | 80 + .../EmAutoComplete/EmAutoCompleteContent.vue | 45 + .../EmAutoComplete/EmAutoCompleteControl.vue | 40 + .../EmAutoComplete/EmAutoCompleteEmpty.vue | 31 + .../EmAutoComplete/EmAutoCompleteInput.vue | 47 + .../EmAutoComplete/EmAutoCompleteItem.vue | 69 + .../src/components/EmAutoComplete/index.ts | 17 + .../src/components/EmAvatar/EmAvatar.vue | 97 ++ .../components/EmAvatar/EmAvatarFallback.vue | 23 + .../src/components/EmAvatar/EmAvatarImage.vue | 23 + .../emerald/src/components/EmAvatar/index.ts | 8 + .../src/components/EmBadge/EmBadge.vue | 147 ++ .../emerald/src/components/EmBadge/index.ts | 2 + .../components/EmBreadcrumb/EmBreadcrumb.vue | 53 + .../EmBreadcrumb/EmBreadcrumbDivider.vue | 43 + .../EmBreadcrumb/EmBreadcrumbEllipsis.vue | 36 + .../EmBreadcrumb/EmBreadcrumbItem.vue | 47 + .../EmBreadcrumb/EmBreadcrumbLink.vue | 47 + .../EmBreadcrumb/EmBreadcrumbList.vue | 30 + .../EmBreadcrumb/EmBreadcrumbPage.vue | 26 + .../src/components/EmBreadcrumb/index.ts | 20 + .../src/components/EmButton/EmButton.vue | 159 ++ .../components/EmButton/EmButtonAppend.vue | 13 + .../components/EmButton/EmButtonContent.vue | 13 + .../components/EmButton/EmButtonLoader.vue | 38 + .../components/EmButton/EmButtonPrepend.vue | 13 + .../emerald/src/components/EmButton/index.ts | 14 + .../emerald/src/components/EmCard/EmCard.vue | 46 + .../src/components/EmCard/EmCardBody.vue | 26 + .../src/components/EmCard/EmCardFooter.vue | 23 + .../src/components/EmCard/EmCardHeader.vue | 22 + .../src/components/EmCard/EmCardSubtitle.vue | 24 + .../src/components/EmCard/EmCardTitle.vue | 29 + .../emerald/src/components/EmCard/index.ts | 17 + .../src/components/EmCarousel/EmCarousel.vue | 84 + .../EmCarousel/EmCarouselIndicator.vue | 67 + .../components/EmCarousel/EmCarouselItem.vue | 66 + .../components/EmCarousel/EmCarouselNext.vue | 51 + .../EmCarousel/EmCarouselPrevious.vue | 51 + .../EmCarousel/EmCarouselViewport.vue | 38 + .../src/components/EmCarousel/index.ts | 17 + .../src/components/EmCheckbox/EmCheckbox.vue | 102 ++ .../components/EmCheckbox/EmCheckboxGroup.vue | 47 + .../EmCheckbox/EmCheckboxIndicator.vue | 142 ++ .../EmCheckbox/EmCheckboxSelectAll.vue | 22 + .../src/components/EmCheckbox/index.ts | 11 + .../components/EmContainer/EmContainer.vue | 44 + .../src/components/EmContainer/index.ts | 2 + .../components/EmDatePicker/EmDatePicker.vue | 55 + .../EmDatePicker/EmDatePickerCalendar.vue | 23 + .../EmDatePicker/EmDatePickerCell.vue | 88 + .../EmDatePicker/EmDatePickerGrid.vue | 26 + .../EmDatePicker/EmDatePickerHeader.vue | 41 + .../EmDatePicker/EmDatePickerInput.vue | 50 + .../src/components/EmDatePicker/index.ts | 17 + .../src/components/EmDialog/EmDialog.vue | 27 + .../components/EmDialog/EmDialogActivator.vue | 16 + .../src/components/EmDialog/EmDialogBody.vue | 26 + .../src/components/EmDialog/EmDialogClose.vue | 20 + .../components/EmDialog/EmDialogContent.vue | 80 + .../EmDialog/EmDialogDescription.vue | 27 + .../components/EmDialog/EmDialogFooter.vue | 23 + .../components/EmDialog/EmDialogHeader.vue | 22 + .../src/components/EmDialog/EmDialogTitle.vue | 28 + .../emerald/src/components/EmDialog/index.ts | 26 + .../src/components/EmDivider/EmDivider.vue | 52 + .../components/EmDivider/EmDividerLabel.vue | 32 + .../components/EmDivider/EmDividerLine.vue | 57 + .../emerald/src/components/EmDivider/index.ts | 8 + .../emerald/src/components/EmFlex/EmFlex.vue | 69 + .../emerald/src/components/EmFlex/index.ts | 9 + .../emerald/src/components/EmForm/EmForm.vue | 164 ++ .../emerald/src/components/EmForm/index.ts | 2 + .../emerald/src/components/EmGrid/EmGrid.vue | 41 + .../src/components/EmGrid/EmGridItem.vue | 34 + .../emerald/src/components/EmGrid/index.ts | 5 + .../emerald/src/components/EmList/EmList.vue | 178 ++ .../src/components/EmList/EmListItem.vue | 44 + .../components/EmList/EmListItemAction.vue | 13 + .../src/components/EmList/EmListItemBody.vue | 13 + .../src/components/EmList/EmListItemIcon.vue | 13 + .../components/EmList/EmListItemSubtitle.vue | 13 + .../src/components/EmList/EmListItemTitle.vue | 13 + .../src/components/EmList/EmListSeparator.vue | 11 + .../src/components/EmList/EmListSubheader.vue | 13 + .../emerald/src/components/EmList/index.ts | 26 + .../src/components/EmLoading/EmLoading.vue | 77 + .../emerald/src/components/EmLoading/index.ts | 2 + .../emerald/src/components/EmMenu/EmMenu.vue | 27 + .../src/components/EmMenu/EmMenuActivator.vue | 18 + .../src/components/EmMenu/EmMenuContent.vue | 73 + .../src/components/EmMenu/EmMenuItem.vue | 80 + .../src/components/EmMenu/EmMenuLabel.vue | 29 + .../src/components/EmMenu/EmMenuSeparator.vue | 31 + .../emerald/src/components/EmMenu/index.ts | 17 + .../components/EmPagination/EmPagination.vue | 72 + .../EmPagination/EmPaginationEllipsis.vue | 36 + .../EmPagination/EmPaginationFirst.vue | 54 + .../EmPagination/EmPaginationItem.vue | 68 + .../EmPagination/EmPaginationLast.vue | 54 + .../EmPagination/EmPaginationNext.vue | 54 + .../EmPagination/EmPaginationPrev.vue | 54 + .../src/components/EmPagination/index.ts | 20 + .../src/components/EmProgress/EmProgress.vue | 71 + .../components/EmProgress/EmProgressFill.vue | 52 + .../components/EmProgress/EmProgressTrack.vue | 34 + .../components/EmProgress/EmProgressValue.vue | 36 + .../src/components/EmProgress/index.ts | 11 + .../src/components/EmRadio/EmRadio.vue | 96 ++ .../src/components/EmRadio/EmRadioGroup.vue | 47 + .../components/EmRadio/EmRadioIndicator.vue | 111 ++ .../emerald/src/components/EmRadio/index.ts | 8 + .../src/components/EmSelect/EmSelect.vue | 71 + .../components/EmSelect/EmSelectActivator.vue | 61 + .../components/EmSelect/EmSelectContent.vue | 60 + .../src/components/EmSelect/EmSelectItem.vue | 69 + .../EmSelect/EmSelectPlaceholder.vue | 34 + .../src/components/EmSelect/EmSelectValue.vue | 33 + .../emerald/src/components/EmSelect/index.ts | 17 + .../src/components/EmSlider/EmSlider.vue | 90 + .../src/components/EmSlider/EmSliderRange.vue | 42 + .../src/components/EmSlider/EmSliderThumb.vue | 60 + .../src/components/EmSlider/EmSliderTrack.vue | 42 + .../emerald/src/components/EmSlider/index.ts | 11 + .../src/components/EmStepper/EmStepper.vue | 63 + .../components/EmStepper/EmStepperItem.vue | 165 ++ .../components/EmStepper/EmStepperLabel.vue | 27 + .../EmStepper/EmStepperLabelDescription.vue | 25 + .../EmStepper/EmStepperSeparator.vue | 30 + .../emerald/src/components/EmStepper/index.ts | 14 + .../src/components/EmSwitch/EmSwitch.vue | 98 ++ .../src/components/EmSwitch/EmSwitchGroup.vue | 47 + .../src/components/EmSwitch/EmSwitchThumb.vue | 61 + .../src/components/EmSwitch/EmSwitchTrack.vue | 68 + .../emerald/src/components/EmSwitch/index.ts | 11 + .../src/components/EmTable/EmTable.vue | 58 + .../src/components/EmTable/EmTableBody.vue | 23 + .../src/components/EmTable/EmTableCell.vue | 45 + .../src/components/EmTable/EmTableHead.vue | 29 + .../src/components/EmTable/EmTableHeader.vue | 180 ++ .../src/components/EmTable/EmTableRow.vue | 34 + .../emerald/src/components/EmTable/index.ts | 17 + .../emerald/src/components/EmTabs/EmTabs.vue | 72 + .../src/components/EmTabs/EmTabsItem.vue | 84 + .../src/components/EmTabs/EmTabsList.vue | 40 + .../src/components/EmTabs/EmTabsPanel.vue | 45 + .../emerald/src/components/EmTabs/index.ts | 11 + .../emerald/src/components/EmTag/EmTag.vue | 230 +++ .../emerald/src/components/EmTag/index.ts | 2 + .../components/EmTextField/EmTextField.vue | 92 + .../EmTextField/EmTextFieldAppend.vue | 21 + .../EmTextField/EmTextFieldControl.vue | 114 ++ .../EmTextField/EmTextFieldDescription.vue | 25 + .../EmTextField/EmTextFieldError.vue | 28 + .../EmTextField/EmTextFieldLabel.vue | 33 + .../EmTextField/EmTextFieldPrepend.vue | 21 + .../src/components/EmTextField/index.ts | 20 + .../src/components/EmTextarea/EmTextarea.vue | 86 + .../EmTextarea/EmTextareaControl.vue | 102 ++ .../EmTextarea/EmTextareaDescription.vue | 26 + .../components/EmTextarea/EmTextareaError.vue | 28 + .../components/EmTextarea/EmTextareaLabel.vue | 34 + .../src/components/EmTextarea/index.ts | 14 + .../src/components/EmToast/EmToast.vue | 168 ++ .../src/components/EmToast/EmToastBody.vue | 13 + .../src/components/EmToast/EmToastClose.vue | 26 + .../components/EmToast/EmToastDescription.vue | 13 + .../src/components/EmToast/EmToastIcon.vue | 13 + .../src/components/EmToast/EmToastTitle.vue | 13 + .../emerald/src/components/EmToast/index.ts | 17 + .../src/components/EmTooltip/EmTooltip.vue | 27 + .../EmTooltip/EmTooltipActivator.vue | 51 + .../components/EmTooltip/EmTooltipContent.vue | 141 ++ .../emerald/src/components/EmTooltip/index.ts | 8 + .../src/components/EmUpload/EmUpload.vue | 57 + .../components/EmUpload/EmUploadDropzone.vue | 95 ++ .../src/components/EmUpload/EmUploadInput.vue | 48 + .../src/components/EmUpload/EmUploadItem.vue | 38 + .../src/components/EmUpload/EmUploadList.vue | 24 + .../emerald/src/components/EmUpload/index.ts | 14 + packages/emerald/src/components/index.ts | 35 + packages/emerald/src/index.ts | 4 + packages/emerald/src/plugin.ts | 106 ++ packages/emerald/src/theme.ts | 224 +++ packages/emerald/src/vite-env.d.ts | 3 + packages/emerald/tsconfig.json | 38 + packages/emerald/tsdown.config.mts | 36 + pnpm-lock.yaml | 45 +- pnpm-workspace.yaml | 1 + 208 files changed, 11113 insertions(+), 2 deletions(-) create mode 100644 .claude/rules/paper-components.md create mode 100644 dev/src/EmeraldKitchenSink.vue create mode 100644 packages/emerald/package.json create mode 100644 packages/emerald/src/adapter.ts create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordion.vue create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordionContent.vue create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordionCue.vue create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordionHeader.vue create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordionItem.vue create mode 100644 packages/emerald/src/components/EmAccordion/EmAccordionTrigger.vue create mode 100644 packages/emerald/src/components/EmAccordion/index.ts create mode 100644 packages/emerald/src/components/EmAlert/EmAlert.vue create mode 100644 packages/emerald/src/components/EmAlert/EmAlertBody.vue create mode 100644 packages/emerald/src/components/EmAlert/EmAlertClose.vue create mode 100644 packages/emerald/src/components/EmAlert/EmAlertDescription.vue create mode 100644 packages/emerald/src/components/EmAlert/EmAlertIcon.vue create mode 100644 packages/emerald/src/components/EmAlert/EmAlertTitle.vue create mode 100644 packages/emerald/src/components/EmAlert/index.ts create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoComplete.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoCompleteContent.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoCompleteControl.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoCompleteEmpty.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoCompleteInput.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/EmAutoCompleteItem.vue create mode 100644 packages/emerald/src/components/EmAutoComplete/index.ts create mode 100644 packages/emerald/src/components/EmAvatar/EmAvatar.vue create mode 100644 packages/emerald/src/components/EmAvatar/EmAvatarFallback.vue create mode 100644 packages/emerald/src/components/EmAvatar/EmAvatarImage.vue create mode 100644 packages/emerald/src/components/EmAvatar/index.ts create mode 100644 packages/emerald/src/components/EmBadge/EmBadge.vue create mode 100644 packages/emerald/src/components/EmBadge/index.ts create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumb.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbDivider.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbEllipsis.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbItem.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbLink.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbList.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbPage.vue create mode 100644 packages/emerald/src/components/EmBreadcrumb/index.ts create mode 100644 packages/emerald/src/components/EmButton/EmButton.vue create mode 100644 packages/emerald/src/components/EmButton/EmButtonAppend.vue create mode 100644 packages/emerald/src/components/EmButton/EmButtonContent.vue create mode 100644 packages/emerald/src/components/EmButton/EmButtonLoader.vue create mode 100644 packages/emerald/src/components/EmButton/EmButtonPrepend.vue create mode 100644 packages/emerald/src/components/EmButton/index.ts create mode 100644 packages/emerald/src/components/EmCard/EmCard.vue create mode 100644 packages/emerald/src/components/EmCard/EmCardBody.vue create mode 100644 packages/emerald/src/components/EmCard/EmCardFooter.vue create mode 100644 packages/emerald/src/components/EmCard/EmCardHeader.vue create mode 100644 packages/emerald/src/components/EmCard/EmCardSubtitle.vue create mode 100644 packages/emerald/src/components/EmCard/EmCardTitle.vue create mode 100644 packages/emerald/src/components/EmCard/index.ts create mode 100644 packages/emerald/src/components/EmCarousel/EmCarousel.vue create mode 100644 packages/emerald/src/components/EmCarousel/EmCarouselIndicator.vue create mode 100644 packages/emerald/src/components/EmCarousel/EmCarouselItem.vue create mode 100644 packages/emerald/src/components/EmCarousel/EmCarouselNext.vue create mode 100644 packages/emerald/src/components/EmCarousel/EmCarouselPrevious.vue create mode 100644 packages/emerald/src/components/EmCarousel/EmCarouselViewport.vue create mode 100644 packages/emerald/src/components/EmCarousel/index.ts create mode 100644 packages/emerald/src/components/EmCheckbox/EmCheckbox.vue create mode 100644 packages/emerald/src/components/EmCheckbox/EmCheckboxGroup.vue create mode 100644 packages/emerald/src/components/EmCheckbox/EmCheckboxIndicator.vue create mode 100644 packages/emerald/src/components/EmCheckbox/EmCheckboxSelectAll.vue create mode 100644 packages/emerald/src/components/EmCheckbox/index.ts create mode 100644 packages/emerald/src/components/EmContainer/EmContainer.vue create mode 100644 packages/emerald/src/components/EmContainer/index.ts create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePicker.vue create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePickerCalendar.vue create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePickerCell.vue create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePickerGrid.vue create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePickerHeader.vue create mode 100644 packages/emerald/src/components/EmDatePicker/EmDatePickerInput.vue create mode 100644 packages/emerald/src/components/EmDatePicker/index.ts create mode 100644 packages/emerald/src/components/EmDialog/EmDialog.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogActivator.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogBody.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogClose.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogContent.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogDescription.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogFooter.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogHeader.vue create mode 100644 packages/emerald/src/components/EmDialog/EmDialogTitle.vue create mode 100644 packages/emerald/src/components/EmDialog/index.ts create mode 100644 packages/emerald/src/components/EmDivider/EmDivider.vue create mode 100644 packages/emerald/src/components/EmDivider/EmDividerLabel.vue create mode 100644 packages/emerald/src/components/EmDivider/EmDividerLine.vue create mode 100644 packages/emerald/src/components/EmDivider/index.ts create mode 100644 packages/emerald/src/components/EmFlex/EmFlex.vue create mode 100644 packages/emerald/src/components/EmFlex/index.ts create mode 100644 packages/emerald/src/components/EmForm/EmForm.vue create mode 100644 packages/emerald/src/components/EmForm/index.ts create mode 100644 packages/emerald/src/components/EmGrid/EmGrid.vue create mode 100644 packages/emerald/src/components/EmGrid/EmGridItem.vue create mode 100644 packages/emerald/src/components/EmGrid/index.ts create mode 100644 packages/emerald/src/components/EmList/EmList.vue create mode 100644 packages/emerald/src/components/EmList/EmListItem.vue create mode 100644 packages/emerald/src/components/EmList/EmListItemAction.vue create mode 100644 packages/emerald/src/components/EmList/EmListItemBody.vue create mode 100644 packages/emerald/src/components/EmList/EmListItemIcon.vue create mode 100644 packages/emerald/src/components/EmList/EmListItemSubtitle.vue create mode 100644 packages/emerald/src/components/EmList/EmListItemTitle.vue create mode 100644 packages/emerald/src/components/EmList/EmListSeparator.vue create mode 100644 packages/emerald/src/components/EmList/EmListSubheader.vue create mode 100644 packages/emerald/src/components/EmList/index.ts create mode 100644 packages/emerald/src/components/EmLoading/EmLoading.vue create mode 100644 packages/emerald/src/components/EmLoading/index.ts create mode 100644 packages/emerald/src/components/EmMenu/EmMenu.vue create mode 100644 packages/emerald/src/components/EmMenu/EmMenuActivator.vue create mode 100644 packages/emerald/src/components/EmMenu/EmMenuContent.vue create mode 100644 packages/emerald/src/components/EmMenu/EmMenuItem.vue create mode 100644 packages/emerald/src/components/EmMenu/EmMenuLabel.vue create mode 100644 packages/emerald/src/components/EmMenu/EmMenuSeparator.vue create mode 100644 packages/emerald/src/components/EmMenu/index.ts create mode 100644 packages/emerald/src/components/EmPagination/EmPagination.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationEllipsis.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationFirst.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationItem.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationLast.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationNext.vue create mode 100644 packages/emerald/src/components/EmPagination/EmPaginationPrev.vue create mode 100644 packages/emerald/src/components/EmPagination/index.ts create mode 100644 packages/emerald/src/components/EmProgress/EmProgress.vue create mode 100644 packages/emerald/src/components/EmProgress/EmProgressFill.vue create mode 100644 packages/emerald/src/components/EmProgress/EmProgressTrack.vue create mode 100644 packages/emerald/src/components/EmProgress/EmProgressValue.vue create mode 100644 packages/emerald/src/components/EmProgress/index.ts create mode 100644 packages/emerald/src/components/EmRadio/EmRadio.vue create mode 100644 packages/emerald/src/components/EmRadio/EmRadioGroup.vue create mode 100644 packages/emerald/src/components/EmRadio/EmRadioIndicator.vue create mode 100644 packages/emerald/src/components/EmRadio/index.ts create mode 100644 packages/emerald/src/components/EmSelect/EmSelect.vue create mode 100644 packages/emerald/src/components/EmSelect/EmSelectActivator.vue create mode 100644 packages/emerald/src/components/EmSelect/EmSelectContent.vue create mode 100644 packages/emerald/src/components/EmSelect/EmSelectItem.vue create mode 100644 packages/emerald/src/components/EmSelect/EmSelectPlaceholder.vue create mode 100644 packages/emerald/src/components/EmSelect/EmSelectValue.vue create mode 100644 packages/emerald/src/components/EmSelect/index.ts create mode 100644 packages/emerald/src/components/EmSlider/EmSlider.vue create mode 100644 packages/emerald/src/components/EmSlider/EmSliderRange.vue create mode 100644 packages/emerald/src/components/EmSlider/EmSliderThumb.vue create mode 100644 packages/emerald/src/components/EmSlider/EmSliderTrack.vue create mode 100644 packages/emerald/src/components/EmSlider/index.ts create mode 100644 packages/emerald/src/components/EmStepper/EmStepper.vue create mode 100644 packages/emerald/src/components/EmStepper/EmStepperItem.vue create mode 100644 packages/emerald/src/components/EmStepper/EmStepperLabel.vue create mode 100644 packages/emerald/src/components/EmStepper/EmStepperLabelDescription.vue create mode 100644 packages/emerald/src/components/EmStepper/EmStepperSeparator.vue create mode 100644 packages/emerald/src/components/EmStepper/index.ts create mode 100644 packages/emerald/src/components/EmSwitch/EmSwitch.vue create mode 100644 packages/emerald/src/components/EmSwitch/EmSwitchGroup.vue create mode 100644 packages/emerald/src/components/EmSwitch/EmSwitchThumb.vue create mode 100644 packages/emerald/src/components/EmSwitch/EmSwitchTrack.vue create mode 100644 packages/emerald/src/components/EmSwitch/index.ts create mode 100644 packages/emerald/src/components/EmTable/EmTable.vue create mode 100644 packages/emerald/src/components/EmTable/EmTableBody.vue create mode 100644 packages/emerald/src/components/EmTable/EmTableCell.vue create mode 100644 packages/emerald/src/components/EmTable/EmTableHead.vue create mode 100644 packages/emerald/src/components/EmTable/EmTableHeader.vue create mode 100644 packages/emerald/src/components/EmTable/EmTableRow.vue create mode 100644 packages/emerald/src/components/EmTable/index.ts create mode 100644 packages/emerald/src/components/EmTabs/EmTabs.vue create mode 100644 packages/emerald/src/components/EmTabs/EmTabsItem.vue create mode 100644 packages/emerald/src/components/EmTabs/EmTabsList.vue create mode 100644 packages/emerald/src/components/EmTabs/EmTabsPanel.vue create mode 100644 packages/emerald/src/components/EmTabs/index.ts create mode 100644 packages/emerald/src/components/EmTag/EmTag.vue create mode 100644 packages/emerald/src/components/EmTag/index.ts create mode 100644 packages/emerald/src/components/EmTextField/EmTextField.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldAppend.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldControl.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldDescription.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldError.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldLabel.vue create mode 100644 packages/emerald/src/components/EmTextField/EmTextFieldPrepend.vue create mode 100644 packages/emerald/src/components/EmTextField/index.ts create mode 100644 packages/emerald/src/components/EmTextarea/EmTextarea.vue create mode 100644 packages/emerald/src/components/EmTextarea/EmTextareaControl.vue create mode 100644 packages/emerald/src/components/EmTextarea/EmTextareaDescription.vue create mode 100644 packages/emerald/src/components/EmTextarea/EmTextareaError.vue create mode 100644 packages/emerald/src/components/EmTextarea/EmTextareaLabel.vue create mode 100644 packages/emerald/src/components/EmTextarea/index.ts create mode 100644 packages/emerald/src/components/EmToast/EmToast.vue create mode 100644 packages/emerald/src/components/EmToast/EmToastBody.vue create mode 100644 packages/emerald/src/components/EmToast/EmToastClose.vue create mode 100644 packages/emerald/src/components/EmToast/EmToastDescription.vue create mode 100644 packages/emerald/src/components/EmToast/EmToastIcon.vue create mode 100644 packages/emerald/src/components/EmToast/EmToastTitle.vue create mode 100644 packages/emerald/src/components/EmToast/index.ts create mode 100644 packages/emerald/src/components/EmTooltip/EmTooltip.vue create mode 100644 packages/emerald/src/components/EmTooltip/EmTooltipActivator.vue create mode 100644 packages/emerald/src/components/EmTooltip/EmTooltipContent.vue create mode 100644 packages/emerald/src/components/EmTooltip/index.ts create mode 100644 packages/emerald/src/components/EmUpload/EmUpload.vue create mode 100644 packages/emerald/src/components/EmUpload/EmUploadDropzone.vue create mode 100644 packages/emerald/src/components/EmUpload/EmUploadInput.vue create mode 100644 packages/emerald/src/components/EmUpload/EmUploadItem.vue create mode 100644 packages/emerald/src/components/EmUpload/EmUploadList.vue create mode 100644 packages/emerald/src/components/EmUpload/index.ts create mode 100644 packages/emerald/src/components/index.ts create mode 100644 packages/emerald/src/index.ts create mode 100644 packages/emerald/src/plugin.ts create mode 100644 packages/emerald/src/theme.ts create mode 100644 packages/emerald/src/vite-env.d.ts create mode 100644 packages/emerald/tsconfig.json create mode 100644 packages/emerald/tsdown.config.mts diff --git a/.claude/rules/paper-components.md b/.claude/rules/paper-components.md new file mode 100644 index 000000000..d916312d0 --- /dev/null +++ b/.claude/rules/paper-components.md @@ -0,0 +1,280 @@ +--- +paths: packages/emerald/** +--- + +# Paper Design System Components + +Rules for building components in Paper design systems (Emerald, Onyx, etc.). + +## Architecture + +``` +Emerald / Onyx / etc. (styled design system — scoped to its own spec) + ↓ +Paper (styling primitives — V0Paper, composables output utility classes) + ↓ +v0 (headless logic & accessibility — zero styling) +``` + +Each design system is a **complete framework for a single design language**, not a theme. It only ships styles and functionality defined in its own spec. No universal framework sprawl. + +## Contract + +### Must + +- **Root components use `V0Paper`** as their base element — unless the component doesn't need Paper's styling surface (e.g., layout primitives like EmDivider), in which case `Atom` directly is fine. Exception: renderless v0 roots (like DialogRoot) don't get V0Paper — it goes on the first visible element instead (e.g., EmDialogContent). +- **Sub-components use `V0Paper` selectively** — only when the design spec requires independent styling control (own color, spacing, elevation). Otherwise, use raw v0 primitives or plain elements styled via parent's CSS scope. +- **Only wrap v0 sub-components the DS customizes.** Unwrapped v0 sub-components are imported directly by the consumer. Adding a wrapper later is additive, not breaking. +- **Props → utility classes → CSS.** Props are the developer-facing API; Paper's composables resolve them to utility classes. V0Paper applies these via `:class`. +- **Don't mix prop and class for the same concern.** `border="md"` and `class="rounded-md"` is fine (different concerns). `border="md"` and `class="border-lg"` is not. +- **Data attribute classes for state-driven styling.** Use `data-[disabled]:`, `data-[state=x]:` etc. as the primary approach for styling component states. Scoped slot variables remain available for logic, not styling. +- **Each component ships its own prop defaults.** No global token layer at the DS level. Variations are supported on a design-by-design basis. +- **Named slots become components.** Only the default slot exists. If something would be a named slot, it becomes a sub-component. +- **Explicitly re-expose v-model and events.** DS components declare their own `defineModel` / `defineEmits` and wire them to the underlying v0 primitive. No transparent `$attrs` forwarding — the DS controls its API surface. +- **Forward v0 slot props via default slot.** When wrapping a v0 compound component, pass slot props through: ``. + +### May + +- Create DS-specific sub-components not in v0 (e.g., `EmButtonLoader`, `EmButtonPrepend`) when the design spec calls for it +- Add wrapper sub-components for v0 primitives later — this is additive and non-breaking +- Paper may grow shared composed components (e.g., a preconfigured Popover-based menu) when a pattern proves universal across DSes — rare and organic, not planned upfront + +### Must Not + +- **Add logic that v0 doesn't provide.** If the DS needs new behavior, that belongs in v0. +- **Require a plugin install to function.** DS components work standalone. +- **Cover design patterns outside the DS's own spec.** Emerald ships what Emerald's spec defines. Nothing more. + +## Component Patterns + +### Pattern 1: Root with V0Paper (EmButton) + +For components that render a visible root element. V0Paper provides the styling surface, DS-specific props are destructured out, rest spread to V0Paper. + +```vue + + + + + +``` + +### Pattern 2: Wrapping v0 compound component (EmTextField) + +For components that wrap a v0 compound component. V0Paper wraps the v0 root, DS component re-exposes v-model and key props. + +```vue + + + + + +``` + +### Pattern 3: Renderless v0 root (EmDialog) + +For v0 components whose root is renderless (renders no element). No V0Paper on the root — it goes on the first visible sub-component (EmDialogContent). + +```vue + + + + + + +``` + +```vue + + + + + + +``` + +### Pattern 4: Simple sub-components + +DS-specific sub-components that are purely layout. No V0Paper, no props, just a styled element. + +```vue + + + + + +``` + +### Pattern 5: Sub-component wrapping v0 primitive + +Thin wrapper that adds an Emerald class to a v0 sub-component. Re-exposes slot props. + +```vue + + + + + +``` + +## Styling + +- Paper composables output utility class arrays (not inline CSS variables) +- V0Paper collects classes from all composables and applies via `:class` +- Scoped ` diff --git a/knip.json b/knip.json index 12991419f..42249c3c1 100644 --- a/knip.json +++ b/knip.json @@ -83,6 +83,13 @@ "sass" ] }, + "packages/emerald": { + "project": [ + "src/**/*.{ts,vue}", + "!src/**/*.test.ts", + "!src/**/*.spec.ts" + ] + }, "apps/playground": { "entry": [ "src/App.vue", diff --git a/packages/emerald/package.json b/packages/emerald/package.json new file mode 100644 index 000000000..957dc6766 --- /dev/null +++ b/packages/emerald/package.json @@ -0,0 +1,42 @@ +{ + "name": "@paper/emerald", + "version": "0.1.0", + "description": "Emerald Design System", + "license": "MIT", + "types": "./dist/index.d.mts", + "type": "module", + "files": [ + "dist" + ], + "scripts": { + "build": "tsdown", + "typecheck": "vue-tsc --noEmit --incremental" + }, + "peerDependencies": { + "vue": ">=3.3.0" + }, + "exports": { + ".": { + "development": "./src/index.ts", + "default": "./dist/index.mjs" + }, + "./package.json": "./package.json", + "./style.css": "./dist/style.css" + }, + "publishConfig": { + "exports": { + ".": "./dist/index.mjs", + "./package.json": "./package.json", + "./style.css": "./dist/style.css" + } + }, + "dependencies": { + "@vuetify/paper": "workspace:*", + "@vuetify/v0": "workspace:*" + }, + "devDependencies": { + "tsdown": "catalog:", + "typescript": "catalog:", + "unplugin-vue": "catalog:" + } +} diff --git a/packages/emerald/src/adapter.ts b/packages/emerald/src/adapter.ts new file mode 100644 index 000000000..6badbf3ef --- /dev/null +++ b/packages/emerald/src/adapter.ts @@ -0,0 +1,56 @@ +// Framework +import { V0StyleSheetThemeAdapter } from '@vuetify/v0' +import { hexToRgb } from '@vuetify/v0/utilities' + +// Types +import type { Colors } from '@vuetify/v0' + +export interface EmeraldAdapterOptions { + cspNonce?: string + stylesheetId?: string + prefix?: string +} + +const SAFE_IDENT = /^[a-zA-Z0-9_-]+$/ +const UNSAFE_CSS = /url\s*\(|@import|expression\s*\(|[{}]/i + +export class EmeraldStyleSheetAdapter extends V0StyleSheetThemeAdapter { + constructor (options: EmeraldAdapterOptions = {}) { + super({ prefix: 'emerald', stylesheetId: 'emerald-theme-stylesheet', ...options }) + } + + override generate (colors: Record, isDark?: boolean): string { + let css = '' + + for (const theme in colors) { + if (!SAFE_IDENT.test(theme)) continue + const themeColors = colors[theme] + if (!themeColors) continue + + const lines: string[] = [] + + for (const [key, val] of Object.entries(themeColors)) { + if (!SAFE_IDENT.test(key) || UNSAFE_CSS.test(val)) continue + + lines.push(` --${this.prefix}-${key}: ${val};`) + + const channels = toChannels(val) + if (channels) lines.push(` --${this.prefix}-${key}-channels: ${channels};`) + } + + css += `[data-theme="${theme}"] {\n${lines.join('\n')}\n color: var(--${this.prefix}-on-background);\n}\n` + } + + if (isDark !== undefined) { + css += `:root {\n color-scheme: ${isDark ? 'dark' : 'light'};\n}\n` + } + + return css + } +} + +function toChannels (hex: string): string | null { + if (!/^#[0-9a-f]{3,8}$/i.test(hex)) return null + const { r, g, b } = hexToRgb(hex) + return `${r} ${g} ${b}` +} diff --git a/packages/emerald/src/components/EmAccordion/EmAccordion.vue b/packages/emerald/src/components/EmAccordion/EmAccordion.vue new file mode 100644 index 000000000..90373a110 --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordion.vue @@ -0,0 +1,58 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/EmAccordionContent.vue b/packages/emerald/src/components/EmAccordion/EmAccordionContent.vue new file mode 100644 index 000000000..2548a1ecc --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordionContent.vue @@ -0,0 +1,58 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/EmAccordionCue.vue b/packages/emerald/src/components/EmAccordion/EmAccordionCue.vue new file mode 100644 index 000000000..ebc3099b6 --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordionCue.vue @@ -0,0 +1,30 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/EmAccordionHeader.vue b/packages/emerald/src/components/EmAccordion/EmAccordionHeader.vue new file mode 100644 index 000000000..76736b95a --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordionHeader.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/EmAccordionItem.vue b/packages/emerald/src/components/EmAccordion/EmAccordionItem.vue new file mode 100644 index 000000000..638c966c2 --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordionItem.vue @@ -0,0 +1,46 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/EmAccordionTrigger.vue b/packages/emerald/src/components/EmAccordion/EmAccordionTrigger.vue new file mode 100644 index 000000000..22fb2dabc --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/EmAccordionTrigger.vue @@ -0,0 +1,44 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAccordion/index.ts b/packages/emerald/src/components/EmAccordion/index.ts new file mode 100644 index 000000000..3f507b491 --- /dev/null +++ b/packages/emerald/src/components/EmAccordion/index.ts @@ -0,0 +1,17 @@ +export type { EmAccordionProps } from './EmAccordion.vue' +export { default as EmAccordion } from './EmAccordion.vue' + +export type { EmAccordionContentProps } from './EmAccordionContent.vue' +export { default as EmAccordionContent } from './EmAccordionContent.vue' + +export type { EmAccordionCueProps } from './EmAccordionCue.vue' +export { default as EmAccordionCue } from './EmAccordionCue.vue' + +export type { EmAccordionHeaderProps } from './EmAccordionHeader.vue' +export { default as EmAccordionHeader } from './EmAccordionHeader.vue' + +export type { EmAccordionItemProps } from './EmAccordionItem.vue' +export { default as EmAccordionItem } from './EmAccordionItem.vue' + +export type { EmAccordionTriggerProps } from './EmAccordionTrigger.vue' +export { default as EmAccordionTrigger } from './EmAccordionTrigger.vue' diff --git a/packages/emerald/src/components/EmAlert/EmAlert.vue b/packages/emerald/src/components/EmAlert/EmAlert.vue new file mode 100644 index 000000000..613e54da3 --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlert.vue @@ -0,0 +1,133 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAlert/EmAlertBody.vue b/packages/emerald/src/components/EmAlert/EmAlertBody.vue new file mode 100644 index 000000000..57c82cdab --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlertBody.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmAlert/EmAlertClose.vue b/packages/emerald/src/components/EmAlert/EmAlertClose.vue new file mode 100644 index 000000000..8ab7745f5 --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlertClose.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/packages/emerald/src/components/EmAlert/EmAlertDescription.vue b/packages/emerald/src/components/EmAlert/EmAlertDescription.vue new file mode 100644 index 000000000..facee2301 --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlertDescription.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmAlert/EmAlertIcon.vue b/packages/emerald/src/components/EmAlert/EmAlertIcon.vue new file mode 100644 index 000000000..d8a39a00e --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlertIcon.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmAlert/EmAlertTitle.vue b/packages/emerald/src/components/EmAlert/EmAlertTitle.vue new file mode 100644 index 000000000..3b7221238 --- /dev/null +++ b/packages/emerald/src/components/EmAlert/EmAlertTitle.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmAlert/index.ts b/packages/emerald/src/components/EmAlert/index.ts new file mode 100644 index 000000000..4cd318f9c --- /dev/null +++ b/packages/emerald/src/components/EmAlert/index.ts @@ -0,0 +1,17 @@ +export type { EmAlertProps, EmAlertVariant } from './EmAlert.vue' +export { default as EmAlert } from './EmAlert.vue' + +export type { EmAlertBodyProps } from './EmAlertBody.vue' +export { default as EmAlertBody } from './EmAlertBody.vue' + +export type { EmAlertCloseProps } from './EmAlertClose.vue' +export { default as EmAlertClose } from './EmAlertClose.vue' + +export type { EmAlertDescriptionProps } from './EmAlertDescription.vue' +export { default as EmAlertDescription } from './EmAlertDescription.vue' + +export type { EmAlertIconProps } from './EmAlertIcon.vue' +export { default as EmAlertIcon } from './EmAlertIcon.vue' + +export type { EmAlertTitleProps } from './EmAlertTitle.vue' +export { default as EmAlertTitle } from './EmAlertTitle.vue' diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoComplete.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoComplete.vue new file mode 100644 index 000000000..04c272319 --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoComplete.vue @@ -0,0 +1,80 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteContent.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteContent.vue new file mode 100644 index 000000000..e7383b765 --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteContent.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteControl.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteControl.vue new file mode 100644 index 000000000..b668936be --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteControl.vue @@ -0,0 +1,40 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteEmpty.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteEmpty.vue new file mode 100644 index 000000000..73294be0c --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteEmpty.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteInput.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteInput.vue new file mode 100644 index 000000000..ffffb2cc5 --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteInput.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteItem.vue b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteItem.vue new file mode 100644 index 000000000..2920a568a --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/EmAutoCompleteItem.vue @@ -0,0 +1,69 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAutoComplete/index.ts b/packages/emerald/src/components/EmAutoComplete/index.ts new file mode 100644 index 000000000..0053ffef4 --- /dev/null +++ b/packages/emerald/src/components/EmAutoComplete/index.ts @@ -0,0 +1,17 @@ +export type { EmAutoCompleteProps } from './EmAutoComplete.vue' +export { default as EmAutoComplete } from './EmAutoComplete.vue' + +export type { EmAutoCompleteContentProps } from './EmAutoCompleteContent.vue' +export { default as EmAutoCompleteContent } from './EmAutoCompleteContent.vue' + +export type { EmAutoCompleteControlProps } from './EmAutoCompleteControl.vue' +export { default as EmAutoCompleteControl } from './EmAutoCompleteControl.vue' + +export type { EmAutoCompleteEmptyProps } from './EmAutoCompleteEmpty.vue' +export { default as EmAutoCompleteEmpty } from './EmAutoCompleteEmpty.vue' + +export type { EmAutoCompleteInputProps } from './EmAutoCompleteInput.vue' +export { default as EmAutoCompleteInput } from './EmAutoCompleteInput.vue' + +export type { EmAutoCompleteItemProps } from './EmAutoCompleteItem.vue' +export { default as EmAutoCompleteItem } from './EmAutoCompleteItem.vue' diff --git a/packages/emerald/src/components/EmAvatar/EmAvatar.vue b/packages/emerald/src/components/EmAvatar/EmAvatar.vue new file mode 100644 index 000000000..74bc81f74 --- /dev/null +++ b/packages/emerald/src/components/EmAvatar/EmAvatar.vue @@ -0,0 +1,97 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmAvatar/EmAvatarFallback.vue b/packages/emerald/src/components/EmAvatar/EmAvatarFallback.vue new file mode 100644 index 000000000..0518756ca --- /dev/null +++ b/packages/emerald/src/components/EmAvatar/EmAvatarFallback.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/packages/emerald/src/components/EmAvatar/EmAvatarImage.vue b/packages/emerald/src/components/EmAvatar/EmAvatarImage.vue new file mode 100644 index 000000000..75d6a8243 --- /dev/null +++ b/packages/emerald/src/components/EmAvatar/EmAvatarImage.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/packages/emerald/src/components/EmAvatar/index.ts b/packages/emerald/src/components/EmAvatar/index.ts new file mode 100644 index 000000000..4ce5ebb1e --- /dev/null +++ b/packages/emerald/src/components/EmAvatar/index.ts @@ -0,0 +1,8 @@ +export type { EmAvatarProps, EmAvatarSize } from './EmAvatar.vue' +export { default as EmAvatar } from './EmAvatar.vue' + +export type { EmAvatarFallbackProps } from './EmAvatarFallback.vue' +export { default as EmAvatarFallback } from './EmAvatarFallback.vue' + +export type { EmAvatarImageProps } from './EmAvatarImage.vue' +export { default as EmAvatarImage } from './EmAvatarImage.vue' diff --git a/packages/emerald/src/components/EmBadge/EmBadge.vue b/packages/emerald/src/components/EmBadge/EmBadge.vue new file mode 100644 index 000000000..f097ec523 --- /dev/null +++ b/packages/emerald/src/components/EmBadge/EmBadge.vue @@ -0,0 +1,147 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBadge/index.ts b/packages/emerald/src/components/EmBadge/index.ts new file mode 100644 index 000000000..10ee64019 --- /dev/null +++ b/packages/emerald/src/components/EmBadge/index.ts @@ -0,0 +1,2 @@ +export type { EmBadgeProps, EmBadgeSize, EmBadgeVariant } from './EmBadge.vue' +export { default as EmBadge } from './EmBadge.vue' diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumb.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumb.vue new file mode 100644 index 000000000..e8cc4f555 --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumb.vue @@ -0,0 +1,53 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbDivider.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbDivider.vue new file mode 100644 index 000000000..1236059e9 --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbDivider.vue @@ -0,0 +1,43 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbEllipsis.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbEllipsis.vue new file mode 100644 index 000000000..4a9f53c8e --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbEllipsis.vue @@ -0,0 +1,36 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbItem.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbItem.vue new file mode 100644 index 000000000..aae7bf9f5 --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbItem.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbLink.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbLink.vue new file mode 100644 index 000000000..a4142e0fd --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbLink.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbList.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbList.vue new file mode 100644 index 000000000..8bf6858c3 --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbList.vue @@ -0,0 +1,30 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbPage.vue b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbPage.vue new file mode 100644 index 000000000..45b165a8f --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/EmBreadcrumbPage.vue @@ -0,0 +1,26 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmBreadcrumb/index.ts b/packages/emerald/src/components/EmBreadcrumb/index.ts new file mode 100644 index 000000000..bea9be1d0 --- /dev/null +++ b/packages/emerald/src/components/EmBreadcrumb/index.ts @@ -0,0 +1,20 @@ +export type { EmBreadcrumbProps } from './EmBreadcrumb.vue' +export { default as EmBreadcrumb } from './EmBreadcrumb.vue' + +export type { EmBreadcrumbDividerProps } from './EmBreadcrumbDivider.vue' +export { default as EmBreadcrumbDivider } from './EmBreadcrumbDivider.vue' + +export type { EmBreadcrumbEllipsisProps } from './EmBreadcrumbEllipsis.vue' +export { default as EmBreadcrumbEllipsis } from './EmBreadcrumbEllipsis.vue' + +export type { EmBreadcrumbItemProps } from './EmBreadcrumbItem.vue' +export { default as EmBreadcrumbItem } from './EmBreadcrumbItem.vue' + +export type { EmBreadcrumbLinkProps } from './EmBreadcrumbLink.vue' +export { default as EmBreadcrumbLink } from './EmBreadcrumbLink.vue' + +export type { EmBreadcrumbListProps } from './EmBreadcrumbList.vue' +export { default as EmBreadcrumbList } from './EmBreadcrumbList.vue' + +export type { EmBreadcrumbPageProps } from './EmBreadcrumbPage.vue' +export { default as EmBreadcrumbPage } from './EmBreadcrumbPage.vue' diff --git a/packages/emerald/src/components/EmButton/EmButton.vue b/packages/emerald/src/components/EmButton/EmButton.vue new file mode 100644 index 000000000..da050f3f4 --- /dev/null +++ b/packages/emerald/src/components/EmButton/EmButton.vue @@ -0,0 +1,159 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmButton/EmButtonAppend.vue b/packages/emerald/src/components/EmButton/EmButtonAppend.vue new file mode 100644 index 000000000..185d10205 --- /dev/null +++ b/packages/emerald/src/components/EmButton/EmButtonAppend.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmButton/EmButtonContent.vue b/packages/emerald/src/components/EmButton/EmButtonContent.vue new file mode 100644 index 000000000..e3c35f92e --- /dev/null +++ b/packages/emerald/src/components/EmButton/EmButtonContent.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmButton/EmButtonLoader.vue b/packages/emerald/src/components/EmButton/EmButtonLoader.vue new file mode 100644 index 000000000..cca983ef1 --- /dev/null +++ b/packages/emerald/src/components/EmButton/EmButtonLoader.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmButton/EmButtonPrepend.vue b/packages/emerald/src/components/EmButton/EmButtonPrepend.vue new file mode 100644 index 000000000..be76e07d1 --- /dev/null +++ b/packages/emerald/src/components/EmButton/EmButtonPrepend.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmButton/index.ts b/packages/emerald/src/components/EmButton/index.ts new file mode 100644 index 000000000..8176c4a1a --- /dev/null +++ b/packages/emerald/src/components/EmButton/index.ts @@ -0,0 +1,14 @@ +export type { EmButtonProps } from './EmButton.vue' +export { default as EmButton } from './EmButton.vue' + +export type { EmButtonAppendProps } from './EmButtonAppend.vue' +export { default as EmButtonAppend } from './EmButtonAppend.vue' + +export type { EmButtonContentProps } from './EmButtonContent.vue' +export { default as EmButtonContent } from './EmButtonContent.vue' + +export type { EmButtonLoaderProps } from './EmButtonLoader.vue' +export { default as EmButtonLoader } from './EmButtonLoader.vue' + +export type { EmButtonPrependProps } from './EmButtonPrepend.vue' +export { default as EmButtonPrepend } from './EmButtonPrepend.vue' diff --git a/packages/emerald/src/components/EmCard/EmCard.vue b/packages/emerald/src/components/EmCard/EmCard.vue new file mode 100644 index 000000000..20a5ed31c --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCard.vue @@ -0,0 +1,46 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/EmCardBody.vue b/packages/emerald/src/components/EmCard/EmCardBody.vue new file mode 100644 index 000000000..24fbdb60a --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCardBody.vue @@ -0,0 +1,26 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/EmCardFooter.vue b/packages/emerald/src/components/EmCard/EmCardFooter.vue new file mode 100644 index 000000000..e9dfd067f --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCardFooter.vue @@ -0,0 +1,23 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/EmCardHeader.vue b/packages/emerald/src/components/EmCard/EmCardHeader.vue new file mode 100644 index 000000000..906c5f70e --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCardHeader.vue @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/EmCardSubtitle.vue b/packages/emerald/src/components/EmCard/EmCardSubtitle.vue new file mode 100644 index 000000000..d0d4ce30f --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCardSubtitle.vue @@ -0,0 +1,24 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/EmCardTitle.vue b/packages/emerald/src/components/EmCard/EmCardTitle.vue new file mode 100644 index 000000000..9746384a6 --- /dev/null +++ b/packages/emerald/src/components/EmCard/EmCardTitle.vue @@ -0,0 +1,29 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCard/index.ts b/packages/emerald/src/components/EmCard/index.ts new file mode 100644 index 000000000..c6b02f0fe --- /dev/null +++ b/packages/emerald/src/components/EmCard/index.ts @@ -0,0 +1,17 @@ +export type { EmCardProps } from './EmCard.vue' +export { default as EmCard } from './EmCard.vue' + +export type { EmCardBodyProps } from './EmCardBody.vue' +export { default as EmCardBody } from './EmCardBody.vue' + +export type { EmCardFooterProps } from './EmCardFooter.vue' +export { default as EmCardFooter } from './EmCardFooter.vue' + +export type { EmCardHeaderProps } from './EmCardHeader.vue' +export { default as EmCardHeader } from './EmCardHeader.vue' + +export type { EmCardSubtitleProps } from './EmCardSubtitle.vue' +export { default as EmCardSubtitle } from './EmCardSubtitle.vue' + +export type { EmCardTitleProps } from './EmCardTitle.vue' +export { default as EmCardTitle } from './EmCardTitle.vue' diff --git a/packages/emerald/src/components/EmCarousel/EmCarousel.vue b/packages/emerald/src/components/EmCarousel/EmCarousel.vue new file mode 100644 index 000000000..4798b472a --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarousel.vue @@ -0,0 +1,84 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/EmCarouselIndicator.vue b/packages/emerald/src/components/EmCarousel/EmCarouselIndicator.vue new file mode 100644 index 000000000..2851b717b --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarouselIndicator.vue @@ -0,0 +1,67 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/EmCarouselItem.vue b/packages/emerald/src/components/EmCarousel/EmCarouselItem.vue new file mode 100644 index 000000000..daaf188fe --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarouselItem.vue @@ -0,0 +1,66 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/EmCarouselNext.vue b/packages/emerald/src/components/EmCarousel/EmCarouselNext.vue new file mode 100644 index 000000000..7cba6fa99 --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarouselNext.vue @@ -0,0 +1,51 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/EmCarouselPrevious.vue b/packages/emerald/src/components/EmCarousel/EmCarouselPrevious.vue new file mode 100644 index 000000000..b4fcfe299 --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarouselPrevious.vue @@ -0,0 +1,51 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/EmCarouselViewport.vue b/packages/emerald/src/components/EmCarousel/EmCarouselViewport.vue new file mode 100644 index 000000000..bec40e553 --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/EmCarouselViewport.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCarousel/index.ts b/packages/emerald/src/components/EmCarousel/index.ts new file mode 100644 index 000000000..baf5f06b8 --- /dev/null +++ b/packages/emerald/src/components/EmCarousel/index.ts @@ -0,0 +1,17 @@ +export type { EmCarouselProps } from './EmCarousel.vue' +export { default as EmCarousel } from './EmCarousel.vue' + +export type { EmCarouselIndicatorProps } from './EmCarouselIndicator.vue' +export { default as EmCarouselIndicator } from './EmCarouselIndicator.vue' + +export type { EmCarouselItemProps } from './EmCarouselItem.vue' +export { default as EmCarouselItem } from './EmCarouselItem.vue' + +export type { EmCarouselNextProps } from './EmCarouselNext.vue' +export { default as EmCarouselNext } from './EmCarouselNext.vue' + +export type { EmCarouselPreviousProps } from './EmCarouselPrevious.vue' +export { default as EmCarouselPrevious } from './EmCarouselPrevious.vue' + +export type { EmCarouselViewportProps } from './EmCarouselViewport.vue' +export { default as EmCarouselViewport } from './EmCarouselViewport.vue' diff --git a/packages/emerald/src/components/EmCheckbox/EmCheckbox.vue b/packages/emerald/src/components/EmCheckbox/EmCheckbox.vue new file mode 100644 index 000000000..8b30bab65 --- /dev/null +++ b/packages/emerald/src/components/EmCheckbox/EmCheckbox.vue @@ -0,0 +1,102 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCheckbox/EmCheckboxGroup.vue b/packages/emerald/src/components/EmCheckbox/EmCheckboxGroup.vue new file mode 100644 index 000000000..88270264a --- /dev/null +++ b/packages/emerald/src/components/EmCheckbox/EmCheckboxGroup.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCheckbox/EmCheckboxIndicator.vue b/packages/emerald/src/components/EmCheckbox/EmCheckboxIndicator.vue new file mode 100644 index 000000000..c0c222873 --- /dev/null +++ b/packages/emerald/src/components/EmCheckbox/EmCheckboxIndicator.vue @@ -0,0 +1,142 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmCheckbox/EmCheckboxSelectAll.vue b/packages/emerald/src/components/EmCheckbox/EmCheckboxSelectAll.vue new file mode 100644 index 000000000..e8f770a55 --- /dev/null +++ b/packages/emerald/src/components/EmCheckbox/EmCheckboxSelectAll.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/packages/emerald/src/components/EmCheckbox/index.ts b/packages/emerald/src/components/EmCheckbox/index.ts new file mode 100644 index 000000000..8afbd1cef --- /dev/null +++ b/packages/emerald/src/components/EmCheckbox/index.ts @@ -0,0 +1,11 @@ +export type { EmCheckboxProps } from './EmCheckbox.vue' +export { default as EmCheckbox } from './EmCheckbox.vue' + +export type { EmCheckboxGroupProps } from './EmCheckboxGroup.vue' +export { default as EmCheckboxGroup } from './EmCheckboxGroup.vue' + +export type { EmCheckboxIndicatorProps } from './EmCheckboxIndicator.vue' +export { default as EmCheckboxIndicator } from './EmCheckboxIndicator.vue' + +export type { EmCheckboxSelectAllProps } from './EmCheckboxSelectAll.vue' +export { default as EmCheckboxSelectAll } from './EmCheckboxSelectAll.vue' diff --git a/packages/emerald/src/components/EmContainer/EmContainer.vue b/packages/emerald/src/components/EmContainer/EmContainer.vue new file mode 100644 index 000000000..fa25e8b0c --- /dev/null +++ b/packages/emerald/src/components/EmContainer/EmContainer.vue @@ -0,0 +1,44 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmContainer/index.ts b/packages/emerald/src/components/EmContainer/index.ts new file mode 100644 index 000000000..faa8a0032 --- /dev/null +++ b/packages/emerald/src/components/EmContainer/index.ts @@ -0,0 +1,2 @@ +export { default as EmContainer } from './EmContainer.vue' +export type { EmContainerProps } from './EmContainer.vue' diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePicker.vue b/packages/emerald/src/components/EmDatePicker/EmDatePicker.vue new file mode 100644 index 000000000..930189b13 --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePicker.vue @@ -0,0 +1,55 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePickerCalendar.vue b/packages/emerald/src/components/EmDatePicker/EmDatePickerCalendar.vue new file mode 100644 index 000000000..4fb82f268 --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePickerCalendar.vue @@ -0,0 +1,23 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePickerCell.vue b/packages/emerald/src/components/EmDatePicker/EmDatePickerCell.vue new file mode 100644 index 000000000..ceab27e6b --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePickerCell.vue @@ -0,0 +1,88 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePickerGrid.vue b/packages/emerald/src/components/EmDatePicker/EmDatePickerGrid.vue new file mode 100644 index 000000000..e5fef7dd4 --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePickerGrid.vue @@ -0,0 +1,26 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePickerHeader.vue b/packages/emerald/src/components/EmDatePicker/EmDatePickerHeader.vue new file mode 100644 index 000000000..c10447eea --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePickerHeader.vue @@ -0,0 +1,41 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/EmDatePickerInput.vue b/packages/emerald/src/components/EmDatePicker/EmDatePickerInput.vue new file mode 100644 index 000000000..e256205c8 --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/EmDatePickerInput.vue @@ -0,0 +1,50 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDatePicker/index.ts b/packages/emerald/src/components/EmDatePicker/index.ts new file mode 100644 index 000000000..9973ff78c --- /dev/null +++ b/packages/emerald/src/components/EmDatePicker/index.ts @@ -0,0 +1,17 @@ +export type { EmDatePickerProps } from './EmDatePicker.vue' +export { default as EmDatePicker } from './EmDatePicker.vue' + +export type { EmDatePickerCalendarProps } from './EmDatePickerCalendar.vue' +export { default as EmDatePickerCalendar } from './EmDatePickerCalendar.vue' + +export type { EmDatePickerCellProps } from './EmDatePickerCell.vue' +export { default as EmDatePickerCell } from './EmDatePickerCell.vue' + +export type { EmDatePickerGridProps } from './EmDatePickerGrid.vue' +export { default as EmDatePickerGrid } from './EmDatePickerGrid.vue' + +export type { EmDatePickerHeaderProps } from './EmDatePickerHeader.vue' +export { default as EmDatePickerHeader } from './EmDatePickerHeader.vue' + +export type { EmDatePickerInputProps } from './EmDatePickerInput.vue' +export { default as EmDatePickerInput } from './EmDatePickerInput.vue' diff --git a/packages/emerald/src/components/EmDialog/EmDialog.vue b/packages/emerald/src/components/EmDialog/EmDialog.vue new file mode 100644 index 000000000..31de51a34 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialog.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogActivator.vue b/packages/emerald/src/components/EmDialog/EmDialogActivator.vue new file mode 100644 index 000000000..16534eca6 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogActivator.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogBody.vue b/packages/emerald/src/components/EmDialog/EmDialogBody.vue new file mode 100644 index 000000000..b14796b1b --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogBody.vue @@ -0,0 +1,26 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogClose.vue b/packages/emerald/src/components/EmDialog/EmDialogClose.vue new file mode 100644 index 000000000..1e4363923 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogClose.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogContent.vue b/packages/emerald/src/components/EmDialog/EmDialogContent.vue new file mode 100644 index 000000000..6de32068d --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogContent.vue @@ -0,0 +1,80 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogDescription.vue b/packages/emerald/src/components/EmDialog/EmDialogDescription.vue new file mode 100644 index 000000000..037b64454 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogDescription.vue @@ -0,0 +1,27 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogFooter.vue b/packages/emerald/src/components/EmDialog/EmDialogFooter.vue new file mode 100644 index 000000000..4a805e250 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogFooter.vue @@ -0,0 +1,23 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogHeader.vue b/packages/emerald/src/components/EmDialog/EmDialogHeader.vue new file mode 100644 index 000000000..363965821 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogHeader.vue @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/EmDialogTitle.vue b/packages/emerald/src/components/EmDialog/EmDialogTitle.vue new file mode 100644 index 000000000..27fc1a984 --- /dev/null +++ b/packages/emerald/src/components/EmDialog/EmDialogTitle.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDialog/index.ts b/packages/emerald/src/components/EmDialog/index.ts new file mode 100644 index 000000000..b333f1fbf --- /dev/null +++ b/packages/emerald/src/components/EmDialog/index.ts @@ -0,0 +1,26 @@ +export type { EmDialogProps } from './EmDialog.vue' +export { default as EmDialog } from './EmDialog.vue' + +export type { EmDialogActivatorProps } from './EmDialogActivator.vue' +export { default as EmDialogActivator } from './EmDialogActivator.vue' + +export type { EmDialogBodyProps } from './EmDialogBody.vue' +export { default as EmDialogBody } from './EmDialogBody.vue' + +export type { EmDialogCloseProps } from './EmDialogClose.vue' +export { default as EmDialogClose } from './EmDialogClose.vue' + +export type { EmDialogContentProps } from './EmDialogContent.vue' +export { default as EmDialogContent } from './EmDialogContent.vue' + +export type { EmDialogDescriptionProps } from './EmDialogDescription.vue' +export { default as EmDialogDescription } from './EmDialogDescription.vue' + +export type { EmDialogFooterProps } from './EmDialogFooter.vue' +export { default as EmDialogFooter } from './EmDialogFooter.vue' + +export type { EmDialogHeaderProps } from './EmDialogHeader.vue' +export { default as EmDialogHeader } from './EmDialogHeader.vue' + +export type { EmDialogTitleProps } from './EmDialogTitle.vue' +export { default as EmDialogTitle } from './EmDialogTitle.vue' diff --git a/packages/emerald/src/components/EmDivider/EmDivider.vue b/packages/emerald/src/components/EmDivider/EmDivider.vue new file mode 100644 index 000000000..0bf3ea58d --- /dev/null +++ b/packages/emerald/src/components/EmDivider/EmDivider.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDivider/EmDividerLabel.vue b/packages/emerald/src/components/EmDivider/EmDividerLabel.vue new file mode 100644 index 000000000..45f4b4116 --- /dev/null +++ b/packages/emerald/src/components/EmDivider/EmDividerLabel.vue @@ -0,0 +1,32 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDivider/EmDividerLine.vue b/packages/emerald/src/components/EmDivider/EmDividerLine.vue new file mode 100644 index 000000000..bd2844661 --- /dev/null +++ b/packages/emerald/src/components/EmDivider/EmDividerLine.vue @@ -0,0 +1,57 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmDivider/index.ts b/packages/emerald/src/components/EmDivider/index.ts new file mode 100644 index 000000000..2422b060c --- /dev/null +++ b/packages/emerald/src/components/EmDivider/index.ts @@ -0,0 +1,8 @@ +export type { EmDividerProps } from './EmDivider.vue' +export { default as EmDivider } from './EmDivider.vue' + +export type { EmDividerLabelProps } from './EmDividerLabel.vue' +export { default as EmDividerLabel } from './EmDividerLabel.vue' + +export type { EmDividerLineProps } from './EmDividerLine.vue' +export { default as EmDividerLine } from './EmDividerLine.vue' diff --git a/packages/emerald/src/components/EmFlex/EmFlex.vue b/packages/emerald/src/components/EmFlex/EmFlex.vue new file mode 100644 index 000000000..99da817dc --- /dev/null +++ b/packages/emerald/src/components/EmFlex/EmFlex.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/packages/emerald/src/components/EmFlex/index.ts b/packages/emerald/src/components/EmFlex/index.ts new file mode 100644 index 000000000..dbffc61ab --- /dev/null +++ b/packages/emerald/src/components/EmFlex/index.ts @@ -0,0 +1,9 @@ +export type { + EmFlexAlign, + EmFlexDirection, + EmFlexGap, + EmFlexJustify, + EmFlexProps, + EmFlexWrap, +} from './EmFlex.vue' +export { default as EmFlex } from './EmFlex.vue' diff --git a/packages/emerald/src/components/EmForm/EmForm.vue b/packages/emerald/src/components/EmForm/EmForm.vue new file mode 100644 index 000000000..fdf486eaa --- /dev/null +++ b/packages/emerald/src/components/EmForm/EmForm.vue @@ -0,0 +1,164 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmForm/index.ts b/packages/emerald/src/components/EmForm/index.ts new file mode 100644 index 000000000..ace186a59 --- /dev/null +++ b/packages/emerald/src/components/EmForm/index.ts @@ -0,0 +1,2 @@ +export { default as EmForm } from './EmForm.vue' +export type { EmFormProps } from './EmForm.vue' diff --git a/packages/emerald/src/components/EmGrid/EmGrid.vue b/packages/emerald/src/components/EmGrid/EmGrid.vue new file mode 100644 index 000000000..7545cbbab --- /dev/null +++ b/packages/emerald/src/components/EmGrid/EmGrid.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/packages/emerald/src/components/EmGrid/EmGridItem.vue b/packages/emerald/src/components/EmGrid/EmGridItem.vue new file mode 100644 index 000000000..f97cdd3ee --- /dev/null +++ b/packages/emerald/src/components/EmGrid/EmGridItem.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/packages/emerald/src/components/EmGrid/index.ts b/packages/emerald/src/components/EmGrid/index.ts new file mode 100644 index 000000000..8fd8c8da2 --- /dev/null +++ b/packages/emerald/src/components/EmGrid/index.ts @@ -0,0 +1,5 @@ +export type { EmGridGap, EmGridProps } from './EmGrid.vue' +export { default as EmGrid } from './EmGrid.vue' + +export type { EmGridItemProps } from './EmGridItem.vue' +export { default as EmGridItem } from './EmGridItem.vue' diff --git a/packages/emerald/src/components/EmList/EmList.vue b/packages/emerald/src/components/EmList/EmList.vue new file mode 100644 index 000000000..69e9729a9 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmList.vue @@ -0,0 +1,178 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItem.vue b/packages/emerald/src/components/EmList/EmListItem.vue new file mode 100644 index 000000000..a43c66282 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItem.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItemAction.vue b/packages/emerald/src/components/EmList/EmListItemAction.vue new file mode 100644 index 000000000..9a16527a7 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItemAction.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItemBody.vue b/packages/emerald/src/components/EmList/EmListItemBody.vue new file mode 100644 index 000000000..8d1d44fb8 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItemBody.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItemIcon.vue b/packages/emerald/src/components/EmList/EmListItemIcon.vue new file mode 100644 index 000000000..edf3054f8 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItemIcon.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItemSubtitle.vue b/packages/emerald/src/components/EmList/EmListItemSubtitle.vue new file mode 100644 index 000000000..ca52f0ee7 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItemSubtitle.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListItemTitle.vue b/packages/emerald/src/components/EmList/EmListItemTitle.vue new file mode 100644 index 000000000..e41d1ea92 --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListItemTitle.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListSeparator.vue b/packages/emerald/src/components/EmList/EmListSeparator.vue new file mode 100644 index 000000000..2f3bed03a --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListSeparator.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/EmListSubheader.vue b/packages/emerald/src/components/EmList/EmListSubheader.vue new file mode 100644 index 000000000..8a5f1e70f --- /dev/null +++ b/packages/emerald/src/components/EmList/EmListSubheader.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmList/index.ts b/packages/emerald/src/components/EmList/index.ts new file mode 100644 index 000000000..abd3772f4 --- /dev/null +++ b/packages/emerald/src/components/EmList/index.ts @@ -0,0 +1,26 @@ +export type { EmListProps } from './EmList.vue' +export { default as EmList } from './EmList.vue' + +export type { EmListItemProps } from './EmListItem.vue' +export { default as EmListItem } from './EmListItem.vue' + +export type { EmListItemActionProps } from './EmListItemAction.vue' +export { default as EmListItemAction } from './EmListItemAction.vue' + +export type { EmListItemBodyProps } from './EmListItemBody.vue' +export { default as EmListItemBody } from './EmListItemBody.vue' + +export type { EmListItemIconProps } from './EmListItemIcon.vue' +export { default as EmListItemIcon } from './EmListItemIcon.vue' + +export type { EmListItemSubtitleProps } from './EmListItemSubtitle.vue' +export { default as EmListItemSubtitle } from './EmListItemSubtitle.vue' + +export type { EmListItemTitleProps } from './EmListItemTitle.vue' +export { default as EmListItemTitle } from './EmListItemTitle.vue' + +export type { EmListSeparatorProps } from './EmListSeparator.vue' +export { default as EmListSeparator } from './EmListSeparator.vue' + +export type { EmListSubheaderProps } from './EmListSubheader.vue' +export { default as EmListSubheader } from './EmListSubheader.vue' diff --git a/packages/emerald/src/components/EmLoading/EmLoading.vue b/packages/emerald/src/components/EmLoading/EmLoading.vue new file mode 100644 index 000000000..979870c2f --- /dev/null +++ b/packages/emerald/src/components/EmLoading/EmLoading.vue @@ -0,0 +1,77 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmLoading/index.ts b/packages/emerald/src/components/EmLoading/index.ts new file mode 100644 index 000000000..7d0f67d4a --- /dev/null +++ b/packages/emerald/src/components/EmLoading/index.ts @@ -0,0 +1,2 @@ +export { default as EmLoading } from './EmLoading.vue' +export type { EmLoadingProps } from './EmLoading.vue' diff --git a/packages/emerald/src/components/EmMenu/EmMenu.vue b/packages/emerald/src/components/EmMenu/EmMenu.vue new file mode 100644 index 000000000..0c9cf15e2 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenu.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/emerald/src/components/EmMenu/EmMenuActivator.vue b/packages/emerald/src/components/EmMenu/EmMenuActivator.vue new file mode 100644 index 000000000..33c083c6c --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenuActivator.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/packages/emerald/src/components/EmMenu/EmMenuContent.vue b/packages/emerald/src/components/EmMenu/EmMenuContent.vue new file mode 100644 index 000000000..a6301da79 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenuContent.vue @@ -0,0 +1,73 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmMenu/EmMenuItem.vue b/packages/emerald/src/components/EmMenu/EmMenuItem.vue new file mode 100644 index 000000000..5f174fc69 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenuItem.vue @@ -0,0 +1,80 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmMenu/EmMenuLabel.vue b/packages/emerald/src/components/EmMenu/EmMenuLabel.vue new file mode 100644 index 000000000..d15488984 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenuLabel.vue @@ -0,0 +1,29 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmMenu/EmMenuSeparator.vue b/packages/emerald/src/components/EmMenu/EmMenuSeparator.vue new file mode 100644 index 000000000..e74ee19a4 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/EmMenuSeparator.vue @@ -0,0 +1,31 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmMenu/index.ts b/packages/emerald/src/components/EmMenu/index.ts new file mode 100644 index 000000000..34860c7c6 --- /dev/null +++ b/packages/emerald/src/components/EmMenu/index.ts @@ -0,0 +1,17 @@ +export type { EmMenuProps } from './EmMenu.vue' +export { default as EmMenu } from './EmMenu.vue' + +export type { EmMenuActivatorProps } from './EmMenuActivator.vue' +export { default as EmMenuActivator } from './EmMenuActivator.vue' + +export type { EmMenuContentProps } from './EmMenuContent.vue' +export { default as EmMenuContent } from './EmMenuContent.vue' + +export type { EmMenuItemProps } from './EmMenuItem.vue' +export { default as EmMenuItem } from './EmMenuItem.vue' + +export type { EmMenuLabelProps } from './EmMenuLabel.vue' +export { default as EmMenuLabel } from './EmMenuLabel.vue' + +export type { EmMenuSeparatorProps } from './EmMenuSeparator.vue' +export { default as EmMenuSeparator } from './EmMenuSeparator.vue' diff --git a/packages/emerald/src/components/EmPagination/EmPagination.vue b/packages/emerald/src/components/EmPagination/EmPagination.vue new file mode 100644 index 000000000..8d8ad4143 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPagination.vue @@ -0,0 +1,72 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationEllipsis.vue b/packages/emerald/src/components/EmPagination/EmPaginationEllipsis.vue new file mode 100644 index 000000000..d93b7ad58 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationEllipsis.vue @@ -0,0 +1,36 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationFirst.vue b/packages/emerald/src/components/EmPagination/EmPaginationFirst.vue new file mode 100644 index 000000000..d9b639668 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationFirst.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationItem.vue b/packages/emerald/src/components/EmPagination/EmPaginationItem.vue new file mode 100644 index 000000000..605c3cd29 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationItem.vue @@ -0,0 +1,68 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationLast.vue b/packages/emerald/src/components/EmPagination/EmPaginationLast.vue new file mode 100644 index 000000000..1d92b6e21 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationLast.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationNext.vue b/packages/emerald/src/components/EmPagination/EmPaginationNext.vue new file mode 100644 index 000000000..69fbeb240 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationNext.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/EmPaginationPrev.vue b/packages/emerald/src/components/EmPagination/EmPaginationPrev.vue new file mode 100644 index 000000000..2049313b3 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/EmPaginationPrev.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmPagination/index.ts b/packages/emerald/src/components/EmPagination/index.ts new file mode 100644 index 000000000..77cd549c8 --- /dev/null +++ b/packages/emerald/src/components/EmPagination/index.ts @@ -0,0 +1,20 @@ +export type { EmPaginationProps } from './EmPagination.vue' +export { default as EmPagination } from './EmPagination.vue' + +export type { EmPaginationEllipsisProps } from './EmPaginationEllipsis.vue' +export { default as EmPaginationEllipsis } from './EmPaginationEllipsis.vue' + +export type { EmPaginationFirstProps } from './EmPaginationFirst.vue' +export { default as EmPaginationFirst } from './EmPaginationFirst.vue' + +export type { EmPaginationItemProps } from './EmPaginationItem.vue' +export { default as EmPaginationItem } from './EmPaginationItem.vue' + +export type { EmPaginationLastProps } from './EmPaginationLast.vue' +export { default as EmPaginationLast } from './EmPaginationLast.vue' + +export type { EmPaginationNextProps } from './EmPaginationNext.vue' +export { default as EmPaginationNext } from './EmPaginationNext.vue' + +export type { EmPaginationPrevProps } from './EmPaginationPrev.vue' +export { default as EmPaginationPrev } from './EmPaginationPrev.vue' diff --git a/packages/emerald/src/components/EmProgress/EmProgress.vue b/packages/emerald/src/components/EmProgress/EmProgress.vue new file mode 100644 index 000000000..eb23df255 --- /dev/null +++ b/packages/emerald/src/components/EmProgress/EmProgress.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmProgress/EmProgressFill.vue b/packages/emerald/src/components/EmProgress/EmProgressFill.vue new file mode 100644 index 000000000..70f8d7a8a --- /dev/null +++ b/packages/emerald/src/components/EmProgress/EmProgressFill.vue @@ -0,0 +1,52 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmProgress/EmProgressTrack.vue b/packages/emerald/src/components/EmProgress/EmProgressTrack.vue new file mode 100644 index 000000000..3bd74aa57 --- /dev/null +++ b/packages/emerald/src/components/EmProgress/EmProgressTrack.vue @@ -0,0 +1,34 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmProgress/EmProgressValue.vue b/packages/emerald/src/components/EmProgress/EmProgressValue.vue new file mode 100644 index 000000000..f5cd78abc --- /dev/null +++ b/packages/emerald/src/components/EmProgress/EmProgressValue.vue @@ -0,0 +1,36 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmProgress/index.ts b/packages/emerald/src/components/EmProgress/index.ts new file mode 100644 index 000000000..17ad0c52d --- /dev/null +++ b/packages/emerald/src/components/EmProgress/index.ts @@ -0,0 +1,11 @@ +export type { EmProgressProps, EmProgressSize } from './EmProgress.vue' +export { default as EmProgress } from './EmProgress.vue' + +export type { EmProgressFillProps } from './EmProgressFill.vue' +export { default as EmProgressFill } from './EmProgressFill.vue' + +export type { EmProgressTrackProps } from './EmProgressTrack.vue' +export { default as EmProgressTrack } from './EmProgressTrack.vue' + +export type { EmProgressValueProps } from './EmProgressValue.vue' +export { default as EmProgressValue } from './EmProgressValue.vue' diff --git a/packages/emerald/src/components/EmRadio/EmRadio.vue b/packages/emerald/src/components/EmRadio/EmRadio.vue new file mode 100644 index 000000000..53d9496cc --- /dev/null +++ b/packages/emerald/src/components/EmRadio/EmRadio.vue @@ -0,0 +1,96 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmRadio/EmRadioGroup.vue b/packages/emerald/src/components/EmRadio/EmRadioGroup.vue new file mode 100644 index 000000000..6dcbb8113 --- /dev/null +++ b/packages/emerald/src/components/EmRadio/EmRadioGroup.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmRadio/EmRadioIndicator.vue b/packages/emerald/src/components/EmRadio/EmRadioIndicator.vue new file mode 100644 index 000000000..8cd07546c --- /dev/null +++ b/packages/emerald/src/components/EmRadio/EmRadioIndicator.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmRadio/index.ts b/packages/emerald/src/components/EmRadio/index.ts new file mode 100644 index 000000000..63fa9e44f --- /dev/null +++ b/packages/emerald/src/components/EmRadio/index.ts @@ -0,0 +1,8 @@ +export type { EmRadioProps } from './EmRadio.vue' +export { default as EmRadio } from './EmRadio.vue' + +export type { EmRadioGroupProps } from './EmRadioGroup.vue' +export { default as EmRadioGroup } from './EmRadioGroup.vue' + +export type { EmRadioIndicatorProps } from './EmRadioIndicator.vue' +export { default as EmRadioIndicator } from './EmRadioIndicator.vue' diff --git a/packages/emerald/src/components/EmSelect/EmSelect.vue b/packages/emerald/src/components/EmSelect/EmSelect.vue new file mode 100644 index 000000000..c9f1c850f --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelect.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/EmSelectActivator.vue b/packages/emerald/src/components/EmSelect/EmSelectActivator.vue new file mode 100644 index 000000000..d4a144c65 --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelectActivator.vue @@ -0,0 +1,61 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/EmSelectContent.vue b/packages/emerald/src/components/EmSelect/EmSelectContent.vue new file mode 100644 index 000000000..a46d4067f --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelectContent.vue @@ -0,0 +1,60 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/EmSelectItem.vue b/packages/emerald/src/components/EmSelect/EmSelectItem.vue new file mode 100644 index 000000000..dd49cd4bd --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelectItem.vue @@ -0,0 +1,69 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/EmSelectPlaceholder.vue b/packages/emerald/src/components/EmSelect/EmSelectPlaceholder.vue new file mode 100644 index 000000000..67c7ecfbb --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelectPlaceholder.vue @@ -0,0 +1,34 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/EmSelectValue.vue b/packages/emerald/src/components/EmSelect/EmSelectValue.vue new file mode 100644 index 000000000..f721a1bac --- /dev/null +++ b/packages/emerald/src/components/EmSelect/EmSelectValue.vue @@ -0,0 +1,33 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSelect/index.ts b/packages/emerald/src/components/EmSelect/index.ts new file mode 100644 index 000000000..19e496a34 --- /dev/null +++ b/packages/emerald/src/components/EmSelect/index.ts @@ -0,0 +1,17 @@ +export type { EmSelectProps } from './EmSelect.vue' +export { default as EmSelect } from './EmSelect.vue' + +export type { EmSelectActivatorProps } from './EmSelectActivator.vue' +export { default as EmSelectActivator } from './EmSelectActivator.vue' + +export type { EmSelectContentProps } from './EmSelectContent.vue' +export { default as EmSelectContent } from './EmSelectContent.vue' + +export type { EmSelectItemProps } from './EmSelectItem.vue' +export { default as EmSelectItem } from './EmSelectItem.vue' + +export type { EmSelectPlaceholderProps } from './EmSelectPlaceholder.vue' +export { default as EmSelectPlaceholder } from './EmSelectPlaceholder.vue' + +export type { EmSelectValueProps } from './EmSelectValue.vue' +export { default as EmSelectValue } from './EmSelectValue.vue' diff --git a/packages/emerald/src/components/EmSlider/EmSlider.vue b/packages/emerald/src/components/EmSlider/EmSlider.vue new file mode 100644 index 000000000..1f0811e8f --- /dev/null +++ b/packages/emerald/src/components/EmSlider/EmSlider.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSlider/EmSliderRange.vue b/packages/emerald/src/components/EmSlider/EmSliderRange.vue new file mode 100644 index 000000000..926519ffd --- /dev/null +++ b/packages/emerald/src/components/EmSlider/EmSliderRange.vue @@ -0,0 +1,42 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSlider/EmSliderThumb.vue b/packages/emerald/src/components/EmSlider/EmSliderThumb.vue new file mode 100644 index 000000000..f0daef033 --- /dev/null +++ b/packages/emerald/src/components/EmSlider/EmSliderThumb.vue @@ -0,0 +1,60 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSlider/EmSliderTrack.vue b/packages/emerald/src/components/EmSlider/EmSliderTrack.vue new file mode 100644 index 000000000..ff8647a05 --- /dev/null +++ b/packages/emerald/src/components/EmSlider/EmSliderTrack.vue @@ -0,0 +1,42 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSlider/index.ts b/packages/emerald/src/components/EmSlider/index.ts new file mode 100644 index 000000000..9f7b823d3 --- /dev/null +++ b/packages/emerald/src/components/EmSlider/index.ts @@ -0,0 +1,11 @@ +export type { EmSliderProps } from './EmSlider.vue' +export { default as EmSlider } from './EmSlider.vue' + +export type { EmSliderRangeProps } from './EmSliderRange.vue' +export { default as EmSliderRange } from './EmSliderRange.vue' + +export type { EmSliderThumbProps } from './EmSliderThumb.vue' +export { default as EmSliderThumb } from './EmSliderThumb.vue' + +export type { EmSliderTrackProps } from './EmSliderTrack.vue' +export { default as EmSliderTrack } from './EmSliderTrack.vue' diff --git a/packages/emerald/src/components/EmStepper/EmStepper.vue b/packages/emerald/src/components/EmStepper/EmStepper.vue new file mode 100644 index 000000000..6f11aaccf --- /dev/null +++ b/packages/emerald/src/components/EmStepper/EmStepper.vue @@ -0,0 +1,63 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmStepper/EmStepperItem.vue b/packages/emerald/src/components/EmStepper/EmStepperItem.vue new file mode 100644 index 000000000..cda4346e6 --- /dev/null +++ b/packages/emerald/src/components/EmStepper/EmStepperItem.vue @@ -0,0 +1,165 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmStepper/EmStepperLabel.vue b/packages/emerald/src/components/EmStepper/EmStepperLabel.vue new file mode 100644 index 000000000..b79fb4e3f --- /dev/null +++ b/packages/emerald/src/components/EmStepper/EmStepperLabel.vue @@ -0,0 +1,27 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmStepper/EmStepperLabelDescription.vue b/packages/emerald/src/components/EmStepper/EmStepperLabelDescription.vue new file mode 100644 index 000000000..130b05142 --- /dev/null +++ b/packages/emerald/src/components/EmStepper/EmStepperLabelDescription.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmStepper/EmStepperSeparator.vue b/packages/emerald/src/components/EmStepper/EmStepperSeparator.vue new file mode 100644 index 000000000..4ba38369d --- /dev/null +++ b/packages/emerald/src/components/EmStepper/EmStepperSeparator.vue @@ -0,0 +1,30 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmStepper/index.ts b/packages/emerald/src/components/EmStepper/index.ts new file mode 100644 index 000000000..d903dbb9c --- /dev/null +++ b/packages/emerald/src/components/EmStepper/index.ts @@ -0,0 +1,14 @@ +export type { EmStepperProps } from './EmStepper.vue' +export { default as EmStepper } from './EmStepper.vue' + +export type { EmStepperItemProps } from './EmStepperItem.vue' +export { default as EmStepperItem } from './EmStepperItem.vue' + +export type { EmStepperLabelProps } from './EmStepperLabel.vue' +export { default as EmStepperLabel } from './EmStepperLabel.vue' + +export type { EmStepperLabelDescriptionProps } from './EmStepperLabelDescription.vue' +export { default as EmStepperLabelDescription } from './EmStepperLabelDescription.vue' + +export type { EmStepperSeparatorProps } from './EmStepperSeparator.vue' +export { default as EmStepperSeparator } from './EmStepperSeparator.vue' diff --git a/packages/emerald/src/components/EmSwitch/EmSwitch.vue b/packages/emerald/src/components/EmSwitch/EmSwitch.vue new file mode 100644 index 000000000..6357ea966 --- /dev/null +++ b/packages/emerald/src/components/EmSwitch/EmSwitch.vue @@ -0,0 +1,98 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSwitch/EmSwitchGroup.vue b/packages/emerald/src/components/EmSwitch/EmSwitchGroup.vue new file mode 100644 index 000000000..aac926d2c --- /dev/null +++ b/packages/emerald/src/components/EmSwitch/EmSwitchGroup.vue @@ -0,0 +1,47 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSwitch/EmSwitchThumb.vue b/packages/emerald/src/components/EmSwitch/EmSwitchThumb.vue new file mode 100644 index 000000000..fe3012704 --- /dev/null +++ b/packages/emerald/src/components/EmSwitch/EmSwitchThumb.vue @@ -0,0 +1,61 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSwitch/EmSwitchTrack.vue b/packages/emerald/src/components/EmSwitch/EmSwitchTrack.vue new file mode 100644 index 000000000..34cca051f --- /dev/null +++ b/packages/emerald/src/components/EmSwitch/EmSwitchTrack.vue @@ -0,0 +1,68 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmSwitch/index.ts b/packages/emerald/src/components/EmSwitch/index.ts new file mode 100644 index 000000000..685f9958e --- /dev/null +++ b/packages/emerald/src/components/EmSwitch/index.ts @@ -0,0 +1,11 @@ +export type { EmSwitchProps } from './EmSwitch.vue' +export { default as EmSwitch } from './EmSwitch.vue' + +export type { EmSwitchGroupProps } from './EmSwitchGroup.vue' +export { default as EmSwitchGroup } from './EmSwitchGroup.vue' + +export type { EmSwitchThumbProps } from './EmSwitchThumb.vue' +export { default as EmSwitchThumb } from './EmSwitchThumb.vue' + +export type { EmSwitchTrackProps } from './EmSwitchTrack.vue' +export { default as EmSwitchTrack } from './EmSwitchTrack.vue' diff --git a/packages/emerald/src/components/EmTable/EmTable.vue b/packages/emerald/src/components/EmTable/EmTable.vue new file mode 100644 index 000000000..97f61073b --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTable.vue @@ -0,0 +1,58 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/EmTableBody.vue b/packages/emerald/src/components/EmTable/EmTableBody.vue new file mode 100644 index 000000000..179017117 --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTableBody.vue @@ -0,0 +1,23 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/EmTableCell.vue b/packages/emerald/src/components/EmTable/EmTableCell.vue new file mode 100644 index 000000000..8a73c4a15 --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTableCell.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/EmTableHead.vue b/packages/emerald/src/components/EmTable/EmTableHead.vue new file mode 100644 index 000000000..8032635d5 --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTableHead.vue @@ -0,0 +1,29 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/EmTableHeader.vue b/packages/emerald/src/components/EmTable/EmTableHeader.vue new file mode 100644 index 000000000..6c037e6c6 --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTableHeader.vue @@ -0,0 +1,180 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/EmTableRow.vue b/packages/emerald/src/components/EmTable/EmTableRow.vue new file mode 100644 index 000000000..f7e2641fa --- /dev/null +++ b/packages/emerald/src/components/EmTable/EmTableRow.vue @@ -0,0 +1,34 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTable/index.ts b/packages/emerald/src/components/EmTable/index.ts new file mode 100644 index 000000000..b60150b0d --- /dev/null +++ b/packages/emerald/src/components/EmTable/index.ts @@ -0,0 +1,17 @@ +export type { EmTableProps } from './EmTable.vue' +export { default as EmTable } from './EmTable.vue' + +export type { EmTableBodyProps } from './EmTableBody.vue' +export { default as EmTableBody } from './EmTableBody.vue' + +export type { EmTableCellProps } from './EmTableCell.vue' +export { default as EmTableCell } from './EmTableCell.vue' + +export type { EmTableHeadProps } from './EmTableHead.vue' +export { default as EmTableHead } from './EmTableHead.vue' + +export type { EmTableHeaderProps } from './EmTableHeader.vue' +export { default as EmTableHeader } from './EmTableHeader.vue' + +export type { EmTableRowProps } from './EmTableRow.vue' +export { default as EmTableRow } from './EmTableRow.vue' diff --git a/packages/emerald/src/components/EmTabs/EmTabs.vue b/packages/emerald/src/components/EmTabs/EmTabs.vue new file mode 100644 index 000000000..ac1ec09a1 --- /dev/null +++ b/packages/emerald/src/components/EmTabs/EmTabs.vue @@ -0,0 +1,72 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTabs/EmTabsItem.vue b/packages/emerald/src/components/EmTabs/EmTabsItem.vue new file mode 100644 index 000000000..8b8bd6d29 --- /dev/null +++ b/packages/emerald/src/components/EmTabs/EmTabsItem.vue @@ -0,0 +1,84 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTabs/EmTabsList.vue b/packages/emerald/src/components/EmTabs/EmTabsList.vue new file mode 100644 index 000000000..9796ea267 --- /dev/null +++ b/packages/emerald/src/components/EmTabs/EmTabsList.vue @@ -0,0 +1,40 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTabs/EmTabsPanel.vue b/packages/emerald/src/components/EmTabs/EmTabsPanel.vue new file mode 100644 index 000000000..4cac823b5 --- /dev/null +++ b/packages/emerald/src/components/EmTabs/EmTabsPanel.vue @@ -0,0 +1,45 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTabs/index.ts b/packages/emerald/src/components/EmTabs/index.ts new file mode 100644 index 000000000..60c7103d5 --- /dev/null +++ b/packages/emerald/src/components/EmTabs/index.ts @@ -0,0 +1,11 @@ +export type { EmTabsProps } from './EmTabs.vue' +export { default as EmTabs } from './EmTabs.vue' + +export type { EmTabsItemProps } from './EmTabsItem.vue' +export { default as EmTabsItem } from './EmTabsItem.vue' + +export type { EmTabsListProps } from './EmTabsList.vue' +export { default as EmTabsList } from './EmTabsList.vue' + +export type { EmTabsPanelProps } from './EmTabsPanel.vue' +export { default as EmTabsPanel } from './EmTabsPanel.vue' diff --git a/packages/emerald/src/components/EmTag/EmTag.vue b/packages/emerald/src/components/EmTag/EmTag.vue new file mode 100644 index 000000000..663e84b83 --- /dev/null +++ b/packages/emerald/src/components/EmTag/EmTag.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTag/index.ts b/packages/emerald/src/components/EmTag/index.ts new file mode 100644 index 000000000..844832ca8 --- /dev/null +++ b/packages/emerald/src/components/EmTag/index.ts @@ -0,0 +1,2 @@ +export { default as EmTag } from './EmTag.vue' +export type { EmTagProps } from './EmTag.vue' diff --git a/packages/emerald/src/components/EmTextField/EmTextField.vue b/packages/emerald/src/components/EmTextField/EmTextField.vue new file mode 100644 index 000000000..485140d6d --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextField.vue @@ -0,0 +1,92 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldAppend.vue b/packages/emerald/src/components/EmTextField/EmTextFieldAppend.vue new file mode 100644 index 000000000..28030c865 --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldAppend.vue @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldControl.vue b/packages/emerald/src/components/EmTextField/EmTextFieldControl.vue new file mode 100644 index 000000000..ec24abb8c --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldControl.vue @@ -0,0 +1,114 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldDescription.vue b/packages/emerald/src/components/EmTextField/EmTextFieldDescription.vue new file mode 100644 index 000000000..0d0e6bdcb --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldDescription.vue @@ -0,0 +1,25 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldError.vue b/packages/emerald/src/components/EmTextField/EmTextFieldError.vue new file mode 100644 index 000000000..24bdc3aa0 --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldError.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldLabel.vue b/packages/emerald/src/components/EmTextField/EmTextFieldLabel.vue new file mode 100644 index 000000000..b7fe99b1d --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldLabel.vue @@ -0,0 +1,33 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/EmTextFieldPrepend.vue b/packages/emerald/src/components/EmTextField/EmTextFieldPrepend.vue new file mode 100644 index 000000000..58bfeb072 --- /dev/null +++ b/packages/emerald/src/components/EmTextField/EmTextFieldPrepend.vue @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextField/index.ts b/packages/emerald/src/components/EmTextField/index.ts new file mode 100644 index 000000000..753e85a62 --- /dev/null +++ b/packages/emerald/src/components/EmTextField/index.ts @@ -0,0 +1,20 @@ +export type { EmTextFieldProps } from './EmTextField.vue' +export { default as EmTextField } from './EmTextField.vue' + +export type { EmTextFieldAppendProps } from './EmTextFieldAppend.vue' +export { default as EmTextFieldAppend } from './EmTextFieldAppend.vue' + +export type { EmTextFieldControlProps } from './EmTextFieldControl.vue' +export { default as EmTextFieldControl } from './EmTextFieldControl.vue' + +export type { EmTextFieldDescriptionProps } from './EmTextFieldDescription.vue' +export { default as EmTextFieldDescription } from './EmTextFieldDescription.vue' + +export type { EmTextFieldErrorProps } from './EmTextFieldError.vue' +export { default as EmTextFieldError } from './EmTextFieldError.vue' + +export type { EmTextFieldLabelProps } from './EmTextFieldLabel.vue' +export { default as EmTextFieldLabel } from './EmTextFieldLabel.vue' + +export type { EmTextFieldPrependProps } from './EmTextFieldPrepend.vue' +export { default as EmTextFieldPrepend } from './EmTextFieldPrepend.vue' diff --git a/packages/emerald/src/components/EmTextarea/EmTextarea.vue b/packages/emerald/src/components/EmTextarea/EmTextarea.vue new file mode 100644 index 000000000..ae7c21133 --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/EmTextarea.vue @@ -0,0 +1,86 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextarea/EmTextareaControl.vue b/packages/emerald/src/components/EmTextarea/EmTextareaControl.vue new file mode 100644 index 000000000..35a8ccadd --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/EmTextareaControl.vue @@ -0,0 +1,102 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextarea/EmTextareaDescription.vue b/packages/emerald/src/components/EmTextarea/EmTextareaDescription.vue new file mode 100644 index 000000000..6b7134136 --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/EmTextareaDescription.vue @@ -0,0 +1,26 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextarea/EmTextareaError.vue b/packages/emerald/src/components/EmTextarea/EmTextareaError.vue new file mode 100644 index 000000000..4ad434d7c --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/EmTextareaError.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextarea/EmTextareaLabel.vue b/packages/emerald/src/components/EmTextarea/EmTextareaLabel.vue new file mode 100644 index 000000000..a53d776f6 --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/EmTextareaLabel.vue @@ -0,0 +1,34 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTextarea/index.ts b/packages/emerald/src/components/EmTextarea/index.ts new file mode 100644 index 000000000..e71d4bd2c --- /dev/null +++ b/packages/emerald/src/components/EmTextarea/index.ts @@ -0,0 +1,14 @@ +export type { EmTextareaProps } from './EmTextarea.vue' +export { default as EmTextarea } from './EmTextarea.vue' + +export type { EmTextareaControlProps } from './EmTextareaControl.vue' +export { default as EmTextareaControl } from './EmTextareaControl.vue' + +export type { EmTextareaDescriptionProps } from './EmTextareaDescription.vue' +export { default as EmTextareaDescription } from './EmTextareaDescription.vue' + +export type { EmTextareaErrorProps } from './EmTextareaError.vue' +export { default as EmTextareaError } from './EmTextareaError.vue' + +export type { EmTextareaLabelProps } from './EmTextareaLabel.vue' +export { default as EmTextareaLabel } from './EmTextareaLabel.vue' diff --git a/packages/emerald/src/components/EmToast/EmToast.vue b/packages/emerald/src/components/EmToast/EmToast.vue new file mode 100644 index 000000000..0db5ef92b --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToast.vue @@ -0,0 +1,168 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmToast/EmToastBody.vue b/packages/emerald/src/components/EmToast/EmToastBody.vue new file mode 100644 index 000000000..8bfb9b60d --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToastBody.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmToast/EmToastClose.vue b/packages/emerald/src/components/EmToast/EmToastClose.vue new file mode 100644 index 000000000..ccdcf3c68 --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToastClose.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/packages/emerald/src/components/EmToast/EmToastDescription.vue b/packages/emerald/src/components/EmToast/EmToastDescription.vue new file mode 100644 index 000000000..2b5f1127e --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToastDescription.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmToast/EmToastIcon.vue b/packages/emerald/src/components/EmToast/EmToastIcon.vue new file mode 100644 index 000000000..a1d8b12e7 --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToastIcon.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmToast/EmToastTitle.vue b/packages/emerald/src/components/EmToast/EmToastTitle.vue new file mode 100644 index 000000000..107aa265c --- /dev/null +++ b/packages/emerald/src/components/EmToast/EmToastTitle.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/packages/emerald/src/components/EmToast/index.ts b/packages/emerald/src/components/EmToast/index.ts new file mode 100644 index 000000000..12042a4e4 --- /dev/null +++ b/packages/emerald/src/components/EmToast/index.ts @@ -0,0 +1,17 @@ +export type { EmToastProps, EmToastVariant } from './EmToast.vue' +export { default as EmToast } from './EmToast.vue' + +export type { EmToastBodyProps } from './EmToastBody.vue' +export { default as EmToastBody } from './EmToastBody.vue' + +export type { EmToastCloseProps } from './EmToastClose.vue' +export { default as EmToastClose } from './EmToastClose.vue' + +export type { EmToastDescriptionProps } from './EmToastDescription.vue' +export { default as EmToastDescription } from './EmToastDescription.vue' + +export type { EmToastIconProps } from './EmToastIcon.vue' +export { default as EmToastIcon } from './EmToastIcon.vue' + +export type { EmToastTitleProps } from './EmToastTitle.vue' +export { default as EmToastTitle } from './EmToastTitle.vue' diff --git a/packages/emerald/src/components/EmTooltip/EmTooltip.vue b/packages/emerald/src/components/EmTooltip/EmTooltip.vue new file mode 100644 index 000000000..606963478 --- /dev/null +++ b/packages/emerald/src/components/EmTooltip/EmTooltip.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/emerald/src/components/EmTooltip/EmTooltipActivator.vue b/packages/emerald/src/components/EmTooltip/EmTooltipActivator.vue new file mode 100644 index 000000000..69d0bcd12 --- /dev/null +++ b/packages/emerald/src/components/EmTooltip/EmTooltipActivator.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/packages/emerald/src/components/EmTooltip/EmTooltipContent.vue b/packages/emerald/src/components/EmTooltip/EmTooltipContent.vue new file mode 100644 index 000000000..5c06b0276 --- /dev/null +++ b/packages/emerald/src/components/EmTooltip/EmTooltipContent.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmTooltip/index.ts b/packages/emerald/src/components/EmTooltip/index.ts new file mode 100644 index 000000000..26e2d73fc --- /dev/null +++ b/packages/emerald/src/components/EmTooltip/index.ts @@ -0,0 +1,8 @@ +export type { EmTooltipProps } from './EmTooltip.vue' +export { default as EmTooltip } from './EmTooltip.vue' + +export type { EmTooltipActivatorProps } from './EmTooltipActivator.vue' +export { default as EmTooltipActivator } from './EmTooltipActivator.vue' + +export type { EmTooltipContentProps } from './EmTooltipContent.vue' +export { default as EmTooltipContent } from './EmTooltipContent.vue' diff --git a/packages/emerald/src/components/EmUpload/EmUpload.vue b/packages/emerald/src/components/EmUpload/EmUpload.vue new file mode 100644 index 000000000..825427235 --- /dev/null +++ b/packages/emerald/src/components/EmUpload/EmUpload.vue @@ -0,0 +1,57 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmUpload/EmUploadDropzone.vue b/packages/emerald/src/components/EmUpload/EmUploadDropzone.vue new file mode 100644 index 000000000..3878615a4 --- /dev/null +++ b/packages/emerald/src/components/EmUpload/EmUploadDropzone.vue @@ -0,0 +1,95 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmUpload/EmUploadInput.vue b/packages/emerald/src/components/EmUpload/EmUploadInput.vue new file mode 100644 index 000000000..431a6f54a --- /dev/null +++ b/packages/emerald/src/components/EmUpload/EmUploadInput.vue @@ -0,0 +1,48 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmUpload/EmUploadItem.vue b/packages/emerald/src/components/EmUpload/EmUploadItem.vue new file mode 100644 index 000000000..ee8375e52 --- /dev/null +++ b/packages/emerald/src/components/EmUpload/EmUploadItem.vue @@ -0,0 +1,38 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmUpload/EmUploadList.vue b/packages/emerald/src/components/EmUpload/EmUploadList.vue new file mode 100644 index 000000000..cbd026b18 --- /dev/null +++ b/packages/emerald/src/components/EmUpload/EmUploadList.vue @@ -0,0 +1,24 @@ + + + + + + + diff --git a/packages/emerald/src/components/EmUpload/index.ts b/packages/emerald/src/components/EmUpload/index.ts new file mode 100644 index 000000000..8540ac254 --- /dev/null +++ b/packages/emerald/src/components/EmUpload/index.ts @@ -0,0 +1,14 @@ +export type { EmUploadProps } from './EmUpload.vue' +export { default as EmUpload } from './EmUpload.vue' + +export type { EmUploadDropzoneProps } from './EmUploadDropzone.vue' +export { default as EmUploadDropzone } from './EmUploadDropzone.vue' + +export type { EmUploadInputProps } from './EmUploadInput.vue' +export { default as EmUploadInput } from './EmUploadInput.vue' + +export type { EmUploadItemProps } from './EmUploadItem.vue' +export { default as EmUploadItem } from './EmUploadItem.vue' + +export type { EmUploadListProps } from './EmUploadList.vue' +export { default as EmUploadList } from './EmUploadList.vue' diff --git a/packages/emerald/src/components/index.ts b/packages/emerald/src/components/index.ts new file mode 100644 index 000000000..f5f26bf83 --- /dev/null +++ b/packages/emerald/src/components/index.ts @@ -0,0 +1,35 @@ +export * from './EmAccordion' +export * from './EmAlert' +export * from './EmAutoComplete' +export * from './EmAvatar' +export * from './EmBadge' +export * from './EmBreadcrumb' +export * from './EmButton' +export * from './EmCard' +export * from './EmCarousel' +export * from './EmCheckbox' +export * from './EmContainer' +export * from './EmDatePicker' +export * from './EmDialog' +export * from './EmDivider' +export * from './EmFlex' +export * from './EmForm' +export * from './EmGrid' +export * from './EmList' +export * from './EmLoading' +export * from './EmMenu' +export * from './EmPagination' +export * from './EmProgress' +export * from './EmRadio' +export * from './EmSelect' +export * from './EmSlider' +export * from './EmStepper' +export * from './EmSwitch' +export * from './EmTable' +export * from './EmTabs' +export * from './EmTag' +export * from './EmTextarea' +export * from './EmTextField' +export * from './EmToast' +export * from './EmTooltip' +export * from './EmUpload' diff --git a/packages/emerald/src/index.ts b/packages/emerald/src/index.ts new file mode 100644 index 000000000..049366421 --- /dev/null +++ b/packages/emerald/src/index.ts @@ -0,0 +1,4 @@ +export * from './adapter' +export * from './components' +export * from './plugin' +export * from './theme' diff --git a/packages/emerald/src/plugin.ts b/packages/emerald/src/plugin.ts new file mode 100644 index 000000000..c51ccadd8 --- /dev/null +++ b/packages/emerald/src/plugin.ts @@ -0,0 +1,106 @@ +// Framework +import { + createHydrationPlugin, + createLocalePlugin, + createLoggerPlugin, + createStoragePlugin, + createThemePlugin, +} from '@vuetify/v0' + +// Adapters +import { EmeraldStyleSheetAdapter } from './adapter' +import { + error, + info, + neutral, + primary, + secondary, + success, + warning, +} from './theme' + +// Types +import type { + LocalePluginOptions, + LoggerPluginOptions, + StoragePluginOptions, + ThemePluginOptions, +} from '@vuetify/v0' +import type { App, Plugin } from 'vue' + +export interface EmeraldPluginOptions { + theme?: ThemePluginOptions | false + locale?: LocalePluginOptions | false + logger?: LoggerPluginOptions | false + storage?: StoragePluginOptions | false + hydration?: boolean +} + +type Scale = Record + +function scale (name: string, values: Scale): Scale { + const out: Scale = {} + for (const [key, val] of Object.entries(values)) { + out[key === 'DEFAULT' ? name : `${name}-${key}`] = val + } + return out +} + +export const emeraldColors: Record = { + ...scale('primary', primary), + ...scale('secondary', secondary), + ...scale('success', success), + ...scale('warning', warning), + ...scale('error', error), + ...scale('info', info), + ...scale('neutral', neutral), + 'background': '#FAF9FF', + 'surface': '#F5F4FF', + 'surface-tint': '#EBE9FE', + 'divider': '#DEE2E6', + 'on-primary': '#FFFFFF', + 'on-background': '#1A1C1E', + 'on-surface': '#1A1C1E', +} + +function emeraldThemeDefaults (): ThemePluginOptions { + return { + target: 'html', + default: 'emerald', + adapter: new EmeraldStyleSheetAdapter(), + themes: { + emerald: { colors: emeraldColors }, + }, + } +} + +export function createEmeraldPlugin (options: EmeraldPluginOptions = {}): Plugin { + return { + install (app: App) { + if (options.hydration !== false) { + app.use(createHydrationPlugin()) + } + + if (options.logger !== false) { + app.use(createLoggerPlugin(options.logger || {})) + } + + if (options.storage !== false) { + app.use(createStoragePlugin(options.storage || {})) + } + + if (options.locale !== false) { + app.use(createLocalePlugin(options.locale || { default: 'en' })) + } + + if (options.theme !== false) { + const defaults = emeraldThemeDefaults() + const theme = options.theme + ? { ...defaults, ...options.theme, themes: { ...defaults.themes, ...options.theme.themes } } + : defaults + + app.use(createThemePlugin(theme)) + } + }, + } +} diff --git a/packages/emerald/src/theme.ts b/packages/emerald/src/theme.ts new file mode 100644 index 000000000..74538e5fe --- /dev/null +++ b/packages/emerald/src/theme.ts @@ -0,0 +1,224 @@ +/** + * Emerald Design System — Token Definitions + * + * Extracted from Juan's Figma spec (March 2026). + * These tokens feed into UnoCSS theme config so that + * utility classes like `bg-primary`, `text-error-600`, `rounded-lg` + * resolve to Emerald's design language. + */ + +// ────────────────────────────────────────────── +// Brand +// ────────────────────────────────────────────── + +export const primary = { + 50: '#F5F3FF', + 100: '#EDE9FE', + 200: '#DED6FE', + 300: '#C4B5FD', + 400: '#A28BFA', + 500: '#7C5CF6', + 600: '#5F3AED', + 700: '#4D28D9', + 800: '#4021B6', + 900: '#361D95', + 950: '#221065', + DEFAULT: '#7C5CF6', +} as const + +export const secondary = { + 50: '#F4F7F9', + 100: '#ECF0F3', + 200: '#DCE4E9', + 300: '#C6D2DB', + 400: '#AEBCCB', + 500: '#94A3B8', + 600: '#828FA9', + 700: '#6F7A93', + 800: '#5C6677', + 900: '#4D5462', + 950: '#2D3139', + DEFAULT: '#94A3B8', +} as const + +// ────────────────────────────────────────────── +// Surfaces +// ────────────────────────────────────────────── + +export const background = { + DEFAULT: '#FAF9FF', + dark: '#1A1C1E', +} as const + +export const surface = { + DEFAULT: '#F5F4FF', + dark: '#1E1C28', +} as const + +// ────────────────────────────────────────────── +// Semantics +// ────────────────────────────────────────────── + +export const success = { + 50: '#F1FCF5', + 100: '#DFF9EB', + 200: '#C0F2D6', + 300: '#8EE7B7', + 400: '#56D290', + 500: '#2FB86F', + 600: '#219859', + 700: '#1E7A4A', + 800: '#1C5F3C', + 900: '#194E34', + 950: '#082B1B', + DEFAULT: '#1E7A4A', +} as const + +export const warning = { + 50: '#FBFAEB', + 100: '#F7F2CA', + 200: '#F1E497', + 300: '#E8D05C', + 400: '#E0B92F', + 500: '#D0A322', + 600: '#B07D1A', + 700: '#8F5D19', + 800: '#774A1C', + 900: '#663F1D', + 950: '#3B200D', + DEFAULT: '#B07D1A', +} as const + +export const error = { + 50: '#FDF4F3', + 100: '#FCE6E4', + 200: '#FAD2CE', + 300: '#F6B2AB', + 400: '#EF857A', + 500: '#E35E50', + 600: '#CF4233', + 700: '#C0392B', + 800: '#902E24', + 900: '#782C24', + 950: '#41130E', + DEFAULT: '#C0392B', +} as const + +export const info = { + 50: '#F3F6FC', + 100: '#E6EDF8', + 200: '#C7D9F0', + 300: '#96B8E3', + 400: '#5E93D2', + 500: '#3977BE', + 600: '#2A5FA5', + 700: '#224A82', + 800: '#20416C', + 900: '#1F375B', + 950: '#000000', + DEFAULT: '#2A5FA5', +} as const + +// ────────────────────────────────────────────── +// Border +// ────────────────────────────────────────────── + +export const border = { + DEFAULT: '#94A3B8', +} as const + +export const borderRadius = { + 'none': '0', + 'xs': '2px', + 'sm': '4px', + 'DEFAULT': '6px', + 'md': '8px', + 'lg': '12px', + 'xl': '16px', + '2xl': '24px', + 'full': '9999px', +} as const + +export const borderWidth = { + DEFAULT: '1px', + 0: '0', + 1: '1px', + 2: '2px', + 3: '3px', + 4: '4px', + 6: '6px', +} as const + +// ────────────────────────────────────────────── +// Shadows +// ────────────────────────────────────────────── + +export const shadow = { + xs: '0px 1px 2px 0px rgba(30, 28, 40, 0.05)', + sm: '0px 1px 3px 0px rgba(30, 28, 40, 0.10), 0px 1px 2px -1px rgba(30, 28, 40, 0.10)', + DEFAULT: '0px 4px 6px -1px rgba(30, 28, 40, 0.10), 0px 2px 4px -2px rgba(30, 28, 40, 0.10)', + md: '0px 4px 6px -1px rgba(30, 28, 40, 0.10), 0px 2px 4px -2px rgba(30, 28, 40, 0.10)', + lg: '0px 10px 15px -3px rgba(30, 28, 40, 0.10), 0px 4px 6px -4px rgba(30, 28, 40, 0.10)', + xl: '0px 20px 25px -5px rgba(30, 28, 40, 0.10), 0px 8px 10px -6px rgba(30, 28, 40, 0.10)', +} as const + +// ────────────────────────────────────────────── +// Typography +// ────────────────────────────────────────────── + +export const fontFamily = { + sans: 'Manrope, system-ui, -apple-system, sans-serif', +} as const + +export const fontSize = { + 'xs': ['12px', { lineHeight: '1.55', letterSpacing: '0.009em', fontWeight: '400' }], + 'sm': ['14px', { lineHeight: '1.55', fontWeight: '400' }], + 'md': ['16px', { lineHeight: '1.60', fontWeight: '400' }], + 'lg': ['20px', { lineHeight: '1.30', letterSpacing: '-0.01em', fontWeight: '600' }], + 'xl': ['28px', { lineHeight: '1.15', letterSpacing: '-0.015em', fontWeight: '600' }], + '2xl': ['40px', { lineHeight: '1.05', letterSpacing: '-0.05em', fontWeight: '700' }], +} as const + +// ────────────────────────────────────────────── +// Neutral (dark text/foreground) +// ────────────────────────────────────────────── + +export const neutral = { + DEFAULT: '#1A1C1E', + 50: '#FAF9FF', + 100: '#F5F4FF', + 200: '#ECF0F3', + 300: '#DEE2E6', + 400: '#94A3B8', + 500: '#4D5462', + 600: '#2D3139', + 700: '#1E1C28', + 800: '#1A1C1E', + 900: '#000000', +} as const + +// ────────────────────────────────────────────── +// Full theme export +// ────────────────────────────────────────────── + +export const emeraldTheme = { + colors: { + primary, + secondary, + success, + warning, + error, + info, + neutral, + background, + surface, + border, + black: '#000000', + white: '#FFFFFF', + }, + borderRadius, + borderWidth, + boxShadow: shadow, + fontFamily, + fontSize, +} as const diff --git a/packages/emerald/src/vite-env.d.ts b/packages/emerald/src/vite-env.d.ts new file mode 100644 index 000000000..99bbbfa0d --- /dev/null +++ b/packages/emerald/src/vite-env.d.ts @@ -0,0 +1,3 @@ +declare const __DEV__: boolean +declare const __VERSION__: string +declare const __VITE_LOGGER_ENABLED__: string diff --git a/packages/emerald/tsconfig.json b/packages/emerald/tsconfig.json new file mode 100644 index 000000000..912ec8c59 --- /dev/null +++ b/packages/emerald/tsconfig.json @@ -0,0 +1,38 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "noEmit": false, + "allowImportingTsExtensions": false, + "composite": true, + "incremental": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "customConditions": ["development"], + "paths": { + "#emerald/*": ["./src/*"], + "#emerald": ["./src"], + "#paper/*": ["../paper/src/*"], + "#paper": ["../paper/src"], + "#v0": ["../0/src"], + "#v0/*": ["../0/src/*"] + }, + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "assumeChangesOnlyAffectDirectDependencies": true, + "verbatimModuleSyntax": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "bundler", + "module": "esnext", + "target": "esnext", + "allowSyntheticDefaultImports": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"] +} diff --git a/packages/emerald/tsdown.config.mts b/packages/emerald/tsdown.config.mts new file mode 100644 index 000000000..d2f3564ca --- /dev/null +++ b/packages/emerald/tsdown.config.mts @@ -0,0 +1,36 @@ +import { fileURLToPath } from 'node:url' +import { defineConfig } from 'tsdown/config' +import Vue from 'unplugin-vue/rolldown' + +import pkg from './package.json' with { type: 'json' } + +const v0 = fileURLToPath(new URL('../0/src', import.meta.url)) +const paper = fileURLToPath(new URL('../paper/src', import.meta.url)) +const emerald = fileURLToPath(new URL('src', import.meta.url)) +const __VERSION__ = JSON.stringify(pkg.version) + +export default defineConfig({ + plugins: [ + Vue({ isProduction: true }), + ], + dts: { + vue: true, + }, + define: { + __DEV__: 'process.env.NODE_ENV !== \'production\'', + __VITE_LOGGER_ENABLED__: 'process.env.VITE_LOGGER_ENABLED', + __VUE_OPTIONS_API__: 'true', + __VUE_PROD_DEVTOOLS__: 'false', + __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false', + __VERSION__, + }, + name: 'paper/emerald', + exports: { + devExports: 'development', + }, + alias: { + '#v0': v0, + '#paper': paper, + '#emerald': emerald, + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a97f28389..c35ce4277 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,9 @@ catalogs: '@octokit/openapi-types': specifier: ^27.0.0 version: 27.0.0 + '@phosphor-icons/vue': + specifier: ^2.2.1 + version: 2.2.1 '@resvg/resvg-js': specifier: ^2.6.2 version: 2.6.2 @@ -525,6 +528,12 @@ importers: dev: dependencies: + '@paper/emerald': + specifier: workspace:* + version: link:../packages/emerald + '@phosphor-icons/vue': + specifier: 'catalog:' + version: 2.2.1(vue@3.5.33(typescript@6.0.3)) '@vuetify/paper': specifier: workspace:* version: link:../packages/paper @@ -618,6 +627,28 @@ importers: specifier: 'catalog:' version: 0.5.1 + packages/emerald: + dependencies: + '@vuetify/paper': + specifier: workspace:* + version: link:../paper + '@vuetify/v0': + specifier: workspace:* + version: link:../0 + vue: + specifier: '>=3.3.0' + version: 3.5.33(typescript@6.0.3) + devDependencies: + tsdown: + specifier: 'catalog:' + version: 0.21.10(@tsdown/css@0.21.10)(oxc-resolver@11.19.1(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0))(synckit@0.11.12)(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3)) + typescript: + specifier: 'catalog:' + version: 6.0.3 + unplugin-vue: + specifier: 'catalog:' + version: 7.2.0(@types/node@25.6.0)(esbuild@0.27.4)(jiti@2.6.1)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(vue@3.5.33(typescript@6.0.3))(yaml@2.8.3) + packages/paper: dependencies: '@vuetify/v0': @@ -2295,6 +2326,12 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} + '@phosphor-icons/vue@2.2.1': + resolution: {integrity: sha512-3RNg1utc2Z5RwPKWFkW3eXI/0BfQAwXgtFxPUPeSzi55jGYUq16b+UqcgbKLazWFlwg5R92OCLKjDiJjeiJcnA==} + engines: {node: '>=14'} + peerDependencies: + vue: '>=3.2.39' + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -8681,6 +8718,10 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.6 optional: true + '@phosphor-icons/vue@2.2.1(vue@3.5.33(typescript@6.0.3))': + dependencies: + vue: 3.5.33(typescript@6.0.3) + '@pkgjs/parseargs@0.11.0': optional: true @@ -9949,7 +9990,7 @@ snapshots: domhandler: 5.0.3 htmlparser2: 10.1.0 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.14 postcss-media-query-parser: 0.2.3 optional: true @@ -13335,7 +13376,7 @@ snapshots: unhead@2.1.12: dependencies: - hookable: 6.1.0 + hookable: 6.1.1 unhead@2.1.13: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3b27b2284..e3e014988 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -14,6 +14,7 @@ catalog: '@mdi/js': npm:mdi-js-es@7.4.47 '@octokit/core': ^7.0.6 '@octokit/openapi-types': ^27.0.0 + '@phosphor-icons/vue': ^2.2.1 '@resvg/resvg-js': ^2.6.2 '@shikijs/langs': ^4.0.2 '@shikijs/markdown-it': ^4.0.2 From 7a6991794ac21e62d5a572c9e1b2ef2043c77a56 Mon Sep 17 00:00:00 2001 From: John Leider Date: Tue, 12 May 2026 13:30:47 -0500 Subject: [PATCH 2/2] chore(dev): wire Emerald kitchen sink at /emerald Adds the EmeraldKitchenSink page that renders every component family at least once for visual verification. Registers a /emerald route in dev/src/main.ts, exposes the emerald components directory and @paper/ emerald alias in dev/vite.config.ts, and lists @paper/emerald + @phosphor-icons/vue as dev workspace deps. Auto-imports (components.d.ts, composables.d.ts) regenerated to capture the new Em* components and adapter exports surfaced by recent v0 changes. --- dev/package.json | 2 + dev/src/EmeraldKitchenSink.vue | 241 +++++++++++++++++++++++++++++++++ dev/src/components.d.ts | 162 ++++++++++++++++++++++ dev/src/composables.d.ts | 83 +++++++++--- dev/src/main.ts | 8 +- dev/vite.config.ts | 2 + 6 files changed, 478 insertions(+), 20 deletions(-) diff --git a/dev/package.json b/dev/package.json index aad2f4d48..75859959e 100644 --- a/dev/package.json +++ b/dev/package.json @@ -20,6 +20,8 @@ "vue-router": "catalog:" }, "dependencies": { + "@paper/emerald": "workspace:*", + "@phosphor-icons/vue": "catalog:", "@vuetify/paper": "workspace:*", "@vuetify/v0": "workspace:*", "vue": "catalog:" diff --git a/dev/src/EmeraldKitchenSink.vue b/dev/src/EmeraldKitchenSink.vue index 6922c7ab6..943b48e57 100644 --- a/dev/src/EmeraldKitchenSink.vue +++ b/dev/src/EmeraldKitchenSink.vue @@ -38,11 +38,13 @@

Button

+
Small Medium Large
+
Disabled Loading @@ -52,6 +54,7 @@

Container

+

Container size=md (max-width 768px)

@@ -78,30 +81,37 @@
Left + + Middle + Or + Right

Card

+
Preferences Customize your Emerald experience + Emerald introduces a token system structured in three levels: primitive, semantic, and component. + Save changes @@ -112,6 +122,7 @@ Hoverable card Hover to see the primary-tinted border and shadow. + When `hoverable` is set, the card lifts on mouseover with a neutral drop shadow and primary-500 border. @@ -125,11 +136,13 @@

Flex

+
A
B
C
+
Column 1
Column 2
@@ -138,13 +151,16 @@

Grid

+ Cell {{ n }} + Span 2 + Span 2 @@ -159,15 +175,18 @@

Avatar

Image

+
SM + JD + LG @@ -175,30 +194,36 @@

Text (initials)

+
AB + CD + EF

Icon

+
+ + @@ -207,20 +232,24 @@

Group

+
JD + SM + LG + +3 @@ -230,6 +259,7 @@

Badge

+
Primary Success @@ -238,11 +268,13 @@ Info Neutral
+
Small Medium Large
+
@@ -258,27 +290,33 @@

Tag

Tinted — filled surface, semantic luminosity/50 background

+
chip text + chip text + chip text + chip text + chip text + chip text @@ -286,27 +324,33 @@

Outlined elevated (lg) — white surface, colored shadow

+
chip text + chip text + chip text + chip text + chip text + chip text @@ -314,27 +358,33 @@

Outlined elevated (sm) — subtle drop shadow

+
chip text + chip text + chip text + chip text + chip text + chip text @@ -342,27 +392,33 @@

Outlined flat — bordered, no shadow

+
chip text + chip text + chip text + chip text + chip text + chip text @@ -370,6 +426,7 @@

Text only — no icon

+
vue typescript @@ -379,6 +436,7 @@

List

+
@@ -386,45 +444,59 @@ Inbox hello@vuetifyjs.com + + + My Inbox + + Scheduled + + Chats + + Archived + + Closed + Account + View Profile + Sign Out @@ -432,28 +504,36 @@ Configurations + + To-do + + Share + + Leaderboard + + Analytics @@ -462,6 +542,7 @@

Accordion

+ @@ -476,10 +557,12 @@ + This is the body of the accordion you can insert your accordion text or content in this section. + @@ -493,10 +576,12 @@ + This is the body of the accordion you can insert your accordion text or content in this section. + @@ -510,6 +595,7 @@ + This is the body of the accordion you can insert your accordion text or content in this section. @@ -523,6 +609,7 @@

Breadcrumb

+ @@ -530,35 +617,43 @@ + + Docs + + Components + + + + Breadcrumbs @@ -568,12 +663,14 @@

Tabs

+ Profile Password Billing + Profile settings content. Password settings content. Billing settings content. @@ -582,42 +679,57 @@

Stepper

+ + + + + + + + + + + + + + + @@ -627,17 +739,22 @@

Pagination

+ + + + 20 + @@ -646,10 +763,12 @@

Menu

+ Open Menu + Frameworks Shadcn @@ -670,18 +789,22 @@

TextField

+
Name Your display name across the app. + + + Email + {{ errors[0] }} @@ -700,18 +824,22 @@

Textarea

+
Bio Markdown is supported. + + + Bio + {{ errors[0] }} @@ -731,25 +860,32 @@

Checkbox

Unchecked

+
+ +
+

Checked

+
+ + @@ -759,35 +895,42 @@

Radio

Unchecked

+
+ +
+

Checked

+
+ + @@ -799,35 +942,42 @@

Switch

Off

+
+ +
+

On

+
+ + @@ -838,36 +988,45 @@

Slider

+
Default + + {{ sliderSingle }}
Fill + + + {{ sliderSingle }}
Range + + + {{ sliderRange.join(' – ') }}
@@ -875,12 +1034,14 @@

Select

+ Select your framework + Vuetify Shadcn @@ -892,11 +1053,13 @@

AutoComplete

+ + Vuetify Vue @@ -909,24 +1072,30 @@

DatePicker

Visual scaffold only — replaces with the new DatePicker once v0 ships a calendar primitive (createCalendar / useDate-backed root).

+ + July 2026 + + {{ weekday }} + {{ day }} + {{ day }} @@ -937,6 +1106,7 @@

Upload

+ @@ -948,28 +1118,35 @@

Form

+
+
+ Write your email in lowercase
+
+ Email is required
+
+ Write your email in lowercase
@@ -983,56 +1160,68 @@

Alert

+
+ Alert Title Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! + + Error Alert Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! + + Success Alert Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! + + Info Alert Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! + + Warning Alert Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! + + Alert Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! @@ -1048,6 +1237,7 @@

Progress

+
@@ -1069,6 +1259,7 @@ {{ value }} + 100
@@ -1076,75 +1267,93 @@

Toast

+
+ Successful toast It's a violet notification state + + + Successful toast It's a red notification state + + + Successful toast It's a green notification state + + + Successful toast It's a blue notification state + + + Successful toast It's an amber notification state + + + Successful toast It's a neutral notification state + @@ -1154,10 +1363,12 @@

Tooltip

+ Hello, I'm Tooltip + Hover for tooltip @@ -1171,20 +1382,24 @@

Dialog

Open dialog + Delete design system? + This will permanently remove Emerald and all its tokens. Cannot be undone. + Cancel + Confirm @@ -1200,6 +1415,7 @@

Table

Default — sortable headers, selected row, status cells

+ @@ -1209,25 +1425,30 @@ + Status + Role + + Email Phone + John Doe @@ -1236,6 +1457,7 @@ john.doe@gmail.com 555-123-4567 + Laura Kroft Inactive @@ -1243,6 +1465,7 @@ laurak@email.com 555-098-7654 + Ahmed Khan Active @@ -1250,6 +1473,7 @@ ahmed.k@gmail.com 555-234-5678 + Jane Smith Inactive @@ -1257,6 +1481,7 @@ jane.s@gmail.com 555-078-7654 + David Wilson Active @@ -1268,6 +1493,7 @@

Compact — fewer columns, no border

+ @@ -1277,37 +1503,46 @@ MRR + Starter + active + 12 $120 + Pro + trial + 48 $960 + Enterprise + churned + 120 @@ -1317,24 +1552,30 @@

Carousel

+ + + + + +