├── .editorconfig ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ └── new_preset.yml └── workflows │ └── generate_preset_doc.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── .vscode ├── extensions.json ├── settings.json └── settings.team.json ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── app.vue ├── assets ├── data │ ├── menu.json │ └── news.json ├── images │ ├── island1.jpg │ └── island2.jpg └── styles │ ├── app │ ├── _code.scss │ ├── _content.scss │ ├── _core.scss │ ├── _doc.scss │ ├── _docsearch.scss │ ├── _footer.scss │ ├── _glow.scss │ ├── _mixins.scss │ ├── _news.scss │ ├── _responsive.scss │ ├── _sidebar.scss │ ├── _topbar.scss │ ├── app.scss │ ├── landing │ │ ├── _hero.scss │ │ ├── _landing.scss │ │ └── _main.scss │ └── variables │ │ ├── _variables.scss │ │ ├── app │ │ ├── _dark.scss │ │ └── _light.scss │ │ └── primevue │ │ ├── _common.scss │ │ ├── _dark.scss │ │ └── _light.scss │ ├── demo │ └── flags.css │ ├── primevue │ ├── accordion.css │ ├── autocomplete.css │ ├── avatar.css │ ├── badge.css │ ├── blockui.css │ ├── breadcrumb.css │ ├── button.css │ ├── buttongroup.css │ ├── card.css │ ├── carousel.css │ ├── cascadeselect.css │ ├── checkbox.css │ ├── chip.css │ ├── colorpicker.css │ ├── common.css │ ├── confirmdialog.css │ ├── confirmpopup.css │ ├── contextmenu.css │ ├── datatable.css │ ├── dataview.css │ ├── datepicker.css │ ├── dialog.css │ ├── divider.css │ ├── dock.css │ ├── drawer.css │ ├── fieldset.css │ ├── fileupload.css │ ├── floatlabel.css │ ├── galleria.css │ ├── iconfield.css │ ├── iftalabel.css │ ├── image.css │ ├── imagecompare.css │ ├── inplace.css │ ├── inputgroup.css │ ├── inputnumber.css │ ├── inputotp.css │ ├── inputtext.css │ ├── knob.css │ ├── listbox.css │ ├── megamenu.css │ ├── menu.css │ ├── menubar.css │ ├── message.css │ ├── metergroup.css │ ├── multiselect.css │ ├── orderlist.css │ ├── organizationchart.css │ ├── overlaybadge.css │ ├── paginator.css │ ├── panel.css │ ├── panelmenu.css │ ├── password.css │ ├── picklist.css │ ├── popover.css │ ├── progressbar.css │ ├── progressspinner.css │ ├── radiobutton.css │ ├── rating.css │ ├── ripple.css │ ├── scrollpanel.css │ ├── scrolltop.css │ ├── select.css │ ├── selectbutton.css │ ├── skeleton.css │ ├── slider.css │ ├── speeddial.css │ ├── splitbutton.css │ ├── splitter.css │ ├── stepper.css │ ├── tabs.css │ ├── tag.css │ ├── tailwind.css │ ├── terminal.css │ ├── textarea.css │ ├── tieredmenu.css │ ├── timeline.css │ ├── toast.css │ ├── togglebutton.css │ ├── toggleswitch.css │ ├── toolbar.css │ ├── tooltip.css │ ├── tree.css │ ├── treeselect.css │ └── treetable.css │ └── tailwind.css ├── components.d.ts ├── components ├── app │ ├── AppConfigurator.vue │ ├── AppFooter.vue │ ├── AppMenu.vue │ ├── AppMenuItem.vue │ ├── AppNews.vue │ ├── AppTopBar.vue │ └── PrimeVueNuxtLink.js ├── demo │ └── DeferredDemo.vue ├── doc │ ├── DocComponent.vue │ ├── DocPreset.vue │ ├── DocPresetSection.vue │ ├── DocSectionCode.vue │ ├── DocSectionNav.vue │ ├── DocSectionText.vue │ ├── DocSections.vue │ └── codeeditor │ │ ├── index.js │ │ ├── services.js │ │ └── templates.js ├── landing │ ├── HeroSection.vue │ └── samples │ │ ├── CardsApp.vue │ │ ├── ChatApp.vue │ │ ├── CustomersApp.vue │ │ ├── InboxApp.vue │ │ ├── MoviesApp.vue │ │ └── OverviewApp.vue └── tutorial │ └── ToggleInputSwitch.vue ├── directives └── CodeHighlight.js ├── doc ├── accordion │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ControlledDoc.vue │ ├── DisabledDoc.vue │ ├── DynamicDoc.vue │ ├── ImportDoc.vue │ ├── MultipleDoc.vue │ └── TemplateDoc.vue ├── autocomplete │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── DropdownDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── ForceSelectionDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── MultipleDoc.vue │ ├── ObjectsDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── VirtualScrollDoc.vue ├── avatar │ ├── AccessibilityDoc.vue │ ├── AvatarGroupDoc.vue │ ├── IconDoc.vue │ ├── ImageDoc.vue │ ├── ImportDoc.vue │ └── LabelDoc.vue ├── badge │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ButtonDoc.vue │ ├── ImportDoc.vue │ ├── OverlayDoc.vue │ ├── SeverityDoc.vue │ └── SizeDoc.vue ├── blockui │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DocumentDoc.vue │ └── ImportDoc.vue ├── breadcrumb │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── button │ ├── AccessibilityDoc.vue │ ├── BadgeDoc.vue │ ├── BasicDoc.vue │ ├── ButtonGroupDoc.vue │ ├── DisabledDoc.vue │ ├── HeadlessDoc.vue │ ├── IconOnlyDoc.vue │ ├── IconsDoc.vue │ ├── ImportDoc.vue │ ├── LinkDoc.vue │ ├── LoadingDoc.vue │ ├── OutlinedDoc.vue │ ├── RaisedDoc.vue │ ├── RaisedTextDoc.vue │ ├── RoundedDoc.vue │ ├── SeverityDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── TextDoc.vue ├── card │ ├── AccessibilityDoc.vue │ ├── AdvancedDoc.vue │ ├── BasicDoc.vue │ └── ImportDoc.vue ├── carousel │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CircularDoc.vue │ ├── ImportDoc.vue │ ├── ResponsiveDoc.vue │ └── VerticalDoc.vue ├── cascadeselect │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ClearIconDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LoadingStateDoc.vue │ ├── SizesDoc.vue │ └── TemplateDoc.vue ├── checkbox │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── DynamicDoc.vue │ ├── FilledDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── ImportDoc.vue │ ├── IndeterminateDoc.vue │ ├── InvalidDoc.vue │ └── SizesDoc.vue ├── chip │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── IconDoc.vue │ ├── ImageDoc.vue │ ├── ImportDoc.vue │ ├── StyleDoc.vue │ └── TemplateDoc.vue ├── colorpicker │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FormatDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ └── InlineDoc.vue ├── common │ └── presetdoc │ │ └── index.json ├── confirmdialog │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ConfirmationServiceDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ ├── PositionDoc.vue │ └── TemplateDoc.vue ├── confirmpopup │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ConfirmationServiceDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ └── TemplateDoc.vue ├── contextmenu │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── DataTableDoc.vue │ ├── DocumentDoc.vue │ ├── ImportDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── customicons │ ├── FontAwesomeDoc.vue │ ├── ImageDoc.vue │ ├── MaterialDoc.vue │ ├── SVGDoc.vue │ └── VideoDoc.vue ├── datatable │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ColumnGroupDoc.vue │ ├── ColumnToggleDoc.vue │ ├── ConditionalStyleDoc.vue │ ├── ContextMenuDoc.vue │ ├── DynamicColumnsDoc.vue │ ├── ExportDoc.vue │ ├── GridLinesDoc.vue │ ├── ImportDoc.vue │ ├── LazyLoadDoc.vue │ ├── ReorderDoc.vue │ ├── RowExpansionDoc.vue │ ├── SizeDoc.vue │ ├── StatefulDoc.vue │ ├── StripedRowsDoc.vue │ ├── TemplateDoc.vue │ ├── colresize │ │ ├── ExpandModeDoc.vue │ │ └── FitModeDoc.vue │ ├── edit │ │ ├── CellEditDoc.vue │ │ └── RowEditDoc.vue │ ├── filter │ │ ├── AdvancedFilterDoc.vue │ │ └── BasicFilterDoc.vue │ ├── pagination │ │ ├── PaginationBasicDoc.vue │ │ ├── PaginationHeadlessDoc.vue │ │ └── PaginationTemplateDoc.vue │ ├── rowgroup │ │ ├── ExpandableRowGroupDoc.vue │ │ ├── RowSpanRowGroupDoc.vue │ │ └── SubHeaderRowGroupDoc.vue │ ├── rowselection │ │ ├── CheckboxRowSelectionDoc.vue │ │ ├── ColumnRowSelectionDoc.vue │ │ ├── MultipleRowsSelectionDoc.vue │ │ ├── RadioButtonRowSelectionDoc.vue │ │ ├── RowSelectEventsDoc.vue │ │ └── SingleRowSelectionDoc.vue │ ├── samples │ │ ├── CustomersDoc.vue │ │ └── ProductsDoc.vue │ ├── scroll │ │ ├── FlexibleScrollDoc.vue │ │ ├── FrozenColumnsDoc.vue │ │ ├── FrozenRowsDoc.vue │ │ ├── HorizontalScrollDoc.vue │ │ └── VerticalScrollDoc.vue │ ├── sort │ │ ├── MultipleColumnsDoc.vue │ │ ├── PresortDoc.vue │ │ ├── RemovableSortDoc.vue │ │ └── SingleColumnDoc.vue │ └── virtualscroll │ │ ├── LazyVirtualScrollDoc.vue │ │ └── PreloadVirtualScrollDoc.vue ├── dataview │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── LayoutDoc.vue │ ├── LoadingDoc.vue │ ├── PaginationDoc.vue │ └── SortingDoc.vue ├── datepicker │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ButtonBarDoc.vue │ ├── DateTemplateDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormatDoc.vue │ ├── FormsDoc.vue │ ├── IconDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InlineDoc.vue │ ├── InvalidDoc.vue │ ├── LocaleDoc.vue │ ├── MinMaxDoc.vue │ ├── MonthPickerDoc.vue │ ├── MultipleDoc.vue │ ├── MultipleMonthsDoc.vue │ ├── RangeDoc.vue │ ├── SizesDoc.vue │ ├── TimeDoc.vue │ └── YearPickerDoc.vue ├── deferredcontent │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DataTableDoc.vue │ └── ImportDoc.vue ├── dialog │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ ├── LongContentDoc.vue │ ├── MaximizableDoc.vue │ ├── PositionDoc.vue │ ├── ResponsiveDoc.vue │ ├── TemplateDoc.vue │ └── WithoutModalDoc.vue ├── divider │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ContentDoc.vue │ ├── ImportDoc.vue │ ├── LoginDoc.vue │ ├── TypeDoc.vue │ └── VerticalDoc.vue ├── dock │ ├── AccessibilityDoc.vue │ ├── AdvancedDoc.vue │ ├── BasicDoc.vue │ └── ImportDoc.vue ├── drawer │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── FullScreenDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ ├── PositionDoc.vue │ ├── SizeDoc.vue │ └── TemplateDoc.vue ├── dynamicdialog │ ├── AccessibilityDoc.vue │ ├── CloseDialogDoc.vue │ ├── CustomizationDoc.vue │ ├── DialogServiceDoc.vue │ ├── EventsDoc.vue │ ├── ExampleDoc.vue │ ├── ImportDoc.vue │ ├── OpenDialogDoc.vue │ ├── PassingDataDoc.vue │ └── demo │ │ ├── FooterDemo.vue │ │ ├── InfoDemo.vue │ │ └── ProductListDemo.vue ├── fieldset │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── TemplateDoc.vue │ └── ToggleableDoc.vue ├── fileupload │ ├── AccessibilityDoc.vue │ ├── AdvancedDoc.vue │ ├── AutoDoc.vue │ ├── BasicDoc.vue │ ├── CustomUploadDoc.vue │ ├── ImportDoc.vue │ └── TemplateDoc.vue ├── floatlabel │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ └── VariantsDoc.vue ├── fluid │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ └── ImportDoc.vue ├── galleria │ ├── AccessibilityDoc.vue │ ├── AdvancedDoc.vue │ ├── AutoPlayDoc.vue │ ├── BasicDoc.vue │ ├── CaptionDoc.vue │ ├── ControlledDoc.vue │ ├── ImportDoc.vue │ ├── ResponsiveDoc.vue │ ├── ThumbnailDoc.vue │ ├── fullscreen │ │ ├── CustomContentDoc.vue │ │ ├── WithThumbnailsDoc.vue │ │ └── WithoutThumbnailsDoc.vue │ ├── indicator │ │ ├── ClickEventDoc.vue │ │ ├── HoverEventDoc.vue │ │ ├── PositionDoc.vue │ │ └── TemplateDoc.vue │ └── navigator │ │ ├── HoverDoc.vue │ │ ├── IndicatorsDoc.vue │ │ ├── ItemThumbnailsDoc.vue │ │ └── ItemWithoutThumbnailsDoc.vue ├── iconfield │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── FloatLabelDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── SizesDoc.vue │ └── TemplateDoc.vue ├── icons │ ├── BasicDoc.vue │ ├── ColorDoc.vue │ ├── ConstantsDoc.vue │ ├── DownloadDoc.vue │ ├── FigmaDoc.vue │ ├── ImportDoc.vue │ ├── ListDoc.vue │ ├── SizeDoc.vue │ └── SpinDoc.vue ├── iftalabel │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ └── InvalidDoc.vue ├── image │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── PreviewDoc.vue │ └── TemplateDoc.vue ├── imagecompare │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ └── ResponsiveDoc.vue ├── inplace │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImageDoc.vue │ ├── ImportDoc.vue │ ├── InputDoc.vue │ └── LazyDoc.vue ├── inputgroup │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ButtonDoc.vue │ ├── CheckboxDoc.vue │ ├── FloatLabelDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ └── MultipleDoc.vue ├── inputmask │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── MaskDoc.vue │ ├── OptionalDoc.vue │ ├── SizesDoc.vue │ └── SlotCharDoc.vue ├── inputnumber │ ├── AccessibilityDoc.vue │ ├── ButtonsDoc.vue │ ├── CurrencyDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LocaleDoc.vue │ ├── NumeralsDoc.vue │ ├── PrefixSuffixDoc.vue │ ├── SizesDoc.vue │ └── VerticalDoc.vue ├── inputotp │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── FilledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── IntegerOnlyDoc.vue │ ├── MaskDoc.vue │ ├── SampleDoc.vue │ ├── SizesDoc.vue │ └── TemplateDoc.vue ├── inputtext │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── HelpTextDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ └── SizesDoc.vue ├── knob │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ColorDoc.vue │ ├── DisabledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── MinMaxDoc.vue │ ├── ReactiveDoc.vue │ ├── ReadOnlyDoc.vue │ ├── SizeDoc.vue │ ├── StepDoc.vue │ ├── StrokeDoc.vue │ └── TemplateDoc.vue ├── listbox │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CheckmarkDoc.vue │ ├── DisabledDoc.vue │ ├── FilterDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── MultipleDoc.vue │ ├── TemplateDoc.vue │ └── VirtualScrollDoc.vue ├── megamenu │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── ImportDoc.vue │ ├── RouterDoc.vue │ ├── TemplateDoc.vue │ └── VerticalDoc.vue ├── menu │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── GroupDoc.vue │ ├── ImportDoc.vue │ ├── PopupDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── menubar │ ├── AccessibilityDoc.vue │ ├── AdvancedDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── ImportDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── message │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ClosableDoc.vue │ ├── DynamicDoc.vue │ ├── FormsDoc.vue │ ├── IconDoc.vue │ ├── ImportDoc.vue │ ├── LifeDoc.vue │ ├── OutlinedDoc.vue │ ├── SeverityDoc.vue │ ├── SimpleDoc.vue │ └── SizesDoc.vue ├── metergroup │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── IconDoc.vue │ ├── ImportDoc.vue │ ├── LabelDoc.vue │ ├── MinMaxDoc.vue │ ├── MultipleDoc.vue │ ├── TemplateDoc.vue │ └── VerticalDoc.vue ├── multiselect │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ChipsDoc.vue │ ├── ClearIconDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FilterDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LoadingStateDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── VirtualScrollDoc.vue ├── nuxt │ ├── CSSVariablesDoc.vue │ ├── DownloadDoc.vue │ ├── ExampleDoc.vue │ ├── NuxtConfigDoc.vue │ ├── StylesDoc.vue │ ├── TailwindDoc.vue │ └── tailwind │ │ ├── ImportStylesDoc.vue │ │ ├── PostCSSImportDoc.vue │ │ └── PrimeUIPluginDoc.vue ├── orderlist │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ └── TemplateDoc.vue ├── organizationchart │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ColoredDoc.vue │ ├── ImportDoc.vue │ ├── SelectionDoc.vue │ └── TemplateDoc.vue ├── overview │ ├── IdeaDoc.vue │ ├── PresetDoc.vue │ └── passthrough │ │ ├── GlobalDoc.vue │ │ ├── LocalDoc.vue │ │ ├── OverrideDoc.vue │ │ └── ReuseDoc.vue ├── paginator │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CurrentPageReportDoc.vue │ ├── CustomContentDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ ├── ResponsiveDoc.vue │ └── TemplateDoc.vue ├── panel │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ ├── TemplateDoc.vue │ └── ToggleableDoc.vue ├── panelmenu │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── ControlledDoc.vue │ ├── ImportDoc.vue │ ├── MultipleDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── password │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LocaleDoc.vue │ ├── MeterDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── ToggleMaskDoc.vue ├── picklist │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ImportDoc.vue │ └── TemplateDoc.vue ├── popover │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DataTableDoc.vue │ ├── ImportDoc.vue │ └── SelectDataDoc.vue ├── progressbar │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DynamicDoc.vue │ ├── ImportDoc.vue │ ├── IndeterminateDoc.vue │ └── TemplateDoc.vue ├── progressspinner │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CustomDoc.vue │ └── ImportDoc.vue ├── radiobutton │ ├── AccessibilityDoc.vue │ ├── DisabledDoc.vue │ ├── DynamicDoc.vue │ ├── FilledDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ └── SizesDoc.vue ├── rating │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── NumberOfStarsDoc.vue │ ├── ReadOnlyDoc.vue │ └── TemplateDoc.vue ├── ripple │ ├── AccessibilityDoc.vue │ ├── ConfigurationDoc.vue │ ├── CustomDoc.vue │ ├── DefaultDoc.vue │ └── ImportDoc.vue ├── scrollpanel │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CustomDoc.vue │ └── ImportDoc.vue ├── scrolltop │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ElementDoc.vue │ └── ImportDoc.vue ├── select │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CheckmarkDoc.vue │ ├── ClearIconDoc.vue │ ├── DisabledDoc.vue │ ├── EditableDoc.vue │ ├── FilledDoc.vue │ ├── FilterDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── GroupDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LazyVirtualScrollDoc.vue │ ├── LoadingStateDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── VirtualScrollDoc.vue ├── selectbutton │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── MultipleDoc.vue │ ├── SizesDoc.vue │ └── TemplateDoc.vue ├── skeleton │ ├── AccessibilityDoc.vue │ ├── CardDoc.vue │ ├── DataTableDoc.vue │ ├── ImportDoc.vue │ ├── ListDoc.vue │ └── ShapesDoc.vue ├── slider │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── FilterDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── InputDoc.vue │ ├── RangeDoc.vue │ ├── StepDoc.vue │ └── VerticalDoc.vue ├── speeddial │ ├── AccessibilityDoc.vue │ ├── CircleDoc.vue │ ├── ImportDoc.vue │ ├── LinearDoc.vue │ ├── MaskDoc.vue │ ├── QuarterCircleDoc.vue │ ├── SemiCircleDoc.vue │ ├── TemplateDoc.vue │ └── TooltipDoc.vue ├── splitbutton │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── IconsDoc.vue │ ├── ImportDoc.vue │ ├── NestedDoc.vue │ ├── OutlinedDoc.vue │ ├── RaisedDoc.vue │ ├── RaisedTextDoc.vue │ ├── RoundedDoc.vue │ ├── SeverityDoc.vue │ ├── SizesDoc.vue │ ├── TemplateDoc.vue │ └── TextDoc.vue ├── splitter │ ├── AccessibilityDoc.vue │ ├── HorizontalDoc.vue │ ├── ImportDoc.vue │ ├── NestedDoc.vue │ ├── SizeDoc.vue │ └── VerticalDoc.vue ├── stepper │ ├── AccessibilityDoc.vue │ ├── HorizontalDoc.vue │ ├── ImportDoc.vue │ ├── LinearDoc.vue │ ├── StepsOnlyDoc.vue │ ├── TemplateDoc.vue │ └── VerticalDoc.vue ├── tabs │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ControlledDoc.vue │ ├── DisabledDoc.vue │ ├── DynamicDoc.vue │ ├── ImportDoc.vue │ ├── ScrollableDoc.vue │ ├── TabMenuDoc.vue │ └── TemplateDoc.vue ├── tag │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── IconDoc.vue │ ├── ImportDoc.vue │ ├── PillDoc.vue │ ├── SeverityDoc.vue │ └── TemplateDoc.vue ├── terminal │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ └── ImportDoc.vue ├── textarea │ ├── AccessibilityDoc.vue │ ├── AutoResizeDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ └── SizesDoc.vue ├── tieredmenu │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CommandDoc.vue │ ├── ImportDoc.vue │ ├── PopupDoc.vue │ ├── RouterDoc.vue │ └── TemplateDoc.vue ├── timeline │ ├── AccessibilityDoc.vue │ ├── AlignmentDoc.vue │ ├── BasicDoc.vue │ ├── HorizontalDoc.vue │ ├── ImportDoc.vue │ ├── OppositeDoc.vue │ └── TemplateDoc.vue ├── toast │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── HeadlessDoc.vue │ ├── ImportDoc.vue │ ├── MultipleDoc.vue │ ├── PositionDoc.vue │ ├── SeverityDoc.vue │ ├── StickyDoc.vue │ ├── TemplateDoc.vue │ └── ToastServiceDoc.vue ├── togglebutton │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CustomizedDoc.vue │ ├── DisabledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ └── SizesDoc.vue ├── toggleswitch │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DisabledDoc.vue │ ├── FormsDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── PreselectionDoc.vue │ └── TemplateDoc.vue ├── toolbar │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CustomDoc.vue │ └── ImportDoc.vue ├── tooltip │ ├── AccessibilityDoc.vue │ ├── AutoHideDoc.vue │ ├── CustomDoc.vue │ ├── DelayDoc.vue │ ├── EventDoc.vue │ ├── ImportDoc.vue │ └── PositionDoc.vue ├── tree │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ControlledDoc.vue │ ├── EventsDoc.vue │ ├── FilterDoc.vue │ ├── ImportDoc.vue │ ├── LazyDoc.vue │ ├── TemplateDoc.vue │ └── selection │ │ ├── CheckboxDoc.vue │ │ ├── MultipleDoc.vue │ │ └── SingleDoc.vue ├── treeselect │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── CheckboxDoc.vue │ ├── ClearIconDoc.vue │ ├── DisabledDoc.vue │ ├── FilledDoc.vue │ ├── FilterDoc.vue │ ├── FloatLabelDoc.vue │ ├── FormsDoc.vue │ ├── IftaLabelDoc.vue │ ├── ImportDoc.vue │ ├── InvalidDoc.vue │ ├── LazyDoc.vue │ ├── MultipleDoc.vue │ ├── SizesDoc.vue │ └── TemplateDoc.vue ├── treetable │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── ColumnToggleDoc.vue │ ├── ContextMenuDoc.vue │ ├── ControlledDoc.vue │ ├── DynamicColumnsDoc.vue │ ├── FilterDoc.vue │ ├── ImportDoc.vue │ ├── LazyLoadDoc.vue │ ├── SizeDoc.vue │ ├── TemplateDoc.vue │ ├── pagination │ │ ├── PaginationBasicDoc.vue │ │ ├── PaginationHeadlessDoc.vue │ │ └── PaginationTemplateDoc.vue │ ├── resize │ │ ├── ExpandModeDoc.vue │ │ └── FitModeDoc.vue │ ├── scroll │ │ ├── FlexibleScrollDoc.vue │ │ ├── FrozenColumnsDoc.vue │ │ ├── HorizontalScrollDoc.vue │ │ └── VerticalScrollDoc.vue │ ├── selection │ │ ├── CheckboxRowSelectionDoc.vue │ │ ├── MultipleRowsSelectionDoc.vue │ │ ├── RowSelectionEventsDoc.vue │ │ └── SingleRowSelectionDoc.vue │ └── sort │ │ ├── MultipleColumnsDoc.vue │ │ ├── RemovableSortDoc.vue │ │ └── SingleColumnDoc.vue ├── virtualscroller │ ├── AccessibilityDoc.vue │ ├── BasicDoc.vue │ ├── DelayDoc.vue │ ├── GridDoc.vue │ ├── HorizontalDoc.vue │ ├── ImportDoc.vue │ ├── LazyDoc.vue │ └── LoadingDoc.vue └── vite │ ├── CSSVariablesDoc.vue │ ├── DownloadDoc.vue │ ├── ExampleDoc.vue │ ├── PluginDoc.vue │ ├── StylesDoc.vue │ ├── TailwindDoc.vue │ └── tailwind │ ├── ImportStylesDoc.vue │ ├── PostCSSImportDoc.vue │ └── PrimeUIPluginDoc.vue ├── error.vue ├── layouts ├── AppEventBus.js ├── custom.vue └── default.vue ├── middleware └── route.global.js ├── nuxt.config.js ├── package-lock.json ├── package.json ├── pages ├── accordion │ └── index.vue ├── autocomplete │ └── index.vue ├── avatar │ └── index.vue ├── badge │ └── index.vue ├── blockui │ └── index.vue ├── breadcrumb │ └── index.vue ├── button │ └── index.vue ├── card │ └── index.vue ├── carousel │ └── index.vue ├── cascadeselect │ └── index.vue ├── checkbox │ └── index.vue ├── chip │ └── index.vue ├── colorpicker │ └── index.vue ├── confirmdialog │ └── index.vue ├── confirmpopup │ └── index.vue ├── contextmenu │ └── index.vue ├── customicons │ └── index.vue ├── datatable │ └── index.vue ├── dataview │ └── index.vue ├── datepicker │ └── index.vue ├── deferredcontent │ └── index.vue ├── dialog │ └── index.vue ├── divider │ └── index.vue ├── dock │ └── index.vue ├── drawer │ └── index.vue ├── dynamicdialog │ └── index.vue ├── fieldset │ └── index.vue ├── fileupload │ └── index.vue ├── floatlabel │ └── index.vue ├── fluid │ └── index.vue ├── galleria │ └── index.vue ├── iconfield │ └── index.vue ├── icons │ └── index.vue ├── iftalabel │ └── index.vue ├── image │ └── index.vue ├── imagecompare │ └── index.vue ├── index.vue ├── inplace │ └── index.vue ├── inputgroup │ └── index.vue ├── inputmask │ └── index.vue ├── inputnumber │ └── index.vue ├── inputotp │ └── index.vue ├── inputtext │ └── index.vue ├── knob │ └── index.vue ├── listbox │ └── index.vue ├── megamenu │ └── index.vue ├── menu │ └── index.vue ├── menubar │ └── index.vue ├── message │ └── index.vue ├── metergroup │ └── index.vue ├── multiselect │ └── index.vue ├── nuxt │ └── index.vue ├── orderlist │ └── index.vue ├── organizationchart │ └── index.vue ├── paginator │ └── index.vue ├── panel │ └── index.vue ├── panelmenu │ └── index.vue ├── password │ └── index.vue ├── picklist │ └── index.vue ├── popover │ └── index.vue ├── progressbar │ └── index.vue ├── progressspinner │ └── index.vue ├── radiobutton │ └── index.vue ├── rating │ └── index.vue ├── ripple │ └── index.vue ├── scrollpanel │ └── index.vue ├── scrolltop │ └── index.vue ├── select │ └── index.vue ├── selectbutton │ └── index.vue ├── skeleton │ └── index.vue ├── slider │ └── index.vue ├── speeddial │ └── index.vue ├── splitbutton │ └── index.vue ├── splitter │ └── index.vue ├── stepper │ └── index.vue ├── tabs │ └── index.vue ├── tag │ └── index.vue ├── terminal │ └── index.vue ├── textarea │ └── index.vue ├── tieredmenu │ └── index.vue ├── timeline │ └── index.vue ├── toast │ └── index.vue ├── togglebutton │ └── index.vue ├── toggleswitch │ └── index.vue ├── toolbar │ └── index.vue ├── tooltip │ └── index.vue ├── tree │ └── index.vue ├── treeselect │ └── index.vue ├── treetable │ └── index.vue ├── virtualscroller │ └── index.vue └── vite │ └── index.vue ├── plugins └── app.js ├── public ├── demo │ └── data │ │ └── icons.json ├── favicon.ico └── scripts │ └── prism.js ├── scripts └── build-presetdoc.js ├── service ├── CarService.js ├── CountryService.js ├── CustomerService.js ├── EventService.js ├── IconService.js ├── NodeService.js ├── PhotoService.js └── ProductService.js └── tailwind.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_style = space 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | max_line_length = off 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new_preset.yml: -------------------------------------------------------------------------------- 1 | name: New preset 2 | description: Submit your preset to the Gallery. 3 | title: 'Preset Name' 4 | labels: 'Status: Needs Triage' 5 | body: 6 | - type: input 7 | id: repo-url 8 | attributes: 9 | label: Repository URL 10 | validations: 11 | required: true 12 | -------------------------------------------------------------------------------- /.github/workflows/generate_preset_doc.yml: -------------------------------------------------------------------------------- 1 | name: Generate Preset DOC 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | paths: 7 | - 'assets/styles/primevue/**.css' 8 | 9 | permissions: 10 | contents: write 11 | 12 | jobs: 13 | build: 14 | if: github.repository == 'primefaces/primevue-tailwind' && github.ref == 'refs/heads/main' 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [20] 20 | 21 | steps: 22 | - name: Checkout repository 23 | uses: actions/checkout@v4 24 | 25 | - name: Use Node.js ${{ matrix.node-version }} 26 | uses: actions/setup-node@v4 27 | with: 28 | node-version: ${{ matrix.node-version }} 29 | cache: 'npm' 30 | 31 | - name: Install node packages 32 | run: npm install 33 | 34 | - name: Generate api doc 35 | run: npm run build:presetdoc 36 | 37 | - name: Commit doc 38 | run: | 39 | git config user.name "GitHub Actions Bot" 40 | git config user.email "<>" 41 | git commit -a -m "Update API doc" 42 | git push 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | coverage 3 | *.log* 4 | .nuxt 5 | .nitro 6 | .cache 7 | .output 8 | .env 9 | dist 10 | .DS_Store 11 | .idea 12 | .eslintcache 13 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | build 3 | coverage 4 | dist 5 | public 6 | styles 7 | node_modules 8 | .vscode 9 | dist 10 | .nuxt 11 | .output 12 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": false, 3 | "tabWidth": 4, 4 | "trailingComma": "none", 5 | "semi": true, 6 | "singleQuote": true, 7 | "vueIndentScriptAndStyle": false, 8 | "printWidth": 250, 9 | "bracketSameLine": false 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "esbenp.prettier-vscode" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll.eslint": "explicit", 4 | "source.organizeImports": "explicit" 5 | }, 6 | "editor.defaultFormatter": "esbenp.prettier-vscode", 7 | "[javascript]": { 8 | "editor.defaultFormatter": "esbenp.prettier-vscode", 9 | "editor.formatOnSave": true 10 | }, 11 | "[vue]": { 12 | "editor.defaultFormatter": "esbenp.prettier-vscode", 13 | "editor.formatOnSave": true 14 | }, 15 | "[typescript]": { 16 | "editor.defaultFormatter": "esbenp.prettier-vscode", 17 | "editor.formatOnSave": true 18 | }, 19 | "[json]": { 20 | "editor.defaultFormatter": "esbenp.prettier-vscode", 21 | "editor.formatOnSave": true 22 | } 23 | } -------------------------------------------------------------------------------- /.vscode/settings.team.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll.eslint": true, 4 | "source.organizeImports": true 5 | }, 6 | "editor.defaultFormatter": "esbenp.prettier-vscode", 7 | "[javascript]": { 8 | "editor.defaultFormatter": "esbenp.prettier-vscode", 9 | "editor.formatOnSave": true 10 | }, 11 | "[vue]": { 12 | "editor.defaultFormatter": "esbenp.prettier-vscode", 13 | "editor.formatOnSave": true 14 | }, 15 | "[typescript]": { 16 | "editor.defaultFormatter": "esbenp.prettier-vscode", 17 | "editor.formatOnSave": true 18 | }, 19 | "[json]": { 20 | "editor.defaultFormatter": "esbenp.prettier-vscode", 21 | "editor.formatOnSave": true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018-2023 PrimeTek 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /app.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 36 | -------------------------------------------------------------------------------- /assets/data/news.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": 10, 3 | "content": "Tailwind PrimeVue is sunsetting in favor of Volt", 4 | "linkHref": "https://volt.primevue.org", 5 | "linkText": "Learn More" 6 | } 7 | -------------------------------------------------------------------------------- /assets/images/island1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/primefaces/primevue-tailwind/4176cdf5280592c32152c52d707530831291e3aa/assets/images/island1.jpg -------------------------------------------------------------------------------- /assets/images/island2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/primefaces/primevue-tailwind/4176cdf5280592c32152c52d707530831291e3aa/assets/images/island2.jpg -------------------------------------------------------------------------------- /assets/styles/app/_content.scss: -------------------------------------------------------------------------------- 1 | .layout-content { 2 | padding: 6rem 4rem 0 4rem; 3 | display: flex; 4 | 5 | .layout-content-slot { 6 | flex: 1 1 auto; 7 | width: 1%; 8 | padding-top: .5rem; 9 | } 10 | } 11 | 12 | .card { 13 | background: var(--card-background); 14 | border: var(--card-border); 15 | padding: 2rem; 16 | border-radius: 10px; 17 | margin-bottom: 1rem; 18 | } 19 | -------------------------------------------------------------------------------- /assets/styles/app/_footer.scss: -------------------------------------------------------------------------------- 1 | .layout-footer { 2 | padding: 2rem 4rem; 3 | margin-top: 4rem; 4 | display: flex; 5 | align-items: center; 6 | justify-content: space-between; 7 | flex-wrap: wrap; 8 | font-weight: 500; 9 | color: var(--text-color); 10 | border-top: 1px solid var(--border-color); 11 | 12 | a { 13 | color: var(--primary-text-color); 14 | font-weight: 700; 15 | transition: outline-color .2s, border-color .2s; 16 | outline-color: transparent; 17 | border-radius: 6px; 18 | 19 | @include focus-visible(); 20 | 21 | &:hover { 22 | text-decoration: underline; 23 | } 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/styles/app/_glow.scss: -------------------------------------------------------------------------------- 1 | .landing, .layout-wrapper { 2 | background-blend-mode: var(--glow-blend); 3 | background-image: var(--glow-image); 4 | background-position: top; 5 | background-repeat: no-repeat; 6 | background-size: auto 20rem; 7 | } -------------------------------------------------------------------------------- /assets/styles/app/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin focus-visible() { 2 | &:focus-visible { 3 | outline: 1px solid var(--primary-color); 4 | outline-offset: var(--p-focus-ring-offset); 5 | } 6 | } 7 | 8 | @mixin doc-link() { 9 | color: var(--primary-text-color); 10 | font-weight: 500; 11 | transition: outline-color .2s, border-color .2s; 12 | outline-color: transparent; 13 | border-radius: 6px; 14 | @include focus-visible(); 15 | 16 | &:hover { 17 | text-decoration: underline; 18 | } 19 | } 20 | 21 | @mixin mobile { 22 | @media (max-width: 900px) { 23 | @content; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /assets/styles/app/app.scss: -------------------------------------------------------------------------------- 1 | @charset 'UTF-8'; 2 | 3 | @import './variables/_variables'; 4 | @import './_mixins'; 5 | @import './_core'; 6 | @import './_glow'; 7 | @import './_topbar'; 8 | @import './_sidebar'; 9 | @import './_content'; 10 | @import './_news'; 11 | @import './_footer'; 12 | @import './_code'; 13 | @import './_doc'; 14 | @import './_docsearch'; 15 | @import './_responsive'; 16 | @import './landing/_landing'; 17 | -------------------------------------------------------------------------------- /assets/styles/app/landing/_hero.scss: -------------------------------------------------------------------------------- 1 | .landing-hero { 2 | .p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link { 3 | background: transparent; 4 | } 5 | 6 | .box { 7 | box-shadow: var(--home-card-shadow); 8 | } 9 | 10 | .p-datepicker, .p-datepicker-header { 11 | background: transparent; 12 | border-color: transparent; 13 | } 14 | } 15 | 16 | @media screen and (min-width: 1660px) { 17 | .landing-hero { 18 | width: 1504px !important; 19 | margin-left: auto !important; 20 | margin-right: auto !important; 21 | } 22 | } -------------------------------------------------------------------------------- /assets/styles/app/landing/_landing.scss: -------------------------------------------------------------------------------- 1 | $landingBreakpointMD: 767px; 2 | $landingBreakpointLG: 991px; 3 | $landingBreakpointXL: 1199px; 4 | 5 | @import '../_mixins'; 6 | @import './_main'; 7 | @import './_hero'; 8 | -------------------------------------------------------------------------------- /assets/styles/app/variables/_variables.scss: -------------------------------------------------------------------------------- 1 | @import './app/_light'; 2 | @import './app/_dark'; 3 | @import './primevue/_common'; 4 | @import './primevue/_light'; 5 | @import './primevue/_dark'; -------------------------------------------------------------------------------- /assets/styles/app/variables/primevue/_common.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --p-primary-50: #ecfdf5; 3 | --p-primary-100: #d1fae5; 4 | --p-primary-200: #a7f3d0; 5 | --p-primary-300: #6ee7b7; 6 | --p-primary-400: #34d399; 7 | --p-primary-500: #10b981; 8 | --p-primary-600: #059669; 9 | --p-primary-700: #047857; 10 | --p-primary-800: #065f46; 11 | --p-primary-900: #064e3b; 12 | --p-primary-950: #022c22; 13 | --p-surface-0: #ffffff; 14 | --p-surface-50: #fafafa; 15 | --p-surface-100: #f4f4f5; 16 | --p-surface-200: #e4e4e7; 17 | --p-surface-300: #d4d4d8; 18 | --p-surface-400: #a1a1aa; 19 | --p-surface-500: #71717a; 20 | --p-surface-600: #52525b; 21 | --p-surface-700: #3f3f46; 22 | --p-surface-800: #27272a; 23 | --p-surface-900: #18181b; 24 | --p-surface-950: #09090b; 25 | --p-content-border-radius: 6px; 26 | } 27 | -------------------------------------------------------------------------------- /assets/styles/app/variables/primevue/_light.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --p-primary-color: var(--p-primary-500); 3 | --p-primary-contrast-color: var(--p-surface-0); 4 | --p-primary-hover-color: var(--p-primary-600); 5 | --p-primary-active-color: var(--p-primary-700); 6 | --p-content-border-color: var(--p-surface-200); 7 | --p-content-hover-background: var(--p-surface-100); 8 | --p-content-hover-color: var(--p-surface-800); 9 | --p-highlight-background: var(--p-primary-50); 10 | --p-highlight-color: var(--p-primary-700); 11 | --p-highlight-focus-background: var(--p-primary-100); 12 | --p-highlight-focus-color: var(--p-primary-800); 13 | --p-text-color: var(--p-surface-700); 14 | --p-text-hover-color: var(--p-surface-800); 15 | --p-text-muted-color: var(--p-surface-500); 16 | --p-text-hover-muted-color: var(--p-surface-600); 17 | } 18 | 19 | :root.p-noir { 20 | --p-primary-color: var(--p-primary-950); 21 | --p-primary-contrast-color: #ffffff; 22 | --p-primary-hover-color: var(--p-primary-800); 23 | --p-primary-active-color: var(--p-primary-700); 24 | --p-highlight-background: var(--p-surface-950); 25 | --p-highlight-color: #ffffff; 26 | --p-highlight-focus-background: var(--p-surface-700); 27 | --p-highlight-focus-color: #ffffff; 28 | } 29 | -------------------------------------------------------------------------------- /assets/styles/primevue/avatar.css: -------------------------------------------------------------------------------- 1 | .p-avatar { 2 | @apply inline-flex items-center justify-center 3 | w-8 h-8 text-base rounded-md 4 | bg-surface-200 dark:bg-surface-700 5 | } 6 | 7 | .p-avatar-image { 8 | @apply bg-transparent 9 | } 10 | 11 | .p-avatar-circle, 12 | .p-avatar-circle img { 13 | @apply rounded-full 14 | } 15 | 16 | .p-avatar-icon { 17 | @apply text-base 18 | } 19 | 20 | .p-avatar img { 21 | @apply w-full h-full 22 | } 23 | 24 | .p-avatar-lg { 25 | @apply w-12 h-12 text-2xl 26 | } 27 | 28 | .p-avatar-lg .p-avatar-icon { 29 | @apply text-2xl 30 | } 31 | 32 | .p-avatar-xl { 33 | @apply w-16 h-16 text-[2rem] 34 | } 35 | 36 | .p-avatar-xl .p-avatar-icon { 37 | @apply text-[2rem] 38 | } 39 | 40 | .p-avatar-group { 41 | @apply flex items-center 42 | } 43 | 44 | .p-avatar-group .p-avatar + .p-avatar { 45 | @apply -ms-4 46 | } 47 | 48 | .p-avatar-group .p-avatar { 49 | @apply border-2 border-surface-200 dark:border-surface-700 50 | } 51 | -------------------------------------------------------------------------------- /assets/styles/primevue/badge.css: -------------------------------------------------------------------------------- 1 | .p-badge { 2 | @apply inline-flex items-center justify-center rounded-md 3 | py-0 px-2 text-xs font-bold min-w-6 h-6 4 | bg-primary text-primary-contrast 5 | } 6 | 7 | .p-badge-dot { 8 | @apply min-w-2 h-2 rounded-full p-0 9 | } 10 | 11 | .p-badge-circle { 12 | @apply p-0 rounded-full 13 | } 14 | 15 | .p-badge-secondary { 16 | @apply bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-surface-300 17 | } 18 | 19 | .p-badge-success { 20 | @apply bg-green-500 dark:bg-green-400 text-white dark:text-green-950 21 | } 22 | 23 | .p-badge-info { 24 | @apply bg-sky-500 dark:bg-sky-400 text-white dark:text-sky-950 25 | } 26 | 27 | .p-badge-warn { 28 | @apply bg-orange-500 dark:bg-orange-400 text-white dark:text-orange-950 29 | } 30 | 31 | .p-badge-danger { 32 | @apply bg-red-500 dark:bg-red-400 text-white dark:text-red-950 33 | } 34 | 35 | .p-badge-contrast { 36 | @apply bg-surface-950 dark:bg-white text-white dark:text-surface-950 37 | } 38 | 39 | .p-badge-sm { 40 | @apply text-[0.625rem] min-w-5 h-5 41 | } 42 | 43 | .p-badge-lg { 44 | @apply text-sm min-w-7 h-7 45 | } 46 | 47 | .p-badge-xl { 48 | @apply text-base min-w-8 h-8 49 | } -------------------------------------------------------------------------------- /assets/styles/primevue/blockui.css: -------------------------------------------------------------------------------- 1 | .p-blockui { 2 | @apply relative 3 | } 4 | 5 | .p-blockui-mask { 6 | @apply rounded-md 7 | } 8 | 9 | .p-blockui-mask.p-overlay-mask { 10 | @apply absolute 11 | } 12 | 13 | .p-blockui-mask-document.p-overlay-mask { 14 | @apply fixed 15 | } -------------------------------------------------------------------------------- /assets/styles/primevue/breadcrumb.css: -------------------------------------------------------------------------------- 1 | .p-breadcrumb { 2 | @apply bg-surface-0 dark:bg-surface-900 p-4 overflow-x-auto 3 | } 4 | 5 | .p-breadcrumb-list { 6 | @apply m-0 p-0 list-none flex items-center flex-nowrap gap-2 7 | } 8 | 9 | .p-breadcrumb-separator { 10 | @apply flex items-center text-surface-400 dark:text-surface-500 11 | } 12 | 13 | .p-breadcrumb-separator-icon:dir(rtl) { 14 | @apply rotate-180 15 | } 16 | 17 | .p-breadcrumb::-webkit-scrollbar { 18 | @apply hidden 19 | } 20 | 21 | .p-breadcrumb-item-link { 22 | @apply no-underline flex items-center gap-2 transition-colors duration-200 rounded-md 23 | text-surface-500 dark:text-surface-400 24 | focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary 25 | } 26 | 27 | .p-breadcrumb-item-link:hover .p-breadcrumb-item-label { 28 | @apply text-surface-700 dark:text-surface-0 29 | } 30 | 31 | .p-breadcrumb-item-label { 32 | @apply transition-colors duration-200 33 | } 34 | 35 | .p-breadcrumb-item-icon { 36 | @apply text-surface-400 dark:text-surface-500 transition-colors duration-200 37 | } 38 | 39 | .p-breadcrumb-item-link:hover .p-breadcrumb-item-icon { 40 | @apply text-surface-500 dark:text-surface-400 41 | } 42 | -------------------------------------------------------------------------------- /assets/styles/primevue/buttongroup.css: -------------------------------------------------------------------------------- 1 | .p-buttongroup .p-button { 2 | @apply m-0 focus-visible:relative focus-visible:z-10 3 | } 4 | 5 | .p-buttongroup .p-button:not(:last-child) { 6 | @apply border-r-0 7 | } 8 | 9 | .p-buttongroup .p-button:not(:first-of-type):not(:last-of-type) { 10 | @apply rounded-none 11 | } 12 | 13 | .p-buttongroup .p-button:first-of-type:not(:only-of-type) { 14 | @apply rounded-e-none 15 | } 16 | 17 | .p-buttongroup .p-button:last-of-type:not(:only-of-type) { 18 | @apply rounded-s-none 19 | } 20 | -------------------------------------------------------------------------------- /assets/styles/primevue/card.css: -------------------------------------------------------------------------------- 1 | .p-card { 2 | @apply flex flex-col rounded-xl 3 | bg-surface-0 dark:bg-surface-900 4 | text-surface-700 dark:text-surface-0 5 | shadow-[0_1px_3px_0_rgba(0,0,0,0.1),0_1px_2px_-1px_rgba(0,0,0,0.1)] 6 | } 7 | 8 | .p-card-caption { 9 | @apply flex flex-col gap-2 10 | } 11 | 12 | .p-card-body { 13 | @apply p-5 flex flex-col gap-2 14 | } 15 | 16 | .p-card-title { 17 | @apply font-medium text-xl 18 | } 19 | 20 | .p-card-subtitle { 21 | @apply text-surface-500 dark:text-surface-400 22 | } -------------------------------------------------------------------------------- /assets/styles/primevue/chip.css: -------------------------------------------------------------------------------- 1 | .p-chip { 2 | @apply inline-flex items-center rounded-2xl gap-2 px-3 py-2 3 | bg-surface-100 dark:bg-surface-800 4 | text-surface-800 dark:text-surface-0 5 | } 6 | 7 | .p-chip-icon { 8 | @apply text-surface-800 dark:bg-surface-0 text-base w-4 h-4 9 | } 10 | 11 | .p-chip-image { 12 | @apply rounded-full w-8 h-8 -ms-2 13 | } 14 | 15 | .p-chip:has(.p-chip-remove-icon) { 16 | @apply pe-2 17 | } 18 | 19 | .p-chip:has(.p-chip-image) { 20 | @apply pt-1 pb-1 21 | } 22 | 23 | .p-chip-remove-icon { 24 | @apply cursor-pointer text-base w-4 h-4 rounded-full 25 | text-surface-800 dark:text-surface-0 26 | focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary 27 | } 28 | -------------------------------------------------------------------------------- /assets/styles/primevue/confirmdialog.css: -------------------------------------------------------------------------------- 1 | @import './dialog'; 2 | @import './button'; 3 | 4 | .p-confirmdialog .p-dialog-content { 5 | @apply flex items-center gap-4 6 | } 7 | 8 | .p-confirmdialog-icon { 9 | @apply text-surface-700 dark:text-surface-0 text-[2rem] h-8 w-8 10 | } -------------------------------------------------------------------------------- /assets/styles/primevue/dataview.css: -------------------------------------------------------------------------------- 1 | @import './paginator'; 2 | 3 | .p-dataview { 4 | @apply border-none 5 | } 6 | 7 | .p-dataview-header { 8 | @apply py-3 px-4 border-b border-surface-200 dark:border-surface-700 9 | bg-surface-0 dark:bg-surface-900 10 | text-surface-700 dark:text-surface-0 11 | } 12 | 13 | .p-dataview-content { 14 | @apply bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-surface-0 15 | } 16 | 17 | .p-dataview-footer { 18 | @apply py-3 px-4 border-t border-surface-200 dark:border-surface-700 19 | bg-surface-0 dark:bg-surface-900 20 | text-surface-700 dark:text-surface-0 21 | } 22 | 23 | .p-dataview-paginator-top { 24 | @apply border-b border-surface-200 dark:border-surface-700 25 | } 26 | 27 | .p-dataview-paginator-bottom { 28 | @apply border-t border-surface-200 dark:border-surface-700 29 | } -------------------------------------------------------------------------------- /assets/styles/primevue/iconfield.css: -------------------------------------------------------------------------------- 1 | .p-iconfield { 2 | @apply relative 3 | } 4 | 5 | .p-inputicon { 6 | @apply absolute top-1/2 -mt-2 text-surface-400 leading-none 7 | } 8 | 9 | .p-iconfield .p-inputicon:first-child { 10 | @apply start-3 11 | } 12 | 13 | .p-iconfield .p-inputicon:last-child { 14 | @apply end-3 15 | } 16 | 17 | .p-iconfield .p-inputtext:not(:first-child) { 18 | @apply ps-10 19 | } 20 | 21 | .p-iconfield .p-inputtext:not(:last-child) { 22 | @apply pe-10 23 | } 24 | -------------------------------------------------------------------------------- /assets/styles/primevue/iftalabel.css: -------------------------------------------------------------------------------- 1 | .p-iftalabel { 2 | @apply block relative 3 | } 4 | 5 | .p-iftalabel label { 6 | @apply absolute pointer-events-none top-2 transition-all ease-out duration-200 leading-none text-xs font-medium start-3 text-surface-500 dark:text-surface-400 7 | } 8 | 9 | .p-iftalabel .p-inputtext, 10 | .p-iftalabel .p-textarea, 11 | .p-iftalabel .p-select-label, 12 | .p-iftalabel .p-multiselect-label, 13 | .p-iftalabel .p-autocomplete-input-multiple, 14 | .p-iftalabel .p-cascadeselect-label, 15 | .p-iftalabel .p-treeselect-label { 16 | @apply pt-6 pb-2 17 | } 18 | 19 | .p-iftalabel:has(.p-invalid) label { 20 | @apply text-red-400 dark:text-red-300 21 | } 22 | 23 | .p-iftalabel:has(input:focus) label , 24 | .p-iftalabel:has(input:-webkit-autofill) label, 25 | .p-iftalabel:has(textarea:focus) label , 26 | .p-iftalabel:has(.p-inputwrapper-focus) label { 27 | @apply text-primary 28 | } 29 | 30 | .p-iftalabel .p-inputicon { 31 | @apply top-6 translate-y-1/4 mt-0 32 | } 33 | -------------------------------------------------------------------------------- /assets/styles/primevue/inplace.css: -------------------------------------------------------------------------------- 1 | .p-inplace-display { 2 | @apply inline cursor-pointer border border-transparent px-3 py-2 rounded-md 3 | focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary 4 | transition-colors duration-200 5 | } 6 | 7 | .p-inplace-display:not(.p-disabled):hover { 8 | @apply bg-surface-100 dark:bg-surface-800 text-surface-800 dark:text-surface-0 9 | } 10 | 11 | .p-inplace-content { 12 | @apply block 13 | } -------------------------------------------------------------------------------- /assets/styles/primevue/inputotp.css: -------------------------------------------------------------------------------- 1 | @import './inputtext'; 2 | 3 | .p-inputotp { 4 | @apply flex items-center gap-2 5 | } 6 | 7 | .p-inputotp-input { 8 | @apply text-center w-10 9 | } -------------------------------------------------------------------------------- /assets/styles/primevue/inputtext.css: -------------------------------------------------------------------------------- 1 | .p-inputtext { 2 | @apply appearance-none rounded-md 3 | border border-surface-300 dark:border-surface-700 4 | enabled:hover:border-surface-400 dark:enabled:hover:border-surface-600 5 | enabled:focus:border-primary dark:enabled:focus:border-primary 6 | bg-surface-0 dark:bg-surface-950 7 | text-surface-700 dark:text-surface-0 8 | disabled:bg-surface-200 disabled:text-surface-500 dark:disabled:bg-surface-700 dark:disabled:text-surface-400 disabled:opacity-100 9 | placeholder:text-surface-500 dark:placeholder:text-surface-400 10 | px-3 py-2 11 | transition-colors duration-200 12 | shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] 13 | outline-none 14 | } 15 | 16 | .p-inputtext.p-invalid { 17 | @apply border-red-400 dark:border-red-300 18 | } 19 | 20 | .p-inputtext.p-variant-filled { 21 | @apply bg-surface-50 dark:bg-surface-800 22 | } 23 | 24 | .p-inputtext-sm { 25 | @apply text-sm px-[0.625rem] py-[0.375rem] 26 | } 27 | 28 | .p-inputtext-lg { 29 | @apply text-lg px-[0.875rem] py-[0.625rem] 30 | } 31 | 32 | .p-inputtext-fluid { 33 | @apply w-full 34 | } -------------------------------------------------------------------------------- /assets/styles/primevue/knob.css: -------------------------------------------------------------------------------- 1 | .p-knob-range { 2 | @apply fill-none transition-[stroke] duration-100 ease-in 3 | } 4 | 5 | .p-knob-text { 6 | @apply text-xl text-center 7 | } 8 | 9 | .p-knob svg { 10 | @apply rounded-full 11 | transition-colors duration-200 12 | focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary 13 | } 14 | 15 | .p-knob svg path:first-child { 16 | @apply stroke-surface-200 dark:stroke-surface-700 17 | } 18 | 19 | .p-knob svg path + path { 20 | @apply stroke-primary 21 | } 22 | 23 | .p-knob svg text { 24 | @apply fill-surface-500 dark:fill-surface-400 25 | } 26 | 27 | .p-knob-value { 28 | animation-name: p-knob-dash-frame; 29 | animation-fill-mode: forwards; 30 | fill: none; 31 | } 32 | 33 | @keyframes p-knob-dash-frame { 34 | 100% { 35 | stroke-dashoffset: 0; 36 | } 37 | } -------------------------------------------------------------------------------- /assets/styles/primevue/orderlist.css: -------------------------------------------------------------------------------- 1 | @import './button'; 2 | @import './listbox'; 3 | 4 | .p-orderlist { 5 | @apply flex gap-[1.125rem] 6 | } 7 | 8 | .p-orderlist-controls { 9 | @apply flex flex-col justify-center gap-2 10 | } -------------------------------------------------------------------------------- /assets/styles/primevue/overlaybadge.css: -------------------------------------------------------------------------------- 1 | @import './badge'; 2 | 3 | .p-overlaybadge { 4 | @apply relative 5 | } 6 | 7 | .p-overlaybadge .p-badge { 8 | @apply absolute top-0 end-0 translate-x-[50%] translate-y-[-50%] origin-[100%_0] m-0 outline outline-2 outline-surface-0 dark:outline-surface-900 9 | } 10 | 11 | .p-overlaybadge .p-badge:dir(rtl) { 12 | @apply -translate-x-1/2 -translate-y-1/2 13 | } 14 | -------------------------------------------------------------------------------- /assets/styles/primevue/panel.css: -------------------------------------------------------------------------------- 1 | @import './button'; 2 | 3 | .p-panel { 4 | @apply border border-surface-200 dark:border-surface-700 rounded-md 5 | bg-surface-0 dark:bg-surface-900 6 | text-surface-700 dark:text-surface-0 7 | } 8 | 9 | .p-panel-header { 10 | @apply flex justify-between items-center p-[1.125rem] 11 | } 12 | 13 | .p-panel-toggleable .p-panel-header { 14 | @apply py-[0.375rem] px-[1.125rem] 15 | } 16 | 17 | .p-panel-title { 18 | @apply leading-none font-semibold 19 | } 20 | 21 | .p-panel-content { 22 | @apply pt-0 pb-[1.125rem] px-[1.125rem] 23 | } 24 | 25 | .p-panel-footer { 26 | @apply pt-0 pb-[1.125rem] px-[1.125rem] 27 | } -------------------------------------------------------------------------------- /assets/styles/primevue/picklist.css: -------------------------------------------------------------------------------- 1 | @import './button'; 2 | @import './listbox'; 3 | 4 | .p-picklist { 5 | @apply flex gap-[1.125rem] 6 | } 7 | 8 | .p-picklist-controls { 9 | @apply flex flex-col justify-center gap-2 10 | } 11 | 12 | .p-picklist-list-container { 13 | @apply flex-grow flex-shrink basis-1/2 14 | } 15 | 16 | .p-picklist .p-listbox { 17 | @apply h-full 18 | } -------------------------------------------------------------------------------- /assets/styles/primevue/rating.css: -------------------------------------------------------------------------------- 1 | .p-rating { 2 | @apply relative flex items-center gap-1 3 | } 4 | 5 | .p-rating-option { 6 | @apply inline-flex items-center cursor-pointer rounded-full 7 | } 8 | 9 | .p-rating-option.p-focus-visible { 10 | @apply outline outline-1 outline-offset-2 outline-primary 11 | } 12 | 13 | .p-rating-icon { 14 | @apply text-surface-500 dark:text-surface-400 text-base w-4 h-4 transition-colors duration-200 15 | } 16 | 17 | .p-rating:not(.p-disabled):not(.p-readonly) .p-rating-option:hover .p-rating-icon { 18 | @apply text-primary 19 | } 20 | 21 | .p-rating-option-active .p-rating-icon { 22 | @apply text-primary 23 | } -------------------------------------------------------------------------------- /assets/styles/primevue/ripple.css: -------------------------------------------------------------------------------- 1 | .p-ink { 2 | @apply block absolute bg-black/10 dark:bg-white/30 scale-0 rounded-[100%] pointer-events-none 3 | } 4 | 5 | .p-ink-active { 6 | @apply transition-[opacity,transform] duration-500 scale-[2.5] opacity-0 ease-linear 7 | } -------------------------------------------------------------------------------- /assets/styles/primevue/scrollpanel.css: -------------------------------------------------------------------------------- 1 | .p-scrollpanel-content-container { 2 | @apply overflow-hidden w-full h-full relative z-10 float-left 3 | } 4 | 5 | .p-scrollpanel-content { 6 | @apply relative overflow-auto 7 | h-[calc(100%+18px)] w-[calc(100%+18px)] 8 | pt-0 ps-0 pr-[18px] pb-[18px] [scrollbar-width:none] 9 | } 10 | 11 | .p-scrollpanel-content::-webkit-scrollbar { 12 | @apply hidden 13 | } 14 | 15 | .p-scrollpanel-bar { 16 | @apply relative rounded-sm z-20 cursor-pointer opacity-0 17 | bg-surface-100 dark:bg-surface-800 18 | transition-opacity duration-200 border-none 19 | focus-visible:outline focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-primary 20 | } 21 | 22 | .p-scrollpanel-bar-y { 23 | @apply w-[9px] top-0 24 | } 25 | 26 | .p-scrollpanel-bar-x { 27 | @apply h-[9px] bottom-0 28 | } 29 | 30 | .p-scrollpanel-hidden { 31 | @apply invisible 32 | } 33 | 34 | .p-scrollpanel:hover .p-scrollpanel-bar, 35 | .p-scrollpanel:active .p-scrollpanel-bar { 36 | @apply opacity-100 37 | } 38 | 39 | .p-scrollpanel-grabbed { 40 | @apply select-none 41 | } 42 | -------------------------------------------------------------------------------- /assets/styles/primevue/scrolltop.css: -------------------------------------------------------------------------------- 1 | @import './button'; 2 | 3 | .p-scrolltop.p-button { 4 | @apply fixed bottom-5 end-5 5 | } 6 | 7 | .p-scrolltop-sticky.p-button { 8 | @apply sticky flex ms-auto 9 | } 10 | 11 | .p-scrolltop-enter-from { 12 | @apply opacity-0 13 | } 14 | 15 | .p-scrolltop-enter-active { 16 | @apply transition-opacity duration-150 17 | } 18 | 19 | .p-scrolltop.p-scrolltop-leave-to { 20 | @apply opacity-0 21 | } 22 | 23 | .p-scrolltop-leave-active { 24 | @apply transition-opacity duration-150 25 | } 26 | -------------------------------------------------------------------------------- /assets/styles/primevue/selectbutton.css: -------------------------------------------------------------------------------- 1 | @import './togglebutton'; 2 | 3 | .p-selectbutton { 4 | @apply inline-flex select-none rounded-md 5 | } 6 | 7 | .p-selectbutton .p-togglebutton { 8 | @apply rounded-none border-y border-r border-s-0 9 | } 10 | 11 | .p-selectbutton .p-togglebutton:focus-visible { 12 | @apply relative z-10 13 | } 14 | 15 | .p-selectbutton .p-togglebutton:first-child { 16 | @apply border-s rounded-s-md 17 | } 18 | 19 | .p-selectbutton .p-togglebutton:last-child { 20 | @apply rounded-e-md 21 | } 22 | 23 | .p-selectbutton.p-invalid { 24 | @apply outline outline-offset-0 outline-red-400 dark:outline-red-300 25 | } 26 | -------------------------------------------------------------------------------- /assets/styles/primevue/skeleton.css: -------------------------------------------------------------------------------- 1 | .p-skeleton { 2 | @apply overflow-hidden bg-surface-200 dark:bg-surface-700 animate-pulse rounded-md 3 | } 4 | 5 | .p-skeleton-circle { 6 | @apply rounded-full 7 | } 8 | 9 | .p-skeleton-animation-none::after { 10 | @apply animate-none 11 | } 12 | -------------------------------------------------------------------------------- /assets/styles/primevue/splitbutton.css: -------------------------------------------------------------------------------- 1 | @import './button'; 2 | @import './tieredmenu'; 3 | 4 | .p-splitbutton { 5 | @apply inline-flex relative rounded-md 6 | } 7 | 8 | .p-splitbutton-button { 9 | @apply rounded-e-none border-r-0 enabled:hover:border-r-0 enabled:active:border-r-0 focus-visible:z-10 10 | } 11 | 12 | .p-splitbutton-dropdown { 13 | @apply rounded-s-none focus-visible:z-10 14 | } 15 | 16 | .p-splitbutton .p-menu { 17 | @apply min-w-full 18 | } 19 | 20 | .p-splitbutton-fluid { 21 | @apply w-full 22 | } 23 | 24 | .p-splitbutton-rounded .p-splitbutton-dropdown { 25 | @apply rounded-e-[2rem] 26 | } 27 | 28 | .p-splitbutton-rounded .p-splitbutton-button { 29 | @apply rounded-s-[2rem] 30 | } 31 | 32 | .p-splitbutton-raised { 33 | @apply shadow-[0_3px_1px_-2px_rgba(0,0,0,0.2),0_2px_2px_0_rgba(0,0,0,0.14),0_1px_5px_0_rgba(0,0,0,0.12)] 34 | } 35 | -------------------------------------------------------------------------------- /assets/styles/primevue/tag.css: -------------------------------------------------------------------------------- 1 | .p-tag { 2 | @apply inline-flex items-center justify-center 3 | bg-primary-100 dark:bg-primary-500/15 4 | text-primary-700 dark:text-primary-300 5 | text-sm font-bold py-1 px-2 rounded-md gap-1 6 | } 7 | 8 | .p-tag-icon { 9 | @apply text-xs w-3 h-3 10 | } 11 | 12 | .p-tag-rounded { 13 | @apply rounded-2xl 14 | } 15 | 16 | .p-tag-success { 17 | @apply bg-green-100 dark:bg-green-500/15 text-green-700 dark:text-green-300 18 | } 19 | 20 | .p-tag-info { 21 | @apply bg-sky-100 dark:bg-sky-500/15 text-sky-700 dark:text-sky-300 22 | } 23 | 24 | .p-tag-warn { 25 | @apply bg-orange-100 dark:bg-orange-500/15 text-orange-700 dark:text-orange-300 26 | } 27 | 28 | .p-tag-danger { 29 | @apply bg-red-100 dark:bg-red-500/15 text-red-700 dark:text-red-300 30 | } 31 | 32 | .p-tag-secondary { 33 | @apply bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-surface-300 34 | } 35 | 36 | .p-tag-contrast { 37 | @apply bg-surface-950 dark:bg-surface-0 text-surface-0 dark:text-surface-950 38 | } -------------------------------------------------------------------------------- /assets/styles/primevue/terminal.css: -------------------------------------------------------------------------------- 1 | .p-terminal { 2 | @apply h-72 overflow-auto px-3 py-2 rounded-md 3 | border border-surface-300 dark:border-surface-700 4 | bg-surface-0 dark:bg-surface-950 5 | text-surface-700 dark:text-surface-0 6 | } 7 | 8 | .p-terminal-prompt { 9 | @apply flex items-center 10 | } 11 | 12 | .p-terminal-prompt-value { 13 | @apply flex-auto border-none bg-transparent text-inherit p-0 outline-none text-base 14 | } 15 | 16 | .p-terminal-prompt-label { 17 | @apply me-1 18 | } 19 | 20 | .p-terminal-input::-ms-clear { 21 | @apply hidden 22 | } 23 | -------------------------------------------------------------------------------- /assets/styles/primevue/textarea.css: -------------------------------------------------------------------------------- 1 | .p-textarea { 2 | @apply appearance-none rounded-md 3 | border border-surface-300 dark:border-surface-700 4 | enabled:hover:border-surface-400 dark:enabled:hover:border-surface-600 5 | enabled:focus:border-primary 6 | bg-surface-0 dark:bg-surface-950 7 | text-surface-700 dark:text-surface-0 8 | disabled:bg-surface-200 disabled:text-surface-500 disabled:opacity-100 dark:disabled:bg-surface-700 dark:disabled:text-surface-400 9 | placeholder:text-surface-500 dark:placeholder:text-surface-400 10 | px-3 py-2 11 | transition-colors duration-200 12 | shadow-[0_1px_2px_0_rgba(18,18,23,0.05)] 13 | outline-none 14 | } 15 | 16 | .p-textarea.p-invalid { 17 | @apply border-red-400 dark:border-red-300 18 | } 19 | 20 | .p-textarea.p-variant-filled { 21 | @apply bg-surface-50 dark:bg-surface-800 22 | } 23 | 24 | .p-textarea-fluid { 25 | @apply w-full 26 | } 27 | 28 | .p-textarea-resizable { 29 | @apply overflow-hidden resize-none 30 | } 31 | 32 | .p-textarea-sm { 33 | @apply text-sm px-[0.625rem] py-[0.375rem] 34 | } 35 | 36 | .p-textarea-lg { 37 | @apply text-lg px-[0.875rem] py-[0.625rem] 38 | } 39 | -------------------------------------------------------------------------------- /assets/styles/primevue/toolbar.css: -------------------------------------------------------------------------------- 1 | .p-toolbar { 2 | @apply flex items-center justify-between flex-wrap p-3 gap-2 3 | bg-surface-0 dark:bg-surface-900 4 | text-surface-700 dark:text-surface-0 5 | border border-surface-200 dark:border-surface-700 rounded-md 6 | } 7 | 8 | .p-toolbar-start, 9 | .p-toolbar-center, 10 | .p-toolbar-end { 11 | @apply flex items-center 12 | } -------------------------------------------------------------------------------- /assets/styles/primevue/tooltip.css: -------------------------------------------------------------------------------- 1 | .p-tooltip { 2 | @apply absolute hidden max-w-48 3 | } 4 | 5 | .p-tooltip-right, 6 | .p-tooltip-left { 7 | @apply py-0 px-1 8 | } 9 | 10 | .p-tooltip-top, 11 | .p-tooltip-bottom { 12 | @apply py-1 px-0 13 | } 14 | 15 | .p-tooltip-text { 16 | @apply whitespace-pre-line break-words bg-surface-700 text-surface-0 py-2 px-3 17 | rounded-md shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-2px_rgba(0,0,0,0.1)] 18 | } 19 | 20 | .p-tooltip-arrow { 21 | @apply absolute w-0 h-0 border-solid border-transparent 22 | } 23 | 24 | .p-tooltip-right .p-tooltip-arrow { 25 | @apply -mt-1 border-[.25rem] border-s-0 border-e-surface-700 rtl:rotate-180 26 | } 27 | 28 | .p-tooltip-left .p-tooltip-arrow { 29 | @apply -mt-1 border-[.25rem] border-e-0 border-s-surface-700 rtl:rotate-180 30 | } 31 | 32 | .p-tooltip-top .p-tooltip-arrow { 33 | @apply -ms-1 border-[.25rem] border-b-0 border-t-surface-700 34 | } 35 | 36 | .p-tooltip-bottom .p-tooltip-arrow { 37 | @apply -ms-1 border-[.25rem] border-t-0 border-b-surface-700 38 | } 39 | -------------------------------------------------------------------------------- /assets/styles/tailwind.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss/base"; 2 | @import "tailwindcss/components"; 3 | @import "./primevue/tailwind.css"; 4 | @import "tailwindcss/utilities"; -------------------------------------------------------------------------------- /components/app/AppFooter.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 21 | -------------------------------------------------------------------------------- /components/app/AppMenu.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 28 | -------------------------------------------------------------------------------- /components/app/PrimeVueNuxtLink.js: -------------------------------------------------------------------------------- 1 | export default defineNuxtLink({ 2 | componentName: 'PrimeVueNuxtLink', 3 | trailingSlash: 'append' 4 | }); 5 | -------------------------------------------------------------------------------- /components/doc/DocPreset.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 46 | -------------------------------------------------------------------------------- /components/doc/DocPresetSection.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 26 | -------------------------------------------------------------------------------- /components/doc/DocSections.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 27 | -------------------------------------------------------------------------------- /directives/CodeHighlight.js: -------------------------------------------------------------------------------- 1 | import { isClient } from '@primeuix/utils/dom'; 2 | 3 | const CodeHighlight = { 4 | mounted(el, binding) { 5 | const modifiers = binding.modifiers; 6 | const value = binding.value; 7 | 8 | if (modifiers.script || value === 'script') el.className = 'language-javascript'; 9 | else if (modifiers.css || value === 'css') el.className = 'language-css'; 10 | else el.className = 'language-markup'; 11 | 12 | if (isClient()) { 13 | window.Prism.highlightElement(el.children[0]); 14 | el.children[0].parentElement.setAttribute('tabindex', '-1'); 15 | } 16 | } 17 | }; 18 | 19 | export default CodeHighlight; 20 | -------------------------------------------------------------------------------- /doc/accordion/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 22 | -------------------------------------------------------------------------------- /doc/autocomplete/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 51 | -------------------------------------------------------------------------------- /doc/autocomplete/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/avatar/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /doc/avatar/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/badge/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /doc/badge/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/badge/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 21 | -------------------------------------------------------------------------------- /doc/blockui/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /doc/blockui/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/breadcrumb/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /doc/breadcrumb/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/button/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/button/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/button/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/card/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 31 | -------------------------------------------------------------------------------- /doc/card/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/carousel/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/cascadeselect/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/cascadeselect/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/cascadeselect/LoadingStateDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/checkbox/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/chip/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/chip/StyleDoc.vue: -------------------------------------------------------------------------------- 1 | 34 | -------------------------------------------------------------------------------- /doc/colorpicker/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/colorpicker/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/colorpicker/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/colorpicker/InlineDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/confirmdialog/ConfirmationServiceDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 36 | -------------------------------------------------------------------------------- /doc/confirmdialog/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/confirmpopup/ConfirmationServiceDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 36 | -------------------------------------------------------------------------------- /doc/confirmpopup/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/contextmenu/DataTableDoc.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /doc/contextmenu/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/customicons/FontAwesomeDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /doc/customicons/ImageDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /doc/customicons/MaterialDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /doc/customicons/SVGDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 29 | -------------------------------------------------------------------------------- /doc/customicons/VideoDoc.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /doc/datatable/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 22 | -------------------------------------------------------------------------------- /doc/dataview/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/datepicker/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/datepicker/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/datepicker/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/datepicker/LocaleDoc.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /doc/deferredcontent/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 30 | -------------------------------------------------------------------------------- /doc/deferredcontent/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/dialog/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/divider/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/divider/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/dock/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/drawer/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/dynamicdialog/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /doc/dynamicdialog/CloseDialogDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | -------------------------------------------------------------------------------- /doc/dynamicdialog/CustomizationDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 40 | -------------------------------------------------------------------------------- /doc/dynamicdialog/EventsDoc.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 46 | -------------------------------------------------------------------------------- /doc/dynamicdialog/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/dynamicdialog/demo/FooterDemo.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | -------------------------------------------------------------------------------- /doc/dynamicdialog/demo/InfoDemo.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 30 | -------------------------------------------------------------------------------- /doc/fieldset/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/fileupload/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/fileupload/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/floatlabel/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/floatlabel/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/fluid/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/fluid/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/galleria/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/iconfield/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/iconfield/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/icons/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 30 | -------------------------------------------------------------------------------- /doc/icons/ColorDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 30 | -------------------------------------------------------------------------------- /doc/icons/DownloadDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /doc/icons/FigmaDoc.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /doc/icons/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /doc/icons/SizeDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 30 | -------------------------------------------------------------------------------- /doc/icons/SpinDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 26 | -------------------------------------------------------------------------------- /doc/iftalabel/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/iftalabel/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/image/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | -------------------------------------------------------------------------------- /doc/image/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/image/PreviewDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 39 | -------------------------------------------------------------------------------- /doc/imagecompare/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/inplace/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /doc/inplace/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/inputgroup/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/inputgroup/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/inputmask/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/inputnumber/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/inputotp/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/inputotp/IntegerOnlyDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/inputotp/MaskDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/inputtext/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/knob/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/knob/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/knob/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/knob/ReadOnlyDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/knob/SizeDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/knob/StepDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/knob/StrokeDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/listbox/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/megamenu/CommandDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | -------------------------------------------------------------------------------- /doc/megamenu/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/menu/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/menubar/AdvancedDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/menubar/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/message/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/message/ClosableDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/message/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/metergroup/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/metergroup/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/multiselect/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/multiselect/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/multiselect/LoadingStateDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/nuxt/DownloadDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 31 | -------------------------------------------------------------------------------- /doc/nuxt/ExampleDoc.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /doc/nuxt/NuxtConfigDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 30 | -------------------------------------------------------------------------------- /doc/nuxt/StylesDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /doc/nuxt/TailwindDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/nuxt/tailwind/ImportStylesDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 36 | -------------------------------------------------------------------------------- /doc/nuxt/tailwind/PostCSSImportDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 39 | -------------------------------------------------------------------------------- /doc/nuxt/tailwind/PrimeUIPluginDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 35 | -------------------------------------------------------------------------------- /doc/orderlist/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/organizationchart/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/overview/passthrough/GlobalDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 44 | -------------------------------------------------------------------------------- /doc/overview/passthrough/OverrideDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /doc/paginator/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/panel/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/panelmenu/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/password/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/password/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/password/MeterDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/password/ToggleMaskDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/picklist/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/popover/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/progressbar/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 32 | -------------------------------------------------------------------------------- /doc/progressbar/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/progressbar/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/progressbar/IndeterminateDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/progressbar/TemplateDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/progressspinner/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | -------------------------------------------------------------------------------- /doc/progressspinner/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/progressspinner/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/radiobutton/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/rating/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/rating/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/rating/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/rating/NumberOfStarsDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/rating/ReadOnlyDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/ripple/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/ripple/ConfigurationDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 35 | -------------------------------------------------------------------------------- /doc/ripple/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 37 | -------------------------------------------------------------------------------- /doc/scrollpanel/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/scrolltop/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/select/DisabledDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/select/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/select/LoadingStateDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /doc/selectbutton/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/skeleton/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /doc/skeleton/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/slider/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/slider/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/slider/StepDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/speeddial/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/splitbutton/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/splitter/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/stepper/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 24 | -------------------------------------------------------------------------------- /doc/tabs/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 23 | -------------------------------------------------------------------------------- /doc/tag/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /doc/tag/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 46 | -------------------------------------------------------------------------------- /doc/tag/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/terminal/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/textarea/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/tieredmenu/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/timeline/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/timeline/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/toast/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/toast/ToastServiceDoc.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 36 | -------------------------------------------------------------------------------- /doc/togglebutton/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/toggleswitch/BasicDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/toggleswitch/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/toggleswitch/PreselectionDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 55 | -------------------------------------------------------------------------------- /doc/toolbar/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /doc/toolbar/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/tooltip/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /doc/tooltip/DelayDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | -------------------------------------------------------------------------------- /doc/tooltip/EventDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | -------------------------------------------------------------------------------- /doc/tooltip/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 21 | -------------------------------------------------------------------------------- /doc/tree/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/treeselect/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/treetable/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 20 | -------------------------------------------------------------------------------- /doc/virtualscroller/AccessibilityDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /doc/virtualscroller/ImportDoc.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | -------------------------------------------------------------------------------- /doc/vite/DownloadDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 28 | -------------------------------------------------------------------------------- /doc/vite/ExampleDoc.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /doc/vite/PluginDoc.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | -------------------------------------------------------------------------------- /doc/vite/StylesDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /doc/vite/TailwindDoc.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /doc/vite/tailwind/ImportStylesDoc.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 36 | -------------------------------------------------------------------------------- /doc/vite/tailwind/PostCSSImportDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 39 | -------------------------------------------------------------------------------- /doc/vite/tailwind/PrimeUIPluginDoc.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 35 | -------------------------------------------------------------------------------- /error.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /layouts/AppEventBus.js: -------------------------------------------------------------------------------- 1 | import { EventBus } from '@primevue/core/utils'; 2 | 3 | export default EventBus(); 4 | -------------------------------------------------------------------------------- /layouts/custom.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /middleware/route.global.js: -------------------------------------------------------------------------------- 1 | export default defineNuxtRouteMiddleware((to, from) => { 2 | useNuxtApp().hook('page:finish', () => { 3 | if (to.path !== from.path && history.state.scroll) { 4 | setTimeout(() => window.scrollTo(history.state.scroll), 0); 5 | } else { 6 | setTimeout(() => window.scrollTo(0, 0), 0); 7 | } 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | 47 | -------------------------------------------------------------------------------- /pages/terminal/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 36 | -------------------------------------------------------------------------------- /plugins/app.js: -------------------------------------------------------------------------------- 1 | import DeferredDemo from '@/components/demo/DeferredDemo.vue'; 2 | import CodeHighlight from '@/directives/CodeHighlight'; 3 | 4 | const $appStatePlugin = { 5 | install: (app) => { 6 | app.config.globalProperties.$appState = reactive({ 7 | primary: 'emerald', 8 | surface: 'zinc', 9 | darkTheme: false, 10 | codeSandbox: false, 11 | sourceType: 'options-api', 12 | newsActive: false, 13 | announcement: null, 14 | storageKey: 'primevue-tailwind' 15 | }); 16 | } 17 | }; 18 | 19 | export default defineNuxtPlugin((nuxtApp) => { 20 | nuxtApp.vueApp.component('DeferredDemo', DeferredDemo); 21 | nuxtApp.vueApp.directive('code', CodeHighlight); 22 | nuxtApp.vueApp.use($appStatePlugin); 23 | }); 24 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/primefaces/primevue-tailwind/4176cdf5280592c32152c52d707530831291e3aa/public/favicon.ico -------------------------------------------------------------------------------- /scripts/build-presetdoc.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | const folderPath = path.join(__dirname, '../assets/styles/primevue'); 5 | const jsonFilePath = path.join(__dirname, '../doc/common/presetdoc/index.json'); 6 | 7 | fs.readdir(folderPath, (err, files) => { 8 | if (err) { 9 | return console.error(err); 10 | } 11 | 12 | const jsonObject = {}; 13 | 14 | files.forEach((file) => { 15 | const filePath = path.join(folderPath, file); 16 | 17 | if (path.extname(file) === '.css' && !file.startsWith('components')) { 18 | const fileContent = fs.readFileSync(filePath, 'utf-8'); 19 | const fileName = path.parse(file).name; 20 | 21 | jsonObject[fileName] = fileContent; 22 | } 23 | }); 24 | 25 | const dirPath = path.dirname(jsonFilePath); 26 | 27 | if (!fs.existsSync(dirPath)) { 28 | fs.mkdirSync(dirPath, { recursive: true }); 29 | } 30 | 31 | fs.writeFile(jsonFilePath, JSON.stringify(jsonObject, null, 2), (err) => { 32 | if (err) { 33 | return console.error(err); 34 | } 35 | }); 36 | }); 37 | -------------------------------------------------------------------------------- /service/CarService.js: -------------------------------------------------------------------------------- 1 | export const CarService = { 2 | brands: ['Vapid', 'Carson', 'Kitano', 'Dabver', 'Ibex', 'Morello', 'Akira', 'Titan', 'Dover', 'Norma'], 3 | 4 | colors: ['Black', 'White', 'Red', 'Blue', 'Silver', 'Green', 'Yellow'], 5 | 6 | generateCar(id) { 7 | return { 8 | id, 9 | vin: this.generateVin(), 10 | brand: this.generateBrand(), 11 | color: this.generateColor(), 12 | year: this.generateYear() 13 | }; 14 | }, 15 | 16 | generateVin() { 17 | let text = ''; 18 | let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 19 | 20 | for (let i = 0; i < 5; i++) { 21 | text += possible.charAt(Math.floor(Math.random() * possible.length)); 22 | } 23 | 24 | return text; 25 | }, 26 | 27 | generateBrand() { 28 | return this.brands[Math.floor(Math.random() * Math.floor(10))]; 29 | }, 30 | 31 | generateColor() { 32 | return this.colors[Math.floor(Math.random() * Math.floor(7))]; 33 | }, 34 | 35 | generateYear() { 36 | return 2000 + Math.floor(Math.random() * Math.floor(19)); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /service/EventService.js: -------------------------------------------------------------------------------- 1 | export const EventService = { 2 | getData() { 3 | return [ 4 | { id: 1, title: 'All Day Event', start: '2023-02-01' }, 5 | { id: 2, title: 'Long Event', start: '2023-02-07', end: '2023-02-10' }, 6 | { id: 3, title: 'Repeating Event', start: '2023-02-09T16:00:00' }, 7 | { id: 4, title: 'Repeating Event', start: '2023-02-16T16:00:00' }, 8 | { id: 5, title: 'Conference', start: '2023-02-11', end: '2023-02-13' }, 9 | { id: 6, title: 'Meeting', start: '2023-02-12T10:30:00', end: '2023-02-12T12:30:00' }, 10 | { id: 7, title: 'Lunch', start: '2023-02-12T12:00:00' }, 11 | { id: 8, title: 'Meeting', start: '2023-02-12T14:30:00' }, 12 | { id: 9, title: 'Happy Hour', start: '2023-02-12T17:30:00' }, 13 | { id: 10, title: 'Dinner', start: '2023-02-12T20:00:00' }, 14 | { id: 11, title: 'Birthday Party', start: '2023-02-13T07:00:00' }, 15 | { id: 12, title: 'Click for Google', url: 'https://www.google.com/', start: '2023-02-28' } 16 | ]; 17 | }, 18 | 19 | getEvents() { 20 | return Promise.resolve(this.getData()); 21 | } 22 | }; 23 | -------------------------------------------------------------------------------- /service/IconService.js: -------------------------------------------------------------------------------- 1 | let icons = []; 2 | let selectedIcon = null; 3 | 4 | export const IconService = { 5 | getIcons() { 6 | return fetch('/demo/data/icons.json', { headers: { 'Cache-Control': 'no-cache' } }) 7 | .then((res) => res.json()) 8 | .then((d) => d.icons); 9 | }, 10 | 11 | getIcon(id) { 12 | if (icons) { 13 | selectedIcon = icons.find((x) => x.properties.id === id); 14 | 15 | return selectedIcon; 16 | } 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | const primeui = require('tailwindcss-primeui'); 3 | 4 | module.exports = { 5 | darkMode: ['selector', '[class~="p-dark"]'], 6 | content: ['./components/**/*.{js,vue,ts}', './doc/**/*.{js,vue,ts}', './layouts/**/*.vue', './pages/**/*.vue', './plugins/**/*.{js,ts}', './nuxt.config.{js,ts}', './app.vue', './error.vue'], 7 | plugins: [primeui], 8 | theme: { 9 | screens: { 10 | sm: '576px', 11 | md: '768px', 12 | lg: '992px', 13 | xl: '1200px', 14 | '2xl': '1920px' 15 | } 16 | } 17 | }; 18 | --------------------------------------------------------------------------------